summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJonathan Corbet <corbet@lwn.net>2008-05-16 13:40:30 -0600
committerJonathan Corbet <corbet@lwn.net>2008-06-20 14:05:50 -0600
commitd21c95c569c462da20d491b75d0a45bd70ddc1bf (patch)
treec5efcd4a1ae50101a56abc1f5a27ef5173da209d /drivers
parent39d95b9d857ad9ed335dd1a2d6c6de1f1ee69ce1 (diff)
Add "no BKL needed" comments to several drivers
This documents the fact that somebody looked at the relevant open() functions and concluded that, due to their trivial nature, no locking was needed. Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/char/cs5535_gpio.c2
-rw-r--r--drivers/char/dtlk.c2
-rw-r--r--drivers/char/pc8736x_gpio.c1
-rw-r--r--drivers/char/ppdev.c1
-rw-r--r--drivers/char/scx200_gpio.c1
-rw-r--r--drivers/char/tb0219.c1
-rw-r--r--drivers/char/vr41xx_giu.c2
-rw-r--r--drivers/infiniband/core/ucm.c1
-rw-r--r--drivers/infiniband/hw/ipath/ipath_file_ops.c1
-rw-r--r--drivers/net/ppp_generic.c1
-rw-r--r--drivers/scsi/3w-9xxx.c2
-rw-r--r--drivers/scsi/3w-xxxx.c2
-rw-r--r--drivers/scsi/megaraid.c5
-rw-r--r--drivers/scsi/megaraid/megaraid_sas.c1
14 files changed, 21 insertions, 2 deletions
diff --git a/drivers/char/cs5535_gpio.c b/drivers/char/cs5535_gpio.c
index c0a4a0bb509..628e3d3249d 100644
--- a/drivers/char/cs5535_gpio.c
+++ b/drivers/char/cs5535_gpio.c
@@ -153,6 +153,8 @@ static ssize_t cs5535_gpio_read(struct file *file, char __user *buf,
return count;
}
+/* No BKL needed here - "mask" is the only global resource used
+ here and it's a boot-time parameter */
static int cs5535_gpio_open(struct inode *inode, struct file *file)
{
u32 m = iminor(inode);
diff --git a/drivers/char/dtlk.c b/drivers/char/dtlk.c
index abde6ddefe6..433388c6023 100644
--- a/drivers/char/dtlk.c
+++ b/drivers/char/dtlk.c
@@ -288,6 +288,8 @@ static int dtlk_ioctl(struct inode *inode,
}
}
+/* No BKL needed here; "dtlk_busy" is the only global resource,
+ and it is not ever set by anybody (test is broken) */
static int dtlk_open(struct inode *inode, struct file *file)
{
TRACE_TEXT("(dtlk_open");
diff --git a/drivers/char/pc8736x_gpio.c b/drivers/char/pc8736x_gpio.c
index ecfaf180e5b..8715dc9f4a5 100644
--- a/drivers/char/pc8736x_gpio.c
+++ b/drivers/char/pc8736x_gpio.c
@@ -212,6 +212,7 @@ static struct nsc_gpio_ops pc8736x_gpio_ops = {
.gpio_current = pc8736x_gpio_current
};
+/* No BKL needed here; no global resources accessed */
static int pc8736x_gpio_open(struct inode *inode, struct file *file)
{
unsigned m = iminor(inode);
diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c
index 3aab837d948..ce198757488 100644
--- a/drivers/char/ppdev.c
+++ b/drivers/char/ppdev.c
@@ -633,6 +633,7 @@ static int pp_ioctl(struct inode *inode, struct file *file,
return 0;
}
+/* No BKL needed here: only local resources used */
static int pp_open (struct inode * inode, struct file * file)
{
unsigned int minor = iminor(inode);
diff --git a/drivers/char/scx200_gpio.c b/drivers/char/scx200_gpio.c
index 99e5272e3c5..be2c623a986 100644
--- a/drivers/char/scx200_gpio.c
+++ b/drivers/char/scx200_gpio.c
@@ -46,6 +46,7 @@ struct nsc_gpio_ops scx200_gpio_ops = {
};
EXPORT_SYMBOL_GPL(scx200_gpio_ops);
+/* No BKL needed here: no global resources used */
static int scx200_gpio_open(struct inode *inode, struct file *file)
{
unsigned m = iminor(inode);
diff --git a/drivers/char/tb0219.c b/drivers/char/tb0219.c
index 4c431cb7cf1..db8c2ca2ce4 100644
--- a/drivers/char/tb0219.c
+++ b/drivers/char/tb0219.c
@@ -232,6 +232,7 @@ static ssize_t tanbac_tb0219_write(struct file *file, const char __user *data,
return i;
}
+/* No BKL needed here; no global resources accessed */
static int tanbac_tb0219_open(struct inode *inode, struct file *file)
{
unsigned int minor;
diff --git a/drivers/char/vr41xx_giu.c b/drivers/char/vr41xx_giu.c
index e5ed09192be..412937fdb95 100644
--- a/drivers/char/vr41xx_giu.c
+++ b/drivers/char/vr41xx_giu.c
@@ -543,6 +543,8 @@ static ssize_t gpio_write(struct file *file, const char __user *data,
return i;
}
+/* No BKL needed here; only global (giu_nr_pins) is only set
+ at probe time */
static int gpio_open(struct inode *inode, struct file *file)
{
unsigned int pin;
diff --git a/drivers/infiniband/core/ucm.c b/drivers/infiniband/core/ucm.c
index d7a6881b571..3e6a8ff6d76 100644
--- a/drivers/infiniband/core/ucm.c
+++ b/drivers/infiniband/core/ucm.c
@@ -1155,6 +1155,7 @@ static unsigned int ib_ucm_poll(struct file *filp,
return mask;
}
+/* No BKL needed here: no global resources used */
static int ib_ucm_open(struct inode *inode, struct file *filp)
{
struct ib_ucm_file *file;
diff --git a/drivers/infiniband/hw/ipath/ipath_file_ops.c b/drivers/infiniband/hw/ipath/ipath_file_ops.c
index b472b15637f..e80cfbd4f3f 100644
--- a/drivers/infiniband/hw/ipath/ipath_file_ops.c
+++ b/drivers/infiniband/hw/ipath/ipath_file_ops.c
@@ -1812,6 +1812,7 @@ done:
return ret;
}
+/* No BKL needed here */
static int ipath_open(struct inode *in, struct file *fp)
{
/* The real work is performed later in ipath_assign_port() */
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c
index 1f4ca2b54a7..dc8505062da 100644
--- a/drivers/net/ppp_generic.c
+++ b/drivers/net/ppp_generic.c
@@ -351,6 +351,7 @@ static const int npindex_to_ethertype[NUM_NP] = {
* Open instances of /dev/ppp can be in one of three states:
* unattached, attached to a ppp unit, or attached to a ppp channel.
*/
+/* No BKL needed here */
static int ppp_open(struct inode *inode, struct file *file)
{
/*
diff --git a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c
index b31faeccb9c..2239d16fb9b 100644
--- a/drivers/scsi/3w-9xxx.c
+++ b/drivers/scsi/3w-9xxx.c
@@ -862,6 +862,8 @@ out:
} /* End twa_chrdev_ioctl() */
/* This function handles open for the character device */
+/* NOTE that this function will race with remove; adding BKL
+ will not help. */
static int twa_chrdev_open(struct inode *inode, struct file *file)
{
unsigned int minor_number;
diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c
index 8c22329aa85..bbff029536e 100644
--- a/drivers/scsi/3w-xxxx.c
+++ b/drivers/scsi/3w-xxxx.c
@@ -1027,6 +1027,8 @@ out:
} /* End tw_chrdev_ioctl() */
/* This function handles open for the character device */
+/* NOTE that this function races with remove - adding BKL
+ won't help */
static int tw_chrdev_open(struct inode *inode, struct file *file)
{
unsigned int minor_number;
diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c
index 18551aaf5e0..c9aa2c45a69 100644
--- a/drivers/scsi/megaraid.c
+++ b/drivers/scsi/megaraid.c
@@ -3272,8 +3272,9 @@ mega_init_scb(adapter_t *adapter)
* @filep - unused
*
* Routines for the character/ioctl interface to the driver. Find out if this
- * is a valid open. If yes, increment the module use count so that it cannot
- * be unloaded.
+ * is a valid open.
+ *
+ * No BKL needed here.
*/
static int
megadev_open (struct inode *inode, struct file *filep)
diff --git a/drivers/scsi/megaraid/megaraid_sas.c b/drivers/scsi/megaraid/megaraid_sas.c
index 7d84c8bbcf3..81374b7c555 100644
--- a/drivers/scsi/megaraid/megaraid_sas.c
+++ b/drivers/scsi/megaraid/megaraid_sas.c
@@ -2860,6 +2860,7 @@ static void megasas_shutdown(struct pci_dev *pdev)
/**
* megasas_mgmt_open - char node "open" entry point
+ * No BKL is needed here.
*/
static int megasas_mgmt_open(struct inode *inode, struct file *filep)
{