linux/drivers/base
John Keeping 5f328a5b41 PM / QoS: Fix memory leak on resume_latency.notifiers
commit e84b4a84e5 upstream.

Since commit 2d984ad132 (PM / QoS: Introcuce latency tolerance device
PM QoS type) we reassign "c" to point at qos->latency_tolerance before
freeing c->notifiers, but the notifiers field of latency_tolerance is
never used.

Restore the original behaviour of freeing the notifiers pointer on
qos->resume_latency, which is used, and fix the following kmemleak
warning.

unreferenced object 0xed9dba00 (size 64):
  comm "kworker/0:1", pid 36, jiffies 4294670128 (age 15202.983s)
  hex dump (first 32 bytes):
    00 00 00 00 04 ba 9d ed 04 ba 9d ed 00 00 00 00  ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [<c06f6084>] kmemleak_alloc+0x74/0xb8
    [<c011c964>] kmem_cache_alloc_trace+0x170/0x25c
    [<c035f448>] dev_pm_qos_constraints_allocate+0x3c/0xe4
    [<c035f574>] __dev_pm_qos_add_request+0x84/0x1a0
    [<c035f6cc>] dev_pm_qos_add_request+0x3c/0x54
    [<c03c3fc4>] usb_hub_create_port_device+0x110/0x2b8
    [<c03b2a60>] hub_probe+0xadc/0xc80
    [<c03bb050>] usb_probe_interface+0x1b4/0x260
    [<c035773c>] driver_probe_device+0x198/0x40c
    [<c0357b14>] __device_attach_driver+0x8c/0x98
    [<c0355bbc>] bus_for_each_drv+0x8c/0x9c
    [<c0357494>] __device_attach+0x98/0x138
    [<c0357c64>] device_initial_probe+0x14/0x18
    [<c03569dc>] bus_probe_device+0x30/0x88
    [<c0354c54>] device_add+0x430/0x554
    [<c03b92d8>] usb_set_configuration+0x660/0x6fc

Fixes: 2d984ad132 (PM / QoS: Introcuce latency tolerance device PM QoS type)
Signed-off-by: John Keeping <john@metanate.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2017-06-05 21:17:11 +01:00
..
power PM / QoS: Fix memory leak on resume_latency.notifiers 2017-06-05 21:17:11 +01:00
regmap regmap: cache: Remove unused 'blksize' variable 2017-03-16 02:26:25 +00:00
attribute_container.c drivers/base: delete non-required instances of include <linux/init.h> 2014-02-14 14:31:37 -08:00
base.h driver core: Move driver_data back to struct device 2014-05-27 12:37:18 -07:00
bus.c driver core: bus: Goto appropriate labels on failure in bus_add_device 2015-05-06 11:33:02 +01:00
class.c sysfs: make attr namespace interface less convoluted 2013-09-26 14:50:01 -07:00
component.c drivers/base: fix devres handling for master device 2014-02-07 16:45:14 -08:00
container.c ACPI / hotplug / driver core: Handle containers in a special way 2013-12-29 15:25:48 +01:00
core.c sysfs: driver core: Fix glue dir race condition by gdp_mutex 2014-11-14 15:20:01 +00:00
cpu.c x86: align x86 arch with generic CPU modalias handling 2014-02-18 12:45:38 -08:00
dd.c driver core: Inline dev_set/get_drvdata 2014-05-27 13:46:59 -07:00
devres.c devres: fix devres_get() 2015-09-28 10:21:36 +01:00
devtmpfs.c devtmpfs: Calling delete_path() only when necessary 2013-12-19 10:10:32 -08:00
dma-buf.c dma-buf: fix trivial typo error 2014-05-05 15:28:05 +02:00
dma-coherent.c DMA-API: Change dma_declare_coherent_memory() CPU address to phys_addr_t 2014-05-20 16:55:23 -06:00
dma-contiguous.c DMA, CMA: fix possible memory leak 2014-06-23 16:47:44 -07:00
dma-mapping.c drivers: base: dma-mapping: Fix typo in dmam_alloc_non_coherent comments 2017-03-16 02:26:27 +00:00
driver.c driver core: add #include <linux/sysfs.h> to core files. 2013-08-27 10:24:15 -07:00
firmware.c firmware: change firmware_kset to firmware_kobj 2008-01-24 20:40:23 -08:00
firmware_class.c firmware: actually return NULL on failed request_firmware_nowait() 2016-02-02 19:48:28 +00:00
hypervisor.c drivers/base: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required. 2011-10-31 19:31:38 -04:00
init.c ACPI / hotplug / driver core: Handle containers in a special way 2013-12-29 15:25:48 +01:00
isa.c isa: Call isa_bus_init before dependent ISA bus drivers register 2016-08-22 22:38:16 +01:00
Kconfig cma: increase CMA_ALIGNMENT upper limit to 12 2014-06-04 16:54:08 -07:00
Makefile ACPI and power management updates for 3.14-rc1 2014-01-24 15:51:02 -08:00
map.c [PATCH] kobj_map semaphore to mutex conversion 2006-03-20 13:42:58 -08:00
memory.c drivers/base/memory.c: prohibit offlining of memory blocks with missing sections 2016-01-25 10:43:28 +00:00
module.c base: make module_create_drivers_dir race-free 2016-08-22 22:38:16 +01:00
node.c mm: check if section present during memory block registering 2015-09-29 16:44:47 +01:00
pinctrl.c drivers: pinctrl sleep and idle states in the core 2013-06-16 11:56:52 +02:00
platform.c platform: don't return 0 from platform_get_irq[_byname]() on error 2017-02-23 03:53:56 +00:00
reservation.c reservation: cross-device reservation support, v4 2013-06-28 12:02:15 +10:00
soc.c mode_t whack-a-mole: ->is_visible() returns umode_t... 2012-05-29 23:28:42 -04:00
syscore.c PM / sleep: trace events for suspend/resume 2014-06-07 00:18:07 +02:00
topology.c topology: Fix compilation warning when not in SMP 2014-04-16 14:13:26 -07:00
transport_class.c drivers/base: transport_class explicitly requires EXPORT_SYMBOL 2011-10-31 19:31:15 -04:00