"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]>
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
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]>