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 E9615C67861 for ; Mon, 8 Apr 2024 20:40:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5099C6B0088; Mon, 8 Apr 2024 16:40:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4B91D6B0089; Mon, 8 Apr 2024 16:40:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 380636B008A; Mon, 8 Apr 2024 16:40:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 19B646B0088 for ; Mon, 8 Apr 2024 16:40:32 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id C30F0A0194 for ; Mon, 8 Apr 2024 20:40:31 +0000 (UTC) X-FDA: 81987532662.25.C706F6A Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) by imf13.hostedemail.com (Postfix) with ESMTP id E5A8D2000F for ; Mon, 8 Apr 2024 20:40:28 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=m6irC918; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf13.hostedemail.com: domain of axelrasmussen@google.com designates 209.85.221.43 as permitted sender) smtp.mailfrom=axelrasmussen@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712608829; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=YH7O1NXdJC03aNqvzATcinYdpPQ1XTxhwnXgM4me0RQ=; b=aud8M96U6KbV2uiZDXq3ElLZBzHgOvprIspFY8Lfo6hzX/8lvL6nyxGl+X96kT5nOFhx/B 4c/KB6OIW0bkZ9nYl3DLE6IXiVvBDKYX1wQmy06dKmxwUe7YOE065fbjXAUIoxRpvwe23j RFELn3Vg1Z1H2b/Fhld2DPm42RNqS4o= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=m6irC918; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf13.hostedemail.com: domain of axelrasmussen@google.com designates 209.85.221.43 as permitted sender) smtp.mailfrom=axelrasmussen@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712608829; a=rsa-sha256; cv=none; b=BEw6Hscl0SoXYuVYhJvDXdL8G1xpxAWzkxZ7UEQ1m7EgasXK5hG1WAFKVHYpVLe+qxXGHD 12rwTSh7fKeCPXQQeXw5UlmKuLzsFxnLoiD/iG3JAeps4pXvY1itdm5ETg1azUObvNb1QS +zTG3M00vuOPdxFCKNiuWDVGGAW7svA= Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-33edbc5932bso3637689f8f.3 for ; Mon, 08 Apr 2024 13:40:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1712608827; x=1713213627; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=YH7O1NXdJC03aNqvzATcinYdpPQ1XTxhwnXgM4me0RQ=; b=m6irC918qO5QTzD+U3XXT2BJMAUY/e2qOCNeA0uFBlvHcBCrOTRfj9gCSXfZJBpR36 mE1MIaf5KNHnhIuKePXmgsBJwr1zikRDgyFvqhaHTdtFUw2S1kfn54JZ1hYKnC04fI7k 58UGkPtroxP4YHTBroRmmXtnZW6yXUkImMXUaP6w2tQIQ5x51CTATwrAaN1NI/N8so/O bGJMRnQrxEjIyqCwNJWe70MCl5pgpR/5xPQmspKyBDWMc92VvggGPlq0V4mJLzoSH5c1 rGPIVqhhWVWkccbVgQEzoLvryIQAeM3dxry40T6U/kcQTSDVusDWE9a2KUFrSmqSw0l6 xKcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712608827; x=1713213627; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YH7O1NXdJC03aNqvzATcinYdpPQ1XTxhwnXgM4me0RQ=; b=hR8anAgztqwR5KX+vHNByu81HCgeA33ia88yhMcY8zpf3Baotyihj3ipcDi8+S7PPf 7aGlJAMrwkB+eVeCMCM+vYCE6taIqLvSHiZQscnvO0ps7fVi9ofrclK8m0qfy/ULPFV4 kMtWqZX8AzHh3WQgcZqGKlj9o87wuSVVVjZ6hvOgv7Y0X1RKSkWHq3xiaoDu1cnuq3Wa F2yGD4RLm8Jh7EMXtAqsb5oBo7kjdkCF48oPBqrOrcTHEgRvsIRuDjBdUX+jWMKDMQWD pkp4BsQnoR1u3soENzUSs8Za6nGFHFiGrX7rVq7G5ZUng1hBuwdD+MqhmA7qPtzfkIFd dOCg== X-Forwarded-Encrypted: i=1; AJvYcCUQ/kZO3sqkMLiO1nX1OnM6jnmp13OMNhwX2PONneAFPKLTESudH/MdZl6FtLyqaMvjFIHLwK3Ew9HN+o6Ml54ET6E= X-Gm-Message-State: AOJu0Yzk26JNzdJKnu5uLt7jISZRHxkoJMulx7eEZju6xRVRaZDuoliw IL7E1mkLxsLvTtY+TJCOwHSZKhEUA5uEOhk/R9pW4Itm57di3CWXz31pcXDBG8cXqsvscN4IawF a6e6KV00F0J7l047ikCjNlee0PPxTJ4lJm7WK X-Google-Smtp-Source: AGHT+IFxhfE/RzvX7+ulq0KbAkf7P5D6w45kxMVxgPiuAeYPn2IilZSRtVlEKwNMRCb0uRiYGJdYkTguNKiF7lfjQRE= X-Received: by 2002:a5d:4811:0:b0:343:d06e:51cb with SMTP id l17-20020a5d4811000000b00343d06e51cbmr6748896wrq.19.1712608827286; Mon, 08 Apr 2024 13:40:27 -0700 (PDT) MIME-Version: 1.0 References: <20240405231920.1772199-1-peterx@redhat.com> <151c1981-f2ed-43fd-bec3-5ed63efe1c13@redhat.com> In-Reply-To: <151c1981-f2ed-43fd-bec3-5ed63efe1c13@redhat.com> From: Axel Rasmussen Date: Mon, 8 Apr 2024 13:39:49 -0700 Message-ID: Subject: Re: [PATCH] mm/userfaultfd: Allow hugetlb change protection upon poison entry To: David Hildenbrand Cc: peterx@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton , linux-stable , syzbot+b07c8ac8eee3d4d8440f@syzkaller.appspotmail.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: E5A8D2000F X-Stat-Signature: jwrp9wh4marnhwweksfmueegr5td9du3 X-Rspam-User: X-HE-Tag: 1712608828-182922 X-HE-Meta: U2FsdGVkX19Gzz1Q98Vb2/LTg4hr0JcdKgRO6Ny8dhjIMDR81UkJrPMUZlm01l/QBnVv5KjkWCaDWV1qbUlvwNk1b0c/mqGAvr1PxrgSUruPfwicxfhTOQWNRG7ejxve+K6ma+Tg26fxfYYzos+p1PxGT8Fb3nHGIcxGpiIFze+yyHIxMgXqkIlEqmcuZg0QEPe1v9nyo/zrwXjhOjGXXPuL/NPHbqBAK37plIM0xfRKnl/yqB9suKZHGb8DpQmc76XfDB2xTl43T/DYLQo3Y1UmKo4lxWXiA7o8J56+Z1idCBwgx7TokA3aN3MHbXeqTYkc/HBDhMLLhWxrm+fJxZznGLLntAeKf0nEPEd7xXd0vodtVNoHr4Q705AzvbSzY6oQgeaDIYVcCk8mxQKd/eDWA7jJJqLSKFOpaLKiVkyOHZIaym2RFedN4m4i7P9BrEyfm2HA7rBqanxHLUeiPXCxw/fAftzIGOBZlpdtUcrbWNvjvN06mJDkkLYYLhyTSEfPTafJMERSuKzDYox2YjBXPFQ+S0DK6d3r7vWbVxA7bv3iUJEH8DjDZ3X907kHryswEfRdFoJREFOIDO9LpVJntHv5j5+ptlVkNRywhk6b19Btw9yjtiMpuCTQ1OTnrdl6iQEIn81Nf36BlLolsYtt1gHjtyOK8jYHDOBJtJ20Oye4gRUySSa5HRXOZ7oZ0QVZphL78AlpgWmefSzF1yOpbRbKNDgAteHgzbdXVZXEkTvS4xN3hFQfczi20RyU2vQ7f/GaJdhLiid/0uWHgBMFN88K7g8lJT+mX3P9KroeeaPPWy1PLABjTpZkdfvm6UbTijcRr8u2TlD3x/y3NgafkdKSwOBK2biPmtrvo7pbfegVF/hZE2zDuJm4ynaS+OycQUic5Bo4PY6iJvrtsAoqlWveKFn3rpJ5IWojMY1i5Gas1YaxOP3bq0hl4j6eKu6f15MvliOTn4s2ulS Tfm6f7vt DI++1q8RyZ6M8IOtBBpNEZQML+wgvUDbVvcmaVagYdhM6p19AJ7FnEaaHFlp/8arSrxgiS0ZuPwQZm53+SE4tBI27GAdKWkEQFVzlZP7SxwfGqn/xNww7Z3xj+G4o8Y2FOenFJIMPn0ljAblKfN0yUciWQpaNqZ8BPSd3oLqLYuabbIgzCoWn00nkNvPnHQL9VMbZEJfQVF/nlJaCoYZlQcdwg0t5Pe3RcLSBy4ZTeCs37ah/y0IvN9DP30GKSbHAwxQcN1t7CJ/ivgffMAEKbp0WwqWpJqre2FVue6gINHystOxU2rDWGeSlZW2T09qah/IWNcte6G0vKi4XO+MuCLeWFbGRS/j2aelWHXmhyQy0iM1HaxwS8Jd7BPI3UxurYxqjuO6kOe1JAY4eJ9b8HUZzT6n6RSS6YVfMC02V/Y+nfS6aDIALu3wy1LJlSTDqkYUZWrF2nhSoPkUJXhkWGVzsLTxP+PFYK0DSsG5Zh3ZsJzE= 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: List-Subscribe: List-Unsubscribe: Reviewed-by: Axel Rasmussen Thanks for the fix, Peter! On Mon, Apr 8, 2024 at 11:59=E2=80=AFAM David Hildenbrand wrote: > > On 06.04.24 01:19, peterx@redhat.com wrote: > > From: Peter Xu > > > > After UFFDIO_POISON, there can be two kinds of hugetlb pte markers, eit= her > > the POISON one or UFFD_WP one. > > > > Allow change protection to run on a poisoned marker just like !hugetlb > > cases, ignoring the marker irrelevant of the permission. > > > > Here the two bits are mutual exclusive. For example, when install a > > poisoned entry it must not be UFFD_WP already (by checking pte_none() > > before such install). And it also means if UFFD_WP is set there must h= ave > > no POISON bit set. It makes sense because UFFD_WP is a bit to reflect > > permission, and permissions do not apply if the pte is poisoned and > > destined to sigbus. > > > > So here we simply check uffd_wp bit set first, do nothing otherwise. > > > > Attach the Fixes to UFFDIO_POISON work, as before that it should not be > > possible to have poison entry for hugetlb (e.g., hugetlb doesn't do swa= p, > > so no chance of swapin errors). > > > > Cc: Axel Rasmussen > > Cc: David Hildenbrand > > Cc: linux-stable # 6.6+ > > Link: https://lore.kernel.org/r/000000000000920d5e0615602dd1@google.com > > Reported-by: syzbot+b07c8ac8eee3d4d8440f@syzkaller.appspotmail.com > > Fixes: fc71884a5f59 ("mm: userfaultfd: add new UFFDIO_POISON ioctl") > > Signed-off-by: Peter Xu > > --- > > mm/hugetlb.c | 10 +++++++--- > > 1 file changed, 7 insertions(+), 3 deletions(-) > > > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > > index 8267e221ca5d..ba7162441adf 100644 > > --- a/mm/hugetlb.c > > +++ b/mm/hugetlb.c > > @@ -6960,9 +6960,13 @@ long hugetlb_change_protection(struct vm_area_st= ruct *vma, > > if (!pte_same(pte, newpte)) > > set_huge_pte_at(mm, address, ptep, newpte= , psize); > > } else if (unlikely(is_pte_marker(pte))) { > > - /* No other markers apply for now. */ > > - WARN_ON_ONCE(!pte_marker_uffd_wp(pte)); > > - if (uffd_wp_resolve) > > + /* > > + * Do nothing on a poison marker; page is > > + * corrupted, permissons do not apply. Here > > + * pte_marker_uffd_wp()=3D=3Dtrue implies !poison > > + * because they're mutual exclusive. > > + */ > > + if (pte_marker_uffd_wp(pte) && uffd_wp_resolve) > > /* Safe to modify directly (non-present->= none). */ > > huge_pte_clear(mm, address, ptep, psize); > > } else if (!huge_pte_none(pte)) { > > Reviewed-by: David Hildenbrand > > -- > Cheers, > > David / dhildenb >