2015-06-25 10:52:43

by Maninder Singh

[permalink] [raw]
Subject: [PATCH 1/1] staging/comedi: remove unnecessary check around pci_dev_put

pci_dev_put cehcks for NULL pointer itself,
reported by coccinelle

Signed-off-by: Maninder Singh <[email protected]>
Reviewed-by: Yogesh Gaur <[email protected]>
---
drivers/staging/comedi/drivers/adl_pci9118.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/staging/comedi/drivers/adl_pci9118.c b/drivers/staging/comedi/drivers/adl_pci9118.c
index fb3043d..19b5806 100644
--- a/drivers/staging/comedi/drivers/adl_pci9118.c
+++ b/drivers/staging/comedi/drivers/adl_pci9118.c
@@ -1717,8 +1717,7 @@ static void pci9118_detach(struct comedi_device *dev)
pci9118_reset(dev);
comedi_pci_detach(dev);
pci9118_free_dma(dev);
- if (pcidev)
- pci_dev_put(pcidev);
+ pci_dev_put(pcidev);
}

static struct comedi_driver adl_pci9118_driver = {
--
1.7.9.5


2015-06-25 11:11:15

by Sudip Mukherjee

[permalink] [raw]
Subject: Re: [PATCH 1/1] staging/comedi: remove unnecessary check around pci_dev_put

On Thu, Jun 25, 2015 at 04:20:26PM +0530, Maninder Singh wrote:
> pci_dev_put cehcks for NULL pointer itself,
did you mean checks?

regards
sudip

2015-06-25 11:13:50

by Maninder Singh

[permalink] [raw]
Subject: Re: [PATCH 1/1] staging/comedi: remove unnecessary check around pci_dev_put

>> pci_dev_put cehcks for NULL pointer itself,
>did you mean checks?
Yes did some typo, send v2 of the patch.

Thanks
----------????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?

2015-06-25 11:21:33

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH 1/1] staging/comedi: remove unnecessary check around pci_dev_put

On Thu, Jun 25, 2015 at 04:20:26PM +0530, Maninder Singh wrote:
> pci_dev_put cehcks for NULL pointer itself,
> reported by coccinelle
>

This patch is correct but the motivation is wrong.

The check in pci_dev_put() is like a sanity check. There are many
functions which have a sanity check and many which do not, it is
impossible for a human to remember the complete list of each. When we
remove explicit checks for NULL and instead rely on the sanity checks
it sometimes makes the code more subtle and difficult to read.

In this case, "pcidev" can never be NULL so the check is misleading and
makes the code more complicated. Removing it is a good thing. Also
the attach function does not have a NULL check so when we remove this
check we make the code more consistent.

But in other cases, if "pcidev" could be NULL then we should keep the
check so that the code is easier to read.

regards,
dan carpenter

2015-06-25 11:32:25

by Maninder Singh

[permalink] [raw]
Subject: Re: [PATCH 1/1] staging/comedi: remove unnecessary check around pci_dev_put

Hi,

>This patch is correct but the motivation is wrong.
>
>The check in pci_dev_put() is like a sanity check. There are many
>functions which have a sanity check and many which do not, it is
>impossible for a human to remember the complete list of each. When we
>remove explicit checks for NULL and instead rely on the sanity checks
>it sometimes makes the code more subtle and difficult to read.
>
>In this case, "pcidev" can never be NULL so the check is misleading and
>makes the code more complicated. Removing it is a good thing. Also
>the attach function does not have a NULL check so when we remove this
>check we make the code more consistent.
>
>But in other cases, if "pcidev" could be NULL then we should keep the
>check so that the code is easier to read.

Yes agree, I also sent this patch because there is only one call for pci_dev_put
in adl_pci9118.c, and i thoguht its good to remove check around that one.

Thanks for your feedback.
------------????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?

2015-06-25 14:34:30

by Ian Abbott

[permalink] [raw]
Subject: Re: [PATCH 1/1] staging/comedi: remove unnecessary check around pci_dev_put

On 25/06/15 12:21, Dan Carpenter wrote:
> On Thu, Jun 25, 2015 at 04:20:26PM +0530, Maninder Singh wrote:
>> pci_dev_put cehcks for NULL pointer itself,
>> reported by coccinelle
>>
>
> This patch is correct but the motivation is wrong.
>
> The check in pci_dev_put() is like a sanity check. There are many
> functions which have a sanity check and many which do not, it is
> impossible for a human to remember the complete list of each. When we
> remove explicit checks for NULL and instead rely on the sanity checks
> it sometimes makes the code more subtle and difficult to read.
>
> In this case, "pcidev" can never be NULL so the check is misleading and
> makes the code more complicated. Removing it is a good thing. Also
> the attach function does not have a NULL check so when we remove this
> check we make the code more consistent.

Actually, it is possible for pcidev to be NULL here (pci9118_detach() in
drivers/staging/comedi/drivers/adl_pci9118.c). This driver supports
both the auto-attach (via PCI driver probe) and "legacy" attach (via
COMEDI_DEVCONFIG ioctl). For the auto-attach case, pcidev will never be
NULL. For the "legacy" attach case, pcidev can be NULL if the call to
pci9118_find_pci() from pci9118_attach() failed to find a matching PCI
device and so returned an error before the call to comedi_set_hw_dev().
The comedi core then calls pci9118_detach() which sets pcidev to the
return value from comedi_to_pci_dev() which will be NULL in this case.

> But in other cases, if "pcidev" could be NULL then we should keep the
> check so that the code is easier to read.

So we should keep the check in this case too.

--
-=( Ian Abbott @ MEV Ltd. E-mail: <[email protected]> )=-
-=( Web: http://www.mev.co.uk/ )=-