UML kernel panic on initialization

Johannes Berg johannes at sipsolutions.net
Tue Jul 13 12:26:18 PDT 2021


On Tue, 2021-07-13 at 21:22 +0200, Johannes Berg wrote:
> On Sat, 2021-07-10 at 15:00 -0600, subashab at codeaurora.org wrote:
> > 
> > I have reverted the following patches (to allow for a clean revert)
> > and I don't see the panic anymore -
> > 
> > bfc58e2b98e99737409cd9f4d86a79677c5b887c
> > dc01a3b9db43abf95b801c9694980777a329e303
> > 9f0b4807a44ff81cf59421c8a86641efec586610
> > 84b2789d61156db0224724806b20110c0d34b07c
> 
> Out of those 4, the last ("separate child and...") seems actually less
> intrusive than the previous one. If you revert only the first three of
> this list, does it still happen?
> 
> Does it still happen if you unset CONFIG_CC_OPTIMIZE_FOR_SIZE and do
> CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE instead?

Oh, and it looks like 84b2789d6115 actually got some bits that shouldn't
have been there!

Assuming it does *not* work with just the first three patches reverted,
does it work again if you revert the first three patches, and only this
bit of the fourth?

--- a/arch/um/kernel/skas/clone.c
+++ b/arch/um/kernel/skas/clone.c
@@ -24,29 +24,26 @@
 void __attribute__ ((__section__ (".__syscall_stub")))
 stub_clone_handler(void)
 {
-       struct stub_data *data = (struct stub_data *) STUB_DATA;
+       int stack;
+       struct stub_data *data = (void *) ((unsigned long)&stack & ~(UM_KERN_PAGE_SIZE - 1));
        long err;



I think we probably have some miscompilation again with this thing - I
saw a bunch of similar issues with our syscall stubs at some point, and
I'm not sure we got it all right already.

johannes




More information about the linux-um mailing list