From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5831EC4363D for ; Wed, 23 Sep 2020 14:18:46 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C4FDE21D43 for ; Wed, 23 Sep 2020 14:18:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="pVmLz0V1" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C4FDE21D43 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=zeniv.linux.org.uk Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=oTjZ+uEBZB/oQSr7BE2ja98h9z5BBf3dSfG1TtAi6To=; b=pVmLz0V1HGQsuR+zRWsJWBozh gy1GK9guog4J2SAvm2oKuqzLyDZICYqfdhthpd+q+EGlnLn/LxDVG10Q7QdG3wM95hdVfO29D1uLy hlwP0iqtxD9dYh67CJ7KVSnv0FFtMikrVUDq2wGluiV6Kcibp2tSW3bN6vFkuafbRupkXyZ4/Q7Ke 7gBkOf6iilSdK8T/InHglCS8CUvm3ExK+lw8cvLXmMjDMyzqrZXz1EVi0MwqPPUiozazQ46tom5W6 IigIsxZDcG3iiYfBJOMbh/mNjlc1tpAa+f5NEAmhl3lCKmvsVUNykoKleZabz0z8DjeFDuf0yyvPc 32Nk/aXkg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kL5Zw-0006jk-WF; Wed, 23 Sep 2020 14:17:05 +0000 Received: from [2002:c35c:fd02::1] (helo=ZenIV.linux.org.uk) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kL5Zu-0006if-Ti for linux-arm-kernel@lists.infradead.org; Wed, 23 Sep 2020 14:17:03 +0000 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kL5Zm-004aBB-Mq; Wed, 23 Sep 2020 14:16:54 +0000 Date: Wed, 23 Sep 2020 15:16:54 +0100 From: Al Viro To: Christoph Hellwig Subject: Re: [PATCH 3/9] iov_iter: refactor rw_copy_check_uvector and import_iovec Message-ID: <20200923141654.GJ3421308@ZenIV.linux.org.uk> References: <20200923060547.16903-1-hch@lst.de> <20200923060547.16903-4-hch@lst.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20200923060547.16903-4-hch@lst.de> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200923_101702_974599_2FD268DE X-CRM114-Status: GOOD ( 14.68 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-aio@kvack.org, linux-mips@vger.kernel.org, David Howells , linux-mm@kvack.org, keyrings@vger.kernel.org, sparclinux@vger.kernel.org, linux-arch@vger.kernel.org, linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org, Linus Torvalds , Arnd Bergmann , linux-block@vger.kernel.org, io-uring@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Jens Axboe , linux-parisc@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org, David Laight , linux-fsdevel@vger.kernel.org, Andrew Morton , linuxppc-dev@lists.ozlabs.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Wed, Sep 23, 2020 at 08:05:41AM +0200, Christoph Hellwig wrote: > +struct iovec *iovec_from_user(const struct iovec __user *uvec, > + unsigned long nr_segs, unsigned long fast_segs, Hmm... For fast_segs unsigned long had always been ridiculous (4G struct iovec on caller stack frame?), but that got me wondering about nr_segs and I wish I'd thought of that when introducing import_iovec(). The thing is, import_iovec() takes unsigned int there. Which is fine (hell, the maximal value that can be accepted in 1024), except that we do pass unsigned long syscall argument to it in some places. E.g. vfs_readv() quietly truncates vlen to 32 bits, and vlen can come unchanged through sys_readv() -> do_readv() -> vfs_readv(). With unsigned long passed by syscall glue. AFAICS, passing 4G+1 as the third argument to readv(2) on 64bit box will be quietly treated as 1 these days. Which would be fine, except that before "switch {compat_,}do_readv_writev() to {compat_,}import_iovec()" it used to fail with -EINVAL. Userland, BTW, describes readv(2) iovcnt as int; process_vm_readv(), OTOH, has these counts unsigned long from the userland POV... I suppose we ought to switch import_iovec() to unsigned long for nr_segs ;-/ Strictly speaking that had been a userland ABI change, even though nothing except regression tests checking for expected errors would've been likely to notice. And it looks like no regression tests covered that one... Linus, does that qualify for your "if no userland has noticed the change, it's not a breakage"? _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel