From patchwork Wed Apr 22 21:55:05 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Luis R. Rodriguez" X-Patchwork-Id: 6258441 Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 321CABF4A6 for ; Wed, 22 Apr 2015 22:01:57 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 42EAA2035E for ; Wed, 22 Apr 2015 22:01:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 58A2C20376 for ; Wed, 22 Apr 2015 22:01:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758234AbbDVWBy (ORCPT ); Wed, 22 Apr 2015 18:01:54 -0400 Received: from mail-pd0-f175.google.com ([209.85.192.175]:32942 "EHLO mail-pd0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758150AbbDVWBw (ORCPT ); Wed, 22 Apr 2015 18:01:52 -0400 Received: by pdbnk13 with SMTP id nk13so81788pdb.0; Wed, 22 Apr 2015 15:01:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=Y0KHi9nDHXdMoyCHCEEeF1zNtTVNjyF3VDXhqxpsdk8=; b=ahZ9kxoCirrVDNObF+XfaP+5jOkeMKmPDD/tMuJBteZDRKhj2KWSj4OCK0s8GwRcnc lkQ9aUpr+slIkMzMZHY5UCP3TODdSuG9S2gma9AhUqgpPRQ3pLLFxWG8aHLgQJZS2xQm bfvpm2mTIgJ5ekDbkdJt0+VRD8PQQpFn3nwNDK1H22wFlKIPsAViqNDGKmLL71qcW4Xa 4utLqdC+9eNtASck9/CNY8ooB/05kRIIKY30RUTqknkfzb0j4BSNAeyCE6MvJ0b+Fdqw +nt7QF9Bki/LU0Ps6XGiPG+cAImU/Q9L7wgI4dneOjxuYxty+WFSe4Qy11mO1sl4HMVY 3dzg== X-Received: by 10.66.163.38 with SMTP id yf6mr20050556pab.115.1429740111836; Wed, 22 Apr 2015 15:01:51 -0700 (PDT) Received: from mcgrof@gmail.com (c-98-234-145-61.hsd1.ca.comcast.net. [98.234.145.61]) by mx.google.com with ESMTPSA id cp10sm6033907pdb.44.2015.04.22.15.01.49 (version=TLSv1 cipher=RC4-SHA bits=128/128); Wed, 22 Apr 2015 15:01:51 -0700 (PDT) Received: by mcgrof@gmail.com (sSMTP sendmail emulation); Wed, 22 Apr 2015 14:59:36 -0700 From: "Luis R. Rodriguez" To: rusty@rustcorp.com.au Cc: akpm@linux-foundation.org, mingo@kernel.org, tj@kernel.org, linux-kernel@vger.kernel.org, linux-wireless@vger.kernel.org, keescook@chromium.org, casey@schaufler-ca.com, cocci@systeme.lip6.fr, "Luis R. Rodriguez" , Jani Nikula Subject: [PATCH v2 2/8] kernel/module.c: use generic module param operaters for sig_enforce Date: Wed, 22 Apr 2015 14:55:05 -0700 Message-Id: <1429739711-9415-3-git-send-email-mcgrof@do-not-panic.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1429739711-9415-1-git-send-email-mcgrof@do-not-panic.com> References: <1429739711-9415-1-git-send-email-mcgrof@do-not-panic.com> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID,T_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 From: "Luis R. Rodriguez" We're directly checking and modifying sig_enforce when needed instead of using the generic helpers. This prevents us from generalizing this helper so that others can use it. Use indirect helpers to allow us to generalize this code a bit and to make it a bit more clear what this is doing. Cc: Rusty Russell Cc: Jani Nikula Cc: Andrew Morton Cc: Kees Cook Cc: Tejun Heo Cc: Ingo Molnar Cc: linux-kernel@vger.kernel.org Cc: cocci@systeme.lip6.fr Signed-off-by: Luis R. Rodriguez --- kernel/module.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/kernel/module.c b/kernel/module.c index 42a1d2a..de12c4a 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -114,23 +114,25 @@ static bool sig_enforce = false; static int param_set_bool_enable_only(const char *val, const struct kernel_param *kp) { - int err; - bool test; + int err = 0; + bool new_value; + bool orig_value = *(bool *)kp->arg; struct kernel_param dummy_kp = *kp; - dummy_kp.arg = &test; + dummy_kp.arg = &new_value; err = param_set_bool(val, &dummy_kp); if (err) return err; /* Don't let them unset it once it's set! */ - if (!test && sig_enforce) + if (!new_value && orig_value) return -EROFS; - if (test) - sig_enforce = true; - return 0; + if (new_value) + err = param_set_bool(val, kp); + + return err; } static const struct kernel_param_ops param_ops_bool_enable_only = {