Re: Add Morton,Peter and David for discussion//Re: [PATCH -next] uprobes: fix two zero old_folio bugs in __replace_page()

From: Tong Tiangen
Date: Wed Feb 19 2025 - 21:31:50 EST




在 2025/2/20 0:12, David Hildenbrand 写道:
On 19.02.25 16:22, Oleg Nesterov wrote:
On 02/18, Tong Tiangen wrote:

OK, Before your rewrite last merged, How about i change the solution to
just reject them immediately after get_user_page_vma_remote()?

I agree, uprobe_write_opcode() should simply fail if is_zero_page(old_page).

Yes. That's currently only syzkaller that triggers it, not some sane use case.

OK, change as follows:

--- a/kernel/events/uprobes.c
+++ b/kernel/events/uprobes.c
@@ -506,6 +506,12 @@ int uprobe_write_opcode(struct arch_uprobe *auprobe, struct mm_struct *mm,
if (ret <= 0)
goto put_old;

+ if (WARN(is_zero_page(old_page),
+ "uprobe should never work on zero page\n")) {
+ ret = -EINVAL;
+ goto put_old;
+ }
+
if (WARN(!is_register && PageCompound(old_page),
"uprobe unregister should never work on compound page\n")) {
ret = -EINVAL;

If ok, i will send v2 soon.

Thanks,
Tong.