PM / QoS: Fix concurrency issues and memory leaks in device PM QoS
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sun, 3 Mar 2013 21:48:14 +0000 (22:48 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 4 Mar 2013 13:23:11 +0000 (14:23 +0100)
commitb81ea1b5ac4d3c6a628158b736dd4a98c46c29d9
treea2dd6b230ac5cc2197ef6da7042d892c405ad32d
parentf5f43dcfff3a3c7f7de4a0cfca0106a0ccd58bd7
PM / QoS: Fix concurrency issues and memory leaks in device PM QoS

The current device PM QoS code assumes that certain functions will
never be called in parallel with each other (for example, it is
assumed that dev_pm_qos_expose_flags() won't be called in parallel
with dev_pm_qos_hide_flags() for the same device and analogously
for the latency limit), which may be overly optimistic.  Moreover,
dev_pm_qos_expose_flags() and dev_pm_qos_expose_latency_limit()
leak memory in error code paths (req needs to be freed on errors)
and __dev_pm_qos_drop_user_request() forgets to free the request.

To fix the above issues put more things under the device PM QoS
mutex to make them mutually exclusive and add the missing freeing
of memory.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/base/power/qos.c