From patchwork Tue Jun 9 02:46:48 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viresh Kumar X-Patchwork-Id: 49639 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-la0-f69.google.com (mail-la0-f69.google.com [209.85.215.69]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 3A8E721419 for ; Tue, 9 Jun 2015 02:46:59 +0000 (UTC) Received: by laboh3 with SMTP id oh3sf1180988lab.0 for ; Mon, 08 Jun 2015 19:46:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:date:from:to:cc:subject:message-id :references:mime-version:content-type:content-disposition :in-reply-to:user-agent:sender:precedence:list-id:x-original-sender :x-original-authentication-results:mailing-list:list-post:list-help :list-archive:list-unsubscribe; bh=gslV7d4y7wVQonZIboHfETRFnD9M05fYa5ApomGh2Kk=; b=QlhY/1USOlq84x/1cbFHnb7WP5TnrNtlvRTWFPudz8JUe90TjGM4nFnN1RMNBimKwu y8awLBEvB/kx1w5Ki2EpZOkl/1dZzkKcjfV21iY6omXVYjG6cpklqwqgdKA00igTM+3g ec6oV+/uyINKodsVukg/ni4cbsXbeDyKgcbRrou+tX7ZhGBK9tMP7T2x/FSbcgMqJnxU Jxl7N+sORQD5ioWUoqqxMek4QhH7i0h98KyNTSMBs4ikSskS7TAZb5NBDQ5sS5IdBm3T mMHQqBOJ3igSd6Prc1kk5eSfAne+d6c4vHUMrBNiAs5w0vrXqQ4oDQBVQPqaj6Oj/tD4 bDbQ== X-Gm-Message-State: ALoCoQldbJiKyoOL6ckEUJMWVbKoheGISQuIfcXW80vi0wtp2B/NeyPSlQqtuBoMV8aQamin165A X-Received: by 10.194.58.164 with SMTP id s4mr19757006wjq.3.1433818017937; Mon, 08 Jun 2015 19:46:57 -0700 (PDT) X-BeenThere: patchwork-forward@linaro.org Received: by 10.152.203.227 with SMTP id kt3ls13638lac.18.gmail; Mon, 08 Jun 2015 19:46:57 -0700 (PDT) X-Received: by 10.112.93.37 with SMTP id cr5mr20502811lbb.106.1433818017772; Mon, 08 Jun 2015 19:46:57 -0700 (PDT) Received: from mail-la0-f47.google.com (mail-la0-f47.google.com. [209.85.215.47]) by mx.google.com with ESMTPS id w1si4507074lal.22.2015.06.08.19.46.57 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 08 Jun 2015 19:46:57 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.47 as permitted sender) client-ip=209.85.215.47; Received: by labko7 with SMTP id ko7so3271584lab.2 for ; Mon, 08 Jun 2015 19:46:57 -0700 (PDT) X-Received: by 10.112.198.74 with SMTP id ja10mr20186448lbc.19.1433818017330; Mon, 08 Jun 2015 19:46:57 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.112.108.230 with SMTP id hn6csp2275325lbb; Mon, 8 Jun 2015 19:46:56 -0700 (PDT) X-Received: by 10.68.131.225 with SMTP id op1mr34579775pbb.86.1433818015536; Mon, 08 Jun 2015 19:46:55 -0700 (PDT) Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b1si6720299pbu.175.2015.06.08.19.46.54; Mon, 08 Jun 2015 19:46:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-pm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752650AbbFICqx (ORCPT + 11 others); Mon, 8 Jun 2015 22:46:53 -0400 Received: from mail-pd0-f174.google.com ([209.85.192.174]:35026 "EHLO mail-pd0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750814AbbFICqx (ORCPT ); Mon, 8 Jun 2015 22:46:53 -0400 Received: by pdbnf5 with SMTP id nf5so4702939pdb.2 for ; Mon, 08 Jun 2015 19:46:52 -0700 (PDT) X-Received: by 10.66.101.9 with SMTP id fc9mr34219659pab.37.1433818012632; Mon, 08 Jun 2015 19:46:52 -0700 (PDT) Received: from localhost ([122.167.219.251]) by mx.google.com with ESMTPSA id pw7sm3848880pab.40.2015.06.08.19.46.51 (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Mon, 08 Jun 2015 19:46:51 -0700 (PDT) Date: Tue, 9 Jun 2015 08:16:48 +0530 From: Viresh Kumar To: "Rafael J. Wysocki" Cc: linaro-kernel@lists.linaro.org, linux-pm@vger.kernel.org, sboyd@codeaurora.org, prarit@redhat.com, skannan@codeaurora.org, Srivatsa Bhat Subject: Re: [PATCH V7 1/6] cpufreq: Don't allow updating inactive policies from sysfs Message-ID: <20150609024648.GD4829@linux> References: <243ddd967eebe1cafeda824a5ab5c67885d3653d.1433767914.git.viresh.kumar@linaro.org> <1543467.8Qo1djPj9c@vostro.rjw.lan> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1543467.8Qo1djPj9c@vostro.rjw.lan> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-pm-owner@vger.kernel.org Precedence: list List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: viresh.kumar@linaro.org X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.47 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , On 09-06-15, 01:19, Rafael J. Wysocki wrote: > I'm not sure if -EPERM is the best error code for this case. It doesn't depend > on the actual permissions, but rather on the policy status that may change > going forward. > > It might be better to use -EBUSY even. From: Viresh Kumar Date: Tue, 27 Jan 2015 13:22:23 +0530 Subject: [PATCH] cpufreq: Don't allow updating inactive policies from sysfs Later commits would change the way policies are managed today. Policies wouldn't be freed on cpu hotplug (currently they aren't freed only for suspend), and while the CPU is offline, the sysfs cpufreq files would still be present. User may accidentally try to update the sysfs files in following directory: '/sys/devices/system/cpu/cpuX/cpufreq/'. And that would result in undefined behavior as policy wouldn't be active then. Apart from updating the store() routine, we also update __cpufreq_get() which can call cpufreq_out_of_sync(). The later routine tries to update policy->cur and starts notifying kernel about it. Signed-off-by: Viresh Kumar --- drivers/cpufreq/cpufreq.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 5d780ff5a10a..16214dfe78c5 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -875,11 +875,18 @@ static ssize_t store(struct kobject *kobj, struct attribute *attr, down_write(&policy->rwsem); + /* Updating inactive policies is invalid, so avoid doing that. */ + if (unlikely(policy_is_inactive(policy))) { + ret = -EBUSY; + goto unlock_policy_rwsem; + } + if (fattr->store) ret = fattr->store(policy, buf, count); else ret = -EIO; +unlock_policy_rwsem: up_write(&policy->rwsem); up_read(&cpufreq_rwsem); @@ -1610,6 +1617,10 @@ static unsigned int __cpufreq_get(struct cpufreq_policy *policy) ret_freq = cpufreq_driver->get(policy->cpu); + /* Updating inactive policies is invalid, so avoid doing that. */ + if (unlikely(policy_is_inactive(policy))) + return ret_freq; + if (ret_freq && policy->cur && !(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) { /* verify no discrepancy between actual and