2008-10-16 15:26:58

by Cong Wang

[permalink] [raw]
Subject: [Patch] uml: fix one compile error


This patch fixed the following compile error:

CC arch/um/sys-i386/signal.o
/home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c: In
function 'copy_sc_from_user':
/home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c:182:
warning: dereferencing 'void *' pointer
/home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c:182:
error: request for member '_fxsr_env' in something not a structure or
union


Signed-off-by: WANG Cong <[email protected]>
Cc: [email protected]

---
diff --git a/arch/um/sys-i386/signal.c b/arch/um/sys-i386/signal.c
index fd0c25a..1296473 100644
--- a/arch/um/sys-i386/signal.c
+++ b/arch/um/sys-i386/signal.c
@@ -179,7 +179,8 @@ static int copy_sc_from_user(struct pt_regs *regs,
if (have_fpx_regs) {
struct user_fxsr_struct fpx;

- err = copy_from_user(&fpx, &sc.fpstate->_fxsr_env[0],
+ err = copy_from_user(&fpx,
+ &((struct _fpstate __user *)sc.fpstate)->_fxsr_env[0],
sizeof(struct user_fxsr_struct));
if (err)
return 1;


2008-10-16 23:16:51

by Andrew Morton

[permalink] [raw]
Subject: Re: [Patch] uml: fix one compile error

On Thu, 16 Oct 2008 16:26:26 +0100
Am__rico Wang <[email protected]> wrote:

>
> This patch fixed the following compile error:
>
> CC arch/um/sys-i386/signal.o
> /home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c: In
> function 'copy_sc_from_user':
> /home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c:182:
> warning: dereferencing 'void *' pointer
> /home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c:182:
> error: request for member '_fxsr_env' in something not a structure or
> union
>
>
> Signed-off-by: WANG Cong <[email protected]>
> Cc: [email protected]
>
> ---
> diff --git a/arch/um/sys-i386/signal.c b/arch/um/sys-i386/signal.c
> index fd0c25a..1296473 100644
> --- a/arch/um/sys-i386/signal.c
> +++ b/arch/um/sys-i386/signal.c
> @@ -179,7 +179,8 @@ static int copy_sc_from_user(struct pt_regs *regs,
> if (have_fpx_regs) {
> struct user_fxsr_struct fpx;
>
> - err = copy_from_user(&fpx, &sc.fpstate->_fxsr_env[0],
> + err = copy_from_user(&fpx,
> + &((struct _fpstate __user *)sc.fpstate)->_fxsr_env[0],
> sizeof(struct user_fxsr_struct));
> if (err)
> return 1;

Which kernel versions are affected by this error? 2.6.27?

Thanks.

2008-10-17 12:21:17

by Cong Wang

[permalink] [raw]
Subject: Re: [Patch] uml: fix one compile error

On Thu, Oct 16, 2008 at 04:15:57PM -0700, Andrew Morton wrote:
>On Thu, 16 Oct 2008 16:26:26 +0100
>Am__rico Wang <[email protected]> wrote:
>
>>
>> This patch fixed the following compile error:
>>
>> CC arch/um/sys-i386/signal.o
>> /home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c: In
>> function 'copy_sc_from_user':
>> /home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c:182:
>> warning: dereferencing 'void *' pointer
>> /home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c:182:
>> error: request for member '_fxsr_env' in something not a structure or
>> union
>>
>>
>> Signed-off-by: WANG Cong <[email protected]>
>> Cc: [email protected]
>>
>> ---
>> diff --git a/arch/um/sys-i386/signal.c b/arch/um/sys-i386/signal.c
>> index fd0c25a..1296473 100644
>> --- a/arch/um/sys-i386/signal.c
>> +++ b/arch/um/sys-i386/signal.c
>> @@ -179,7 +179,8 @@ static int copy_sc_from_user(struct pt_regs *regs,
>> if (have_fpx_regs) {
>> struct user_fxsr_struct fpx;
>>
>> - err = copy_from_user(&fpx, &sc.fpstate->_fxsr_env[0],
>> + err = copy_from_user(&fpx,
>> + &((struct _fpstate __user *)sc.fpstate)->_fxsr_env[0],
>> sizeof(struct user_fxsr_struct));
>> if (err)
>> return 1;
>
>Which kernel versions are affected by this error? 2.6.27?

I haven't tried a stable version, but I will. :)


--
"Sometimes the only way to stay sane is to go a little crazy."

2008-10-17 12:32:29

by Miklos Szeredi

[permalink] [raw]
Subject: Re: [Patch] uml: fix one compile error

On Fri, 17 Oct 2008, =?utf-8?Q?Am=C3=A9rico?= Wang wrote:
> On Thu, Oct 16, 2008 at 04:15:57PM -0700, Andrew Morton wrote:
> >On Thu, 16 Oct 2008 16:26:26 +0100
> >Am__rico Wang <[email protected]> wrote:
> >
> >>
> >> This patch fixed the following compile error:
> >>
> >> CC arch/um/sys-i386/signal.o
> >> /home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c: In
> >> function 'copy_sc_from_user':
> >> /home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c:182:
> >> warning: dereferencing 'void *' pointer
> >> /home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c:182:
> >> error: request for member '_fxsr_env' in something not a structure or
> >> union
> >>
> >>
> >> Signed-off-by: WANG Cong <[email protected]>
> >> Cc: [email protected]
> >>
> >> ---
> >> diff --git a/arch/um/sys-i386/signal.c b/arch/um/sys-i386/signal.c
> >> index fd0c25a..1296473 100644
> >> --- a/arch/um/sys-i386/signal.c
> >> +++ b/arch/um/sys-i386/signal.c
> >> @@ -179,7 +179,8 @@ static int copy_sc_from_user(struct pt_regs *regs,
> >> if (have_fpx_regs) {
> >> struct user_fxsr_struct fpx;
> >>
> >> - err = copy_from_user(&fpx, &sc.fpstate->_fxsr_env[0],
> >> + err = copy_from_user(&fpx,
> >> + &((struct _fpstate __user *)sc.fpstate)->_fxsr_env[0],
> >> sizeof(struct user_fxsr_struct));
> >> if (err)
> >> return 1;
> >
> >Which kernel versions are affected by this error? 2.6.27?
>
> I haven't tried a stable version, but I will. :)

2.6.27 as UML works for me without the patch.

But it is needed for 2.6.28... thanks.

Tested-by: Miklos Szeredi <[email protected]>

Miklos

2008-10-17 14:28:00

by Cong Wang

[permalink] [raw]
Subject: Re: [Patch] uml: fix one compile error

On Fri, Oct 17, 2008 at 02:32:10PM +0200, Miklos Szeredi wrote:
>On Fri, 17 Oct 2008, =?utf-8?Q?Am=C3=A9rico?= Wang wrote:
>> On Thu, Oct 16, 2008 at 04:15:57PM -0700, Andrew Morton wrote:
>> >On Thu, 16 Oct 2008 16:26:26 +0100
>> >Am__rico Wang <[email protected]> wrote:
>> >
>> >>
>> >> This patch fixed the following compile error:
>> >>
>> >> CC arch/um/sys-i386/signal.o
>> >> /home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c: In
>> >> function 'copy_sc_from_user':
>> >> /home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c:182:
>> >> warning: dereferencing 'void *' pointer
>> >> /home/wangcong/Projects/linux-2.6/arch/um/sys-i386/signal.c:182:
>> >> error: request for member '_fxsr_env' in something not a structure or
>> >> union
>> >>
>> >>
>> >> Signed-off-by: WANG Cong <[email protected]>
>> >> Cc: [email protected]
>> >>
>> >> ---
>> >> diff --git a/arch/um/sys-i386/signal.c b/arch/um/sys-i386/signal.c
>> >> index fd0c25a..1296473 100644
>> >> --- a/arch/um/sys-i386/signal.c
>> >> +++ b/arch/um/sys-i386/signal.c
>> >> @@ -179,7 +179,8 @@ static int copy_sc_from_user(struct pt_regs *regs,
>> >> if (have_fpx_regs) {
>> >> struct user_fxsr_struct fpx;
>> >>
>> >> - err = copy_from_user(&fpx, &sc.fpstate->_fxsr_env[0],
>> >> + err = copy_from_user(&fpx,
>> >> + &((struct _fpstate __user *)sc.fpstate)->_fxsr_env[0],
>> >> sizeof(struct user_fxsr_struct));
>> >> if (err)
>> >> return 1;
>> >
>> >Which kernel versions are affected by this error? 2.6.27?
>>
>> I haven't tried a stable version, but I will. :)
>
>2.6.27 as UML works for me without the patch.
>
>But it is needed for 2.6.28... thanks.
>
>Tested-by: Miklos Szeredi <[email protected]>

Thank you! :)


--
"Sometimes the only way to stay sane is to go a little crazy."