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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3CAD8EB64DC for ; Fri, 21 Jul 2023 14:13:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AF3D86B0072; Fri, 21 Jul 2023 10:13:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AA3956B0074; Fri, 21 Jul 2023 10:13:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 96ADC8D0001; Fri, 21 Jul 2023 10:13:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 88D3E6B0072 for ; Fri, 21 Jul 2023 10:13:46 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 5A7F81602BD for ; Fri, 21 Jul 2023 14:13:46 +0000 (UTC) X-FDA: 81035812452.12.F4B1E4A Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) by imf08.hostedemail.com (Postfix) with ESMTP id 63F00160012 for ; Fri, 21 Jul 2023 14:13:44 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=bSgkkzhG; spf=pass (imf08.hostedemail.com: domain of olsajiri@gmail.com designates 209.85.218.51 as permitted sender) smtp.mailfrom=olsajiri@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689948824; a=rsa-sha256; cv=none; b=74y0shE/p7whHE6ExFzaoVBFvPAflPvFXkQpJewb4r6RAr2jw1hXVfcBi7njL9xa28WHVC gTldwY3QjKeGSO31fqiAaUeVw6JcmpZSJhX42F+PuI7/hfaj0pu0HUhRetVpzL5WiAfmgH VrRfPMqTtr8vUWoLYLh6YcHBo2kr/84= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=bSgkkzhG; spf=pass (imf08.hostedemail.com: domain of olsajiri@gmail.com designates 209.85.218.51 as permitted sender) smtp.mailfrom=olsajiri@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689948824; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=jTiZKWG+Cif6uSGkqVpSsZKmtuHMIC5BZBRXp3RaZY0=; b=6gIsdUnEckiKlSSfPf1zS+1/FqmbIIFRrVsB0lJhweAN326YcHuf1Zd0Zuxq0CdHDh7HJa +Hu/5HlryQOM+GeXXUIKAj1vKKAAh8D3HFpz3y4K3WpujLGaEKOMK+cOfPCWPN5poH1kC9 327AYMLIOkpx3SJZkOSUvvjSFMpIEZQ= Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-99313a34b2dso284766666b.1 for ; Fri, 21 Jul 2023 07:13:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689948823; x=1690553623; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:from:to:cc:subject:date:message-id:reply-to; bh=jTiZKWG+Cif6uSGkqVpSsZKmtuHMIC5BZBRXp3RaZY0=; b=bSgkkzhG7An9AVoKrMumbL9xiXL380xIZJEvmrmx9U5srM+FpnU6DcxDMgm07mM13S aJ5Shp3X2vMXjR7LimidZ7jIBh0VSrmUVHMIp/qymsNfJ+UuAa+kuh8JjfQ9YIIyEjkN pUANto3pLHm7EJFSmodEypW4yQO45th4XEXHDTgV+nTSmFasovRamFUpw18jONRUL7V1 z19+OTH9uMgrSZEgiBUlP7c57WePcxTEn8bsEuLdB8msbWseXQm8tkIudZ40bLgpjSAh Mf9vFF5kMUbeQmOCtDLMTtrlIDTbbzcM2vhoEe1Rtl4YD96AmuH165lnh4fp7pTBJ1+Q Vowg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689948823; x=1690553623; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=jTiZKWG+Cif6uSGkqVpSsZKmtuHMIC5BZBRXp3RaZY0=; b=Zak7iHbWGewgNJb3aBLC4Xp19X6c8ucsWHaet3Hg+1ScRew0AsE2OqeMWPtoK3w2Xi 8dqbqLYHPJwTcnmiwjoWBQYrrRZCew3Ac8mnjRBU7Pd3+S70PL2KrvjMvwX6pvpwzqEK 9VkdernKNpU3UsLqNCHYI2CE6ZSgMrbg9L+xb4BbXUE7kbhpn6XzWiR3NmvNTr1vKKoF dpngWxcxSc83OMvB5aJEKEMmc3Jcx95hBJ5wSGPFarxGDivHVCCKwW3+LuLdXdSDn389 Xtvm8OoUmzMnDivyiGUoSeFFqRX4ofpMYP7g0k2jkJCdHcdcEjlkkUusP/O6rot+p3+9 SK4g== X-Gm-Message-State: ABy/qLY7lLlzAArIY7p+f+icKM1vwO4gf6hxv9E2/CjOAWixYmX4ZfoN fN95an7TCcnsW5Uc+vZAiY8= X-Google-Smtp-Source: APBJJlENisEswjkwjMzFaJUMeB0ZRr5qmTZQOFikJvyqr9lFw+jEk4LumhWtwqhqMCkGqCil+5TJOw== X-Received: by 2002:a17:906:5386:b0:974:771e:6bf0 with SMTP id g6-20020a170906538600b00974771e6bf0mr1626532ejo.56.1689948822336; Fri, 21 Jul 2023 07:13:42 -0700 (PDT) Received: from krava (ip-94-113-247-30.net.vodafone.cz. [94.113.247.30]) by smtp.gmail.com with ESMTPSA id mc13-20020a170906eb4d00b00988c0c175c6sm2213577ejb.189.2023.07.21.07.13.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Jul 2023 07:13:41 -0700 (PDT) From: Jiri Olsa X-Google-Original-From: Jiri Olsa Date: Fri, 21 Jul 2023 16:13:39 +0200 To: Baoquan He , Lorenzo Stoakes Cc: Jiri Olsa , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Andrew Morton , Uladzislau Rezki , Matthew Wilcox , David Hildenbrand , Liu Shixin , Jens Axboe , Alexander Viro Subject: Re: [PATCH v8 1/4] fs/proc/kcore: avoid bounce buffer for ktext data Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 63F00160012 X-Stat-Signature: dj8swbqe8eafc7bd1d7jduyarjkt9c56 X-Rspam-User: X-HE-Tag: 1689948824-450635 X-HE-Meta: U2FsdGVkX1+b+2FXXO6pHXYcnk5Gyym+T5RJ/cbfcPWQany+rWwwJNu5PvSqAGKvqxEBRWit0pyPVzg4k4by/gR3akKwusFb+cNxOfpdX0tfmAtAQZv4oQipzGpVO24pn0MSQY0iHikl9kV/YHdXpc+1kLoPDQzZJM4K5VhINTc5D3iBD1Ws5U2iPqFG2EI+KejXIiyeo9HT2sTguN9EDjZeUYpajUIJa6upHDq7qUl6N5o9gH62bxJzju80CK2+ZdzCTV5Rygq4p9XBukOC/dl0M1v1sAdFigdT2veSgKj8e+BnyzztnSm61KT4w5Y62cFOe0YKZ4TIH1V4hntseCxR7RzxUsWPMOpvjS2pZN/ePpBzX3na+NcgyqlpAhroJ1hFvALVouzftlXKrache9wKOoRQZYeLenj8jl3fJIf/ChPlgzQr2Y3Xpe+QgixBTrcOThVppqsdSCt26sSuU8+j1FziM9l4ZdZwpGU6EUUBvq2ZVEWwM5zOJxVNYtkMro2sXgBy6+BKo0SA67NRIImBFNv00dy8jcX0CieqbVPbCQet81t9qhTNECp7iBp5PX1w9RyhrD3Lakj8t7zytBaIy9V5fPlqm2DcMP90wKXJ6pUVmTzYYat991Ec9Pt2+swCmoWRj0j+GxpyDChYyJ0M7KatuySfHqE4tv1p3KZ4MsYhlpLqAIu9I3r2zaokk8isI+sc6rdxc+KrGwr/a5cWA/F8H8Prg9jsvcdDkxJqH+KjjQXIBoXdaMG3LYwytUd1a5nkqw7coIG18EfQuT5jGCV8GFjCsrJdgCmQT/MtWu1gQwAKnJ6KNco45mNI/BDrssXHC0MSSgYmBVvGe6SrL0eEj7BOlU3UQW+PSJTr2RyEZtXp/Hi1o2KTdJwVV7sHRKUws+LRLpibEIsEfvhQY+paG/LguIBvJCq6yKwZ4ZQ2tM/0fVe2874CcCp4vtciLL51Ilqrle4GXFZ yw4hB7sR SY90DTHLlpY03l2TzlOfjbQe1AEKv3boWshcW5zDnOqkzILGBS3Tadfx1Jp79HhCdRT5pRLVdTsRlliWtNAWVP1OYS/rrTj4O0Ob+g67rhcdL+u3H71bW6dyHsUUMttXvgj1CmXtwa3X6PfVU3yBqAfU4zwOQDPInXYWeONCSNQK0+pvWEjfqYYVCUHGkNZ9QCoGgazeQhXgfADViZSNJqsUjsoE4MsIOOj7rfH8fRx7vg7mLrWicFEJKrt+0ACYt5VSnlDFTSfQUn4ZJ4FNtq651tBO2h3AvkJYODBG0DqJWRZCqpFG+DXkV3eXZlsANej4G9+psIYgdwL7R4eneXHMjh1A2quFTcY7AdfxUFXwXVh2IWyhwUI01xbdZWWvAE97QsUqcvMMIN5HaT6UPUNnHJVyXZpuAapFi5nrT0J9qLWTh8sfK/a4Ulz2N4NSNVBSQ+HPXqjl5h2UP9grZG9x0OIn20OjMwdn7 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Fri, Jul 21, 2023 at 09:48:37PM +0800, Baoquan He wrote: > Hi Jiri, > > On 05/31/23 at 01:58pm, Jiri Olsa wrote: > > On Thu, Mar 23, 2023 at 10:15:16AM +0000, Lorenzo Stoakes wrote: > > > Commit df04abfd181a ("fs/proc/kcore.c: Add bounce buffer for ktext data") > > > introduced the use of a bounce buffer to retrieve kernel text data for > > > /proc/kcore in order to avoid failures arising from hardened user copies > > > enabled by CONFIG_HARDENED_USERCOPY in check_kernel_text_object(). > > > > > > We can avoid doing this if instead of copy_to_user() we use _copy_to_user() > > > which bypasses the hardening check. This is more efficient than using a > > > bounce buffer and simplifies the code. > > > > > > We do so as part an overall effort to eliminate bounce buffer usage in the > > > function with an eye to converting it an iterator read. > > > > > > Signed-off-by: Lorenzo Stoakes > > > Reviewed-by: David Hildenbrand > > > > hi, > > sorry for late feedback, but looks like this one breaks reading > > /proc/kcore with objdump for me: > > > > # cat /proc/kallsyms | grep ksys_read > > ffffffff8150ebc0 T ksys_read > > # objdump -d --start-address=0xffffffff8150ebc0 --stop-address=0xffffffff8150ebd0 /proc/kcore > > > > /proc/kcore: file format elf64-x86-64 > > > > objdump: Reading section load1 failed because: Bad address > > > > reverting this makes it work again > > I met this too when I executed below command to trigger a kcore reading. > I wanted to do a simple testing during system running and got this. > > makedumpfile --mem-usage /proc/kcore > > Later I tried your above objdump testing, it corrupted system too. > > Is there any conclusion about this issue you reported? I could miss > things in the discussion or patch posting to fix this. hi, thanks for your reply, I meant to ping on this again AFAIK there was no answer yet.. I managed to cleanly revert the patch when I needed the functionality, then got sidetracked and forgot about this I just re-tested and it's still failing for me, would be great to get it fixed Lorenzo, any idea? thanks, jirka > > Thanks > Baoquan > > > > > > > > --- > > > fs/proc/kcore.c | 17 +++++------------ > > > 1 file changed, 5 insertions(+), 12 deletions(-) > > > > > > diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c > > > index 71157ee35c1a..556f310d6aa4 100644 > > > --- a/fs/proc/kcore.c > > > +++ b/fs/proc/kcore.c > > > @@ -541,19 +541,12 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos) > > > case KCORE_VMEMMAP: > > > case KCORE_TEXT: > > > /* > > > - * Using bounce buffer to bypass the > > > - * hardened user copy kernel text checks. > > > + * We use _copy_to_user() to bypass usermode hardening > > > + * which would otherwise prevent this operation. > > > */ > > > - if (copy_from_kernel_nofault(buf, (void *)start, tsz)) { > > > - if (clear_user(buffer, tsz)) { > > > - ret = -EFAULT; > > > - goto out; > > > - } > > > - } else { > > > - if (copy_to_user(buffer, buf, tsz)) { > > > - ret = -EFAULT; > > > - goto out; > > > - } > > > + if (_copy_to_user(buffer, (char *)start, tsz)) { > > > + ret = -EFAULT; > > > + goto out; > > > } > > > break; > > > default: > > > -- > > > 2.39.2 > > > > > >