]> git.baikalelectronics.ru Git - kernel.git/commit
um: fix stub location calculation
authorJohannes Berg <johannes.berg@intel.com>
Tue, 13 Jul 2021 21:47:10 +0000 (23:47 +0200)
committerRichard Weinberger <richard@nod.at>
Thu, 26 Aug 2021 20:28:03 +0000 (22:28 +0200)
commit0a6729001579eee76e3777cffe487f6b71278cb7
tree5681fea906412292e6418aa8ff08bc03666bc1e5
parentbb4551639c86bd34102cdb6d94896f8f994108a5
um: fix stub location calculation

In commit 98dee031b44b ("um: rework userspace stubs to not hard-code
stub location") I changed stub_segv_handler() to do a calculation with
a pointer to a stack variable to find the data page that we're using
for the stack and the rest of the data. This same commit was meant to
do it as well for stub_clone_handler(), but the change inadvertently
went into commit 0b5b9bcf9685 ("um: separate child and parent errors
in clone stub") instead.

This was reported to not be compiled correctly by gcc 5, causing the
code to crash here. I'm not sure why, perhaps it's UB because the var
isn't initialized? In any case, this trick always seemed bad, so just
create a new inline function that does the calculation in assembly.

Reported-by: subashab@codeaurora.org
Fixes: 98dee031b44b ("um: rework userspace stubs to not hard-code stub location")
Fixes: 0b5b9bcf9685 ("um: separate child and parent errors in clone stub")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
arch/um/kernel/skas/clone.c
arch/x86/um/shared/sysdep/stub_32.h
arch/x86/um/shared/sysdep/stub_64.h
arch/x86/um/stub_segv.c