Em Qui, 2006-09-28 às 10:51 -0700, Andrew Morton escreveu:
On Thu, 28 Sep 2006 10:31:58 -0700
Martin Bligh <mbligh@xxxxxxxxxx> wrote:
That being said, this driver is wrong to be storing dma addresses in a
void*. And indeed there is a FIXME regarding this at
include/linux/videodev2.h:476, so I guess hiding this warning won't obscure
any fault which wasn't already known about..
Yes. The original structure is:
struct v4l2_framebuffer
{
__u32 capability;
__u32 flags;
void* base;
struct v4l2_pix_format fmt;
};
Since this is used at ioctl definition, changing this would break
userspace apps. We might replace this to something like:
struct v4l2_framebuffer
{
__u32 capability;
__u32 flags;
union {
void* base_ptr; /*FOO definition to avoid breaking userpace apps */
dma_addr_t base;
}
struct v4l2_pix_format fmt;
};
This way, base will have the expected type, and it won't break any
userspace app if sizeof(void *)<=sizeof(base). I think this is true for
all architectures (anyway, if it isn't, v4l is broken anyway).