On Tue, Mar 4, 2008 at 6:29 AM, Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> wrote: > > Hi, > > > On Monday 03 March 2008, Peter Teoh wrote: > > On Sun, Mar 2, 2008 at 11:19 PM, Adrian Bunk <bunk@xxxxxxxxxx> wrote: > > > The Coverity checker spotted the following bogus change to > > > ide_register_hw() in commit 9e016a719209d95338e314b46c3012cc7feaaeec: > > > > > > <-- snip --> > > > > > > ... > > > + hwif = ide_deprecated_find_port(hw->io_ports[IDE_DATA_OFFSET]); > > > + index = hwif->index; > > > + if (hwif) > > > + goto found; > > > for (index = 0; index < MAX_HWIFS; index++) > > > ... > > > > > > <-- snip --> > > > > > > It's impossible to reach the for() loop without Oopsing before. > > [ iff free hwif is not found (unlikely case) ] > > > > > Can you either fix this for 2.6.25 or push your patch that removes > > > ide_register_hw() for 2.6.25? > > > > > > > My question is: > > > > a. why is "retry=1", and then the do while loop always end up the > > loop being one round executed only? Why not just remove the while > > loop entirely? > > the whole ide_register_hw() is already gone in IDE tree > (these patches are scheduled for 2.6.26) > > > > b. not sure if your statement above implied this, but checking for > > hwif!=0 should be before index. ??? > > > > c. "index = hwif->index;" should not be there, but after "found". > > Is that correct? > > Yes, could you please re-do your patch to contain: > > - only 'hwif->index' change > - proper patch description > - Signed-off-by: line > > so I could merge it? Description: Relocating the index to come after finding the hwif pointer. Thanks. -- Regards, Peter Teoh
Signed-off-by: Peter Teoh <htmldeveloper@xxxxxxxxx> --- drivers/ide/ide.c.orig 2008-03-04 08:26:11.000000000 +0800 +++ drivers/ide/ide.c 2008-03-04 09:07:44.000000000 +0800 @@ -667,7 +667,6 @@ int ide_register_hw(hw_regs_t *hw, void do { hwif = ide_deprecated_find_port(hw->io_ports[IDE_DATA_OFFSET]); - index = hwif->index; if (hwif) goto found; for (index = 0; index < MAX_HWIFS; index++) @@ -675,6 +674,7 @@ int ide_register_hw(hw_regs_t *hw, void } while (retry--); return -1; found: + index = hwif->index; if (hwif->present) ide_unregister(index, 0, 1); else if (!hwif->hold)