Re: [PATCH] fat sparse fixes

From: Linus Torvalds
Date: Mon Sep 29 2003 - 11:52:38 EST



On Mon, 29 Sep 2003 Andries.Brouwer@xxxxxx wrote:
>
> --- a/fs/fat/dir.c Mon Sep 29 01:05:41 2003
> +++ b/fs/fat/dir.c Mon Sep 29 01:11:39 2003
> @@ -630,7 +630,7 @@
> put_user(slen, &d1->d_reclen))
> goto efault;
> } else {
> - if (put_user(0, d2->d_name) ||
> + if (put_user(0, d2->d_name+0) ||
> put_user(0, &d2->d_reclen) ||
> copy_to_user(d1->d_name, name, len) ||
> put_user(0, d1->d_name+len) ||

The above seems to just work around a sparse bug. Please don't - I'd
rather have regular code and try to fix the sparse problem.

Hmm.. I wonder why sparse doesn't get the address space right on arrays.
It should see that "d2" is a user pointer , so d2->d_name is one too.

It gets it right if you add the "+0", or if you add a "&" in front. So
it looks like the sparse array->pointer degeneration misses something.

Linus

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/