On Fri 2019-05-10 14:07:09, Sergey Senozhatsky wrote: > On (05/09/19 21:47), Linus Torvalds wrote: > > [ Sorry about html and mobile crud, I'm not at the computer right now ] > > How about we just undo the whole misguided probe_kernel_address() thing? > > But the problem will remain - %pS/%pF on PPC (and some other arch-s) > do dereference_function_descriptor(), which calls probe_kernel_address(). > So if probe_kernel_address() starts to dump_stack(), then we are heading > towards stack overflow. Unless I'm totally missing something. That is true. On the other hand, %pS/%pF uses dereference_function_descriptor() only on three architectures. And these modifiers are used only rarely (ok, in dump_stack() but still). On the other hand, any infinite loop in vsprintf() via probe_kernel_address() would break any printk(). And would be hard to debug. I tend to agree with Linus. probe_kernel_address() is too complicated. It is prone to these infinite loops and should not be used in the default printk() path. It would be nice to have a lightweight and safe alternative. But I can't find any. And I think that it is not worth any huge complexity. It was just a nice to have idea... I am going to send a patch replacing probe_kernel_address() with a simple check: if ((unsigned long)ptr < PAGE_SIZE || IS_ERR_VALUE(ptr)) return "(efault)"; The original patch still makes sense because it adds the check into more locations and replaces some custom variants. Best Regards, Petr