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

From: Ian Abbott
Date: Thu Jun 25 2015 - 10:34:33 EST


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: <abbotti@xxxxxxxxx> )=-
-=( Web: http://www.mev.co.uk/ )=-
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/