lkml.org 
[lkml]   [2018]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 310/329] cpufreq: Reorder cpufreq_online() error code path
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Viresh Kumar <viresh.kumar@linaro.org>

    [ Upstream commit b24b6478e65f140610ab1ffaadc7bc6bf0be8aad ]

    Ideally the de-allocation of resources should happen in the exact
    opposite order in which they were allocated. It helps maintain the code
    in long term, even if nothing really breaks with incorrect ordering.

    That wasn't followed in cpufreq_online() and it has some
    inconsistencies. For example, the symlinks were created from within
    the locked region while they are removed only after putting the locks.
    Also ->exit() should have been called only after the symlinks are
    removed and the lock is dropped, as that was the case when ->init()
    was first called.

    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    [ rjw: Subject ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/cpufreq/cpufreq.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    --- a/drivers/cpufreq/cpufreq.c
    +++ b/drivers/cpufreq/cpufreq.c
    @@ -1288,14 +1288,14 @@ static int cpufreq_online(unsigned int c
    return 0;

    out_exit_policy:
    + for_each_cpu(j, policy->real_cpus)
    + remove_cpu_dev_symlink(policy, get_cpu_device(j));
    +
    up_write(&policy->rwsem);

    if (cpufreq_driver->exit)
    cpufreq_driver->exit(policy);

    - for_each_cpu(j, policy->real_cpus)
    - remove_cpu_dev_symlink(policy, get_cpu_device(j));
    -
    out_free_policy:
    cpufreq_policy_free(policy, !new_policy);
    return ret;

    \
     
     \ /
      Last update: 2018-05-28 16:00    [W:4.061 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site