diff options
author | Jonathan Corbet <corbet@lwn.net> | 2008-05-18 17:32:43 -0400 |
---|---|---|
committer | Jonathan Corbet <corbet@lwn.net> | 2008-06-20 16:05:53 -0400 |
commit | f2b9857eee17797541b845782ade4d7a9d50f843 (patch) | |
tree | 914a00afee2ff953199f99f7cf869e3fd83b36bd /drivers/char/ip2 | |
parent | 0b2806768899dba5967bcd4a3b93eaed9a1dc4f3 (diff) |
Add a bunch of cycle_kernel_lock() calls
All of the open() functions which don't need the BKL on their face may
still depend on its acquisition to serialize opens against driver
initialization. So make those functions acquire then release the BKL to be
on the safe side.
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Diffstat (limited to 'drivers/char/ip2')
-rw-r--r-- | drivers/char/ip2/ip2main.c | 34 |
1 files changed, 2 insertions, 32 deletions
diff --git a/drivers/char/ip2/ip2main.c b/drivers/char/ip2/ip2main.c index 70957acaa96..a978c57b6b2 100644 --- a/drivers/char/ip2/ip2main.c +++ b/drivers/char/ip2/ip2main.c | |||
@@ -98,6 +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 | 102 | ||
102 | #include <linux/tty.h> | 103 | #include <linux/tty.h> |
103 | #include <linux/tty_flip.h> | 104 | #include <linux/tty_flip.h> |
@@ -2931,42 +2932,11 @@ ip2_ipl_ioctl ( struct inode *pInode, struct file *pFile, UINT cmd, ULONG arg ) | |||
2931 | static int | 2932 | static int |
2932 | ip2_ipl_open( struct inode *pInode, struct file *pFile ) | 2933 | ip2_ipl_open( struct inode *pInode, struct file *pFile ) |
2933 | { | 2934 | { |
2934 | unsigned int iplminor = iminor(pInode); | ||
2935 | i2eBordStrPtr pB; | ||
2936 | i2ChanStrPtr pCh; | ||
2937 | 2935 | ||
2938 | #ifdef IP2DEBUG_IPL | 2936 | #ifdef IP2DEBUG_IPL |
2939 | printk (KERN_DEBUG "IP2IPL: open\n" ); | 2937 | printk (KERN_DEBUG "IP2IPL: open\n" ); |
2940 | #endif | 2938 | #endif |
2941 | 2939 | cycle_kernel_lock(); | |
2942 | switch(iplminor) { | ||
2943 | // These are the IPL devices | ||
2944 | case 0: | ||
2945 | case 4: | ||
2946 | case 8: | ||
2947 | case 12: | ||
2948 | break; | ||
2949 | |||
2950 | // These are the status devices | ||
2951 | case 1: | ||
2952 | case 5: | ||
2953 | case 9: | ||
2954 | case 13: | ||
2955 | break; | ||
2956 | |||
2957 | // These are the debug devices | ||
2958 | case 2: | ||
2959 | case 6: | ||
2960 | case 10: | ||
2961 | case 14: | ||
2962 | pB = i2BoardPtrTable[iplminor / 4]; | ||
2963 | pCh = (i2ChanStrPtr) pB->i2eChannelPtr; | ||
2964 | break; | ||
2965 | |||
2966 | // This is the trace device | ||
2967 | case 3: | ||
2968 | break; | ||
2969 | } | ||
2970 | return 0; | 2940 | return 0; |
2971 | } | 2941 | } |
2972 | 2942 | ||