public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* drivers/acpi/scan.c: inconsequent NULL handling
@ 2005-03-24 20:41 Adrian Bunk
  0 siblings, 0 replies; 2+ messages in thread
From: Adrian Bunk @ 2005-03-24 20:41 UTC (permalink / raw)
  To: len.brown-ral2JQCrhuEAvxtiuMwx3w
  Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA

The Coverity checker found the following:

<--  snip  -->

static int
acpi_bus_match (
        struct acpi_device      *device,
        struct acpi_driver      *driver)
{
        if (driver && driver->ops.match)
                return driver->ops.match(device, driver);
        return acpi_match_ids(device, driver->ids);
}

<--  snip  -->


Either driver can be NULL, in which case the driver->ids is a possible 
NULL pointer reference, or it can't, in which case the check whether 
it's NULL is superfluous.


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



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: drivers/acpi/scan.c: inconsequent NULL handling
       [not found] <20060106162929.GK12131@stusta.de>
@ 2006-01-06 19:36 ` Alexey Dobriyan
  0 siblings, 0 replies; 2+ messages in thread
From: Alexey Dobriyan @ 2006-01-06 19:36 UTC (permalink / raw)
  To: Adrian Bunk; +Cc: len.brown, linux-acpi, linux-kernel

On Fri, Jan 06, 2006 at 05:29:29PM +0100, Adrian Bunk wrote:
> static int
> acpi_bus_match (
>         struct acpi_device      *device,
>         struct acpi_driver      *driver)
> {
>         if (driver && driver->ops.match)
>                 return driver->ops.match(device, driver);
>         return acpi_match_ids(device, driver->ids);
> }

> Either driver can be NULL, in which case the driver->ids is a possible
> NULL pointer reference, or it can't, in which case the check whether
> it's NULL is superfluous.

Follow the mon^Wcall tree.

drivers/acpi/scan.c:478: * acpi_bus_match 
drivers/acpi/scan.c:484:acpi_bus_match(struct acpi_device *device, struct acpi_driver *driver)
drivers/acpi/scan.c:564:		if (!acpi_bus_match(dev, drv)) {
drivers/acpi/scan.c:682:		if (!acpi_bus_match(device, driver)) {

1. acpi_bus_match()

   Second arg is passed without changes.

	acpi_driver_attach()
		acpi_bus_register_driver()

	  ===>	if (!driver) <===
			return_VALUE(-EINVAL);

		spin_lock(&acpi_device_lock);
		list_add_tail(&driver->node, &acpi_bus_drivers);
		spin_unlock(&acpi_device_lock);
		count = acpi_driver_attach(driver);

2. acpi_bus_match()
	acpi_bus_find_driver()

		atomic_inc(&driver->references);
			    ^^^^^^^^
                spin_unlock(&acpi_device_lock);
		if (!acpi_bus_match(device, driver)) {

Looks like it can't.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-01-06 19:36 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-03-24 20:41 drivers/acpi/scan.c: inconsequent NULL handling Adrian Bunk
     [not found] <20060106162929.GK12131@stusta.de>
2006-01-06 19:36 ` Alexey Dobriyan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox