[PATCH] videodev fixups / generic usercopy helper
authorDave Jones <davej@suse.de>
Wed, 3 Apr 2002 03:23:23 +0000 (19:23 -0800)
committerDave Jones <davej@suse.de>
Wed, 3 Apr 2002 03:23:23 +0000 (19:23 -0800)
commit97752344cd1bec65529adf587cda865810925e3e
tree1b2738231d7dfe5be8040fefc7a501753c2bc033
parentb1689a13951fee5a3e045bc5c6d71afaa5d16622
[PATCH] videodev fixups / generic usercopy helper

Originally from Gerd...

I've just noticed that a hole left in the recent changes which should
allow the usb v4l drivers to unregister with open file handles.  The
drivers itself handle it just fine, but video_generic_ioctl() will barf
when called on unregistered devices.  Oops.

One way to fix this is to expect drivers call the helper function and
pass a pointer for the function doing the actual work, i.e. handle it
this way:

driver_ioctl(inode,file,cmd,userptr)
-> video_usercopy(inode,file,cmd,userptr,func)
copy_from_user(...)
-> func(inode,file,cmd,kernelptr);
copy_to_user(...)

Patch against 2.5.7-pre2 below. It updates videodev.[ch] and adapts
usbvideo.c to show how the driver changes will look like.

Note that this change makes the usercopy helper function a very generic
one, it probably could be used for other drivers to (as long as the API
has sane magic numbers based on _IO*(...) defines) as there is no
video4linux-related stuff in there any more.  So we might think of
renaming it an moving it to some more central place (fs/ioctl.c maybe).
drivers/media/video/videodev.c
drivers/usb/usbvideo.c
drivers/usb/usbvideo.h
include/linux/videodev.h