From patchwork Tue Apr 8 08:59:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Hildenbrand X-Patchwork-Id: 14042451 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 9326BC369A4 for ; Tue, 8 Apr 2025 08:59:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 689E26B0007; Tue, 8 Apr 2025 04:59:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 639186B0008; Tue, 8 Apr 2025 04:59:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 500FE6B000A; Tue, 8 Apr 2025 04:59:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 3301A6B0007 for ; Tue, 8 Apr 2025 04:59:58 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 93C191A0916 for ; Tue, 8 Apr 2025 08:59:58 +0000 (UTC) X-FDA: 83310279276.06.A846CB1 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf25.hostedemail.com (Postfix) with ESMTP id 6A2BCA0002 for ; Tue, 8 Apr 2025 08:59:56 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=LRpnfcqD; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf25.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744102796; 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: references:dkim-signature; bh=kzAxoMhwq/N89veZ013n0uVF7FLZ6e8BzRGcpvH3RxE=; b=gqStTeLEiI8BfN10TwjFvveaLmLVl8BVQBUwTRABpOBfgHTPLG6hC0BmPThG5Xhyi2aJzg 4copniJaSENhzh+DydGEqGW210YimGj7WjgT56B6BsrtTs9ziOvNaRS/xazpGGQcTWsaIJ 2to/etDKba32eHA6nSOttIlgwaLw1mk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744102796; a=rsa-sha256; cv=none; b=eItNsq/68coE5ID4alnrtPfTasvvc4DueuGFywyuZiTTqxjU6e9OZYIjs2uHJayfH6mG0l E7GuiG7k3jWPZW32/K6cJVn32XfjEZDqR5aWUKb6gVEl58wCoSUz5GYLVTNwad0LqzO40p 13nGPsljVlWa42YL1Em89ZXTjEX3+TI= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=LRpnfcqD; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf25.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1744102795; h=from:from: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; bh=kzAxoMhwq/N89veZ013n0uVF7FLZ6e8BzRGcpvH3RxE=; b=LRpnfcqDFpx6V8o8BdyWnVYCouzuIhBvcj26nkQhuhs/vP8eKXs1svIx2MW1rI3OAzPYDl o6/9QEOv5yb4bqQWLWWR6t1dZ8yFBrTfFBT+uxItO+0uFpbePcDj2SKPuZ4Gh1JNPg03ee +qNDut0bTAkah10+GDtg7qVcsU8c/qg= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-659-MM6oOU5gMKCWBU8eKdLPcg-1; Tue, 08 Apr 2025 04:59:54 -0400 X-MC-Unique: MM6oOU5gMKCWBU8eKdLPcg-1 X-Mimecast-MFC-AGG-ID: MM6oOU5gMKCWBU8eKdLPcg_1744102793 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4394c489babso26153985e9.1 for ; Tue, 08 Apr 2025 01:59:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744102793; x=1744707593; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=kzAxoMhwq/N89veZ013n0uVF7FLZ6e8BzRGcpvH3RxE=; b=rrYuM1JSKx2OZISAnph5Ltz1j/KyrQDrbbbXquQ380Aksrc59hgSZSrnZty5NYKgsH lkOysNaIgPuGkoq2xP6DADYdpyFHtMP7dehhYwjJC6LEG3WZ+UeJv1P3jqI2k9aDR206 q3JM1QJhjRGp+Xpn6Xzky6ovoWq3E0NJf7aDQcyMAseJXMHZyiavzZH4yOpNFjNkVK6O RFgoyd5ybOljXBe5ml7kqu/HYJJVaak0mOWm7avakheINu+CtxiMSZyUP1zAhK1wxZAb 7sYCvQO3N4+JsP/tDmUbt2eKlekPM7L10b0cnild2qL8lX7pdiIdZzmeqeOZGQMANZiM QPdw== X-Gm-Message-State: AOJu0Ywu4VvwFuUsS/IiVV5cEVx8neb+lTMQbTRq10EjY04MTUYndViW ExJuxCDlOTpEySTLc7bm3iFD3O1v1XFRz0Bc8BoooLYYlRc2LK4q2+QdP5LWFV7srugNAP797d7 gzuxwydTt4HsW/W2fESHkWOv9LbzPMa1f9HJfSvmeqv3YtW4p X-Gm-Gg: ASbGncsNuAmI1GelV60I4psETe+nCtgLy9hJNYxfLAB9AT5CJeHPxsFyMxsRXh1Z7L1 gT+lVFcaOk7d9c6D2uCI240MGb/N2I2+zYgLPsxtai1th63mutCMil9XBHf6GXgJAfPPtgE5GEu vMu+xZnfBGDl1sY/cGaYQjlTKjQTi6HiXKE4Vw9G8MRNL/nQyeBIG/DP07www0azz9l1K6Ax4q4 KcudGgPocQL9FzSBO0VY2TnzQPC/RwIkoEZu9ndOYWF/eB86tZrQ0B+tzm/UynVaQd+sa15zB9K ukWVKXtfICKRdstMa6376wvJwURXCLljjRN9EWNMN9pZa2fQKRFraicngwywBxF1ECD68FcTqa4 = X-Received: by 2002:a05:600c:1e13:b0:43d:abd:ad0e with SMTP id 5b1f17b1804b1-43ecf8e72d6mr154625035e9.18.1744102793226; Tue, 08 Apr 2025 01:59:53 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFjj/RAjewnBNlRpflZh1xeihRfMokyOF5C4YTVYtEpSXXC3z9/o8ynALd8vnC+YZDVLSZdkg== X-Received: by 2002:a05:600c:1e13:b0:43d:abd:ad0e with SMTP id 5b1f17b1804b1-43ecf8e72d6mr154624875e9.18.1744102792863; Tue, 08 Apr 2025 01:59:52 -0700 (PDT) Received: from localhost (p200300cbc7074f00a44a5ad6765a0635.dip0.t-ipconnect.de. [2003:cb:c707:4f00:a44a:5ad6:765a:635]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-43ec342827fsm156132655e9.6.2025.04.08.01.59.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 08 Apr 2025 01:59:52 -0700 (PDT) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, x86@kernel.org, David Hildenbrand , kernel test robot , Dan Carpenter , Lorenzo Stoakes , Andrew Morton , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Rik van Riel , "H. Peter Anvin" , Linus Torvalds Subject: [PATCH v2] x86/mm/pat: (un)track_pfn_copy() fix + doc improvements Date: Tue, 8 Apr 2025 10:59:50 +0200 Message-ID: <20250408085950.976103-1-david@redhat.com> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: mAGoUD_G8ooSQ_YHZxrtAZ7vUmSGPJf0_rs5U6XtIRM_1744102793 X-Mimecast-Originator: redhat.com content-type: text/plain; charset="US-ASCII"; x-default=true X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 6A2BCA0002 X-Stat-Signature: 9if5zpjn1xou83oimcgj5mbn3obfj5kq X-Rspam-User: X-HE-Tag: 1744102796-232501 X-HE-Meta: U2FsdGVkX1+zw7604XoqS331ZJCJdADSD2sAQ6QK7Rjq0d+l1f7bV+ZxiXVvfIpBqRC82jZGXba1RSkbT+Gz/a50WA4BjKgpFtH33YgboHFH5UkUY3uJQma/5HgeWfE/RRbSSs2zUM3/iI2WUHmHVgqMJHeV1D9I9iyHSewtiCM1DXx21XsVMDsvo9gS/rOV3l3dkJOj7B990OE+PHUZnHu4PF1yrq0jhMBhtaarl/qojhtFi32LCOx6y2/I/HiYnZ/vwlkedzBFpsYMvEQRaQU8ZWBaR4/6FyAbIbORJbwzsRr3BG9FAWcl0bu0k1Re4yyppCgHHsnBWXy9A+iUV/zZZlnZG5IobZiKelUTSQPbtvXrKN7zNVc/EhAZNdQhjKCymsvJ5cBkoarkIDl0i3CnWGorW8KD43hW95GsqJL4YwDiIJtFxUKRiS26W7T1R3wLEzYnvV/qi4B3vrS1jlhE0BdwHBVFooXW+I1gJp5b1+B45nPTbZoz1h0fnu7lmqHtXReaEXj0ns4g1IaHmpo/5KO85qRpJTWS1/llb7DTAOc2mRWMAdVW8QZa/y3nHbj3BakHeR6t9/Kijqw/Sc1CwySAyKcY0o8qxpT4aDM3HeLRdHKwwCPDn878lqtaB6Uo2dczIw+wwJ4MQkNGJ/IEk8HaJX01iINXVzDDIlISNQV7zEBMPcSm/G12Zz6YeuDLgW/vq4eHFzXIjsRWR3NdZdnT+daRerLcyBKvofXU43wo4T98A/R76lh6gwN3fbqd/Da7jXfMW3tFaN0G8/FJcykelVLTcIxaM623ZwBSZdmv2MUxIG3kWcbS3zm8i9UrwGIR8ooAmwQzuS+67NRL6gmm2QZT7DMKeyBjxhCNlxGXWBPz5gj/N1ZRLjqFc5Qgf1Pc8oc+5yTNRamYth3kJ6ElHRZFLqpDgJQZ2MvyUNbG0ViIhbvJyinVkeywP7daTAILBfeE2Z59K+N 58sMHojv pjj+AqDCBxeqAFPAfHTgAMgFgw9KYYIdW0fK3VGgqUEC/DcSraqJ7KCLHn1O1sBqb+xxPx+6lNLRvpDKJ9yUAk3EkfCZA3sjefexS9dmkcUyOBhUAN+cQXPsIxMygQXJyCNUXhw4DmG4VeUCEigVoi2gPXKyLmRRMMkSFjkID9JoWyLalYwiHPqoSaMSnTmiiLkdNOtThXncKp0Gljp30mkKjjN3taKEhGrMnKgz3aqV5S26Wic/3vw7cLHdKBpcKcUI0YjTCA3LrdepAh3AWcYCvj1UQRY7ZOw+Vx4K508jn89PggpuKGMLLmnQn02slpI76DZGHrzuyFs5pGoEta9yxzbpv/pneu5ELx312U1Ix8h/dKxa6C7j7lB9A+l5zkl532JgV1Mku4g9D/w8xNksPwbxmuEwTIx7Ce1SZarvZQKT6Rm5h63+bguLRT0JZgZsUombPRP4mpI67nuDfOHrafvoQ+C9Ef6FdCX2T5+uSZrkYJgWl1Iluc0MB8Sa5xwctNaCOzmfXsg79n8cqAwjdF7oeBu/LkAQedGTOmwm2ZoX0R8QlNNZGgR+L0YyMYGey0bWh2NqOB6l3kEB82Vg+KcmiFLzfgZDST/mPLD/t3VT47JT5DE+oA3d/yQI0igXoyAlk96yPl68FAjVCV2h/TBwxTcvzKVtp1QhLnLzTSvrQusIBBk9P+BJkRCFhfFz0h7XD3zdPFQ/bFEkfUj1W4nUhYMV1+NMpDqdBuy1Z4lvhm36kimVQGVOc/r2Tef7GXGTZjyKdYXPDpoeADvG2/pSV3s2TWm+BxOd1JICCt/xXuzlyp+h9HWe24GBETPLMrha+N189dYH2ZLSJC/vPlpO2cqg6DbhiKPSxe0oBiEg= 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: We got a late smatch warning and some additional review feedback. smatch warnings: mm/memory.c:1428 copy_page_range() error: uninitialized symbol 'pfn'. We actually use the pfn only when it is properly initialized; however, we may pass an uninitialized value to a function -- although it will not use it that likely still is UB in C. So let's just fix it by always initializing pfn in the caller of track_pfn_copy(), and improving the documentation of track_pfn_copy(). While at it, clarify the doc of untrack_pfn_copy(), that internal checks make sure if we actually have to untrack anything. Fixes: dc84bc2aba85 ("x86/mm/pat: Fix VM_PAT handling when fork() fails in copy_page_range()") Reported-by: kernel test robot Reported-by: Dan Carpenter Closes: https://lore.kernel.org/r/202503270941.IFILyNCX-lkp@intel.com/ Reviewed-by: Lorenzo Stoakes Cc: Andrew Morton Cc: Lorenzo Stoakes Cc: Dave Hansen Cc: Andy Lutomirski Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Rik van Riel Cc: "H. Peter Anvin" Cc: Linus Torvalds Signed-off-by: David Hildenbrand --- v1 -> v2: * Adjust the doc instead of initializing the pfn whenever returning 0 * Decided to keep Lorenzo's RB :) * Retested --- include/linux/pgtable.h | 9 ++++++--- mm/memory.c | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h index e2b705c149454..b50447ef1c921 100644 --- a/include/linux/pgtable.h +++ b/include/linux/pgtable.h @@ -1511,8 +1511,9 @@ static inline void track_pfn_insert(struct vm_area_struct *vma, pgprot_t *prot, /* * track_pfn_copy is called when a VM_PFNMAP VMA is about to get the page - * tables copied during copy_page_range(). On success, stores the pfn to be - * passed to untrack_pfn_copy(). + * tables copied during copy_page_range(). Will store the pfn to be + * passed to untrack_pfn_copy() only if there is something to be untracked. + * Callers should initialize the pfn to 0. */ static inline int track_pfn_copy(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma, unsigned long *pfn) @@ -1522,7 +1523,9 @@ static inline int track_pfn_copy(struct vm_area_struct *dst_vma, /* * untrack_pfn_copy is called when a VM_PFNMAP VMA failed to copy during - * copy_page_range(), but after track_pfn_copy() was already called. + * copy_page_range(), but after track_pfn_copy() was already called. Can + * be called even if track_pfn_copy() did not actually track anything: + * handled internally. */ static inline void untrack_pfn_copy(struct vm_area_struct *dst_vma, unsigned long pfn) diff --git a/mm/memory.c b/mm/memory.c index 2d8c265fc7d60..1a35165622e1c 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -1361,7 +1361,7 @@ copy_page_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma) struct mm_struct *dst_mm = dst_vma->vm_mm; struct mm_struct *src_mm = src_vma->vm_mm; struct mmu_notifier_range range; - unsigned long next, pfn; + unsigned long next, pfn = 0; bool is_cow; int ret;