diff options
author | Arnd Bergmann <arnd@arndb.de> | 2010-06-02 08:28:52 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2010-10-05 09:01:04 -0400 |
commit | 613655fa39ff6957754fa8ceb8559980920eb8ee (patch) | |
tree | ad19600cb81207b24188683d7fc4ae88013339d1 /drivers/char/ip2 | |
parent | 609146fdb319cebce93be550938ab852f7bade90 (diff) |
drivers: autoconvert trivial BKL users to private mutex
All these files use the big kernel lock in a trivial
way to serialize their private file operations,
typically resulting from an earlier semi-automatic
pushdown from VFS.
None of these drivers appears to want to lock against
other code, and they all use the BKL as the top-level
lock in their file operations, meaning that there
is no lock-order inversion problem.
Consequently, we can remove the BKL completely,
replacing it with a per-file mutex in every case.
Using a scripted approach means we can avoid
typos.
These drivers do not seem to be under active
maintainance from my brief investigation. Apologies
to those maintainers that I have missed.
file=$1
name=$2
if grep -q lock_kernel ${file} ; then
if grep -q 'include.*linux.mutex.h' ${file} ; then
sed -i '/include.*<linux\/smp_lock.h>/d' ${file}
else
sed -i 's/include.*<linux\/smp_lock.h>.*$/include <linux\/mutex.h>/g' ${file}
fi
sed -i ${file} \
-e "/^#include.*linux.mutex.h/,$ {
1,/^\(static\|int\|long\)/ {
/^\(static\|int\|long\)/istatic DEFINE_MUTEX(${name}_mutex);
} }" \
-e "s/\(un\)*lock_kernel\>[ ]*()/mutex_\1lock(\&${name}_mutex)/g" \
-e '/[ ]*cycle_kernel_lock();/d'
else
sed -i -e '/include.*\<smp_lock.h\>/d' ${file} \
-e '/cycle_kernel_lock()/d'
fi
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'drivers/char/ip2')
-rw-r--r-- | drivers/char/ip2/ip2main.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/char/ip2/ip2main.c b/drivers/char/ip2/ip2main.c index d4b71e8d0d23..dfbdf49d1e80 100644 --- a/drivers/char/ip2/ip2main.c +++ b/drivers/char/ip2/ip2main.c | |||
@@ -98,7 +98,7 @@ | |||
98 | #include <linux/major.h> | 98 | #include <linux/major.h> |
99 | #include <linux/wait.h> | 99 | #include <linux/wait.h> |
100 | #include <linux/device.h> | 100 | #include <linux/device.h> |
101 | #include <linux/smp_lock.h> | 101 | #include <linux/mutex.h> |
102 | #include <linux/firmware.h> | 102 | #include <linux/firmware.h> |
103 | #include <linux/platform_device.h> | 103 | #include <linux/platform_device.h> |
104 | 104 | ||
@@ -138,6 +138,7 @@ | |||
138 | #include <linux/proc_fs.h> | 138 | #include <linux/proc_fs.h> |
139 | #include <linux/seq_file.h> | 139 | #include <linux/seq_file.h> |
140 | 140 | ||
141 | static DEFINE_MUTEX(ip2_mutex); | ||
141 | static const struct file_operations ip2mem_proc_fops; | 142 | static const struct file_operations ip2mem_proc_fops; |
142 | static const struct file_operations ip2_proc_fops; | 143 | static const struct file_operations ip2_proc_fops; |
143 | 144 | ||
@@ -2897,7 +2898,7 @@ ip2_ipl_ioctl (struct file *pFile, UINT cmd, ULONG arg ) | |||
2897 | printk (KERN_DEBUG "IP2IPL: ioctl cmd %d, arg %ld\n", cmd, arg ); | 2898 | printk (KERN_DEBUG "IP2IPL: ioctl cmd %d, arg %ld\n", cmd, arg ); |
2898 | #endif | 2899 | #endif |
2899 | 2900 | ||
2900 | lock_kernel(); | 2901 | mutex_lock(&ip2_mutex); |
2901 | 2902 | ||
2902 | switch ( iplminor ) { | 2903 | switch ( iplminor ) { |
2903 | case 0: // IPL device | 2904 | case 0: // IPL device |
@@ -2961,7 +2962,7 @@ ip2_ipl_ioctl (struct file *pFile, UINT cmd, ULONG arg ) | |||
2961 | rc = -ENODEV; | 2962 | rc = -ENODEV; |
2962 | break; | 2963 | break; |
2963 | } | 2964 | } |
2964 | unlock_kernel(); | 2965 | mutex_unlock(&ip2_mutex); |
2965 | return rc; | 2966 | return rc; |
2966 | } | 2967 | } |
2967 | 2968 | ||
@@ -2982,7 +2983,6 @@ ip2_ipl_open( struct inode *pInode, struct file *pFile ) | |||
2982 | #ifdef IP2DEBUG_IPL | 2983 | #ifdef IP2DEBUG_IPL |
2983 | printk (KERN_DEBUG "IP2IPL: open\n" ); | 2984 | printk (KERN_DEBUG "IP2IPL: open\n" ); |
2984 | #endif | 2985 | #endif |
2985 | cycle_kernel_lock(); | ||
2986 | return 0; | 2986 | return 0; |
2987 | } | 2987 | } |
2988 | 2988 | ||