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

Américo Wang
2009-04-04T16:51:08Z

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 <mszeredi@suse.cz>
>> >
>> >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 <mszeredi@suse.cz>
>> >---
>> > 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?