Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752427AbbH0AcL (ORCPT ); Wed, 26 Aug 2015 20:32:11 -0400 Received: from mail-io0-f195.google.com ([209.85.223.195]:33387 "EHLO mail-io0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751774AbbH0AcJ (ORCPT ); Wed, 26 Aug 2015 20:32:09 -0400 MIME-Version: 1.0 In-Reply-To: <55DCD29D.902@gmx.de> References: <55DCD29D.902@gmx.de> Date: Thu, 27 Aug 2015 08:32:08 +0800 Message-ID: Subject: Re: [PATCH] kernel/sysctl.c: If "count" including the terminating byte '\0' the write system call should retrun success. From: Sean Fu To: Heinrich Schuchardt Cc: Andrey Ryabinin , Ulrich Obergfell , "Steven Rostedt (Red Hat)" , Prarit Bhargava , Eric B Munson , "Paul E. McKenney" , Johannes Weiner , "Eric W. Biederman" , Andrew Morton , Thomas Gleixner , Don Zickus , David Rientjes , linux-kernel@vger.kernel.org Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1713 Lines: 50 On Wed, Aug 26, 2015 at 4:39 AM, Heinrich Schuchardt wrote: > > > On 24.08.2015 10:56, Sean Fu wrote: >> when the input argument "count" including the terminating byte "\0", >> The write system call return EINVAL on proc file. >> But it return success on regular file. >> >> E.g. Writting two bytes ("1\0") to "/proc/sys/net/ipv4/conf/eth0/rp_filter". >> write(fd, "1\0", 2) return EINVAL. > > Reading through kernel/sysctl.c it looks like you are allowing > "1\01" to be used to pass two integers or two longs. > This is not what you describe as target of your patch. "1\01" actually is "1\1", So either of them will fail. > > Parameter tr returned from proc_get_long should be checked in > __do_proc_dointvec, > __do_proc_doulongvec_minmax. > > Best regards > > Heinrich Schuchardt > >> >> Signed-off-by: Sean Fu >> --- >> kernel/sysctl.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/kernel/sysctl.c b/kernel/sysctl.c >> index 19b62b5..c2b0594 100644 >> --- a/kernel/sysctl.c >> +++ b/kernel/sysctl.c >> @@ -2004,7 +2004,7 @@ static int do_proc_dointvec_conv(bool *negp, >> unsigned long *lvalp, >> return 0; >> } >> >> -static const char proc_wspace_sep[] = { ' ', '\t', '\n' }; >> +static const char proc_wspace_sep[] = { ' ', '\t', '\n', '\0' }; >> >> static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table, >> int write, void __user *buffer, >> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/