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>
diff --git a/drivers/media/video/s2255drv.c b/drivers/media/video/s2255drv.c
index 92b83fe..de39cf0 100644
--- a/drivers/media/video/s2255drv.c
+++ b/drivers/media/video/s2255drv.c
@@ -1457,6 +1457,7 @@
 	int cur_channel = -1;
 	dprintk(1, "s2255: open called (minor=%d)\n", minor);
 
+	lock_kernel();
 	list_for_each(list, &s2255_devlist) {
 		h = list_entry(list, struct s2255_dev, s2255_devlist);
 		for (i = 0; i < MAX_CHANNELS; i++) {
@@ -1469,6 +1470,7 @@
 	}
 
 	if ((NULL == dev) || (cur_channel == -1)) {
+		unlock_kernel();
 		dprintk(1, "s2255: openv4l no dev\n");
 		return -ENODEV;
 	}
@@ -1490,6 +1492,7 @@
 			printk(KERN_INFO "2255 FW load failed.\n");
 			dev->users[cur_channel]--;
 			mutex_unlock(&dev->open_lock);
+			unlock_kernel();
 			return -EFAULT;
 		}
 	} else if (atomic_read(&dev->fw_data->fw_state) == S2255_FW_NOTLOADED) {
@@ -1506,6 +1509,7 @@
 			       "try again\n");
 			dev->users[cur_channel]--;
 			mutex_unlock(&dev->open_lock);
+			unlock_kernel();
 			return -EBUSY;
 		}
 	}
@@ -1515,6 +1519,7 @@
 	if (NULL == fh) {
 		dev->users[cur_channel]--;
 		mutex_unlock(&dev->open_lock);
+		unlock_kernel();
 		return -ENOMEM;
 	}
 
@@ -1548,6 +1553,7 @@
 
 	kref_get(&dev->kref);
 	mutex_unlock(&dev->open_lock);
+	unlock_kernel();
 	return 0;
 }