> -----Original Message----- > From: Uwe Kleine-König [mailto:u.kleine-koenig@xxxxxxxxxxxxxx] > Sent: Thursday, November 24, 2011 5:07 PM > To: Dong Aisheng-B29396 > Cc: Wolfram Sang; Shawn Guo; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; Ben > Dooks; linux-i2c@xxxxxxxxxxxxxxx > Subject: Re: [PATCH] i2c-mxs: fix compile warning in mxs_i2c_xfer() > > Hello, > > On Thu, Nov 24, 2011 at 09:02:21AM +0000, Dong Aisheng-B29396 wrote: > > > > > diff --git a/drivers/i2c/busses/i2c-mxs.c > > > > > b/drivers/i2c/busses/i2c-mxs.c index 7e78f7c..00f098f 100644 > > > > > --- a/drivers/i2c/busses/i2c-mxs.c > > > > > +++ b/drivers/i2c/busses/i2c-mxs.c > > > > > @@ -193,7 +193,7 @@ static int mxs_i2c_wait_for_data(struct > > > > > mxs_i2c_dev *i2c) > > > > > > > > > > static int mxs_i2c_finish_read(struct mxs_i2c_dev *i2c, u8 > > > > > *buf, int len) { > > > > > - u32 data; > > > > > + u32 data = 0; > > > > > int i; > > > > > > > > > > for (i = 0; i < len; i++) { > > > > Looks like a stupid compiler. Then better use > > > > > > > > u32 uninitialized_var(data); > > > > > > Leave it as it is and fix the compiler? Will do another test later > > > to make sure. > > > > > > > Compiler is wrong? > > Just from the code that it seems to be right the 'data' might be used > > uninitialized. > > > > Something I missed? > > > > static int mxs_i2c_finish_read(struct mxs_i2c_dev *i2c, u8 *buf, int > > len) { > > u32 data; > > int i; > > > > for (i = 0; i < len; i++) { > > if ((i & 3) == 0) { > > if (mxs_i2c_wait_for_data(i2c)) > > return -ETIMEDOUT; > > data = readl(i2c->regs + MXS_I2C_QUEUEDATA); > > } > > buf[i] = data & 0xff; > > data >>= 8; > > } > When data is used the first time, i is 0, so it went through the body of > the if above before which assigned data. So no, data is initialized when > used to assign buf[i]. > Ok, Thanks for the info. So the compiler should do intelligent checking. Regards Dong Aisheng -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html