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 6C36CC0015E for ; Tue, 1 Aug 2023 17:02:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0253B94002C; Tue, 1 Aug 2023 13:02:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F1766940010; Tue, 1 Aug 2023 13:02:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DDFB394002C; Tue, 1 Aug 2023 13:02:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id CCF03940010 for ; Tue, 1 Aug 2023 13:02:01 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 28A1A1204EC for ; Tue, 1 Aug 2023 17:02:00 +0000 (UTC) X-FDA: 81076153200.03.246D050 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) by imf26.hostedemail.com (Postfix) with ESMTP id A6020141594 for ; Tue, 1 Aug 2023 16:33:24 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=sUkr6tkO; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf26.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.48 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690907606; 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=kHGU2gldR70GqySNOHxAwDHvYPybisAew0SwiRmKpZY=; b=wccbhD88lsJWY8muUbcF8q+hKaCpJvRZbvyxsN1xNR+T1FvyyXreNFR0yuxRyJmrCk6btL eoKw7R7rJmt68LOZaHQuGTb30zy3QazZ7i3oC/GSZyV3mMYce74OzDOdTZNn8SwKt81aA3 wdecrwXlz6XplFufhYJ+gKCxSX/WFjU= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=sUkr6tkO; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf26.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.48 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690907606; a=rsa-sha256; cv=none; b=CPNcTFv5uyDO+DhqRdfTxmMwWRkA13Mxe6DcRszcOhojBQObTLVBZqKw5nV3f6EG6cyFI4 MLPwvjTbPkoQuqRC1bTiUsQCybkJ7A0JU3O7LAMaBQBJcc64hh2I07lEq5tEIPTRytj7rT Vxy71M3QE+85FT8JtfSMTbb2cRD9s+w= Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-31771bb4869so6021442f8f.0 for ; Tue, 01 Aug 2023 09:33:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690907600; x=1691512400; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=kHGU2gldR70GqySNOHxAwDHvYPybisAew0SwiRmKpZY=; b=sUkr6tkOpfLpmNAXaSFuiW9LXXeEwoKnrmMBkcK4Hzd0GO2uCmDG+gS3aJeFobgXlD ImcBSaz6f4I9GQ+RO4VH50l6qUxD+A8J0DSNTD75KJC1ayt6U4xdPnPubhdWeczlWQ6H fMfduYyNkmjd2kWxa5QQJ123pP6nOzDRnh1UyGT5KnRAlO3R6gH86arPxDYsF/4Pn0ie rKXwqC3Nj3MtsSP9/dw1OtLM6sSmfKy6MMU9v7Uf0lNMpxRtqiBJuwYDHe1w6uAg17kf ZTu8tou6vHV8MSGse9+huBvZCwjrIlu7RI0oZQNdHGmjzTEizy9R6fAyj0yfLm36uJBV 32xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690907600; x=1691512400; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=kHGU2gldR70GqySNOHxAwDHvYPybisAew0SwiRmKpZY=; b=W4So89k/uCYUQ2qZtKgX1sCNrkrWLrD5Lltt9qY0UL8B0o1uT5YmuhacJbXPEczlOr MDPfNZHhsAFFwlbSGP2LEYT6jFpK4v5SRdMYEB3kqj7WGTxlXxWEjKkQ6Y//Yt7vr6BF Pqe7v0JKV9dwIko74seicatUzkrZbTWfh8ITZqUn46wgixIGPtPZqHylij44KSQGNRPH N+rEatwoY5p0/tHzKPAqt1viH9KxMFeVEhj5QwNOZV1Euk+0zfys4ZyfKgfB0She6H5P CR820ESpBrJq8nDQOufWGoWMzOrS2OeHAn2Ugqo52WfgBfr7UTigF/Oq9vMnjuyFmdzS 7yog== X-Gm-Message-State: ABy/qLZLDBJpWS2D7o1LGj1Ype755uNbpSVyur1NdIIwj22BhdoFxpFq g5BbqSy0l2o/iMLtBGsPB+M= X-Google-Smtp-Source: APBJJlGWssiVAATcXmhQas2IAW1DtAJFXZ/rOYG4wKV4z3qFLF/SvVTfMh8RRRDM4z57utXs4wl8gg== X-Received: by 2002:a5d:6783:0:b0:313:f02f:be7f with SMTP id v3-20020a5d6783000000b00313f02fbe7fmr2576237wru.55.1690907600207; Tue, 01 Aug 2023 09:33:20 -0700 (PDT) Received: from localhost ([2a00:23c5:dc8c:8701:1663:9a35:5a7b:1d76]) by smtp.gmail.com with ESMTPSA id h16-20020adffa90000000b0031423a8f4f7sm16488864wrr.56.2023.08.01.09.33.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Aug 2023 09:33:19 -0700 (PDT) Date: Tue, 1 Aug 2023 17:33:18 +0100 From: Lorenzo Stoakes To: David Hildenbrand Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton , Baoquan He , Uladzislau Rezki , linux-fsdevel@vger.kernel.org, Jiri Olsa , Will Deacon , Mike Galbraith , Mark Rutland , wangkefeng.wang@huawei.com, catalin.marinas@arm.com, ardb@kernel.org, Linux regression tracking , regressions@lists.linux.dev, Matthew Wilcox , Liu Shixin , Jens Axboe , Alexander Viro , stable@vger.kernel.org Subject: Re: [PATCH] fs/proc/kcore: reinstate bounce buffer for KCORE_TEXT regions Message-ID: References: <20230731215021.70911-1-lstoakes@gmail.com> <0af1bc20-8ba2-c6b6-64e6-c1f58d521504@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <0af1bc20-8ba2-c6b6-64e6-c1f58d521504@redhat.com> X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: A6020141594 X-Stat-Signature: zei69pr954odzdeyb6bg6ug39e3cpxco X-Rspam-User: X-HE-Tag: 1690907604-3343 X-HE-Meta: U2FsdGVkX1+8mACmlylzNZgu5ryOdfwdX+yUTWDSqUObdqeCoervULMUluu9B4U4ZX56HaMrMBmlmUeFShZxtlaFaJpvtmEHIqX+kvcnCP4gAPEeqJhrxb/MC8z5T0E9aQL1xH6PQjYA9Z+AFPgslxCUH8Xb28lyIeuoJbY8U2VttFTZdttH3VYQHRy5rNIjhbrZQpC6EL7hnbRFIbsSpEb2CwO/PsmZXwIj5k8TxkoXrXT88+U+UY7nETLc9E9Kdjsk3FrpFWWFZbdoZYIXBstuiQsQnNG/PeHoE1J6Po0QL6+qkTn7qUgaCXqvEnkujztIG2oylO9ahi11TjT/4ZbElm6bzfleTsweJpaLcgsfC6cum/Y904BfmM+yLRYRPYRR1wFFDytJ0uTNxEidRyBiFZfKsyiMOx8JpzjrLpUBNGqzfDNKy4k2b/klX+YcwYcEOAm7bz6C/6uORqA4PiL+6dqa3N8zEdU1qK5el/TePJ0q0CfLevrKmRfgDtMDxAywE4RiNeh9/rZZw26/gk7IbFOt0C/hMZwG9hrveUtf3Yfr/5X0RXH4zNR30PjGKbPEvk9lIgTHlIcUSIEr/eVzhmOGRWlV3/Pv3b/GCy5wcabClAy9nBHHAS+y8IcjP4YFsAEZujogIF4Zvwgly448F2IdQcjPvQ3fh2rirhSfZGnOwc9BOONbe6z3qN3X3N99WiM6yacLocUh7EjEY/TyQSZnUQzxFmccY3YkY4E3z9lgvNG/VdaYObrJAIgBIXtkl56G/YYsCcC8PbqYBgO3eO8hZQX6TTJiBaLc9RTJhBPdBvQB4FSYHEctZWAAOBp33j7uMlprbsfxexI90nHVdPToAttSIzlTYtxs+8Xyb/1h/ynIEQUMVrUsZ6E7R8xDiznpId+cDVKiY2vl+3gzh7+MGvj1bNDn8MEa+Zd31ApLTCQUuhg94HQn0P5VzWhTFRrGMuIip4gHWFE zr4oIjHD 5kfkyfzZZm545+0dvnNkR9ttl1HgTZbjp5hnCo99UoRgbTK5RCFj9XSaVZDV/f8R1tG0g3nzK4Q0SjsCrPHyDBbqgH71rqAXfFpuHkA4V1M8BvSB/UyGMTZCOgO3ck2sTq1sGDu1zTylJV27w07aBCcH9qWFYXEeNkSMfMV+10fwFKy+8w0OC7yKR3eZLUlJLhpS0U6riVoLmVwG3rBKV3xJ3AhicfIOX/FawwXa8SzD4+Acwk3Z4iTsEbZ3gAqF48HGThIxRqb2oyzaE71F27PwZGjv+vlHE4RAr22lOjS4kA8wSq1O/fgOCkRhBePEnNXQGkwOzIhRFtOMaBW6mOvawW/5nyyQJdj1vuYTSDsbRj7pjCF5B3MW1n9jw7ceuutJIButcV+Kq2BJkpRSOYWFNA7nVWQkMBRT/80XZzqq8xdn/qbvziAcnLoy8DURFwPJoQlHow5bCA870KxQxQYx5zXQi9ulOvOHzIWjUDitPfP3Ax2cMLho+jJNFz+I/hGGAuuhX16jkXH4ejnsC1BHImg== 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 Tue, Aug 01, 2023 at 11:05:40AM +0200, David Hildenbrand wrote: > On 31.07.23 23:50, Lorenzo Stoakes wrote: > > Some architectures do not populate the entire range categorised by > > KCORE_TEXT, so we must ensure that the kernel address we read from is > > valid. > > > > Unfortunately there is no solution currently available to do so with a > > purely iterator solution so reinstate the bounce buffer in this instance so > > we can use copy_from_kernel_nofault() in order to avoid page faults when > > regions are unmapped. > > > > This change partly reverts commit 2e1c0170771e ("fs/proc/kcore: avoid > > bounce buffer for ktext data"), reinstating the bounce buffer, but adapts > > the code to continue to use an iterator. > > > > Fixes: 2e1c0170771e ("fs/proc/kcore: avoid bounce buffer for ktext data") > > Reported-by: Jiri Olsa > > Closes: https://lore.kernel.org/all/ZHc2fm+9daF6cgCE@krava > > Cc: stable@vger.kernel.org > > Signed-off-by: Lorenzo Stoakes > > --- > > fs/proc/kcore.c | 26 +++++++++++++++++++++++++- > > 1 file changed, 25 insertions(+), 1 deletion(-) > > > > diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c > > index 9cb32e1a78a0..3bc689038232 100644 > > --- a/fs/proc/kcore.c > > +++ b/fs/proc/kcore.c > > @@ -309,6 +309,8 @@ static void append_kcore_note(char *notes, size_t *i, const char *name, > > static ssize_t read_kcore_iter(struct kiocb *iocb, struct iov_iter *iter) > > { > > + struct file *file = iocb->ki_filp; > > + char *buf = file->private_data; > > loff_t *fpos = &iocb->ki_pos; > > size_t phdrs_offset, notes_offset, data_offset; > > size_t page_offline_frozen = 1; > > @@ -554,11 +556,22 @@ static ssize_t read_kcore_iter(struct kiocb *iocb, struct iov_iter *iter) > > fallthrough; > > case KCORE_VMEMMAP: > > case KCORE_TEXT: > > + /* > > + * Sadly we must use a bounce buffer here to be able to > > + * make use of copy_from_kernel_nofault(), as these > > + * memory regions might not always be mapped on all > > + * architectures. > > + */ > > + if (copy_from_kernel_nofault(buf, (void *)start, tsz)) { > > + if (iov_iter_zero(tsz, iter) != tsz) { > > + ret = -EFAULT; > > + goto out; > > + } > > /* > > * We use _copy_to_iter() to bypass usermode hardening > > * which would otherwise prevent this operation. > > */ > > Having a comment at this indentation level looks for the else case looks > kind of weird. Yeah, but having it indented again would be weird and seem like it doesn't apply to the block below, there's really no good spot for it and checkpatch.pl doesn't mind so I think this is ok :) > > (does that comment still apply?) Hm good point, actually, now we're using the bounce buffer we don't need to avoid usermode hardening any more. However since we've established a bounce buffer ourselves its still appropriate to use _copy_to_iter() as we know the source region is good to copy from. To make life easy I'll just respin with an updated comment :) > > > -- > Cheers, > > David / dhildenb >