diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2008-07-30 07:43:36 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2008-10-12 07:36:47 -0400 |
commit | d56dc61265d2527a63ab5b0f03199a43cd89ca36 (patch) | |
tree | bea2a5b12fc120ca6e8797b2f16ad9696e0f25dd /drivers/media/radio | |
parent | 95f73c5b57990c97047c200b8746ab62a360c5bc (diff) |
V4L/DVB (8613): v4l: move BKL down to the driver level.
The BKL is now moved from the video_open function in v4l2-dev.c to the
various drivers. It seems about a third of the drivers already has a
lock of some sort protecting the open(), another third uses
video_exclusive_open (yuck!) and the last third required adding the
BKL in their open function.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/radio')
-rw-r--r-- | drivers/media/radio/dsbr100.c | 3 | ||||
-rw-r--r-- | drivers/media/radio/radio-si470x.c | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/drivers/media/radio/dsbr100.c b/drivers/media/radio/dsbr100.c index 70c65a745923..3a4eb444a7c3 100644 --- a/drivers/media/radio/dsbr100.c +++ b/drivers/media/radio/dsbr100.c | |||
@@ -407,15 +407,18 @@ static int usb_dsbr100_open(struct inode *inode, struct file *file) | |||
407 | { | 407 | { |
408 | struct dsbr100_device *radio=video_get_drvdata(video_devdata(file)); | 408 | struct dsbr100_device *radio=video_get_drvdata(video_devdata(file)); |
409 | 409 | ||
410 | lock_kernel(); | ||
410 | radio->users = 1; | 411 | radio->users = 1; |
411 | radio->muted = 1; | 412 | radio->muted = 1; |
412 | 413 | ||
413 | if (dsbr100_start(radio)<0) { | 414 | if (dsbr100_start(radio)<0) { |
414 | warn("Radio did not start up properly"); | 415 | warn("Radio did not start up properly"); |
415 | radio->users = 0; | 416 | radio->users = 0; |
417 | unlock_kernel(); | ||
416 | return -EIO; | 418 | return -EIO; |
417 | } | 419 | } |
418 | dsbr100_setfreq(radio, radio->curfreq); | 420 | dsbr100_setfreq(radio, radio->curfreq); |
421 | unlock_kernel(); | ||
419 | return 0; | 422 | return 0; |
420 | } | 423 | } |
421 | 424 | ||
diff --git a/drivers/media/radio/radio-si470x.c b/drivers/media/radio/radio-si470x.c index 16c7ef20265c..337d55793836 100644 --- a/drivers/media/radio/radio-si470x.c +++ b/drivers/media/radio/radio-si470x.c | |||
@@ -1074,6 +1074,7 @@ static int si470x_fops_open(struct inode *inode, struct file *file) | |||
1074 | struct si470x_device *radio = video_get_drvdata(video_devdata(file)); | 1074 | struct si470x_device *radio = video_get_drvdata(video_devdata(file)); |
1075 | int retval; | 1075 | int retval; |
1076 | 1076 | ||
1077 | lock_kernel(); | ||
1077 | radio->users++; | 1078 | radio->users++; |
1078 | 1079 | ||
1079 | retval = usb_autopm_get_interface(radio->intf); | 1080 | retval = usb_autopm_get_interface(radio->intf); |
@@ -1090,6 +1091,7 @@ static int si470x_fops_open(struct inode *inode, struct file *file) | |||
1090 | } | 1091 | } |
1091 | 1092 | ||
1092 | done: | 1093 | done: |
1094 | unlock_kernel(); | ||
1093 | return retval; | 1095 | return retval; |
1094 | } | 1096 | } |
1095 | 1097 | ||