• Rafael J. Wysocki's avatar
    PM / QoS: Fix concurrency issues and memory leaks in device PM QoS · b81ea1b5
    Rafael J. Wysocki authored
    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: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    b81ea1b5
qos.c 19.6 KB