From: Paolo 'Blaisorblade' Giarrusso <[EMAIL PROTECTED]>, Russell King <[EMAIL PROTECTED]>
This construct is refused by GCC 4, so here's the (corrected) fix. Thanks to Russell for noticing a stupid mistake I did when first sending this. As he noted, the code is largely suboptimal however it currently works, and will be fixed shortly. Just read the access_ok check on fp which is NULL, or the pointer arithmetic below which should be done with a cast to void*: frame = (struct rt_sigframe __user *) round_down(stack_top - sizeof(struct rt_sigframe), 16) - 8; The code shows clearly that has been taken from arch/x86_64/kernel/signal.c:setup_rt_frame(), maybe in a bit of a hurry. Signed-off-by: Paolo 'Blaisorblade' Giarrusso <[EMAIL PROTECTED]> --- linux-2.6.git-broken-paolo/arch/um/sys-x86_64/signal.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN arch/um/sys-x86_64/signal.c~uml-fix-for-gcc4-lvalue arch/um/sys-x86_64/signal.c --- linux-2.6.git-broken/arch/um/sys-x86_64/signal.c~uml-fix-for-gcc4-lvalue 2005-07-13 19:30:43.000000000 +0200 +++ linux-2.6.git-broken-paolo/arch/um/sys-x86_64/signal.c 2005-07-13 19:30:44.000000000 +0200 @@ -168,7 +168,7 @@ int setup_signal_stack_si(unsigned long frame = (struct rt_sigframe __user *) round_down(stack_top - sizeof(struct rt_sigframe), 16) - 8; - ((unsigned char *) frame) -= 128; + frame -= 128 / sizeof(*frame); if (!access_ok(VERIFY_WRITE, fp, sizeof(struct _fpstate))) goto out; _ ------------------------------------------------------- This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual core and dual graphics technology at this free one hour event hosted by HP, AMD, and NVIDIA. To register visit http://www.hp.com/go/dualwebinar _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel