From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Tue, 9 May 2017 23:49:57 -0700 From: Christoph Hellwig Message-ID: <20170510064957.GB4115@infradead.org> References: <20170508073352.caqe3fqf7nuxypgi@gmail.com> <20170508124621.GA20705@kroah.com> <20170509064522.anusoikaalvlux3w@gmail.com> <20170509085659.GA32555@infradead.org> <20170509130250.GA11381@infradead.org> <20170509160322.GA15902@infradead.org> <20170510021118.GA390@ZenIV.linux.org.uk> <20170510024524.GB390@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170510024524.GB390@ZenIV.linux.org.uk> Subject: Re: [kernel-hardening] Re: [PATCH v9 1/4] syscalls: Verify address limit before returning to user-mode List-Archive: List-Post: To: Al Viro Cc: Christoph Hellwig , Andy Lutomirski , Ingo Molnar , Greg KH , Thomas Garnier , Martin Schwidefsky , Heiko Carstens , Dave Hansen , Arnd Bergmann , Thomas Gleixner , David Howells , =?iso-8859-1?Q?Ren=E9?= Nyffenegger , Andrew Morton , "Paul E . McKenney" , "Eric W . Biederman" , Oleg Nesterov , Pavel Tikhomirov , Ingo Molnar , "H . Peter Anvin" , Paolo Bonzini , Rik van Riel , Kees Cook , Josh Poimboeuf , Borislav Petkov , Brian Gerst , "Kirill A . Shutemov" , Christian Borntraeger , Russell King , Will Deacon , Catalin Marinas , Mark Rutland , James Morse , linux-s390 , LKML , Linux API , the arch/x86 maintainers , "linux-arm-kernel@lists.infradead.org" , Kernel Hardening , Linus Torvalds , Peter Zijlstra List-ID: On Wed, May 10, 2017 at 03:45:24AM +0100, Al Viro wrote: > FWIW, some parts of that queue are obviously sane; it's the conversions of > kernel_write() and friends to ->read_iter/->write_iter() that are non-starters. And that part is the main point! > That stuff is used in too many situations; we can't guarantee that all of > them will be for files that have those. That's why this series handles ITER_KVEC for this case, which is all that's really needed for kernel_read/write. If you insiste the bvec and pipe cases are handled as well that couod be added fairly easily. > As for default_file_splice_read(), I seriously suspect that with your change > we could as well just make it return -EINVAL and be done with that; places > that have ->read_iter() tend to have explicit ->splice_read() and it looks > like the ones that do not should simply use generic_file_read_iter(). > I hadn't checked that, but there's not a lot of those: Making ->splice_read to default to the ->read_iter based implementation and returning -EINVAL if neither that nor an explicit ->splice_read is provided is useful, but wasn't the aim of this series. Similar on the write side.