2009-03-30 18:41:35

by Miklos Szeredi

[permalink] [raw]
Subject: [patch 1/3] uml: fix compile error from net_device_ops conversion

From: Miklos Szeredi <[email protected]>

Fix the following compile error:

arch/um/drivers/net_kern.c: In function 'uml_inetaddr_event':
arch/um/drivers/net_kern.c:760: error: 'struct net_device' has no member named 'open'

This was introduced by commit 8bb95b39, "uml: convert network device
to netdevice ops".

Signed-off-by: Miklos Szeredi <[email protected]>
---
arch/um/drivers/net_kern.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6/arch/um/drivers/net_kern.c
===================================================================
--- linux-2.6.orig/arch/um/drivers/net_kern.c 2009-03-30 17:07:10.000000000 +0200
+++ linux-2.6/arch/um/drivers/net_kern.c 2009-03-30 19:25:30.000000000 +0200
@@ -757,7 +757,7 @@ static int uml_inetaddr_event(struct not
void (*proc)(unsigned char *, unsigned char *, void *);
unsigned char addr_buf[4], netmask_buf[4];

- if (dev->open != uml_net_open)
+ if (dev->netdev_ops->ndo_open != uml_net_open)
return NOTIFY_DONE;

lp = netdev_priv(dev);


2009-03-30 18:42:59

by Miklos Szeredi

[permalink] [raw]
Subject:

BCC: miko
Subject: [patch 2/3] uml: fix link error from prefixing of i386 syscalls with ptregs_
References: <[email protected]>
--text follows this line--
From: Miklos Szeredi <[email protected]>

Fix the following link error:

arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x11c): undefined reference to `ptregs_fork'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x140): undefined reference to `ptregs_execve'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x2cc): undefined reference to `ptregs_iopl'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x2d8): undefined reference to `ptregs_vm86old'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x2f0): undefined reference to `ptregs_sigreturn'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x2f4): undefined reference to `ptregs_clone'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x3ac): undefined reference to `ptregs_vm86'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x3c8): undefined reference to `ptregs_rt_sigreturn'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x3fc): undefined reference to `ptregs_sigaltstack'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x40c): undefined reference to `ptregs_vfork'

This was introduced by commit 253f29a4, "x86: pass in pt_regs pointer
for syscalls that need it"

Signed-off-by: Miklos Szeredi <[email protected]>
---
arch/um/sys-i386/sys_call_table.S | 11 +++++++++++
1 file changed, 11 insertions(+)

Index: linux-2.6/arch/um/sys-i386/sys_call_table.S
===================================================================
--- linux-2.6.orig/arch/um/sys-i386/sys_call_table.S 2009-03-27 10:57:38.000000000 +0100
+++ linux-2.6/arch/um/sys-i386/sys_call_table.S 2009-03-30 19:53:14.000000000 +0200
@@ -9,6 +9,17 @@

#define old_mmap old_mmap_i386

+#define ptregs_fork sys_fork
+#define ptregs_execve sys_execve
+#define ptregs_iopl sys_iopl
+#define ptregs_vm86old sys_vm86old
+#define ptregs_sigreturn sys_sigreturn
+#define ptregs_clone sys_clone
+#define ptregs_vm86 sys_vm86
+#define ptregs_rt_sigreturn sys_rt_sigreturn
+#define ptregs_sigaltstack sys_sigaltstack
+#define ptregs_vfork sys_vfork
+
.section .rodata,"a"

#include "../../x86/kernel/syscall_table_32.S"

2009-03-30 18:45:57

by Miklos Szeredi

[permalink] [raw]
Subject: [patch 3/3] uml: fix warnings in kernel_execve

From: Miklos Szeredi <[email protected]>

Fix the following warnings:

arch/um/kernel/syscall.c: In function 'kernel_execve':
arch/um/kernel/syscall.c:130: warning: passing argument 1 of 'um_execve' discards qualifiers from pointer target type
arch/um/kernel/syscall.c:130: warning: passing argument 2 of 'um_execve' discards qualifiers from pointer target type
arch/um/kernel/syscall.c:130: warning: passing argument 3 of 'um_execve' discards qualifiers from pointer target type

Signed-off-by: Miklos Szeredi <[email protected]>
---
arch/um/kernel/syscall.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Index: linux-2.6/arch/um/kernel/syscall.c
===================================================================
--- linux-2.6.orig/arch/um/kernel/syscall.c 2009-03-30 20:25:17.000000000 +0200
+++ linux-2.6/arch/um/kernel/syscall.c 2009-03-30 20:36:20.000000000 +0200
@@ -127,7 +127,8 @@ int kernel_execve(const char *filename,

fs = get_fs();
set_fs(KERNEL_DS);
- ret = um_execve(filename, argv, envp);
+ ret = um_execve((char *)filename, (char __user *__user *)argv,
+ (char __user *__user *) envp);
set_fs(fs);

return ret;

2009-03-30 18:47:43

by Miklos Szeredi

[permalink] [raw]
Subject: [patch 2/3] uml: fix link error from prefixing of i386 syscalls with ptregs_

From: Miklos Szeredi <[email protected]>

Fix the following link error:

arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x11c): undefined reference to `ptregs_fork'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x140): undefined reference to `ptregs_execve'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x2cc): undefined reference to `ptregs_iopl'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x2d8): undefined reference to `ptregs_vm86old'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x2f0): undefined reference to `ptregs_sigreturn'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x2f4): undefined reference to `ptregs_clone'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x3ac): undefined reference to `ptregs_vm86'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x3c8): undefined reference to `ptregs_rt_sigreturn'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x3fc): undefined reference to `ptregs_sigaltstack'
arch/um/sys-i386/built-in.o: In function `sys_call_table':
(.rodata+0x40c): undefined reference to `ptregs_vfork'

This was introduced by commit 253f29a4, "x86: pass in pt_regs pointer
for syscalls that need it"

Signed-off-by: Miklos Szeredi <[email protected]>
---
arch/um/sys-i386/sys_call_table.S | 11 +++++++++++
1 file changed, 11 insertions(+)

Index: linux-2.6/arch/um/sys-i386/sys_call_table.S
===================================================================
--- linux-2.6.orig/arch/um/sys-i386/sys_call_table.S 2009-03-27 10:57:38.000000000 +0100
+++ linux-2.6/arch/um/sys-i386/sys_call_table.S 2009-03-30 19:53:14.000000000 +0200
@@ -9,6 +9,17 @@

#define old_mmap old_mmap_i386

+#define ptregs_fork sys_fork
+#define ptregs_execve sys_execve
+#define ptregs_iopl sys_iopl
+#define ptregs_vm86old sys_vm86old
+#define ptregs_sigreturn sys_sigreturn
+#define ptregs_clone sys_clone
+#define ptregs_vm86 sys_vm86
+#define ptregs_rt_sigreturn sys_rt_sigreturn
+#define ptregs_sigaltstack sys_sigaltstack
+#define ptregs_vfork sys_vfork
+
.section .rodata,"a"

#include "../../x86/kernel/syscall_table_32.S"

2009-04-01 15:48:47

by Cong Wang

[permalink] [raw]
Subject: Re: [patch 1/3] uml: fix compile error from net_device_ops conversion

On Mon, Mar 30, 2009 at 08:41:10PM +0200, Miklos Szeredi wrote:
>From: Miklos Szeredi <[email protected]>
>
>Fix the following compile error:
>
>arch/um/drivers/net_kern.c: In function 'uml_inetaddr_event':
>arch/um/drivers/net_kern.c:760: error: 'struct net_device' has no member named 'open'
>
>This was introduced by commit 8bb95b39, "uml: convert network device
>to netdevice ops".
>
>Signed-off-by: Miklos Szeredi <[email protected]>


Reviewed-by: WANG Cong <[email protected]>

Thanks.

>---
> arch/um/drivers/net_kern.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>Index: linux-2.6/arch/um/drivers/net_kern.c
>===================================================================
>--- linux-2.6.orig/arch/um/drivers/net_kern.c 2009-03-30 17:07:10.000000000 +0200
>+++ linux-2.6/arch/um/drivers/net_kern.c 2009-03-30 19:25:30.000000000 +0200
>@@ -757,7 +757,7 @@ static int uml_inetaddr_event(struct not
> void (*proc)(unsigned char *, unsigned char *, void *);
> unsigned char addr_buf[4], netmask_buf[4];
>
>- if (dev->open != uml_net_open)
>+ if (dev->netdev_ops->ndo_open != uml_net_open)
> return NOTIFY_DONE;
>
> lp = netdev_priv(dev);
>--
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to [email protected]
>More majordomo info at http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at http://www.tux.org/lkml/

--
Do what you love, f**k the rest! F**k the regulations!

2009-04-01 16:03:18

by Cong Wang

[permalink] [raw]
Subject: Re: [patch 2/3] uml: fix link error from prefixing of i386 syscalls with ptregs_

On Mon, Mar 30, 2009 at 08:47:12PM +0200, Miklos Szeredi wrote:
>From: Miklos Szeredi <[email protected]>
>
>Fix the following link error:
>
>arch/um/sys-i386/built-in.o: In function `sys_call_table':
>(.rodata+0x11c): undefined reference to `ptregs_fork'
>arch/um/sys-i386/built-in.o: In function `sys_call_table':
>(.rodata+0x140): undefined reference to `ptregs_execve'
>arch/um/sys-i386/built-in.o: In function `sys_call_table':
>(.rodata+0x2cc): undefined reference to `ptregs_iopl'
>arch/um/sys-i386/built-in.o: In function `sys_call_table':
>(.rodata+0x2d8): undefined reference to `ptregs_vm86old'
>arch/um/sys-i386/built-in.o: In function `sys_call_table':
>(.rodata+0x2f0): undefined reference to `ptregs_sigreturn'
>arch/um/sys-i386/built-in.o: In function `sys_call_table':
>(.rodata+0x2f4): undefined reference to `ptregs_clone'
>arch/um/sys-i386/built-in.o: In function `sys_call_table':
>(.rodata+0x3ac): undefined reference to `ptregs_vm86'
>arch/um/sys-i386/built-in.o: In function `sys_call_table':
>(.rodata+0x3c8): undefined reference to `ptregs_rt_sigreturn'
>arch/um/sys-i386/built-in.o: In function `sys_call_table':
>(.rodata+0x3fc): undefined reference to `ptregs_sigaltstack'
>arch/um/sys-i386/built-in.o: In function `sys_call_table':
>(.rodata+0x40c): undefined reference to `ptregs_vfork'
>
>This was introduced by commit 253f29a4, "x86: pass in pt_regs pointer
>for syscalls that need it"
>
>Signed-off-by: Miklos Szeredi <[email protected]>

Looks good.

Reviewed-by: WANG Cong <[email protected]>


>---
> arch/um/sys-i386/sys_call_table.S | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
>Index: linux-2.6/arch/um/sys-i386/sys_call_table.S
>===================================================================
>--- linux-2.6.orig/arch/um/sys-i386/sys_call_table.S 2009-03-27 10:57:38.000000000 +0100
>+++ linux-2.6/arch/um/sys-i386/sys_call_table.S 2009-03-30 19:53:14.000000000 +0200
>@@ -9,6 +9,17 @@
>
> #define old_mmap old_mmap_i386
>
>+#define ptregs_fork sys_fork
>+#define ptregs_execve sys_execve
>+#define ptregs_iopl sys_iopl
>+#define ptregs_vm86old sys_vm86old
>+#define ptregs_sigreturn sys_sigreturn
>+#define ptregs_clone sys_clone
>+#define ptregs_vm86 sys_vm86
>+#define ptregs_rt_sigreturn sys_rt_sigreturn
>+#define ptregs_sigaltstack sys_sigaltstack
>+#define ptregs_vfork sys_vfork
>+
> .section .rodata,"a"
>
> #include "../../x86/kernel/syscall_table_32.S"
>--
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to [email protected]
>More majordomo info at http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at http://www.tux.org/lkml/

--
Do what you love, f**k the rest! F**k the regulations!

2009-04-01 16:10:37

by Cong Wang

[permalink] [raw]
Subject: do_execve() needs const qualifiers (was Re: [patch 3/3] uml: fix warnings in kernel_execve)

On Mon, Mar 30, 2009 at 08:45:12PM +0200, Miklos Szeredi wrote:
>From: Miklos Szeredi <[email protected]>
>
>Fix the following warnings:
>
>arch/um/kernel/syscall.c: In function 'kernel_execve':
>arch/um/kernel/syscall.c:130: warning: passing argument 1 of 'um_execve' discards qualifiers from pointer target type
>arch/um/kernel/syscall.c:130: warning: passing argument 2 of 'um_execve' discards qualifiers from pointer target type
>arch/um/kernel/syscall.c:130: warning: passing argument 3 of 'um_execve' discards qualifiers from pointer target type
>
>Signed-off-by: Miklos Szeredi <[email protected]>
>---
> arch/um/kernel/syscall.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
>Index: linux-2.6/arch/um/kernel/syscall.c
>===================================================================
>--- linux-2.6.orig/arch/um/kernel/syscall.c 2009-03-30 20:25:17.000000000 +0200
>+++ linux-2.6/arch/um/kernel/syscall.c 2009-03-30 20:36:20.000000000 +0200
>@@ -127,7 +127,8 @@ int kernel_execve(const char *filename,
>
> fs = get_fs();
> set_fs(KERNEL_DS);
>- ret = um_execve(filename, argv, envp);
>+ ret = um_execve((char *)filename, (char __user *__user *)argv,
>+ (char __user *__user *) envp);

Well... I found this many days ago and I did a similar fix.

However, I think this doesn't fix the real problem. The real problem
is do_execve() doesn't have the correct const qualifiers, I am queueing
a huge patch to fix all the 'const' issues from do_execve() and more,
but I don't if Al would like it or not.

So let's Cc Al to see his advice.

Thanks.


--
Do what you love, f**k the rest! F**k the regulations!

2009-04-01 16:21:42

by Al Viro

[permalink] [raw]
Subject: Re: do_execve() needs const qualifiers (was Re: [patch 3/3] uml: fix warnings in kernel_execve)

On Thu, Apr 02, 2009 at 12:11:14AM +0800, Am??rico Wang wrote:
> On Mon, Mar 30, 2009 at 08:45:12PM +0200, Miklos Szeredi wrote:
> >From: Miklos Szeredi <[email protected]>
> >
> >Fix the following warnings:
> >
> >arch/um/kernel/syscall.c: In function 'kernel_execve':
> >arch/um/kernel/syscall.c:130: warning: passing argument 1 of 'um_execve' discards qualifiers from pointer target type
> >arch/um/kernel/syscall.c:130: warning: passing argument 2 of 'um_execve' discards qualifiers from pointer target type
> >arch/um/kernel/syscall.c:130: warning: passing argument 3 of 'um_execve' discards qualifiers from pointer target type
> >
> >Signed-off-by: Miklos Szeredi <[email protected]>
> >---
> > arch/um/kernel/syscall.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> >Index: linux-2.6/arch/um/kernel/syscall.c
> >===================================================================
> >--- linux-2.6.orig/arch/um/kernel/syscall.c 2009-03-30 20:25:17.000000000 +0200
> >+++ linux-2.6/arch/um/kernel/syscall.c 2009-03-30 20:36:20.000000000 +0200
> >@@ -127,7 +127,8 @@ int kernel_execve(const char *filename,
> >
> > fs = get_fs();
> > set_fs(KERNEL_DS);
> >- ret = um_execve(filename, argv, envp);
> >+ ret = um_execve((char *)filename, (char __user *__user *)argv,
> >+ (char __user *__user *) envp);
>
> Well... I found this many days ago and I did a similar fix.
>
> However, I think this doesn't fix the real problem. The real problem
> is do_execve() doesn't have the correct const qualifiers, I am queueing
> a huge patch to fix all the 'const' issues from do_execve() and more,
> but I don't if Al would like it or not.

I don't know... The thing is, it'll trail down into bprm->filename /
bprm->interp and the things get very ugly very fast from that point.

2009-04-04 16:51:08

by Cong Wang

[permalink] [raw]
Subject: Re: do_execve() needs const qualifiers (was Re: [patch 3/3] uml: fix warnings in kernel_execve)

On Wed, Apr 01, 2009 at 05:21:22PM +0100, Al Viro wrote:
>On Thu, Apr 02, 2009 at 12:11:14AM +0800, Am??rico Wang wrote:
>> On Mon, Mar 30, 2009 at 08:45:12PM +0200, Miklos Szeredi wrote:
>> >From: Miklos Szeredi <[email protected]>
>> >
>> >Fix the following warnings:
>> >
>> >arch/um/kernel/syscall.c: In function 'kernel_execve':
>> >arch/um/kernel/syscall.c:130: warning: passing argument 1 of 'um_execve' discards qualifiers from pointer target type
>> >arch/um/kernel/syscall.c:130: warning: passing argument 2 of 'um_execve' discards qualifiers from pointer target type
>> >arch/um/kernel/syscall.c:130: warning: passing argument 3 of 'um_execve' discards qualifiers from pointer target type
>> >
>> >Signed-off-by: Miklos Szeredi <[email protected]>
>> >---
>> > arch/um/kernel/syscall.c | 3 ++-
>> > 1 file changed, 2 insertions(+), 1 deletion(-)
>> >
>> >Index: linux-2.6/arch/um/kernel/syscall.c
>> >===================================================================
>> >--- linux-2.6.orig/arch/um/kernel/syscall.c 2009-03-30 20:25:17.000000000 +0200
>> >+++ linux-2.6/arch/um/kernel/syscall.c 2009-03-30 20:36:20.000000000 +0200
>> >@@ -127,7 +127,8 @@ int kernel_execve(const char *filename,
>> >
>> > fs = get_fs();
>> > set_fs(KERNEL_DS);
>> >- ret = um_execve(filename, argv, envp);
>> >+ ret = um_execve((char *)filename, (char __user *__user *)argv,
>> >+ (char __user *__user *) envp);
>>
>> Well... I found this many days ago and I did a similar fix.
>>
>> However, I think this doesn't fix the real problem. The real problem
>> is do_execve() doesn't have the correct const qualifiers, I am queueing
>> a huge patch to fix all the 'const' issues from do_execve() and more,
>> but I don't if Al would like it or not.
>
>I don't know... The thing is, it'll trail down into bprm->filename /
>bprm->interp and the things get very ugly very fast from that point.

Yes, I agree, my queued patch is huge. 8-)
But it is still worthy to fix, right?