Re: 1 New compile/sparse warning (overnight build)

From: John Cherry
Date: Wed Sep 29 2004 - 12:54:47 EST


On Wed, 2004-09-29 at 10:33, Jens Axboe wrote:
> On Wed, Sep 29 2004, John Cherry wrote:
> > This sparse warning was introduced with patch 1.2000 (axboe).
> > In fs/bio.c (line 509),
> >
> > if (copy_from_user(addr, (char *) p, bvec->bv_len))
> >
> > should probably be
> >
> > if (copy_from_user(addr, (char __user *) p, bvec->bv_len))
>
> It's not a new warning, just look at your own generated output:

Yes, this bug just moved. Thanks for the fix.

John

>
> > New warnings:
> > -------------
> > fs/bio.c:509:30: warning: incorrect type in argument 2 (different
> > address spaces)
> > fs/bio.c:509:30: expected void const [noderef] *from<asn:1>
> > fs/bio.c:509:30: got char *<noident>
> >
> >
> > Fixed warnings:
> > ---------------
> > fs/bio.c:462:31: warning: incorrect type in argument 2 (different
> > address spaces)
> > fs/bio.c:462:31: expected void const [noderef] *from<asn:1>
> > fs/bio.c:462:31: got char *<noident>
>
> The warning simply moved. This should fix it, though.
>
> Signed-off-by: Jens Axboe <axboe@xxxxxxx>
>
> ===== fs/bio.c 1.67 vs edited =====
> --- 1.67/fs/bio.c 2004-09-28 17:59:14 +02:00
> +++ edited/fs/bio.c 2004-09-29 19:34:39 +02:00
> @@ -497,7 +497,7 @@
> * success
> */
> if (!write_to_vm) {
> - unsigned long p = uaddr;
> + char __user *p = (char __user *) uaddr;
>
> /*
> * for a write, copy in data to kernel pages
> @@ -506,7 +506,7 @@
> bio_for_each_segment(bvec, bio, i) {
> char *addr = page_address(bvec->bv_page);
>
> - if (copy_from_user(addr, (char *) p, bvec->bv_len))
> + if (copy_from_user(addr, p, bvec->bv_len))
> goto cleanup;
> p += bvec->bv_len;
> }

-
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/