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]. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | http://www.pengutronix.de/ | -- 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