diff options
| -rw-r--r-- | arch/sparc64/kernel/ioctl32.c | 3 | ||||
| -rw-r--r-- | drivers/sbus/char/cpwatchdog.c | 24 |
2 files changed, 24 insertions, 3 deletions
diff --git a/arch/sparc64/kernel/ioctl32.c b/arch/sparc64/kernel/ioctl32.c index f8e9ffb125c0..398ddbffc6a4 100644 --- a/arch/sparc64/kernel/ioctl32.c +++ b/arch/sparc64/kernel/ioctl32.c | |||
| @@ -496,9 +496,6 @@ COMPATIBLE_IOCTL(DRM_IOCTL_LOCK) | |||
| 496 | COMPATIBLE_IOCTL(DRM_IOCTL_UNLOCK) | 496 | COMPATIBLE_IOCTL(DRM_IOCTL_UNLOCK) |
| 497 | COMPATIBLE_IOCTL(DRM_IOCTL_FINISH) | 497 | COMPATIBLE_IOCTL(DRM_IOCTL_FINISH) |
| 498 | #endif /* DRM */ | 498 | #endif /* DRM */ |
| 499 | COMPATIBLE_IOCTL(WIOCSTART) | ||
| 500 | COMPATIBLE_IOCTL(WIOCSTOP) | ||
| 501 | COMPATIBLE_IOCTL(WIOCGSTAT) | ||
| 502 | /* And these ioctls need translation */ | 499 | /* And these ioctls need translation */ |
| 503 | /* Note SIOCRTMSG is no longer, so this is safe and * the user would have seen just an -EINVAL anyways. */ | 500 | /* Note SIOCRTMSG is no longer, so this is safe and * the user would have seen just an -EINVAL anyways. */ |
| 504 | HANDLE_IOCTL(FBIOPUTCMAP32, fbiogetputcmap) | 501 | HANDLE_IOCTL(FBIOPUTCMAP32, fbiogetputcmap) |
diff --git a/drivers/sbus/char/cpwatchdog.c b/drivers/sbus/char/cpwatchdog.c index c82abeb59d3a..071ae24be892 100644 --- a/drivers/sbus/char/cpwatchdog.c +++ b/drivers/sbus/char/cpwatchdog.c | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | #include <linux/interrupt.h> | 26 | #include <linux/interrupt.h> |
| 27 | #include <linux/ioport.h> | 27 | #include <linux/ioport.h> |
| 28 | #include <linux/timer.h> | 28 | #include <linux/timer.h> |
| 29 | #include <linux/smp_lock.h> | ||
| 29 | #include <asm/irq.h> | 30 | #include <asm/irq.h> |
| 30 | #include <asm/ebus.h> | 31 | #include <asm/ebus.h> |
| 31 | #include <asm/oplib.h> | 32 | #include <asm/oplib.h> |
| @@ -394,6 +395,28 @@ static int wd_ioctl(struct inode *inode, struct file *file, | |||
| 394 | return(0); | 395 | return(0); |
| 395 | } | 396 | } |
| 396 | 397 | ||
| 398 | static long wd_compat_ioctl(struct file *file, unsigned int cmd, | ||
| 399 | unsigned long arg) | ||
| 400 | { | ||
| 401 | int rval = -ENOIOCTLCMD; | ||
| 402 | |||
| 403 | switch (cmd) { | ||
| 404 | /* solaris ioctls are specific to this driver */ | ||
| 405 | case WIOCSTART: | ||
| 406 | case WIOCSTOP: | ||
| 407 | case WIOCGSTAT: | ||
| 408 | lock_kernel(); | ||
| 409 | rval = wd_ioctl(file->f_dentry->d_inode, file, cmd, arg); | ||
| 410 | lock_kernel(); | ||
| 411 | break; | ||
| 412 | /* everything else is handled by the generic compat layer */ | ||
| 413 | default: | ||
| 414 | break; | ||
| 415 | } | ||
| 416 | |||
| 417 | return rval; | ||
| 418 | } | ||
| 419 | |||
| 397 | static ssize_t wd_write(struct file *file, | 420 | static ssize_t wd_write(struct file *file, |
| 398 | const char __user *buf, | 421 | const char __user *buf, |
| 399 | size_t count, | 422 | size_t count, |
| @@ -441,6 +464,7 @@ static irqreturn_t wd_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
| 441 | static struct file_operations wd_fops = { | 464 | static struct file_operations wd_fops = { |
| 442 | .owner = THIS_MODULE, | 465 | .owner = THIS_MODULE, |
| 443 | .ioctl = wd_ioctl, | 466 | .ioctl = wd_ioctl, |
| 467 | .compat_ioctl = wd_compat_ioctl, | ||
| 444 | .open = wd_open, | 468 | .open = wd_open, |
| 445 | .write = wd_write, | 469 | .write = wd_write, |
| 446 | .read = wd_read, | 470 | .read = wd_read, |
