]> git.itanic.dy.fi Git - linux-stable/commitdiff
proc/kcore: do not try to access unaccepted memory
authorAdrian Hunter <adrian.hunter@intel.com>
Mon, 11 Sep 2023 11:21:14 +0000 (14:21 +0300)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 4 Oct 2023 17:32:22 +0000 (10:32 -0700)
Support for unaccepted memory was added recently, refer commit
dcdfdd40fa82 ("mm: Add support for unaccepted memory"), whereby a virtual
machine may need to accept memory before it can be used.

Do not try to access unaccepted memory because it can cause the guest to
fail.

For /proc/kcore, which is read-only and does not support mmap, this means a
read of unaccepted memory will return zeros.

Link: https://lkml.kernel.org/r/20230911112114.91323-3-adrian.hunter@intel.com
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: Baoquan He <bhe@redhat.com>
Cc: Borislav Petkov (AMD) <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Lorenzo Stoakes <lstoakes@gmail.com>
Cc: Mike Rapoport <rppt@linux.ibm.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Vivek Goyal <vgoyal@redhat.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/proc/kcore.c

index 23fc24d16b31e4eacadd95fff025cbc23ba4b2f7..6422e569b0808526b4cb63a9d932adfa03e1d886 100644 (file)
@@ -546,7 +546,8 @@ static ssize_t read_kcore_iter(struct kiocb *iocb, struct iov_iter *iter)
                         * and explicitly excluded physical ranges.
                         */
                        if (!page || PageOffline(page) ||
-                           is_page_hwpoison(page) || !pfn_is_ram(pfn)) {
+                           is_page_hwpoison(page) || !pfn_is_ram(pfn) ||
+                           pfn_is_unaccepted_memory(pfn)) {
                                if (iov_iter_zero(tsz, iter) != tsz) {
                                        ret = -EFAULT;
                                        goto out;