diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2008-08-24 10:18:47 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2008-10-12 07:36:54 -0400 |
commit | 9d95af9d09d537d287eea9914c0d1ca4cfa0ec7f (patch) | |
tree | 33fa1c6fb5aed9a056cc5baec7f9b8c70654d45e | |
parent | c170ecf434bceb0e188b14a6deb3bfa3ec9ef699 (diff) |
V4L/DVB (8791): v4l2-dev: do not clear the driver_data field
The driver_data field of the device structure was zeroed, thus losing
this information. Many drivers set this up before calling
video_device_register, so we have to ensure that it isn't lost.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/video/v4l2-dev.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/media/video/v4l2-dev.c b/drivers/media/video/v4l2-dev.c index 1ec0a1a8fb73..99f7ee4bc503 100644 --- a/drivers/media/video/v4l2-dev.c +++ b/drivers/media/video/v4l2-dev.c | |||
@@ -226,6 +226,7 @@ int video_register_device_index(struct video_device *vfd, int type, int nr, | |||
226 | int end; | 226 | int end; |
227 | int ret; | 227 | int ret; |
228 | char *name_base; | 228 | char *name_base; |
229 | void *priv = video_get_drvdata(vfd); | ||
229 | 230 | ||
230 | /* the release callback MUST be present */ | 231 | /* the release callback MUST be present */ |
231 | BUG_ON(!vfd->release); | 232 | BUG_ON(!vfd->release); |
@@ -295,6 +296,9 @@ int video_register_device_index(struct video_device *vfd, int type, int nr, | |||
295 | 296 | ||
296 | /* sysfs class */ | 297 | /* sysfs class */ |
297 | memset(&vfd->dev, 0, sizeof(vfd->dev)); | 298 | memset(&vfd->dev, 0, sizeof(vfd->dev)); |
299 | /* The memset above cleared the device's drvdata, so | ||
300 | put back the copy we made earlier. */ | ||
301 | video_set_drvdata(vfd, priv); | ||
298 | vfd->dev.class = &video_class; | 302 | vfd->dev.class = &video_class; |
299 | vfd->dev.devt = MKDEV(VIDEO_MAJOR, vfd->minor); | 303 | vfd->dev.devt = MKDEV(VIDEO_MAJOR, vfd->minor); |
300 | if (vfd->parent) | 304 | if (vfd->parent) |