Re: [patch] cciss: call BUG() earlier

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jun 01 2010, Darren Jenkins wrote:
> Hi Dan,
> 
> On Tue, Jun 1, 2010 at 5:05 PM, Dan Carpenter <error27@xxxxxxxxx> wrote:
> > I moved the range check after the increment.  The current code would
> > write past the end of the array once before calling BUG().
> >
> > Signed-off-by: Dan Carpenter <error27@xxxxxxxxx>
> >
> > diff --git a/drivers/block/cciss_scsi.c b/drivers/block/cciss_scsi.c
> > index e1d0e2c..3381505 100644
> > --- a/drivers/block/cciss_scsi.c
> > +++ b/drivers/block/cciss_scsi.c
> > @@ -188,11 +188,11 @@ scsi_cmd_free(ctlr_info_t *h, CommandList_struct *cmd)
> >
> >        sa = h->scsi_ctlr;
> >        stk = &sa->cmd_stack;
> > +       stk->top++;
> >        if (stk->top >= CMD_STACK_SIZE) {
> >                printk("cciss: scsi_cmd_free called too many times.\n");
> >                BUG();
> >        }
> > -       stk->top++;
> >        stk->elem[stk->top] = (struct cciss_scsi_cmd_stack_elem_t *) cmd;
> >  }
> 
> Did you diff this one backwards ?
> 

How so? if stk->top == CMD_STACK_SIZE - 1 the current code will not
trigger the BUG, but it will index beyond the size of ->elem. So the
patch looks correct to me.

Dan, I'll apply it, thanks.

-- 
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Development]     [Kernel Announce]     [Kernel Newbies]     [Linux Networking Development]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Device Mapper]

  Powered by Linux