copy_to_user() and copy_from_user() functions expect the user space pointers to be marked with __user. Sparse throws following warnings. For copy_to_user(): warning: incorrect type in argument 1 (different address spaces) expected void [noderef] <asn:1>*to got void *buf For copy_from_user(): warning: incorrect type in argument 2 (different address spaces) expected void const [noderef] <asn:1>*from got void *buf This patch casts the user space pointers to have __user by using __force. Signed-off-by: Okash Khawaja <okash.khawaja@xxxxxxxxx> --- drivers/staging/gdm72xx/gdm_wimax.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/staging/gdm72xx/gdm_wimax.c b/drivers/staging/gdm72xx/gdm_wimax.c index d9ddced..16f8f35 100644 --- a/drivers/staging/gdm72xx/gdm_wimax.c +++ b/drivers/staging/gdm72xx/gdm_wimax.c @@ -371,6 +371,7 @@ static void kdelete(void **buf) static int gdm_wimax_ioctl_get_data(struct data_s *dst, struct data_s *src) { int size; + void __user *p; size = dst->size < src->size ? dst->size : src->size; @@ -378,7 +379,9 @@ static int gdm_wimax_ioctl_get_data(struct data_s *dst, struct data_s *src) if (src->size) { if (!dst->buf) return -EINVAL; - if (copy_to_user(dst->buf, src->buf, size)) + + p = (__force void __user *)dst->buf; + if (copy_to_user(p, src->buf, size)) return -EFAULT; } return 0; @@ -386,6 +389,8 @@ static int gdm_wimax_ioctl_get_data(struct data_s *dst, struct data_s *src) static int gdm_wimax_ioctl_set_data(struct data_s *dst, struct data_s *src) { + void __user *p; + if (!src->size) { dst->size = 0; return 0; @@ -401,7 +406,8 @@ static int gdm_wimax_ioctl_set_data(struct data_s *dst, struct data_s *src) return -ENOMEM; } - if (copy_from_user(dst->buf, src->buf, src->size)) { + p = (__force void __user *)src->buf; + if (copy_from_user(dst->buf, p, src->size)) { kdelete(&dst->buf); return -EFAULT; } -- 2.5.2 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel