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=-3.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 22F98C43465 for ; Mon, 21 Sep 2020 15:11:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E36EE2075E for ; Mon, 21 Sep 2020 15:11:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726417AbgIUPL0 (ORCPT ); Mon, 21 Sep 2020 11:11:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47974 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726413AbgIUPL0 (ORCPT ); Mon, 21 Sep 2020 11:11:26 -0400 Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [IPv6:2002:c35c:fd02::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5750C061755; Mon, 21 Sep 2020 08:11:25 -0700 (PDT) Received: from viro by ZenIV.linux.org.uk with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kKNTL-003Byz-4d; Mon, 21 Sep 2020 15:11:19 +0000 Date: Mon, 21 Sep 2020 16:11:19 +0100 From: Al Viro To: David Laight Cc: 'Christoph Hellwig' , Andrew Morton , Jens Axboe , Arnd Bergmann , David Howells , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "linux-mips@vger.kernel.org" , "linux-parisc@vger.kernel.org" , "linuxppc-dev@lists.ozlabs.org" , "linux-s390@vger.kernel.org" , "sparclinux@vger.kernel.org" , "linux-block@vger.kernel.org" , "linux-scsi@vger.kernel.org" , "linux-fsdevel@vger.kernel.org" , "linux-aio@kvack.org" , "io-uring@vger.kernel.org" , "linux-arch@vger.kernel.org" , "linux-mm@kvack.org" , "netdev@vger.kernel.org" , "keyrings@vger.kernel.org" , "linux-security-module@vger.kernel.org" Subject: Re: [PATCH 04/11] iov_iter: explicitly check for CHECK_IOVEC_ONLY in rw_copy_check_uvector Message-ID: <20200921151119.GU3421308@ZenIV.linux.org.uk> References: <20200921143434.707844-1-hch@lst.de> <20200921143434.707844-5-hch@lst.de> <7336624280b8444fb4cb00407317741b@AcuMS.aculab.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <7336624280b8444fb4cb00407317741b@AcuMS.aculab.com> Sender: Al Viro Precedence: bulk List-ID: X-Mailing-List: io-uring@vger.kernel.org On Mon, Sep 21, 2020 at 03:05:32PM +0000, David Laight wrote: > I've actually no idea: > 1) Why there is an access_ok() check here. > It will be repeated by the user copy functions. Early sanity check. > 2) Why it isn't done when called from mm/process_vm_access.c. > Ok, the addresses refer to a different process, but they > must still be valid user addresses. > > Is 2 a legacy from when access_ok() actually checked that the > addresses were mapped into the process's address space? It never did. 2 is for the situation when a 32bit process accesses 64bit one; addresses that are perfectly legitimate for 64bit userland (and fitting into the first 4Gb of address space, so they can be represented by 32bit pointers just fine) might be rejected by access_ok() if the caller is 32bit. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Al Viro Date: Mon, 21 Sep 2020 15:11:19 +0000 Subject: Re: [PATCH 04/11] iov_iter: explicitly check for CHECK_IOVEC_ONLY in rw_copy_check_uvector Message-Id: <20200921151119.GU3421308@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit List-Id: References: <20200921143434.707844-1-hch@lst.de> <20200921143434.707844-5-hch@lst.de> <7336624280b8444fb4cb00407317741b@AcuMS.aculab.com> In-Reply-To: <7336624280b8444fb4cb00407317741b@AcuMS.aculab.com> To: David Laight Cc: 'Christoph Hellwig' , Andrew Morton , Jens Axboe , Arnd Bergmann , David Howells , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "linux-mips@vger.kernel.org" , "linux-parisc@vger.kernel.org" , "linuxppc-dev@lists.ozlabs.org" , "linux-s390@vger.kernel.org" , "sparclinux@vger.kernel.org" , "linux-block@vger.kernel.org" , "linux-scsi@vger.kernel.org" , "linux-fsdevel@vger.kernel.org" , "linux-aio@kvack.org" , "io-uring@vger.kernel.org" , "linux-arch@vger.kernel.org" , "linux-mm@kvack.org" , "netdev@vger.kernel.org" , "keyrings@vger.kernel.org" , "linux-security-module@vger.kernel.org" On Mon, Sep 21, 2020 at 03:05:32PM +0000, David Laight wrote: > I've actually no idea: > 1) Why there is an access_ok() check here. > It will be repeated by the user copy functions. Early sanity check. > 2) Why it isn't done when called from mm/process_vm_access.c. > Ok, the addresses refer to a different process, but they > must still be valid user addresses. > > Is 2 a legacy from when access_ok() actually checked that the > addresses were mapped into the process's address space? It never did. 2 is for the situation when a 32bit process accesses 64bit one; addresses that are perfectly legitimate for 64bit userland (and fitting into the first 4Gb of address space, so they can be represented by 32bit pointers just fine) might be rejected by access_ok() if the caller is 32bit. 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=-3.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 7C68CC43465 for ; Mon, 21 Sep 2020 16:04:46 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (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 2A5432151B for ; Mon, 21 Sep 2020 16:04:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2A5432151B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=zeniv.linux.org.uk Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Received: from bilbo.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 4Bw8Qf49p0zDqqD for ; Tue, 22 Sep 2020 02:04:42 +1000 (AEST) Authentication-Results: lists.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=ftp.linux.org.uk (client-ip=2002:c35c:fd02::1; helo=zeniv.linux.org.uk; envelope-from=viro@ftp.linux.org.uk; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=none (p=none dis=none) header.from=zeniv.linux.org.uk Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [IPv6:2002:c35c:fd02::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4Bw7FG4Dw4zDqTF for ; Tue, 22 Sep 2020 01:11:30 +1000 (AEST) Received: from viro by ZenIV.linux.org.uk with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kKNTL-003Byz-4d; Mon, 21 Sep 2020 15:11:19 +0000 Date: Mon, 21 Sep 2020 16:11:19 +0100 From: Al Viro To: David Laight Subject: Re: [PATCH 04/11] iov_iter: explicitly check for CHECK_IOVEC_ONLY in rw_copy_check_uvector Message-ID: <20200921151119.GU3421308@ZenIV.linux.org.uk> References: <20200921143434.707844-1-hch@lst.de> <20200921143434.707844-5-hch@lst.de> <7336624280b8444fb4cb00407317741b@AcuMS.aculab.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <7336624280b8444fb4cb00407317741b@AcuMS.aculab.com> X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List 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" , 'Christoph Hellwig' , "linux-arch@vger.kernel.org" , "linux-s390@vger.kernel.org" , "linux-scsi@vger.kernel.org" , 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" , "linux-fsdevel@vger.kernel.org" , Andrew Morton , "linuxppc-dev@lists.ozlabs.org" Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" On Mon, Sep 21, 2020 at 03:05:32PM +0000, David Laight wrote: > I've actually no idea: > 1) Why there is an access_ok() check here. > It will be repeated by the user copy functions. Early sanity check. > 2) Why it isn't done when called from mm/process_vm_access.c. > Ok, the addresses refer to a different process, but they > must still be valid user addresses. > > Is 2 a legacy from when access_ok() actually checked that the > addresses were mapped into the process's address space? It never did. 2 is for the situation when a 32bit process accesses 64bit one; addresses that are perfectly legitimate for 64bit userland (and fitting into the first 4Gb of address space, so they can be represented by 32bit pointers just fine) might be rejected by access_ok() if the caller is 32bit. 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.2 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 04170C43465 for ; Mon, 21 Sep 2020 15:12:45 +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 A691E2075E for ; Mon, 21 Sep 2020 15:12:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Cf0cwSkw" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A691E2075E 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=SDQIkEnjs85LPB9GadpckmNp5IzDPjQJVF2Hk4zKw7M=; b=Cf0cwSkw+VckL88iqoW8PDU1R a5lfIZ4UMyB8Dye3+LNRrJTSbVhAqm0G8Le/yV9OaJ9Ca4GWmZ3kH/GHUTaggtOH2w745NWnujLnd fpwVzBhNLOs7XAsQvyIcOyadur+IGiJ45Wam5vS1185dJ7LrZ/cvkWaK7t23nR/jr/fP8/ZNQ8Evt +Aq0g4WIaTZfpIJiEWZpWQbfPrhsv0wx2dQOFOjRjL0ZsxUhRso7DGGplbeVNzyKS3Qg6FoHPet3d N/H4+m/KExQNyHGWUEuzDShhItY/pvXbdraAvJQRL10poaHuOq1OO+Lsd4A+z8Hsjqe42KPpDaGWZ RtZfkWGsw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kKNTS-000635-3Z; Mon, 21 Sep 2020 15:11:26 +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 1kKNTO-000627-VE for linux-arm-kernel@lists.infradead.org; Mon, 21 Sep 2020 15:11:23 +0000 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kKNTL-003Byz-4d; Mon, 21 Sep 2020 15:11:19 +0000 Date: Mon, 21 Sep 2020 16:11:19 +0100 From: Al Viro To: David Laight Subject: Re: [PATCH 04/11] iov_iter: explicitly check for CHECK_IOVEC_ONLY in rw_copy_check_uvector Message-ID: <20200921151119.GU3421308@ZenIV.linux.org.uk> References: <20200921143434.707844-1-hch@lst.de> <20200921143434.707844-5-hch@lst.de> <7336624280b8444fb4cb00407317741b@AcuMS.aculab.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <7336624280b8444fb4cb00407317741b@AcuMS.aculab.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200921_111123_352031_2897AE0A X-CRM114-Status: GOOD ( 14.29 ) 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" , 'Christoph Hellwig' , "linux-arch@vger.kernel.org" , "linux-s390@vger.kernel.org" , "linux-scsi@vger.kernel.org" , 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" , "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 Mon, Sep 21, 2020 at 03:05:32PM +0000, David Laight wrote: > I've actually no idea: > 1) Why there is an access_ok() check here. > It will be repeated by the user copy functions. Early sanity check. > 2) Why it isn't done when called from mm/process_vm_access.c. > Ok, the addresses refer to a different process, but they > must still be valid user addresses. > > Is 2 a legacy from when access_ok() actually checked that the > addresses were mapped into the process's address space? It never did. 2 is for the situation when a 32bit process accesses 64bit one; addresses that are perfectly legitimate for 64bit userland (and fitting into the first 4Gb of address space, so they can be represented by 32bit pointers just fine) might be rejected by access_ok() if the caller is 32bit. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel