diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c index e045b12662f1a8e579abb5087e3f4513f3099557..8a6c5ee003c2ed6d378b39f55bec2d013b4d3bd0 100644 --- a/kernel/events/uprobes.c +++ b/kernel/events/uprobes.c @@ -488,6 +488,11 @@ int uprobe_write_opcode(struct arch_uprobe *auprobe, struct mm_struct *mm, if (ret <= 0) goto put_old; + if (is_zero_pfn(page_to_pfn(old_page))) { + ret = -EINVAL; + goto put_old; + } + if (WARN(!is_register && PageCompound(old_page), "uprobe unregister should never work on compound page\n")) { ret = -EINVAL;