[PATCH] i2c-mxs: fix compile warning in mxs_i2c_xfer()

Dong Aisheng-B29396 B29396 at freescale.com
Thu Nov 24 04:02:21 EST 2011


> -----Original Message-----
> From: linux-arm-kernel-bounces at lists.infradead.org [mailto:linux-arm-
> kernel-bounces at lists.infradead.org] On Behalf Of Wolfram Sang
> Sent: Thursday, November 24, 2011 4:38 PM
> To: Uwe Kleine-König
> Cc: Shawn Guo; linux-arm-kernel at lists.infradead.org; Ben Dooks; linux-
> i2c at vger.kernel.org
> Subject: Re: [PATCH] i2c-mxs: fix compile warning in mxs_i2c_xfer()
> 
> On Thu, Nov 24, 2011 at 09:29:03AM +0100, Uwe Kleine-König wrote:
> > Hello Shawn,
> >
> > On Thu, Nov 24, 2011 at 03:52:20PM +0800, Shawn Guo wrote:
> > >   CC      drivers/i2c/busses/i2c-mxs.o
> > > drivers/i2c/busses/i2c-mxs.c: In function ‘mxs_i2c_xfer’:
> > > drivers/i2c/busses/i2c-mxs.c:196:6: warning: ‘data’ may be used
> > > uninitialized in this function
> > >
> > > Signed-off-by: Shawn Guo <shawn.guo at linaro.org>
> > > ---
> > >  drivers/i2c/busses/i2c-mxs.c |    2 +-
> > >  1 files changed, 1 insertions(+), 1 deletions(-)
> > >
> > > 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;
        }

        return 0;
}

Regards
Dong Aisheng


More information about the linux-arm-kernel mailing list