aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/sbus
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/sbus')
-rw-r--r--drivers/sbus/char/cpwatchdog.c2
-rw-r--r--drivers/sbus/char/display7seg.c2
-rw-r--r--drivers/sbus/char/openprom.c3
-rw-r--r--drivers/sbus/char/rtc.c22
4 files changed, 27 insertions, 2 deletions
diff --git a/drivers/sbus/char/cpwatchdog.c b/drivers/sbus/char/cpwatchdog.c
index 071ae24be892..fd2cc7782f76 100644
--- a/drivers/sbus/char/cpwatchdog.c
+++ b/drivers/sbus/char/cpwatchdog.c
@@ -407,7 +407,7 @@ static long wd_compat_ioctl(struct file *file, unsigned int cmd,
407 case WIOCGSTAT: 407 case WIOCGSTAT:
408 lock_kernel(); 408 lock_kernel();
409 rval = wd_ioctl(file->f_dentry->d_inode, file, cmd, arg); 409 rval = wd_ioctl(file->f_dentry->d_inode, file, cmd, arg);
410 lock_kernel(); 410 unlock_kernel();
411 break; 411 break;
412 /* everything else is handled by the generic compat layer */ 412 /* everything else is handled by the generic compat layer */
413 default: 413 default:
diff --git a/drivers/sbus/char/display7seg.c b/drivers/sbus/char/display7seg.c
index 39f54213a6d5..2c86a4b809cd 100644
--- a/drivers/sbus/char/display7seg.c
+++ b/drivers/sbus/char/display7seg.c
@@ -161,7 +161,7 @@ static long d7s_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
161 writeb(regs, d7s_regs); 161 writeb(regs, d7s_regs);
162 break; 162 break;
163 }; 163 };
164 lock_kernel(); 164 unlock_kernel();
165 165
166 return error; 166 return error;
167} 167}
diff --git a/drivers/sbus/char/openprom.c b/drivers/sbus/char/openprom.c
index 5028ac214326..383a95f34a0d 100644
--- a/drivers/sbus/char/openprom.c
+++ b/drivers/sbus/char/openprom.c
@@ -596,6 +596,8 @@ static long openprom_compat_ioctl(struct file *file, unsigned int cmd,
596 lock_kernel(); 596 lock_kernel();
597 break; 597 break;
598 } 598 }
599
600 return rval;
599} 601}
600 602
601static int openprom_open(struct inode * inode, struct file * file) 603static int openprom_open(struct inode * inode, struct file * file)
@@ -623,6 +625,7 @@ static struct file_operations openprom_fops = {
623 .owner = THIS_MODULE, 625 .owner = THIS_MODULE,
624 .llseek = no_llseek, 626 .llseek = no_llseek,
625 .ioctl = openprom_ioctl, 627 .ioctl = openprom_ioctl,
628 .compat_ioctl = openprom_compat_ioctl,
626 .open = openprom_open, 629 .open = openprom_open,
627 .release = openprom_release, 630 .release = openprom_release,
628}; 631};
diff --git a/drivers/sbus/char/rtc.c b/drivers/sbus/char/rtc.c
index 9b988baf0b51..5774bdd0e26f 100644
--- a/drivers/sbus/char/rtc.c
+++ b/drivers/sbus/char/rtc.c
@@ -210,6 +210,27 @@ static int rtc_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
210 } 210 }
211} 211}
212 212
213static long rtc_compat_ioctl(struct file *file, unsigned int cmd,
214 unsigned long arg)
215{
216 int rval = -ENOIOCTLCMD;
217
218 switch (cmd) {
219 /*
220 * These two are specific to this driver, the generic rtc ioctls
221 * are hanlded elsewhere.
222 */
223 case RTCGET:
224 case RTCSET:
225 lock_kernel();
226 rval = rtc_ioctl(file->f_dentry->d_inode, file, cmd, arg);
227 unlock_kernel();
228 break;
229 }
230
231 return rval;
232}
233
213static int rtc_open(struct inode *inode, struct file *file) 234static int rtc_open(struct inode *inode, struct file *file)
214{ 235{
215 int ret; 236 int ret;
@@ -237,6 +258,7 @@ static struct file_operations rtc_fops = {
237 .owner = THIS_MODULE, 258 .owner = THIS_MODULE,
238 .llseek = no_llseek, 259 .llseek = no_llseek,
239 .ioctl = rtc_ioctl, 260 .ioctl = rtc_ioctl,
261 .compat_ioctl = rtc_compat_ioctl,
240 .open = rtc_open, 262 .open = rtc_open,
241 .release = rtc_release, 263 .release = rtc_release,
242}; 264};