Commit b9c321fd authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Linus Torvalds

lib/bitmap.c: quiet sparse noise about address space

__bitmap_parse() and __bitmap_parselist() both take a pointer to a kernel
buffer as a parameter and then cast it to a pointer to user buffer for use
in cases when the parameter is_user indicates that the buffer is actually
located in user space.  This casting, and the casts in the callers,
results in sparse noise like the following:

	warning: incorrect type in initializer (different address spaces)
	  expected char const [noderef] <asn:1>*ubuf
	  got char const *buf
	warning: cast removes address space of expression

Since these casts are intentional, use __force to quiet the noise.
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Len Brown <len.brown@intel.com>
Cc: Huang Ying <ying.huang@intel.com>
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Andi Kleen <ak@linux.intel.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 4e101b0e
...@@ -419,7 +419,7 @@ int __bitmap_parse(const char *buf, unsigned int buflen, ...@@ -419,7 +419,7 @@ int __bitmap_parse(const char *buf, unsigned int buflen,
{ {
int c, old_c, totaldigits, ndigits, nchunks, nbits; int c, old_c, totaldigits, ndigits, nchunks, nbits;
u32 chunk; u32 chunk;
const char __user *ubuf = buf; const char __user __force *ubuf = (const char __user __force *)buf;
bitmap_zero(maskp, nmaskbits); bitmap_zero(maskp, nmaskbits);
...@@ -504,7 +504,9 @@ int bitmap_parse_user(const char __user *ubuf, ...@@ -504,7 +504,9 @@ int bitmap_parse_user(const char __user *ubuf,
{ {
if (!access_ok(VERIFY_READ, ubuf, ulen)) if (!access_ok(VERIFY_READ, ubuf, ulen))
return -EFAULT; return -EFAULT;
return __bitmap_parse((const char *)ubuf, ulen, 1, maskp, nmaskbits); return __bitmap_parse((const char __force *)ubuf,
ulen, 1, maskp, nmaskbits);
} }
EXPORT_SYMBOL(bitmap_parse_user); EXPORT_SYMBOL(bitmap_parse_user);
...@@ -594,7 +596,7 @@ static int __bitmap_parselist(const char *buf, unsigned int buflen, ...@@ -594,7 +596,7 @@ static int __bitmap_parselist(const char *buf, unsigned int buflen,
{ {
unsigned a, b; unsigned a, b;
int c, old_c, totaldigits; int c, old_c, totaldigits;
const char __user *ubuf = buf; const char __user __force *ubuf = (const char __user __force *)buf;
int exp_digit, in_range; int exp_digit, in_range;
totaldigits = c = 0; totaldigits = c = 0;
...@@ -694,7 +696,7 @@ int bitmap_parselist_user(const char __user *ubuf, ...@@ -694,7 +696,7 @@ int bitmap_parselist_user(const char __user *ubuf,
{ {
if (!access_ok(VERIFY_READ, ubuf, ulen)) if (!access_ok(VERIFY_READ, ubuf, ulen))
return -EFAULT; return -EFAULT;
return __bitmap_parselist((const char *)ubuf, return __bitmap_parselist((const char __force *)ubuf,
ulen, 1, maskp, nmaskbits); ulen, 1, maskp, nmaskbits);
} }
EXPORT_SYMBOL(bitmap_parselist_user); EXPORT_SYMBOL(bitmap_parselist_user);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment