Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp640368pxx; Mon, 26 Oct 2020 17:47:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzc47bTugA38GSyjlHPEa7+GTGjeTZOOivDtifaa483CwoWWadC2G51wHKbwC4d0pVvFitg X-Received: by 2002:a17:906:f90a:: with SMTP id lc10mr18746118ejb.272.1603759655315; Mon, 26 Oct 2020 17:47:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603759655; cv=none; d=google.com; s=arc-20160816; b=EUlkZv1ME7Zz4y/ES6LkF1F1w40lUc9C/P3MCg9EUUesJOhyl+Tpur3URbW4uUbwKv xG2cW0igtJ7QMPdHvnB/vk6SUHNybWZZCW432oBS80OoXdqm9hmiIBMd3ojnNf2d4tsT edDmx6OxkhsocXujVp+G6OkI1ybfxPEIVurAOB4WpankAtXZkvK4d1kx1KWNEB5O/l2j 1urZTAQTdpvgzIGZ8h8y/aPPvEAwcAmLtaprkqWZm8wFis44I6m/yo3pcpABymZ0xqEM YQ8XwMnW4bgoEiSrtCg0wAve7zMc3XvYsb5GbY2rzbwDoUxbzrUrN6NO3tnvFHK7Kf6m hbsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=OYh8IS2t0yWzkrGW2B7i5etbCcQ21CJNhnJL1tXAEmE=; b=phr6RmkGj7QepICpsoKrXZ1OGs/Cc0N4YW04Kw9ZszR/NVmlR+g3SWz+Rd2RS4u0I6 oyEXRHun0mPd6U+7W3DnDPb+dILclDenARcC0+TLEPEPHVxZhwiF5iRHs9XKoucFgQkA dlnFwv/JP/iusp/kMpPgQ/VowCDrwVQh+jP5RkrZiIX7Zd0lXkzV40AyXvjO6sUTNSPh PHc55Aj/1uuiZVmz4bCTzJ+8g6chy0dZ0tOnn6VXm1xrDU5BlMgOp6Ki+BXlK3hnEKPO UVmsT1NzpT3NGwcXuar6WNEvLuJhOnTwJE7PcIu6md49kB7WW7zWj/wo9ll7WI8Rpt9a umfA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p60si7991748edd.331.2020.10.26.17.47.13; Mon, 26 Oct 2020 17:47:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2502143AbgJ0AjZ (ORCPT + 99 others); Mon, 26 Oct 2020 20:39:25 -0400 Received: from zeniv.linux.org.uk ([195.92.253.2]:44164 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2436545AbgJ0Acv (ORCPT ); Mon, 26 Oct 2020 20:32:51 -0400 X-Greylist: delayed 1637 seconds by postgrey-1.27 at vger.kernel.org; Mon, 26 Oct 2020 20:32:46 EDT Received: from viro by ZenIV.linux.org.uk with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kXCUL-009VwG-7r; Tue, 27 Oct 2020 00:05:21 +0000 Date: Tue, 27 Oct 2020 00:05:21 +0000 From: Al Viro To: Jens Axboe Cc: Kyle Huey , open list , Christoph Hellwig , Robert O'Callahan , Andrew Morton , Arnd Bergmann , David Howells , "moderated list:ARM PORT" , "maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)" , 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, "open list:FILESYSTEMS (VFS and infrastructure)" , 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, Linus Torvalds Subject: Re: [REGRESSION] mm: process_vm_readv testcase no longer works after compat_prcoess_vm_readv removed Message-ID: <20201027000521.GD3576660@ZenIV.linux.org.uk> References: <70d5569e-4ad6-988a-e047-5d12d298684c@kernel.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <70d5569e-4ad6-988a-e047-5d12d298684c@kernel.dk> Sender: Al Viro Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Oct 26, 2020 at 05:56:11PM -0600, Jens Axboe wrote: > On 10/26/20 4:55 PM, Kyle Huey wrote: > > A test program from the rr[0] test suite, vm_readv_writev[1], no > > longer works on 5.10-rc1 when compiled as a 32 bit binary and executed > > on a 64 bit kernel. The first process_vm_readv call (on line 35) now > > fails with EFAULT. I have bisected this to > > c3973b401ef2b0b8005f8074a10e96e3ea093823. > > > > It should be fairly straightforward to extract the test case from our > > repository into a standalone program. > > Can you check with this applied? > > diff --git a/mm/process_vm_access.c b/mm/process_vm_access.c > index fd12da80b6f2..05676722d9cd 100644 > --- a/mm/process_vm_access.c > +++ b/mm/process_vm_access.c > @@ -273,7 +273,8 @@ static ssize_t process_vm_rw(pid_t pid, > return rc; > if (!iov_iter_count(&iter)) > goto free_iov_l; > - iov_r = iovec_from_user(rvec, riovcnt, UIO_FASTIOV, iovstack_r, false); > + iov_r = iovec_from_user(rvec, riovcnt, UIO_FASTIOV, iovstack_r, > + in_compat_syscall()); _ouch_ There's a bug, all right, but I'm not sure that this is all there is to it. For now it's probably the right fix, but... Consider the fun trying to use that from 32bit process to access the memory of 64bit one. IOW, we might want to add an explicit flag for "force 64bit addresses/sizes in rvec".