From: Rasmus Villemoes <linux@rasmusvillemoes.dk> To: Christian Brauner <christian.brauner@ubuntu.com>, Aleksa Sarai <cyphar@cyphar.com> Cc: Al Viro <viro@zeniv.linux.org.uk>, Jeff Layton <jlayton@kernel.org>, "J. Bruce Fields" <bfields@fieldses.org>, Arnd Bergmann <arnd@arndb.de>, David Howells <dhowells@redhat.com>, Shuah Khan <shuah@kernel.org>, Shuah Khan <skhan@linuxfoundation.org>, Ingo Molnar <mingo@redhat.com>, Peter Zijlstra <peterz@infradead.org>, Christian Brauner <christian@brauner.io>, Eric Biederman <ebiederm@xmission.com>, Andy Lutomirski <luto@kernel.org>, Andrew Morton <akpm@linux-foundation.org>, Alexei Starovoitov <ast@kernel.org>, Kees Cook <keescook@chromium.org>, Jann Horn <jannh@google.com>, Tycho Andersen <tycho@tycho.ws>, David Drysdale <drysdale@google.com>, Chanho Min <chanho.min@lge.com>, Oleg Nesterov <oleg@redhat.com>, Alexander Shishkin <alexander.shishkin@linux.intel.com>, Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>, Aleksa Sarai <asarai@suse.de>, Linus Torvalds <torvalds@linux-foundation.org>, containers@lists.linux-foundation.org, linux-alpha@vger.kernel.org, linux-api@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-fsdevel@vger.kernel.org, linux-ia64@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, linux-xtensa@linux-xtensa.org, sparclinux@vger.kernel.org Subject: Re: [PATCH v12 01/12] lib: introduce copy_struct_{to,from}_user helpers Date: Thu, 5 Sep 2019 13:17:38 +0200 Message-ID: <ae415ea8-4442-d81c-3b46-2ae5fb35bbdf@rasmusvillemoes.dk> (raw) In-Reply-To: <20190905110544.d6c5t7rx25kvywmi@wittgenstein> On 05/09/2019 13.05, Christian Brauner wrote: > On Thu, Sep 05, 2019 at 06:19:22AM +1000, Aleksa Sarai wrote: >> + if (unlikely(!access_ok(dst, usize))) >> + return -EFAULT; >> + >> + /* Deal with trailing bytes. */ >> + if (usize < ksize) { >> + if (memchr_inv(src + size, 0, rest)) >> + return -EFBIG; >> + } else if (usize > ksize) { >> + if (__memzero_user(dst + size, rest)) >> + return -EFAULT; > > Is zeroing that memory really our job? Seems to me we should just check > it is zeroed. Of course it is, otherwise you'd require userspace to clear the output buffer it gives us, which in the majority of cases is wasted work. It's much easier to reason about if we just say "the kernel populates [uaddr, uaddr + usize)". It's completely symmetric to copy_struct_from_user doing a memset() of the tail of the kernel buffer in case of ksize>usize - you wouldn't want to require the kernel callers to pass a zeroed buffer to copy_struct_from_user() - it's just that when we memset(__user*), there's an error check to do. Rasmus
next prev parent reply index Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-09-04 20:19 [PATCH v12 00/12] namei: openat2(2) path resolution restrictions Aleksa Sarai 2019-09-04 20:19 ` [PATCH v12 01/12] lib: introduce copy_struct_{to,from}_user helpers Aleksa Sarai 2019-09-04 20:48 ` Linus Torvalds 2019-09-04 21:00 ` Randy Dunlap 2019-09-05 7:32 ` Peter Zijlstra 2019-09-05 9:26 ` Aleksa Sarai 2019-09-05 9:43 ` Peter Zijlstra 2019-09-05 10:57 ` Peter Zijlstra 2019-09-11 10:37 ` Aleksa Sarai 2019-09-05 13:35 ` Aleksa Sarai 2019-09-05 17:01 ` Aleksa Sarai 2019-09-05 8:43 ` Rasmus Villemoes 2019-09-05 9:50 ` Aleksa Sarai 2019-09-05 10:45 ` Christian Brauner 2019-09-05 9:09 ` Andreas Schwab 2019-09-05 10:13 ` [PATCH v12 01/12] lib: introduce copy_struct_{to, from}_user helpers Gabriel Paubert 2019-09-05 11:05 ` [PATCH v12 01/12] lib: introduce copy_struct_{to,from}_user helpers Christian Brauner 2019-09-05 11:17 ` Rasmus Villemoes [this message] 2019-09-05 11:29 ` Christian Brauner 2019-09-05 13:40 ` Aleksa Sarai 2019-09-05 11:09 ` Christian Brauner 2019-09-05 11:27 ` Aleksa Sarai 2019-09-05 11:40 ` Christian Brauner 2019-09-05 18:07 ` Al Viro 2019-09-05 18:23 ` Christian Brauner 2019-09-05 18:28 ` Al Viro 2019-09-05 18:35 ` Christian Brauner 2019-09-05 19:56 ` Aleksa Sarai 2019-09-05 22:31 ` Al Viro 2019-09-06 7:00 ` Christian Brauner 2019-09-05 23:00 ` Aleksa Sarai 2019-09-05 23:49 ` Al Viro 2019-09-06 0:09 ` Aleksa Sarai 2019-09-06 0:14 ` Al Viro 2019-09-04 20:19 ` [PATCH v12 02/12] clone3: switch to copy_struct_from_user() Aleksa Sarai 2019-09-04 20:19 ` [PATCH v12 03/12] sched_setattr: switch to copy_struct_{to,from}_user() Aleksa Sarai 2019-09-04 20:19 ` [PATCH v12 04/12] perf_event_open: switch to copy_struct_from_user() Aleksa Sarai 2019-09-04 20:19 ` [PATCH v12 05/12] namei: obey trailing magic-link DAC permissions Aleksa Sarai 2019-09-17 21:30 ` Jann Horn 2019-09-18 13:51 ` Aleksa Sarai 2019-09-18 15:46 ` Aleksa Sarai 2019-09-04 20:19 ` [PATCH v12 06/12] procfs: switch magic-link modes to be more sane Aleksa Sarai 2019-09-04 20:19 ` [PATCH v12 07/12] open: O_EMPTYPATH: procfs-less file descriptor re-opening Aleksa Sarai 2019-09-04 20:19 ` [PATCH v12 08/12] namei: O_BENEATH-style path resolution flags Aleksa Sarai 2019-09-04 20:19 ` [PATCH v12 09/12] namei: LOOKUP_IN_ROOT: chroot-like path resolution Aleksa Sarai 2019-09-04 20:19 ` [PATCH v12 10/12] namei: aggressively check for nd->root escape on ".." resolution Aleksa Sarai 2019-09-04 21:09 ` Linus Torvalds 2019-09-04 21:35 ` Linus Torvalds 2019-09-04 21:36 ` Linus Torvalds 2019-09-04 21:48 ` Aleksa Sarai 2019-09-04 22:16 ` Linus Torvalds 2019-09-04 22:31 ` David Howells 2019-09-04 22:38 ` Linus Torvalds 2019-09-04 23:29 ` Al Viro 2019-09-04 23:44 ` Linus Torvalds 2019-09-04 20:19 ` [PATCH v12 11/12] open: openat2(2) syscall Aleksa Sarai 2019-09-04 21:00 ` Randy Dunlap 2019-09-07 12:40 ` Jeff Layton 2019-09-07 16:58 ` Linus Torvalds 2019-09-07 17:42 ` Andy Lutomirski 2019-09-07 17:45 ` Linus Torvalds 2019-09-07 18:15 ` Andy Lutomirski 2019-09-10 6:35 ` Ingo Molnar 2019-09-08 16:24 ` Aleksa Sarai 2019-09-04 20:19 ` [PATCH v12 12/12] selftests: add openat2(2) selftests Aleksa Sarai
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=ae415ea8-4442-d81c-3b46-2ae5fb35bbdf@rasmusvillemoes.dk \ --to=linux@rasmusvillemoes.dk \ --cc=akpm@linux-foundation.org \ --cc=alexander.shishkin@linux.intel.com \ --cc=arnd@arndb.de \ --cc=asarai@suse.de \ --cc=ast@kernel.org \ --cc=bfields@fieldses.org \ --cc=chanho.min@lge.com \ --cc=christian.brauner@ubuntu.com \ --cc=christian@brauner.io \ --cc=containers@lists.linux-foundation.org \ --cc=cyphar@cyphar.com \ --cc=dhowells@redhat.com \ --cc=drysdale@google.com \ --cc=ebiederm@xmission.com \ --cc=jannh@google.com \ --cc=jlayton@kernel.org \ --cc=jolsa@redhat.com \ --cc=keescook@chromium.org \ --cc=linux-alpha@vger.kernel.org \ --cc=linux-api@vger.kernel.org \ --cc=linux-arch@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-ia64@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-kselftest@vger.kernel.org \ --cc=linux-m68k@lists.linux-m68k.org \ --cc=linux-mips@vger.kernel.org \ --cc=linux-parisc@vger.kernel.org \ --cc=linux-s390@vger.kernel.org \ --cc=linux-sh@vger.kernel.org \ --cc=linux-xtensa@linux-xtensa.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=luto@kernel.org \ --cc=mingo@redhat.com \ --cc=namhyung@kernel.org \ --cc=oleg@redhat.com \ --cc=peterz@infradead.org \ --cc=shuah@kernel.org \ --cc=skhan@linuxfoundation.org \ --cc=sparclinux@vger.kernel.org \ --cc=torvalds@linux-foundation.org \ --cc=tycho@tycho.ws \ --cc=viro@zeniv.linux.org.uk \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Linux-kselftest Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-kselftest/0 linux-kselftest/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-kselftest linux-kselftest/ https://lore.kernel.org/linux-kselftest \ linux-kselftest@vger.kernel.org public-inbox-index linux-kselftest Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kselftest AGPL code for this site: git clone https://public-inbox.org/public-inbox.git