On Mon, Oct 24, 2022 at 4:03 PM Steven Rostedt <rostedt@xxxxxxxxxxx> wrote: > > This required some updates to fork and the maple_tree code to allow it to > be called with enabling interrupts in the time when interrupts must remain > disabled. Yeah, moving special cases from one place to another doesn't really help. Particularly to something as core as dup_mm(). All of this comes from "poking_init()" being a steaming pile of bovine excrement, doing random odd things, and having that special "copy_init_mm()" helper that just makes things even worse. Nothing else uses that, and it shouldn't have called "dup_mm()" in the first place. At this point, there is no actual user VM to even copy, so 99% of everything that duip_mm() does is not just pointless, but actively wrong, like the mmap_write_lock_nested() when we're in early boot. I'm not even sure why "poking_mm" exists at all, and why it has created a whole new copy of "init_mm", and why this code isn't just using '&init_mm' like everything else that wants to just walk the kernel page tables. Yes, I see that commit 4fc19708b165 ("x86/alternatives: Initialize temporary mm for patching"), and no, none of that makes any sense to me. It seems just (mis-)designed to fail. Linus