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
> >
>
>
>
>