Re: [PATCH/RFC] videodev.[ch] redesign

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



> Excellent work. I have no complaints, just a few questions:
> 
> 1. Would it be better to memset the temp buffer in video_generic_ioctl() 
> rather than in the driver? I've seen so many drivers forget to do this, 
> and it's a potential (albeit very small) security hole.

The wrapper fills the buffer using copy_from_user() -- even for _IOR
ioctls because some are labeled wrong -- and the driver needs that data.
I can't zero the buffer ...

> 2. In skeleton_open(), couldn't the device_data lookup code be replaced 
> with:
> 
>    struct video_device *vdev = video_devdata(file);
>    struct device_data *dev = vdev->priv;

Good point.  Yes, that should work.

> 3. In skeleton_initdev(), shouldn't...
> 
>    dev->vdev = skeleton_template;
> 
> ...be...
> 
>    memcpy(&dev->vdev, &skeleton_template, sizeof(skeleton_template);

No.  It does the same.

> 4. Is it safe to keep even 128 bytes on the stack in 
> video_generic_ioctl()? Consider that devices might spend a relatively 
> long time blocking on VIDIOCSYNC. With 32 devices in use at once, you'd 
> be coming dangerously close to a stack overflow.

I don't see a overflow can easily happen here.  There is one kernel
strack _per process_.  Calling schedule() will also switch the stack.

> IMHO it would be better 
> to only allocate as much as MCAPTURE and SYNC need, and fall back on 
> kmalloc for the less time-critical ones (if necessary).

struct v4l2_buffer should fit onto the stack too.

  Gerd

-- 
#define	ENOCLUE 125 /* userland programmer induced race condition */





[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux