Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp1414705ybe; Thu, 5 Sep 2019 15:20:24 -0700 (PDT) X-Google-Smtp-Source: APXvYqzTxqQwCqxD4Ba2Mi0bh3S/AgFa2YcUBNO0QmWXLnTiLzbGa4N740qz5kvAGBnJnPW/xUJz X-Received: by 2002:a17:90a:a414:: with SMTP id y20mr6365773pjp.64.1567722024101; Thu, 05 Sep 2019 15:20:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1567722024; cv=none; d=google.com; s=arc-20160816; b=ZvxbujirZtxybpxT4ykb/qSwF6m/oQLHuuig//Ai7dmZPE3/o7IYOgA2+FCkG8Ahmz vUDlxVp8OEgFLeghOsNNRBSH4eSf//KFEEfuOfOJ58Ry7BQQCioFBJlQoEUnr0HJq+iL r5frGzGaKJxxYLFRnSWG7XvPcW/9jpbgpB7VNt1+qJkq+5ixwup12VQHavducwSVA4yD t4hDaKEJAjxDSLL4Ck2tFJwaeFvX4HFjaUQFZjqzE2YjkRPYS7XCynoOAATC8vpCrftN IZS8hzEq2n9H/Dnyqy6GCizfRvgxDrGRPYzx8C5o7fa+/THyYFx5mA1Afw0GbDimNK/E MP3w== 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; bh=grx5FqwFPeKHpC/Bae4Ya1f5E2h0g67JWomFNHBXeU4=; b=sumkx0pA2rGrHtYCBDirY61vXccLgkSjUYFzNX1t1TeYBnukz1tth3WbBldb+J284N MVeR4391HEk6AbyMAbPlHJ2u6YGx8nDn8FvqKYURDHwSaWtCPBP6kzUQ3bjKVnSUfJgq wzMf4bsM2RDE8O4kNJITflqY6uz5cksT9i7QMoLkyqbgd1Av6MkO8OiWBa+msBG+hEoY hSlSOejea1Et2VQvQXAcWk/ymd8wvW00VlTALHAoW3FDpNF205gZY1k5vD8NrX1D7mNG IKIl2NvPEN9GWTS5TxxIPdmGaX0Dv8amtu/u+AhOVZGH3Rm+DV5+4arjkUSk2a5sLaK2 wjzA== 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 z7si3255123pjt.14.2019.09.05.15.20.08; Thu, 05 Sep 2019 15:20:24 -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 S2389814AbfIESXn (ORCPT + 99 others); Thu, 5 Sep 2019 14:23:43 -0400 Received: from youngberry.canonical.com ([91.189.89.112]:43028 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727764AbfIESXl (ORCPT ); Thu, 5 Sep 2019 14:23:41 -0400 Received: from [213.220.153.21] (helo=wittgenstein) by youngberry.canonical.com with esmtpsa (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1i5wPR-00053t-Nn; Thu, 05 Sep 2019 18:23:05 +0000 Date: Thu, 5 Sep 2019 20:23:03 +0200 From: Christian Brauner To: Al Viro Cc: Aleksa Sarai , Jeff Layton , "J. Bruce Fields" , Arnd Bergmann , David Howells , Shuah Khan , Shuah Khan , Ingo Molnar , Peter Zijlstra , Christian Brauner , Rasmus Villemoes , Eric Biederman , Andy Lutomirski , Andrew Morton , Alexei Starovoitov , Kees Cook , Jann Horn , Tycho Andersen , David Drysdale , Chanho Min , Oleg Nesterov , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Aleksa Sarai , Linus Torvalds , 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 Message-ID: <20190905182303.7f6bxpa2enbgcegv@wittgenstein> References: <20190904201933.10736-1-cyphar@cyphar.com> <20190904201933.10736-2-cyphar@cyphar.com> <20190905180750.GQ1131@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20190905180750.GQ1131@ZenIV.linux.org.uk> User-Agent: NeoMutt/20180716 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Sep 05, 2019 at 07:07:50PM +0100, Al Viro wrote: > On Thu, Sep 05, 2019 at 06:19:22AM +1000, Aleksa Sarai wrote: > > +/* > > + * "memset(p, 0, size)" but for user space buffers. Caller must have already > > + * checked access_ok(p, size). > > + */ > > +static int __memzero_user(void __user *p, size_t s) > > +{ > > + const char zeros[BUFFER_SIZE] = {}; > > + while (s > 0) { > > + size_t n = min(s, sizeof(zeros)); > > + > > + if (__copy_to_user(p, zeros, n)) > > + return -EFAULT; > > + > > + p += n; > > + s -= n; > > + } > > + return 0; > > +} > > That's called clear_user(). > > > +int copy_struct_to_user(void __user *dst, size_t usize, > > + const void *src, size_t ksize) > > +{ > > + size_t size = min(ksize, usize); > > + size_t rest = abs(ksize - usize); > > + > > + if (unlikely(usize > PAGE_SIZE)) > > + return -EFAULT; > > Why? Because every caller of that function right now has that limit set anyway iirc. So we can either remove it from here and place it back for the individual callers or leave it in the helper. Also, I'm really asking, why not? Is it unreasonable to have an upper bound on the size (for a long time probably) or are you disagreeing with PAGE_SIZE being used? PAGE_SIZE limit is currently used by sched, perf, bpf, and clone3 and in a few other places.