Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751468AbbH1Db4 (ORCPT ); Thu, 27 Aug 2015 23:31:56 -0400 Received: from mail-ig0-f172.google.com ([209.85.213.172]:34374 "EHLO mail-ig0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751014AbbH1Dbz (ORCPT ); Thu, 27 Aug 2015 23:31:55 -0400 MIME-Version: 1.0 In-Reply-To: References: <20150824125902.4ba11ec6@gandalf.local.home> <9CF68C3D-499C-4AFC-B890-BA5ECA284347@xmission.com> <20150825101507.4e3be4ca@gandalf.local.home> <55DCA705.8000903@gmail.com> <20150825150536.546a73e5@gandalf.local.home> <20150826163621.28d7990a@gandalf.local.home> <20150826223230.4348d936@grimm.local.home> Date: Fri, 28 Aug 2015 11:31:54 +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: Steven Rostedt Cc: Austin S Hemmelgarn , "Eric W. Biederman" , Andrey Ryabinin , Ulrich Obergfell , Prarit Bhargava , Eric B Munson , "Paul E. McKenney" , Johannes Weiner , Andrew Morton , Thomas Gleixner , Don Zickus , Heinrich Schuchardt , 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: 1663 Lines: 46 On Thu, Aug 27, 2015 at 4:32 PM, Sean Fu wrote: > On Thu, Aug 27, 2015 at 10:32 AM, Steven Rostedt wrote: >> On Thu, 27 Aug 2015 08:17:29 +0800 >> Sean Fu wrote: >> >>> On Thu, Aug 27, 2015 at 4:36 AM, Steven Rostedt wrote: >>> > On Wed, 26 Aug 2015 23:48:01 +0800 >>> > Sean Fu wrote: >>> > >>> > >>> >> > Defending the patch, I can't imagine any user space code expecting the >>> >> > current behavior. The current behavior is that if you write "1\0" it >>> >> > will error out instead of accepting the "1". I can't come up with a >>> >> > scenario that would require userspace to expect "1\0" to fail. Can you? >>> >> Thanks >>> > >>> > Although, with the current patch, would "1\02" fail? It should. >>> Yes, "1\02" is equal to "1\2"(count=2) or "1\2\0"(count=3), So it should fail. >> >> Sorry, I meant "1\0 2" > In this case, The patch behavior is accepting the "1" and discarding > other bytes. > for (; left && vleft--; i++, first=0) { //vleft is 1 for integer > type or unsigned long type proc file > >> >> -- Steve >> >>> >>> code >>> len = write(fd, "1\0\2", 3); >>> >>> strace execute result: >>> write(3, "1\2\0", 3) = -1 EINVAL (Invalid argument) If vleft > 1, "1\0 2" is treated as invalid paraments and all string include '\0' will be invalid. >>> >>> > >>> > -- Steve >> -- 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/