aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/rtc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/rtc.c')
-rw-r--r--drivers/char/rtc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/char/rtc.c b/drivers/char/rtc.c
index 909cac93fa2a..fa92a8af5a5a 100644
--- a/drivers/char/rtc.c
+++ b/drivers/char/rtc.c
@@ -73,6 +73,7 @@
73#include <linux/proc_fs.h> 73#include <linux/proc_fs.h>
74#include <linux/seq_file.h> 74#include <linux/seq_file.h>
75#include <linux/spinlock.h> 75#include <linux/spinlock.h>
76#include <linux/smp_lock.h>
76#include <linux/sysctl.h> 77#include <linux/sysctl.h>
77#include <linux/wait.h> 78#include <linux/wait.h>
78#include <linux/bcd.h> 79#include <linux/bcd.h>
@@ -734,6 +735,7 @@ static int rtc_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
734 * needed here. Or anywhere else in this driver. */ 735 * needed here. Or anywhere else in this driver. */
735static int rtc_open(struct inode *inode, struct file *file) 736static int rtc_open(struct inode *inode, struct file *file)
736{ 737{
738 lock_kernel();
737 spin_lock_irq(&rtc_lock); 739 spin_lock_irq(&rtc_lock);
738 740
739 if (rtc_status & RTC_IS_OPEN) 741 if (rtc_status & RTC_IS_OPEN)
@@ -743,10 +745,12 @@ static int rtc_open(struct inode *inode, struct file *file)
743 745
744 rtc_irq_data = 0; 746 rtc_irq_data = 0;
745 spin_unlock_irq(&rtc_lock); 747 spin_unlock_irq(&rtc_lock);
748 unlock_kernel();
746 return 0; 749 return 0;
747 750
748out_busy: 751out_busy:
749 spin_unlock_irq(&rtc_lock); 752 spin_unlock_irq(&rtc_lock);
753 unlock_kernel();
750 return -EBUSY; 754 return -EBUSY;
751} 755}
752 756