Commit 99ed3dd8 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

media: isppreview: fix __user annotations

The 'from' variable at preview_config() expects an __user * type.

However, the logic there does:

    from = *(void * __user *) ((void *)cfg + attr->config_offset);

With actually means a void pointer, pointing to a void __ user
pointer. When the first pointer is de-referenced with *(foo),
the type it returns is "void *" instead of "void __user *".

Change it to:
    from = *(void __user **) ((void *)cfg + attr->config_offset);

in order to obtain, when de-referenced, a void __user pointer,
as desired.

That prevent those warnings:
   drivers/media/platform/omap3isp/isppreview.c:893:45: warning: incorrect type in initializer (different address spaces)
   drivers/media/platform/omap3isp/isppreview.c:893:45:    expected void [noderef] <asn:1>*from
   drivers/media/platform/omap3isp/isppreview.c:893:45:    got void *[noderef] <asn:1><noident>
   drivers/media/platform/omap3isp/isppreview.c:893:47: warning: dereference of noderef expression
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent e6aded73
...@@ -890,7 +890,7 @@ static int preview_config(struct isp_prev_device *prev, ...@@ -890,7 +890,7 @@ static int preview_config(struct isp_prev_device *prev,
params = &prev->params.params[!!(active & bit)]; params = &prev->params.params[!!(active & bit)];
if (cfg->flag & bit) { if (cfg->flag & bit) {
void __user *from = *(void * __user *) void __user *from = *(void __user **)
((void *)cfg + attr->config_offset); ((void *)cfg + attr->config_offset);
void *to = (void *)params + attr->param_offset; void *to = (void *)params + attr->param_offset;
size_t size = attr->param_size; size_t size = attr->param_size;
......
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