All of lore.kernel.org
 help / color / mirror / Atom feed
From: adam radford <aradford@gmail.com>
To: anton.vasilyev.87@gmail.com
Cc: vasilyev@ispras.ru,
	"James E.J. Bottomley" <jejb@linux.vnet.ibm.com>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	linux-scsi <linux-scsi@vger.kernel.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	ldv-project@linuxtesting.org
Subject: Re: [PATCH] scsi: 3ware: fix return 0 on the error path of probe
Date: Mon, 30 Jul 2018 11:31:13 -0700	[thread overview]
Message-ID: <CAHtARFGDRWNBZJ=nYagWoZJg-ve1oYheJzuoY0_ehght1Ckt6g@mail.gmail.com> (raw)
In-Reply-To: <CALy29_0ZOR=3c_2nrfQEmbH8k=Oqx5x9nhhVDp2jV6ksx6XENw@mail.gmail.com>

On Sat, Jul 28, 2018 at 8:18 AM Anton Vasilyev
<anton.vasilyev.87@gmail.com> wrote:
>
> Adam,
>
> 3w-9xxx: twa_probe():
>
> There is check of retval:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/3w-9xxx.c#n2010
>
> retval without assignement is 0 on fail of twa_initialize_device_extension():
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/3w-9xxx.c#n2040
>
> And this 0 is returned from probe on the error path.
>
> Same pattern is true for all other cases from patch.
>
> -Anton
>
> 27 июл. 2018 г. 9:42 ПП пользователь "adam radford" <aradford@gmail.com> написал:
>
> On Fri, Jul 27, 2018 at 6:52 AM Anton Vasilyev <vasilyev@ispras.ru> wrote:
> >
> > tw_probe() returns 0 in case of fail of tw_initialize_device_extension(),
> > pci_resource_start() or tw_reset_sequence() and releases resources.
> > twl_probe() returns 0 in case of fail of twl_initialize_device_extension(),
> > pci_iomap() and twl_reset_sequence().
> > twa_probe() returns 0 in case of fail of tw_initialize_device_extension(),
> > ioremap() and twa_reset_sequence().
> >
> >
> > The patch adds retval initialization for these cases.
> >
> > Found by Linux Driver Verification project (linuxtesting.org).
> >
> > Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
> > ---
> >  drivers/scsi/3w-9xxx.c | 6 +++++-
> >  drivers/scsi/3w-sas.c  | 3 +++
> >  drivers/scsi/3w-xxxx.c | 2 ++
> >  3 files changed, 10 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c
> > index 99ba4a770406..27521fc3ef5a 100644
> > --- a/drivers/scsi/3w-9xxx.c
> > +++ b/drivers/scsi/3w-9xxx.c
> > @@ -2038,6 +2038,7 @@ static int twa_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
> >
> >         if (twa_initialize_device_extension(tw_dev)) {
> >                 TW_PRINTK(tw_dev->host, TW_DRIVER, 0x25, "Failed to initialize device extension");
> > +               retval = -ENOMEM;
> >                 goto out_free_device_extension;
> >         }
> >
> > @@ -2060,6 +2061,7 @@ static int twa_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
> >         tw_dev->base_addr = ioremap(mem_addr, mem_len);
> >         if (!tw_dev->base_addr) {
> >                 TW_PRINTK(tw_dev->host, TW_DRIVER, 0x35, "Failed to ioremap");
> > +               retval = -ENOMEM;
> >                 goto out_release_mem_region;
> >         }
> >
> > @@ -2067,8 +2069,10 @@ static int twa_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
> >         TW_DISABLE_INTERRUPTS(tw_dev);
> >
> >         /* Initialize the card */
> > -       if (twa_reset_sequence(tw_dev, 0))
> > +       if (twa_reset_sequence(tw_dev, 0)) {
> > +               retval = -ENOMEM;
> >                 goto out_iounmap;
> > +       }
> >
> >         /* Set host specific parameters */
> >         if ((pdev->device == PCI_DEVICE_ID_3WARE_9650SE) ||
> > diff --git a/drivers/scsi/3w-sas.c b/drivers/scsi/3w-sas.c
> > index cf9f2a09b47d..40c1e6e64f58 100644
> > --- a/drivers/scsi/3w-sas.c
> > +++ b/drivers/scsi/3w-sas.c
> > @@ -1594,6 +1594,7 @@ static int twl_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
> >
> >         if (twl_initialize_device_extension(tw_dev)) {
> >                 TW_PRINTK(tw_dev->host, TW_DRIVER, 0x1a, "Failed to initialize device extension");
> > +               retval = -ENOMEM;
> >                 goto out_free_device_extension;
> >         }
> >
> > @@ -1608,6 +1609,7 @@ static int twl_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
> >         tw_dev->base_addr = pci_iomap(pdev, 1, 0);
> >         if (!tw_dev->base_addr) {
> >                 TW_PRINTK(tw_dev->host, TW_DRIVER, 0x1c, "Failed to ioremap");
> > +               retval = -ENOMEM;
> >                 goto out_release_mem_region;
> >         }
> >
> > @@ -1617,6 +1619,7 @@ static int twl_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
> >         /* Initialize the card */
> >         if (twl_reset_sequence(tw_dev, 0)) {
> >                 TW_PRINTK(tw_dev->host, TW_DRIVER, 0x1d, "Controller reset failed during probe");
> > +               retval = -ENOMEM;
> >                 goto out_iounmap;
> >         }
> >
> > diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c
> > index f6179e3d6953..961ea6f7def8 100644
> > --- a/drivers/scsi/3w-xxxx.c
> > +++ b/drivers/scsi/3w-xxxx.c
> > @@ -2280,6 +2280,7 @@ static int tw_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
> >
> >         if (tw_initialize_device_extension(tw_dev)) {
> >                 printk(KERN_WARNING "3w-xxxx: Failed to initialize device extension.");
> > +               retval = -ENOMEM;
> >                 goto out_free_device_extension;
> >         }
> >
> > @@ -2294,6 +2295,7 @@ static int tw_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
> >         tw_dev->base_addr = pci_resource_start(pdev, 0);
> >         if (!tw_dev->base_addr) {
> >                 printk(KERN_WARNING "3w-xxxx: Failed to get io address.");
> > +               retval = -ENOMEM;
> >                 goto out_release_mem_region;
> >         }
> >
> > --
> > 2.18.0
> >
>
> Anton,
>
> 3w-9xxx: twa_probe() initializes retval at the top of the function:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/3w-9xxx.c#n2007
>
> so does 3w-xxxx: tw_probe():
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/3w-xxxx.c#n2253
>
> so does 3w-sas: twl_probe():
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/3w-sas.c#n1562
>
> so I think your patch isn't needed...
>
>
> -Adam
>
>
>

Acked-by: Adam Radford <aradford@gmail.com>

  reply	other threads:[~2018-07-30 18:31 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-27 13:51 [PATCH] scsi: 3ware: fix return 0 on the error path of probe Anton Vasilyev
2018-07-27 18:42 ` adam radford
2018-07-28 15:18   ` Anton Vasilyev
2018-07-30 18:31     ` adam radford [this message]
2018-07-31  2:08 ` Martin K. Petersen
2021-06-02 10:02 Yang Li

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAHtARFGDRWNBZJ=nYagWoZJg-ve1oYheJzuoY0_ehght1Ckt6g@mail.gmail.com' \
    --to=aradford@gmail.com \
    --cc=anton.vasilyev.87@gmail.com \
    --cc=jejb@linux.vnet.ibm.com \
    --cc=ldv-project@linuxtesting.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=vasilyev@ispras.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.