Messages in this thread |  | | Date | Fri, 18 Sep 2015 08:57:05 -0500 | From | Josh Poimboeuf <> | Subject | Re: [PATCH 1/3] x86/uaccess: Add stack frame output operand in get_user inline asm |
| |
On Thu, Sep 17, 2015 at 05:14:35PM -0500, Chris J Arges wrote: > Numerous 'call without frame pointer save/setup' warnings are introduced by > stacktool because of functions using the get_user macro. Bad stack traces could > occur due to lack of or misplacement of stack frame setup code. > > This patch forces a stack frame to be created before the inline asm code if > CONFIG_FRAME_POINTER is enabled by listing the stack pointer as an output > operand for the get_user inline assembly statement. > > Signed-off-by: Chris J Arges <chris.j.arges@canonical.com>
Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com>
> --- > arch/x86/include/asm/uaccess.h | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h > index a8df874..55b8db5 100644 > --- a/arch/x86/include/asm/uaccess.h > +++ b/arch/x86/include/asm/uaccess.h > @@ -176,10 +176,11 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) > ({ \ > int __ret_gu; \ > register __inttype(*(ptr)) __val_gu asm("%"_ASM_DX); \ > + register void *__sp asm(_ASM_SP); \ > __chk_user_ptr(ptr); \ > might_fault(); \ > - asm volatile("call __get_user_%P3" \ > - : "=a" (__ret_gu), "=r" (__val_gu) \ > + asm volatile("call __get_user_%P4" \ > + : "=a" (__ret_gu), "=r" (__val_gu), "+r" (__sp) \ > : "0" (ptr), "i" (sizeof(*(ptr)))); \ > (x) = (__force __typeof__(*(ptr))) __val_gu; \ > __ret_gu; \ > -- > 1.9.1 >
|  |