aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/char/monreader.c
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
commitada47b5fe13d89735805b566185f4885f5a3f750 (patch)
tree644b88f8a71896307d71438e9b3af49126ffb22b /drivers/s390/char/monreader.c
parent43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff)
parent3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff)
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'drivers/s390/char/monreader.c')
-rw-r--r--drivers/s390/char/monreader.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/s390/char/monreader.c b/drivers/s390/char/monreader.c
index 66e21dd23154..2ed3f82e5c30 100644
--- a/drivers/s390/char/monreader.c
+++ b/drivers/s390/char/monreader.c
@@ -12,7 +12,6 @@
12#include <linux/module.h> 12#include <linux/module.h>
13#include <linux/moduleparam.h> 13#include <linux/moduleparam.h>
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/smp_lock.h>
16#include <linux/errno.h> 15#include <linux/errno.h>
17#include <linux/types.h> 16#include <linux/types.h>
18#include <linux/kernel.h> 17#include <linux/kernel.h>
@@ -22,6 +21,7 @@
22#include <linux/interrupt.h> 21#include <linux/interrupt.h>
23#include <linux/poll.h> 22#include <linux/poll.h>
24#include <linux/device.h> 23#include <linux/device.h>
24#include <linux/slab.h>
25#include <net/iucv/iucv.h> 25#include <net/iucv/iucv.h>
26#include <asm/uaccess.h> 26#include <asm/uaccess.h>
27#include <asm/ebcdic.h> 27#include <asm/ebcdic.h>
@@ -283,7 +283,6 @@ static int mon_open(struct inode *inode, struct file *filp)
283 /* 283 /*
284 * only one user allowed 284 * only one user allowed
285 */ 285 */
286 lock_kernel();
287 rc = -EBUSY; 286 rc = -EBUSY;
288 if (test_and_set_bit(MON_IN_USE, &mon_in_use)) 287 if (test_and_set_bit(MON_IN_USE, &mon_in_use))
289 goto out; 288 goto out;
@@ -321,7 +320,6 @@ static int mon_open(struct inode *inode, struct file *filp)
321 } 320 }
322 filp->private_data = monpriv; 321 filp->private_data = monpriv;
323 dev_set_drvdata(monreader_device, monpriv); 322 dev_set_drvdata(monreader_device, monpriv);
324 unlock_kernel();
325 return nonseekable_open(inode, filp); 323 return nonseekable_open(inode, filp);
326 324
327out_path: 325out_path:
@@ -331,7 +329,6 @@ out_priv:
331out_use: 329out_use:
332 clear_bit(MON_IN_USE, &mon_in_use); 330 clear_bit(MON_IN_USE, &mon_in_use);
333out: 331out:
334 unlock_kernel();
335 return rc; 332 return rc;
336} 333}
337 334
@@ -533,7 +530,7 @@ static int monreader_restore(struct device *dev)
533 return monreader_thaw(dev); 530 return monreader_thaw(dev);
534} 531}
535 532
536static struct dev_pm_ops monreader_pm_ops = { 533static const struct dev_pm_ops monreader_pm_ops = {
537 .freeze = monreader_freeze, 534 .freeze = monreader_freeze,
538 .thaw = monreader_thaw, 535 .thaw = monreader_thaw,
539 .restore = monreader_restore, 536 .restore = monreader_restore,
@@ -607,6 +604,10 @@ static int __init mon_init(void)
607 } 604 }
608 dcss_mkname(mon_dcss_name, &user_data_connect[8]); 605 dcss_mkname(mon_dcss_name, &user_data_connect[8]);
609 606
607 /*
608 * misc_register() has to be the last action in module_init(), because
609 * file operations will be available right after this.
610 */
610 rc = misc_register(&mon_dev); 611 rc = misc_register(&mon_dev);
611 if (rc < 0 ) 612 if (rc < 0 )
612 goto out; 613 goto out;