Re: [PATCH] block: add abort on failure

From: Julia Lawall
Date: Fri Aug 08 2014 - 12:22:42 EST




On Fri, 8 Aug 2014, Josh Morris wrote:

> Howdy Julia,
>
> It is by design that we complete the probe despite failures in
> rsxx_load_config() and rsxx_get_num_targets(). The reason is that we will be
> unable to debug and fix the issue without a driver loaded.
>
> In the case that the on-card config has been corrupted we will need the
> driver loaded to reset or repair the configuration.
>
> I couldn't find a place where we were derefrencing card->ctrl outside of a
> loop that checked the index against n_targets. That should prevent the
> driver from dereferencing an 0 size array.  So I believe we still want the
> probe to complete in this case so we can debug the hardware.

OK. I also looked for such a reference and didn't see one.

Thanks for the feedback.

julia

>
> Cheers!
>
> Josh
>
>
>
> From:        Julia Lawall <julia.lawall@xxxxxxx>
> To:        Josh Morris/Houston/IBM@IBMUS,
> Cc:        Jeff Moyer <jmoyer@xxxxxxxxxx>, kernel-janitors@xxxxxxxxxxxxxxx,
> Philip Kelleher <pjk1939@xxxxxxxxxxxxxxxxxx>, dan.carpenter@xxxxxxxxxx,
> linux-kernel@xxxxxxxxxxxxxxx
> Date:        08/08/2014 04:31 AM
> Subject:        Re: [PATCH] block: add abort on failure
>
> ____________________________________________________________________________
>
>
>
> On Fri, 8 Aug 2014, Julia Lawall wrote:
>
> > From: Julia Lawall <Julia.Lawall@xxxxxxx>
> >
> > Initializing card seems to be critical to the rest of the probe process,
> so
> > abort the probe function if the calls to rsxx_load_config and
> > rsxx_get_num_targets do not succeed.
>
> Note that this is not tested.  Nevertheless, at least the first failure
> will leave card in an unknown partially initialized state, which seems
> undesirable.
>
> julia
>
>
> > Suggested by Jeff Moyer.
> >
> > Signed-off-by: Julia Lawall <Julia.Lawall@xxxxxxx>
> >
> > ---
> >  drivers/block/rsxx/core.c |    8 ++++++--
> >  1 file changed, 6 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/block/rsxx/core.c b/drivers/block/rsxx/core.c
> > index a8de2ee..ae2805b 100644
> > --- a/drivers/block/rsxx/core.c
> > +++ b/drivers/block/rsxx/core.c
> > @@ -915,15 +915,19 @@ static int rsxx_pci_probe(struct pci_dev *dev,
> >
> >                   /************* Load Card Config *************/
> >                   st = rsxx_load_config(card);
> > -                 if (st)
> > +                 if (st) {
> >                                    dev_err(CARD_TO_DEV(card),
> >                                                     "Failed loading card
> config\n");
> > +                                  goto failed_dma_setup;
> > +                 }
> >
> >                   /************* Setup DMA Engine *************/
> >                   st = rsxx_get_num_targets(card, &card->n_targets);
> > -                 if (st)
> > +                 if (st) {
> >                                    dev_info(CARD_TO_DEV(card),
> >                                                     "Failed reading the
> number of DMA targets\n");
> > +                                  goto failed_dma_setup;
> > +                 }
> >
> >                   card->ctrl = kzalloc(card->n_targets *
> sizeof(*card->ctrl), GFP_KERNEL);
> >                   if (!card->ctrl) {
> >
> > --
> > 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
> >
>
>
>
>