2008-02-19 19:29:48

by Adrian Bunk

[permalink] [raw]
Subject: pci/pcie/aer/aerdrv_acpi.c: inconsequent NULL checking

The Coverity checker spotted the following inconsequent NULL checking
introduced by commit 3c75e23784e6ed5f4841de43d0750fd9b37bafcb:

<-- snip -->

...
int aer_osc_setup(struct pcie_device *pciedev)
{
... vvvvvvvvv
while (pdev->bus && pdev->bus->self)
pdev = pdev->bus->self;
handle = acpi_get_pci_rootbridge_handle(
pci_domain_nr(pdev->bus), pdev->bus->number);
... ^^^^^^^^^^^^^^^^^

<-- snip -->

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed


2008-02-20 05:53:52

by Greg KH

[permalink] [raw]
Subject: Re: pci/pcie/aer/aerdrv_acpi.c: inconsequent NULL checking

On Tue, Feb 19, 2008 at 09:29:02PM +0200, Adrian Bunk wrote:
> The Coverity checker spotted the following inconsequent NULL checking
> introduced by commit 3c75e23784e6ed5f4841de43d0750fd9b37bafcb:
>
> <-- snip -->
>
> ...
> int aer_osc_setup(struct pcie_device *pciedev)
> {
> ... vvvvvvvvv
> while (pdev->bus && pdev->bus->self)
> pdev = pdev->bus->self;

That could probably change to just pdev->bus->self, as a bus should
always be there for a pdev, so I don't see this as a problem.

thanks,

greg k-h

2008-02-20 07:57:17

by Adrian Bunk

[permalink] [raw]
Subject: Re: pci/pcie/aer/aerdrv_acpi.c: inconsequent NULL checking

On Tue, Feb 19, 2008 at 09:47:58PM -0800, Greg KH wrote:
> On Tue, Feb 19, 2008 at 09:29:02PM +0200, Adrian Bunk wrote:
> > The Coverity checker spotted the following inconsequent NULL checking
> > introduced by commit 3c75e23784e6ed5f4841de43d0750fd9b37bafcb:
> >
> > <-- snip -->
> >
> > ...
> > int aer_osc_setup(struct pcie_device *pciedev)
> > {
> > ... vvvvvvvvv
> > while (pdev->bus && pdev->bus->self)
> > pdev = pdev->bus->self;
>
> That could probably change to just pdev->bus->self, as a bus should
> always be there for a pdev, so I don't see this as a problem.

I'm not claiming this specific case was a problem.

When a NULL check is only performed in some cases that's sometimes a bug
that has to be fixed and in most cases a not required check that should
be removed at some point in time.

> thanks,
>
> greg k-h

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

2008-02-20 16:32:56

by Greg KH

[permalink] [raw]
Subject: Re: pci/pcie/aer/aerdrv_acpi.c: inconsequent NULL checking

On Wed, Feb 20, 2008 at 09:56:28AM +0200, Adrian Bunk wrote:
> On Tue, Feb 19, 2008 at 09:47:58PM -0800, Greg KH wrote:
> > On Tue, Feb 19, 2008 at 09:29:02PM +0200, Adrian Bunk wrote:
> > > The Coverity checker spotted the following inconsequent NULL checking
> > > introduced by commit 3c75e23784e6ed5f4841de43d0750fd9b37bafcb:
> > >
> > > <-- snip -->
> > >
> > > ...
> > > int aer_osc_setup(struct pcie_device *pciedev)
> > > {
> > > ... vvvvvvvvv
> > > while (pdev->bus && pdev->bus->self)
> > > pdev = pdev->bus->self;
> >
> > That could probably change to just pdev->bus->self, as a bus should
> > always be there for a pdev, so I don't see this as a problem.
>
> I'm not claiming this specific case was a problem.

Well, Coverity did :)

> When a NULL check is only performed in some cases that's sometimes a bug
> that has to be fixed and in most cases a not required check that should
> be removed at some point in time.

I agree, patches are always welcome...

thanks,

greg k-h

2008-02-22 20:04:42

by Adrian Bunk

[permalink] [raw]
Subject: [2.6 patch] pci/pcie/aer/aerdrv_acpi.c: remove unneeded NULL check

On Wed, Feb 20, 2008 at 08:09:35AM -0800, Greg KH wrote:
> On Wed, Feb 20, 2008 at 09:56:28AM +0200, Adrian Bunk wrote:
> > On Tue, Feb 19, 2008 at 09:47:58PM -0800, Greg KH wrote:
> > > On Tue, Feb 19, 2008 at 09:29:02PM +0200, Adrian Bunk wrote:
> > > > The Coverity checker spotted the following inconsequent NULL checking
> > > > introduced by commit 3c75e23784e6ed5f4841de43d0750fd9b37bafcb:
> > > >
> > > > <-- snip -->
> > > >
> > > > ...
> > > > int aer_osc_setup(struct pcie_device *pciedev)
> > > > {
> > > > ... vvvvvvvvv
> > > > while (pdev->bus && pdev->bus->self)
> > > > pdev = pdev->bus->self;
> > >
> > > That could probably change to just pdev->bus->self, as a bus should
> > > always be there for a pdev, so I don't see this as a problem.
> >
> > I'm not claiming this specific case was a problem.
>
> Well, Coverity did :)

It only said it's once checked and once not.

> > When a NULL check is only performed in some cases that's sometimes a bug
> > that has to be fixed and in most cases a not required check that should
> > be removed at some point in time.
>
> I agree, patches are always welcome...

Patch below.

> thanks,
>
> greg k-h

cu
Adrian


<-- snip -->


There's no reason for checking pdev->bus for being NULL here (and we'd
anyway Oops 3 lines below if it was).

Signed-off-by: Adrian Bunk <[email protected]>

---
74832021c82be6e2ed6055f4f25dbf152df67cf5 diff --git a/drivers/pci/pcie/aer/aerdrv_acpi.c b/drivers/pci/pcie/aer/aerdrv_acpi.c
index 8c199ae..1e2a858 100644
--- a/drivers/pci/pcie/aer/aerdrv_acpi.c
+++ b/drivers/pci/pcie/aer/aerdrv_acpi.c
@@ -34,7 +34,7 @@ int aer_osc_setup(struct pcie_device *pciedev)
acpi_handle handle = 0;

/* Find root host bridge */
- while (pdev->bus && pdev->bus->self)
+ while (pdev->bus->self)
pdev = pdev->bus->self;
handle = acpi_get_pci_rootbridge_handle(
pci_domain_nr(pdev->bus), pdev->bus->number);