On 07/03/2018 at 16:39:51 -0600, Gustavo A. R. Silva wrote:
Hi Alexandre,Seems better, yes.
On 03/07/2018 03:25 PM, Alexandre Belloni wrote:
On 07/03/2018 at 14:11:33 -0600, Gustavo A. R. Silva wrote:Sure. I can elaborate a little bit more.
In preparation to enabling -Wvla, remove VLA and replace itYou should probably explain what VLA is and why this is important to do.
with a fixed-length array instead.
Correct.Signed-off-by: Gustavo A. R. Silva <gustavo@xxxxxxxxxxxxxx>You chose to change len to 255, probably because this is a uint8_t but
---
drivers/rtc/rtc-bq32k.c | 2 +-
drivers/rtc/rtc-mcp795.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/rtc/rtc-bq32k.c b/drivers/rtc/rtc-bq32k.c
index e8698e9..e4b234a 100644
--- a/drivers/rtc/rtc-bq32k.c
+++ b/drivers/rtc/rtc-bq32k.c
@@ -74,7 +74,7 @@ static int bq32k_read(struct device *dev, void *data, uint8_t off, uint8_t len)
static int bq32k_write(struct device *dev, void *data, uint8_t off, uint8_t len)
{
struct i2c_client *client = to_i2c_client(dev);
- uint8_t buffer[len + 1];
+ uint8_t buffer[256];
this is way too much for this rtc, it only has 10 consecutive registers.In that case probably the best solution is to add the following line to the
module:
#define MAX_LEN 10
and update the rest of the code as follows:
uint8_t buffer[MAX_LEN + 1];
Nope, that RTC has a section of 255 bytes that could be read at once soFor this particular case it seems to me that the following works just fine:buffer[0] = off;
memcpy(&buffer[1], data, len);
diff --git a/drivers/rtc/rtc-mcp795.c b/drivers/rtc/rtc-mcp795.c
index 79e24ea..00e11c1 100644
--- a/drivers/rtc/rtc-mcp795.c
+++ b/drivers/rtc/rtc-mcp795.c
@@ -82,7 +82,7 @@ static int mcp795_rtcc_write(struct device *dev, u8 addr, u8 *data, u8 count)
{
struct spi_device *spi = to_spi_device(dev);
int ret;
- u8 tx[2 + count];
+ u8 tx[257];
#define MAX_COUNT 7
u8 tx[MAX_COUNT + 2];
What do you think?
257 is the correct value.