[U-Boot] [PATCH] squash build warning in cmd_sf.c

Prabhakar Lad prabhakar.csengg at gmail.com
Wed Oct 5 06:52:02 CEST 2011


hi Simon

got it its in the for condition
for (skipped = 0; buf < end && !err_oper;
                  buf += todo, offset += todo)

Ive cleared my doubt, you were rite.

Regards
--Prabhakar Lad


On Wed, Oct 5, 2011 at 10:16 AM, Prabhakar Lad
<prabhakar.csengg at gmail.com>wrote:

> Hi Simon
>
> On Tue, Oct 4, 2011 at 8:45 PM, Simon Glass <sjg at chromium.org> wrote:
>
>> Hi,
>>
>> On Tue, Oct 4, 2011 at 4:45 AM,  <prabhakar.csengg at gmail.com> wrote:
>> > From: Prabhakar Lad <prabhakar.csengg at gmail.com>
>> >
>> > Fix build warning and returning early in case of failure
>> >
>> > cmd_sf.c: In function 'do_spi_flash':
>> > cmd_sf.c:164: warning: 'skipped' may be used uninitialized in this
>> function
>> > cmd_sf.c:164: note: 'skipped' was declared here
>> >
>> > Signed-off-by: Prabhakar Lad <prabhakar.csengg at gmail.com>
>> > ---
>> >  common/cmd_sf.c |   20 +++++++++-----------
>> >  1 files changed, 9 insertions(+), 11 deletions(-)
>> >
>> > diff --git a/common/cmd_sf.c b/common/cmd_sf.c
>> > index c8c547a..bdf7915 100644
>> > --- a/common/cmd_sf.c
>> > +++ b/common/cmd_sf.c
>> > @@ -164,21 +164,19 @@ static int spi_flash_update(struct spi_flash
>> *flash, u32 offset,
>> >        size_t skipped;         /* statistics */
>> >
>> >        cmp_buf = malloc(flash->sector_size);
>> > -       if (cmp_buf) {
>> > -               for (skipped = 0; buf < end && !err_oper;
>> > -                               buf += todo, offset += todo) {
>> > -                       todo = min(end - buf, flash->sector_size);
>> > -                       err_oper = spi_flash_update_block(flash, offset,
>> todo,
>> > -                                       buf, cmp_buf, &skipped);
>> > -               }
>> > -       } else {
>> > +       if (!cmp_buf) {
>> >                err_oper = "malloc";
>> > -       }
>> > -       free(cmp_buf);
>> > -       if (err_oper) {
>> >                printf("SPI flash failed in %s step\n", err_oper);
>> >                return 1;
>> >        }
>> > +
>> > +       for (skipped = 0; buf < end && !err_oper;
>> > +                       buf += todo, offset += todo) {
>> > +               todo = min(end - buf, flash->sector_size);
>> > +               err_oper = spi_flash_update_block(flash, offset, todo,
>> > +                               buf, cmp_buf, &skipped);
>> > +       }
>> > +       free(cmp_buf);
>>
>> Sorry my previous comment was in the wrong place. My comment was that
>> here err_oper might be set, but the printf() that uses it is above it!
>>
>>    if  the err_oper is set in the loop why isn't it checked in loop each
> time
>   why is it that it is only checked for the last index? Is that a
> loophole??
>
> Regards
> -- Prabhakar Lad
>
>> Regards,
>> Simon
>>
>> >        printf("%zu bytes written, %zu bytes skipped\n", len - skipped,
>> >               skipped);
>> >        return 0;
>> > --
>> > 1.7.0.4
>> >
>> > _______________________________________________
>> > U-Boot mailing list
>> > U-Boot at lists.denx.de
>> > http://lists.denx.de/mailman/listinfo/u-boot
>> >
>>
>
>


More information about the U-Boot mailing list