Received: by 10.213.65.68 with SMTP id h4csp286454imn; Mon, 12 Mar 2018 13:51:40 -0700 (PDT) X-Google-Smtp-Source: AG47ELuQ5sPGfX4nf05D9Bd8KWtg2B7pSa2TlGGTO+XVubtuY2V56vR1fYjyb0G9jtovGWfL5N04 X-Received: by 10.98.204.69 with SMTP id a66mr9293766pfg.33.1520887900565; Mon, 12 Mar 2018 13:51:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1520887900; cv=none; d=google.com; s=arc-20160816; b=NF7zXG9mf9qZDIM9IPKg6xDneUdHgCq8BmkZyFm2nC9NPFk6DKLvg6ksXpL5nKtZ58 M0mV51/V0u1vgFwOcW22kKHL8KeS5W+1RUToYM+31ZEd1+1zRvYSmAsUkMBp4A55TBnq OTP2Xg1DS7LfIszfgWsac2HtCiUqNZFEOdN0eVsVwaYPeVe/W1vxHGG3f3TgrxtUZxNt S4Hv08nDcVX40S8RTuhvqPNUtRAfSJ6EIdEtAOZBTAPA0+Z9yyk9SdrTRliS4Qob+zVe pOjedZDaqMUpx6TtC3rHd5VpDoSEcw17dr3WZhqkNAEUq2TLizII6h/A+WRV7iddQF+b flQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=muhz5cbTW/DGM6BR057FYryoUjatPXzXdPEMVDiCSHg=; b=WwaqzVS48Mdt6dRGS2whjVUbnmYz9iy7ipkw+3cPB6mImlmQ2jJHjaXppbXXYAgUHn 7EDCobfj0VXKasFFS8EH5+xl/PnX82JnFM0lqjfSpbukJegdTRksbnsAQ+aWStIthDzB LMPM8tw7QBmwmyhDBqc9cEXTH4+S2/wu/9DZrD0PxnK3Tok3hhdHfK2Re/O8NQwiQTh5 8yp6MnG+xMhQ4/u+2lKddCPe7411Is+p9odOHDVZW5wkqUnjUhy/RAzdqgsTKz5K9raT jOa1HZOxPJF4/l98NJOs1zAfCGog5jKNe59xWkgW2gvYiGFRD9NCZkVbg9WgpuLitMEA FVAQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g10-v6si6780848plk.730.2018.03.12.13.51.26; Mon, 12 Mar 2018 13:51:40 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932539AbeCLUuE (ORCPT + 99 others); Mon, 12 Mar 2018 16:50:04 -0400 Received: from mx2.suse.de ([195.135.220.15]:47857 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932397AbeCLUuC (ORCPT ); Mon, 12 Mar 2018 16:50:02 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 926D5AEF7; Mon, 12 Mar 2018 20:50:01 +0000 (UTC) Date: Mon, 12 Mar 2018 20:50:01 +0000 From: "Luis R. Rodriguez" To: Waiman Long Cc: "Luis R. Rodriguez" , Kees Cook , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Andrew Morton , Al Viro , Matthew Wilcox Subject: Re: [PATCH v4 3/6] sysctl: Warn when a clamped sysctl parameter is set out of range Message-ID: <20180312205001.GA4449@wotan.suse.de> References: <1520885744-1546-1-git-send-email-longman@redhat.com> <1520885744-1546-4-git-send-email-longman@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1520885744-1546-4-git-send-email-longman@redhat.com> User-Agent: Mutt/1.6.0 (2016-04-01) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Mar 12, 2018 at 04:15:41PM -0400, Waiman Long wrote: > Even with clamped sysctl parameters, it is still not that straight > forward to figure out the exact range of those parameters. One may > try to write extreme parameter values to see if they get clamped. > To make it easier, a warning with the expected range will now be > printed into the kernel ring buffer when a clamped sysctl parameter > receives an out of range value. > > The pr_warn_ratelimited() macro is used to limit the number of warning > messages that can be printed within a given period of time. > > Signed-off-by: Waiman Long > --- > kernel/sysctl.c | 48 ++++++++++++++++++++++++++++++++++++++++-------- > 1 file changed, 40 insertions(+), 8 deletions(-) > > diff --git a/kernel/sysctl.c b/kernel/sysctl.c > index 3d65f41..14aca92 100644 > --- a/kernel/sysctl.c > +++ b/kernel/sysctl.c > @@ -2505,6 +2505,7 @@ static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, > * @min: pointer to minimum allowable value > * @max: pointer to maximum allowable value > * @flags: pointer to flags > + * @name: sysctl parameter name > * > * The do_proc_dointvec_minmax_conv_param structure provides the > * minimum and maximum values for doing range checking for those sysctl > @@ -2514,31 +2515,48 @@ struct do_proc_dointvec_minmax_conv_param { > int *min; > int *max; > unsigned int *flags; > + const char *name; > }; > > +#ifdef pr_fmt > +#undef pr_fmt > +#endif > +#define pr_fmt(fmt) "sysctl: " fmt No. This needs to be defined at the top of the file, please look at other uses on kernel/*.c and just use: #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt The filename already provides the name we want. > + > static int do_proc_dointvec_minmax_conv(bool *negp, unsigned long *lvalp, > int *valp, > int write, void *data) > { > struct do_proc_dointvec_minmax_conv_param *param = data; > + > if (write) { > int val = *negp ? -*lvalp : *lvalp; > + bool clamped = false; > bool clamp = param->flags && > (*param->flags & CTL_FLAGS_CLAMP_RANGE); > > if (param->min && *param->min > val) { > - if (clamp) > + if (clamp) { > val = *param->min; > - else > + clamped = true; > + } else { > return -EINVAL; > + } > } > if (param->max && *param->max < val) { > - if (clamp) > + if (clamp) { > val = *param->max; > - else > + clamped = true; > + } else { > return -EINVAL; > + } > } > *valp = val; > + if (clamped && param->name) > + pr_warn_ratelimited("\"%s\" was set out of range [%d, %d], clamped to %d.\n", > + param->name, > + param->min ? *param->min : -INT_MAX, > + param->max ? *param->max : INT_MAX, val); We already warn here but I see you also add yet-another warning for the driver.... Luis