From patchwork Fri Feb 12 16:10:09 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Rafael J. Wysocki" X-Patchwork-Id: 8293051 X-Patchwork-Delegate: rjw@sisk.pl Return-Path: X-Original-To: patchwork-linux-pm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 81DA19FC35 for ; Fri, 12 Feb 2016 16:27:04 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 4FAE320435 for ; Fri, 12 Feb 2016 16:08:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DC30B20431 for ; Fri, 12 Feb 2016 16:08:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751391AbcBLQIy (ORCPT ); Fri, 12 Feb 2016 11:08:54 -0500 Received: from v094114.home.net.pl ([79.96.170.134]:45254 "HELO v094114.home.net.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1751503AbcBLQIy (ORCPT ); Fri, 12 Feb 2016 11:08:54 -0500 Received: from agov216.neoplus.adsl.tpnet.pl (217.99.253.216) (HELO vostro.rjw.lan) by serwer1319399.home.pl (79.96.170.134) with SMTP (IdeaSmtpServer v0.80) id 3a8d8094574266a7; Fri, 12 Feb 2016 17:08:52 +0100 From: "Rafael J. Wysocki" To: Viresh Kumar Cc: Linux PM list , Linux Kernel Mailing List Subject: Re: [PATCH] cpufreq: Avoid unnecessary locking in show() and store() Date: Fri, 12 Feb 2016 17:10:09 +0100 Message-ID: <15659367.8so4AOBv9e@vostro.rjw.lan> User-Agent: KMail/4.11.5 (Linux/4.5.0-rc1+; KDE/4.11.5; x86_64; ; ) In-Reply-To: <20160212155829.GA32705@vireshk-i7> References: <2946666.LCVBdOefy1@vostro.rjw.lan> <16931364.qnKxgPucoY@vostro.rjw.lan> <20160212155829.GA32705@vireshk-i7> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On Friday, February 12, 2016 09:28:29 PM Viresh Kumar wrote: > On 12-02-16, 14:18, Rafael J. Wysocki wrote: > > Well, having a check that never fails is certainly unuseful. > > > > > So, even we may want to add a WARN_ON() for that case instead. > > > > I can add WARN_ON()s just fine. > > What about dropping the check completely ? Fine by me. Acked-by: Viresh Kumar --- From: Rafael J. Wysocki Subject: [PATCH] cpufreq: Drop unnecessary checks from show() and store() The show() and store() routines in the cpufreq core don't need to check if the struct freq_attr they want to use really provides the callbacks they need as expected (if that's not the case, it means a bug in the code anyway), so change them to avoid doing that. Signed-off-by: Rafael J. Wysocki --- drivers/cpufreq/cpufreq.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Index: linux-pm/drivers/cpufreq/cpufreq.c =================================================================== --- linux-pm.orig/drivers/cpufreq/cpufreq.c +++ linux-pm/drivers/cpufreq/cpufreq.c @@ -863,12 +863,7 @@ static ssize_t show(struct kobject *kobj ssize_t ret; down_read(&policy->rwsem); - - if (fattr->show) - ret = fattr->show(policy, buf); - else - ret = -EIO; - + ret = fattr->show(policy, buf); up_read(&policy->rwsem); return ret; @@ -883,18 +878,12 @@ static ssize_t store(struct kobject *kob get_online_cpus(); - if (!cpu_online(policy->cpu)) - goto unlock; - - down_write(&policy->rwsem); - - if (fattr->store) + if (cpu_online(policy->cpu)) { + down_write(&policy->rwsem); ret = fattr->store(policy, buf, count); - else - ret = -EIO; + up_write(&policy->rwsem); + } - up_write(&policy->rwsem); -unlock: put_online_cpus(); return ret;