From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev,
Yuanzheng Song <songyuanzheng@huawei.com>,
Peter Xu <peterx@redhat.com>
Subject: [PATCH 5.10 34/91] mm/memory: add non-anonymous page check in the copy_present_page()
Date: Wed, 2 Nov 2022 03:33:17 +0100 [thread overview]
Message-ID: <20221102022056.007631805@linuxfoundation.org> (raw)
In-Reply-To: <20221102022055.039689234@linuxfoundation.org>
From: Yuanzheng Song <songyuanzheng@huawei.com>
The vma->anon_vma of the child process may be NULL because
the entire vma does not contain anonymous pages. In this
case, a BUG will occur when the copy_present_page() passes
a copy of a non-anonymous page of that vma to the
page_add_new_anon_rmap() to set up new anonymous rmap.
------------[ cut here ]------------
kernel BUG at mm/rmap.c:1044!
Internal error: Oops - BUG: 0 [#1] SMP
Modules linked in:
CPU: 2 PID: 3617 Comm: test Not tainted 5.10.149 #1
Hardware name: linux,dummy-virt (DT)
pstate: 80000005 (Nzcv daif -PAN -UAO -TCO BTYPE=--)
pc : __page_set_anon_rmap+0xbc/0xf8
lr : __page_set_anon_rmap+0xbc/0xf8
sp : ffff800014c1b870
x29: ffff800014c1b870 x28: 0000000000000001
x27: 0000000010100073 x26: ffff1d65c517baa8
x25: ffff1d65cab0f000 x24: ffff1d65c416d800
x23: ffff1d65cab5f248 x22: 0000000020000000
x21: 0000000000000001 x20: 0000000000000000
x19: fffffe75970023c0 x18: 0000000000000000
x17: 0000000000000000 x16: 0000000000000000
x15: 0000000000000000 x14: 0000000000000000
x13: 0000000000000000 x12: 0000000000000000
x11: 0000000000000000 x10: 0000000000000000
x9 : ffffc3096d5fb858 x8 : 0000000000000000
x7 : 0000000000000011 x6 : ffff5a5c9089c000
x5 : 0000000000020000 x4 : ffff5a5c9089c000
x3 : ffffc3096d200000 x2 : ffffc3096e8d0000
x1 : ffff1d65ca3da740 x0 : 0000000000000000
Call trace:
__page_set_anon_rmap+0xbc/0xf8
page_add_new_anon_rmap+0x1e0/0x390
copy_pte_range+0xd00/0x1248
copy_page_range+0x39c/0x620
dup_mmap+0x2e0/0x5a8
dup_mm+0x78/0x140
copy_process+0x918/0x1a20
kernel_clone+0xac/0x638
__do_sys_clone+0x78/0xb0
__arm64_sys_clone+0x30/0x40
el0_svc_common.constprop.0+0xb0/0x308
do_el0_svc+0x48/0xb8
el0_svc+0x24/0x38
el0_sync_handler+0x160/0x168
el0_sync+0x180/0x1c0
Code: 97f8ff85 f9400294 17ffffeb 97f8ff82 (d4210000)
---[ end trace a972347688dc9bd4 ]---
Kernel panic - not syncing: Oops - BUG: Fatal exception
SMP: stopping secondary CPUs
Kernel Offset: 0x43095d200000 from 0xffff800010000000
PHYS_OFFSET: 0xffffe29a80000000
CPU features: 0x08200022,61806082
Memory Limit: none
---[ end Kernel panic - not syncing: Oops - BUG: Fatal exception ]---
This problem has been fixed by the commit <fb3d824d1a46>
("mm/rmap: split page_dup_rmap() into page_dup_file_rmap()
and page_try_dup_anon_rmap()"), but still exists in the
linux-5.10.y branch.
This patch is not applicable to this version because
of the large version differences. Therefore, fix it by
adding non-anonymous page check in the copy_present_page().
Cc: stable@vger.kernel.org
Fixes: 70e806e4e645 ("mm: Do early cow for pinned pages during fork() for ptes")
Signed-off-by: Yuanzheng Song <songyuanzheng@huawei.com>
Acked-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
mm/memory.c | 11 +++++++++++
1 file changed, 11 insertions(+)
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -823,6 +823,17 @@ copy_present_page(struct vm_area_struct
if (likely(!page_maybe_dma_pinned(page)))
return 1;
+ /*
+ * The vma->anon_vma of the child process may be NULL
+ * because the entire vma does not contain anonymous pages.
+ * A BUG will occur when the copy_present_page() passes
+ * a copy of a non-anonymous page of that vma to the
+ * page_add_new_anon_rmap() to set up new anonymous rmap.
+ * Return 1 if the page is not an anonymous page.
+ */
+ if (!PageAnon(page))
+ return 1;
+
new_page = *prealloc;
if (!new_page)
return -EAGAIN;
next prev parent reply other threads:[~2022-11-02 3:14 UTC|newest]
Thread overview: 111+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-02 2:32 [PATCH 5.10 00/91] 5.10.153-rc1 review Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 01/91] can: j1939: transport: j1939_session_skb_drop_old(): spin_unlock_irqrestore() before kfree_skb() Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 02/91] can: kvaser_usb: Fix possible completions during init_completion Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 03/91] ALSA: Use del_timer_sync() before freeing timer Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 04/91] ALSA: au88x0: use explicitly signed char Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 05/91] ALSA: rme9652: " Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 06/91] USB: add RESET_RESUME quirk for NVIDIA Jetson devices in RCM Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 07/91] usb: dwc3: gadget: Stop processing more requests on IMI Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 08/91] usb: dwc3: gadget: Dont set IMI for no_interrupt Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 09/91] usb: bdc: change state when port disconnected Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 10/91] usb: xhci: add XHCI_SPURIOUS_SUCCESS to ASM1042 despite being a V0.96 controller Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 11/91] mtd: rawnand: marvell: Use correct logic for nand-keep-config Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 12/91] xhci: Add quirk to reset host back to default state at shutdown Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 13/91] xhci: Remove device endpoints from bandwidth list when freeing the device Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 14/91] tools: iio: iio_utils: fix digit calculation Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 15/91] iio: light: tsl2583: Fix module unloading Greg Kroah-Hartman
2022-11-02 2:32 ` [PATCH 5.10 16/91] iio: temperature: ltc2983: allocate iio channels once Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 17/91] fbdev: smscufx: Fix several use-after-free bugs Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 18/91] fs/binfmt_elf: Fix memory leak in load_elf_binary() Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 19/91] exec: Copy oldsighand->action under spin-lock Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 20/91] mac802154: Fix LQI recording Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 21/91] scsi: qla2xxx: Use transport-defined speed mask for supported_speeds Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 22/91] drm/msm/dsi: fix memory corruption with too many bridges Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 23/91] drm/msm/hdmi: " Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 24/91] drm/msm/dp: fix IRQ lifetime Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 25/91] mmc: sdhci_am654: select, not depends REGMAP_MMIO Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 26/91] mmc: core: Fix kernel panic when remove non-standard SDIO card Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 27/91] counter: microchip-tcb-capture: Handle Signal1 read and Synapse Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 28/91] kernfs: fix use-after-free in __kernfs_remove Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 29/91] perf auxtrace: Fix address filter symbol name match for modules Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 30/91] s390/futex: add missing EX_TABLE entry to __futex_atomic_op() Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 31/91] s390/pci: add missing EX_TABLE entries to __pcistg_mio_inuser()/__pcilg_mio_inuser() Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 32/91] Xen/gntdev: dont ignore kernel unmapping error Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 33/91] xen/gntdev: Prevent leaking grants Greg Kroah-Hartman
2022-11-02 2:33 ` Greg Kroah-Hartman [this message]
2022-11-02 2:33 ` [PATCH 5.10 35/91] mm,hugetlb: take hugetlb_lock before decrementing h->resv_huge_pages Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 36/91] net: ieee802154: fix error return code in dgram_bind() Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 37/91] media: v4l2: Fix v4l2_i2c_subdev_set_name function documentation Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 38/91] drm/msm: Fix return type of mdp4_lvds_connector_mode_valid Greg Kroah-Hartman
2022-11-04 17:06 ` Pavel Machek
2022-11-02 2:33 ` [PATCH 5.10 39/91] ASoC: qcom: lpass-cpu: mark HDMI TX registers as volatile Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 40/91] arc: iounmap() arg is volatile Greg Kroah-Hartman
2022-11-02 2:33 ` Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 41/91] ASoC: qcom: lpass-cpu: Mark HDMI TX parity register as volatile Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 42/91] ALSA: ac97: fix possible memory leak in snd_ac97_dev_register() Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 43/91] perf/x86/intel/lbr: Use setup_clear_cpu_cap() instead of clear_cpu_cap() Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 44/91] tipc: fix a null-ptr-deref in tipc_topsrv_accept Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 45/91] net: netsec: fix error handling in netsec_register_mdio() Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 46/91] net: hinic: fix incorrect assignment issue in hinic_set_interrupt_cfg() Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 47/91] net: hinic: fix memory leak when reading function table Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 48/91] net: hinic: fix the issue of CMDQ memory leaks Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 49/91] net: hinic: fix the issue of double release MBOX callback of VF Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 50/91] x86/unwind/orc: Fix unreliable stack dump with gcov Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 51/91] amd-xgbe: fix the SFP compliance codes check for DAC cables Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 52/91] amd-xgbe: add the bit rate quirk for Molex cables Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 53/91] atlantic: fix deadlock at aq_nic_stop Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 54/91] kcm: annotate data-races around kcm->rx_psock Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 55/91] kcm: annotate data-races around kcm->rx_wait Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 56/91] net: fix UAF issue in nfqnl_nf_hook_drop() when ops_init() failed Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 57/91] net: lantiq_etop: dont free skb when returning NETDEV_TX_BUSY Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 58/91] tcp: minor optimization in tcp_add_backlog() Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 59/91] tcp: fix a signed-integer-overflow bug " Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 60/91] tcp: fix indefinite deferral of RTO with SACK reneging Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 61/91] can: mscan: mpc5xxx: mpc5xxx_can_probe(): add missing put_clock() in error path Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 62/91] can: mcp251x: mcp251x_can_probe(): add missing unregister_candev() " Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 63/91] PM: hibernate: Allow hybrid sleep to work with s2idle Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 64/91] media: vivid: s_fbuf: add more sanity checks Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 65/91] media: vivid: dev->bitmap_cap wasnt freed in all cases Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 66/91] media: v4l2-dv-timings: add sanity checks for blanking values Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 67/91] media: videodev2.h: V4L2_DV_BT_BLANKING_HEIGHT should check interlaced Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 68/91] media: vivid: set num_in/outputs to 0 if not supported Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 69/91] ipv6: ensure sane device mtu in tunnels Greg Kroah-Hartman
2022-11-04 17:11 ` Pavel Machek
2022-11-04 17:23 ` Eric Dumazet
2022-11-04 17:31 ` Pavel Machek
2022-11-04 17:35 ` Eric Dumazet
2022-11-02 2:33 ` [PATCH 5.10 70/91] i40e: Fix ethtool rx-flow-hash setting for X722 Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 71/91] i40e: Fix VF hang when reset is triggered on another VF Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 72/91] i40e: Fix flow-type by setting GL_HASH_INSET registers Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 73/91] net: ksz884x: fix missing pci_disable_device() on error in pcidev_init() Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 74/91] PM: domains: Fix handling of unavailable/disabled idle states Greg Kroah-Hartman
2022-11-02 2:33 ` [PATCH 5.10 75/91] net: fec: limit register access on i.MX6UL Greg Kroah-Hartman
2022-11-04 17:15 ` Pavel Machek
2022-11-02 2:33 ` [PATCH 5.10 76/91] ALSA: aoa: i2sbus: fix possible memory leak in i2sbus_add_dev() Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 77/91] ALSA: aoa: Fix I2S device accounting Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 78/91] openvswitch: switch from WARN to pr_warn Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 79/91] net: ehea: fix possible memory leak in ehea_register_port() Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 80/91] nh: fix scope used to find saddr when adding non gw nh Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 81/91] net/mlx5e: Do not increment ESN when updating IPsec ESN state Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 82/91] net/mlx5: Fix possible use-after-free in async command interface Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 83/91] net/mlx5: Fix crash during sync firmware reset Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 84/91] net: enetc: survive memory pressure without crashing Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 85/91] arm64: Add AMPERE1 to the Spectre-BHB affected list Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 86/91] scsi: sd: Revert "scsi: sd: Remove a local variable" Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 87/91] arm64/mm: Fix __enable_mmu() for new TGRAN range values Greg Kroah-Hartman
2022-11-02 2:34 ` Greg Kroah-Hartman
2022-11-02 2:34 ` Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 88/91] arm64/kexec: Test page size support with " Greg Kroah-Hartman
2022-11-02 2:34 ` Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 89/91] can: rcar_canfd: rcar_canfd_handle_global_receive(): fix IRQ storm on global FIFO receive Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 90/91] serial: core: move RS485 configuration tasks from drivers into core Greg Kroah-Hartman
2022-11-02 2:34 ` [PATCH 5.10 91/91] serial: Deassert Transmit Enable on probe in driver-specific way Greg Kroah-Hartman
2022-11-02 10:07 ` [PATCH 5.10 00/91] 5.10.153-rc1 review Jon Hunter
2022-11-02 11:09 ` zhouzhixiu
2022-11-02 11:25 ` Rudi Heitbaum
2022-11-02 17:20 ` Pavel Machek
2022-11-02 18:05 ` Florian Fainelli
2022-11-02 20:46 ` Guenter Roeck
2022-11-02 21:12 ` Allen Pais
2022-11-03 7:27 ` Naresh Kamboju
2022-11-03 12:20 ` Sudip Mukherjee
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221102022056.007631805@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=patches@lists.linux.dev \
--cc=peterx@redhat.com \
--cc=songyuanzheng@huawei.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.