On Sun, May 14, 2023 at 06:39:00PM +0000, Christophe Leroy wrote: > I addition to that, I still don't understand why you bring back > vmalloc_exec() instead of using module_alloc(). > > As reminded in a previous response, some architectures like powerpc/32s > cannot allocate exec memory in vmalloc space. On powerpc this is because > exec protection is performed on 256Mbytes segments and vmalloc space is > flagged non-exec. Some other architectures have a constraint on distance > between kernel core text and other text. > > Today you have for instance kprobes in the kernel that need dynamic exec > memory. It uses module_alloc() to get it. On some architectures you also > have ftrace that gets some exec memory with module_alloc(). > > So, I still don't understand why you cannot use module_alloc() and need > vmalloc_exec() instead. Because I didn't know about it :) Looks like that is indeed the appropriate interface (if a bit poorly named), I'll switch to using that, thanks. It'll still need to be exported, but it looks like the W|X attribute discussion is not really germane here since it's what other in kernel users are using, and there's nothing particularly special about how bcachefs is using it compared to them.