Rafael J. Wysocki
497fb54f57
ACPI / PCI: Fix NULL pointer dereference in acpi_get_pci_dev() (rev. 2)
...
acpi_get_pci_dev() may be called for a non-PCI device, in which case
it should return NULL. However, it assumes that every handle it
finds in the ACPI CA name space, between given device handle and the
PCI root bridge handle, corresponds to a PCI-to-PCI bridge with an
existing secondary bus. For this reason, when it finds a struct
pci_dev object corresponding to one of them, it doesn't check if
its 'subordinate' field is a valid pointer. This obviously leads to
a NULL pointer dereference if acpi_get_pci_dev() is called for a
non-PCI device with a PCI parent which is not a bridge.
To fix this issue make acpi_get_pci_dev() check if pdev->subordinate
is not NULL for every device it finds on the path between the root
bridge and the device it's supposed to get to and return NULL if the
"target" device cannot be found.
http://bugzilla.kernel.org/show_bug.cgi?id=14129
(worked in 2.6.30, regression in 2.6.31)
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Reported-by: Danny Feng <dfeng@redhat.com>
Reviewed-by: Alex Chiang <achiang@hp.com>
Tested-by: chepioq <chepioq@gmail.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2009-10-13 01:14:53 -04:00
..
acpica
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
2009-09-23 09:32:11 -07:00
ac.c
ACPI: Move definition of PREFIX from acpi_bus.h to internal..h
2009-08-28 19:57:27 -04:00
acpi_memhotplug.c
Merge branch 'bjorn-start-stop-2.6.32' into release
2009-09-19 01:56:39 -04:00
acpi_pad.c
ACPI: create Processor Aggregator Device driver
2009-07-31 18:23:34 -04:00
battery.c
Merge branch 'battery' into release
2009-09-19 01:56:17 -04:00
blacklist.c
Merge branch 'sfi-base' into release
2009-09-19 00:37:13 -04:00
bus.c
ACPI: add acpi_bus_get_status_handle()
2009-09-25 14:24:30 -04:00
button.c
Merge branch 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel
2009-09-24 10:30:41 -07:00
cm_sbs.c
ACPI: Move definition of PREFIX from acpi_bus.h to internal..h
2009-08-28 19:57:27 -04:00
container.c
Merge branch 'acpica' into release
2009-09-19 01:45:22 -04:00
debug.c
acpi: switch /proc/acpi/{debug_layer,debug_level} to seq_file
2009-09-19 01:38:57 -04:00
dock.c
ACPI: dock: fix "sibiling" typo
2009-10-03 01:08:28 -04:00
ec.c
Merge branch 'bugzilla-14081' into release
2009-10-03 01:31:34 -04:00
event.c
ACPI: Move definition of PREFIX from acpi_bus.h to internal..h
2009-08-28 19:57:27 -04:00
fan.c
ACPI: Move definition of PREFIX from acpi_bus.h to internal..h
2009-08-28 19:57:27 -04:00
glue.c
Merge branch 'acpica' into release
2009-09-19 01:45:22 -04:00
internal.h
ACPI: Move definition of PREFIX from acpi_bus.h to internal..h
2009-08-28 19:57:27 -04:00
Kconfig
Merge branch 'acpi-pad' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
2009-10-04 15:03:00 -07:00
Makefile
Merge branch 'acpi-pad' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
2009-10-04 15:03:00 -07:00
numa.c
ACPI: Move definition of PREFIX from acpi_bus.h to internal..h
2009-08-28 19:57:27 -04:00
osl.c
ACPI: Clarify resource conflict message
2009-09-27 03:12:13 -04:00
pci_bind.c
ACPI: kill acpi_get_pci_id
2009-06-17 23:32:23 -04:00
pci_irq.c
ACPI: Move definition of PREFIX from acpi_bus.h to internal..h
2009-08-28 19:57:27 -04:00
pci_link.c
ACPI: Move definition of PREFIX from acpi_bus.h to internal..h
2009-08-28 19:57:27 -04:00
pci_root.c
ACPI / PCI: Fix NULL pointer dereference in acpi_get_pci_dev() (rev. 2)
2009-10-13 01:14:53 -04:00
pci_slot.c
Merge branch 'misc-2.6.32' into release
2009-09-19 02:14:45 -04:00
power.c
Merge branch 'sfi-base' into release
2009-09-19 00:37:13 -04:00
power_meter.c
hwmon driver for ACPI 4.0 power meters
2009-09-19 01:30:01 -04:00
proc.c
ACPI: Fix bound checks for copy_from_user in the acpi /proc code
2009-10-03 00:59:12 -04:00
processor_core.c
ACPI: kill overly verbose "throttling states" log messages
2009-10-03 01:06:12 -04:00
processor_idle.c
ACPI: kill "unused variable ‘i’" warning
2009-09-27 11:58:36 -07:00
processor_perflib.c
cpumask: use zalloc_cpumask_var() where possible
2009-09-24 09:34:24 +09:30
processor_thermal.c
Merge branch 'processor-procfs-2.6.32' into release
2009-09-19 02:10:40 -04:00
processor_throttling.c
cpumask: use zalloc_cpumask_var() where possible
2009-09-24 09:34:24 +09:30
reboot.c
ACPI: reboot.c: use new acpi_reset interface
2008-12-31 01:15:00 -05:00
sbs.c
ACPI: Move definition of PREFIX from acpi_bus.h to internal..h
2009-08-28 19:57:27 -04:00
sbshc.c
ACPI: Move definition of PREFIX from acpi_bus.h to internal..h
2009-08-28 19:57:27 -04:00
sbshc.h
scan.c
ACPI: fix bus scanning memory leaks
2009-10-02 11:03:12 -04:00
sleep.c
Merge branch 'linus' into release
2009-09-19 00:06:59 -04:00
sleep.h
ACPI: convert acpi_device_lock spinlock to mutex
2009-04-07 00:02:40 -04:00
system.c
ACPI: Move definition of PREFIX from acpi_bus.h to internal..h
2009-08-28 19:57:27 -04:00
tables.c
ACPI: check acpi_disabled in acpi_table_parse() and acpi_table_parse_entries()
2009-08-28 19:57:28 -04:00
thermal.c
ACPI: Move definition of PREFIX from acpi_bus.h to internal..h
2009-08-28 19:57:27 -04:00
utils.c
ACPI: Move definition of PREFIX from acpi_bus.h to internal..h
2009-08-28 19:57:27 -04:00
video.c
const: constify remaining file_operations
2009-10-01 16:11:11 -07:00
video_detect.c
ACPI: Move definition of PREFIX from acpi_bus.h to internal..h
2009-08-28 19:57:27 -04:00
wakeup.c
ACPI PM: Replace wakeup.prepared with reference counter
2009-09-09 14:19:18 -07:00