2011-06-15 07:49:41

by Yoshinori Sato

[permalink] [raw]
Subject: [PATCH] binfmt_flat: missing argv table

"put_user" is multiple times evalute on argument
(in asm-generic/uaccess.h).
So this code building argv table include gabage.

Signed-off-by: Yoshinori Sato <[email protected]>

diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
index 811384b..127a198 100644
--- a/fs/binfmt_flat.c
+++ b/fs/binfmt_flat.c
@@ -144,7 +144,7 @@ static unsigned long create_flat_tables(
put_user(argc, sp);
current->mm->arg_start = (unsigned long) p;
while (argc-->0) {
- put_user((unsigned long) p, argv++);
+ put_user((unsigned long) p, argv); argv++;
do {
get_user(dummy, p); p++;
} while (dummy);

--
Yoshinori Sato
<[email protected]>


2011-06-15 15:52:55

by Mike Frysinger

[permalink] [raw]
Subject: Re: [PATCH] binfmt_flat: missing argv table

On Wed, Jun 15, 2011 at 03:30, Yoshinori Sato wrote:
> "put_user" is multiple times evalute on argument
> (in asm-generic/uaccess.h).
> So this code building argv table include gabage.

NAK. asm-generic/uaccess.h is broken. i posted some fixes some time
ago to lkml for the header to clean it all up, but it had some minor
build warnings that needed to be addressed.

if you want to actually fix this issue, please start with my patch and
get the issues around it resolved:
asm-generic: uaccess: do not expand args multiple times
-mike

2011-06-17 06:58:16

by Yoshinori Sato

[permalink] [raw]
Subject: Re: [PATCH] binfmt_flat: missing argv table

At Wed, 15 Jun 2011 11:52:33 -0400,
Mike Frysinger wrote:
>
> On Wed, Jun 15, 2011 at 03:30, Yoshinori Sato wrote:
> > "put_user" is multiple times evalute on argument
> > (in asm-generic/uaccess.h).
> > So this code building argv table include gabage.
>
> NAK. asm-generic/uaccess.h is broken. i posted some fixes some time
> ago to lkml for the header to clean it all up, but it had some minor
> build warnings that needed to be addressed.
>
> if you want to actually fix this issue, please start with my patch and
> get the issues around it resolved:
> asm-generic: uaccess: do not expand args multiple times
> -mike

OK.
I found it. and trying cleanup.

--
Yoshinori Sato
<[email protected]>