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

From: Jens Axboe
Date: Wed Sep 29 2004 - 12:39:55 EST


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:

> 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;
}

--
Jens Axboe

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