diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-11-09 01:37:34 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-11-09 01:37:34 -0500 |
commit | 8006fdd6dc387abaa4b683bda4868c879fd76070 (patch) | |
tree | 314b08f4923dd9ab24930e6b2ac75889c244b154 /drivers/sbus/char/openprom.c | |
parent | 18ce920a6eba05c0d55cdc95fbbadf7e4c4b457b (diff) | |
parent | 7c3983357fdaef3ae71a0d7081a4b6dcfd869d39 (diff) |
Merge branch 'upstream'
Diffstat (limited to 'drivers/sbus/char/openprom.c')
-rw-r--r-- | drivers/sbus/char/openprom.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/drivers/sbus/char/openprom.c b/drivers/sbus/char/openprom.c index 58ed33749571..383a95f34a0d 100644 --- a/drivers/sbus/char/openprom.c +++ b/drivers/sbus/char/openprom.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #include <linux/slab.h> | 39 | #include <linux/slab.h> |
40 | #include <linux/string.h> | 40 | #include <linux/string.h> |
41 | #include <linux/miscdevice.h> | 41 | #include <linux/miscdevice.h> |
42 | #include <linux/smp_lock.h> | ||
42 | #include <linux/init.h> | 43 | #include <linux/init.h> |
43 | #include <linux/fs.h> | 44 | #include <linux/fs.h> |
44 | #include <asm/oplib.h> | 45 | #include <asm/oplib.h> |
@@ -565,6 +566,40 @@ static int openprom_ioctl(struct inode * inode, struct file * file, | |||
565 | } | 566 | } |
566 | } | 567 | } |
567 | 568 | ||
569 | static long openprom_compat_ioctl(struct file *file, unsigned int cmd, | ||
570 | unsigned long arg) | ||
571 | { | ||
572 | long rval = -ENOTTY; | ||
573 | |||
574 | /* | ||
575 | * SunOS/Solaris only, the NetBSD one's have embedded pointers in | ||
576 | * the arg which we'd need to clean up... | ||
577 | */ | ||
578 | switch (cmd) { | ||
579 | case OPROMGETOPT: | ||
580 | case OPROMSETOPT: | ||
581 | case OPROMNXTOPT: | ||
582 | case OPROMSETOPT2: | ||
583 | case OPROMNEXT: | ||
584 | case OPROMCHILD: | ||
585 | case OPROMGETPROP: | ||
586 | case OPROMNXTPROP: | ||
587 | case OPROMU2P: | ||
588 | case OPROMGETCONS: | ||
589 | case OPROMGETFBNAME: | ||
590 | case OPROMGETBOOTARGS: | ||
591 | case OPROMSETCUR: | ||
592 | case OPROMPCI2NODE: | ||
593 | case OPROMPATH2NODE: | ||
594 | lock_kernel(); | ||
595 | rval = openprom_ioctl(file->f_dentry->d_inode, file, cmd, arg); | ||
596 | lock_kernel(); | ||
597 | break; | ||
598 | } | ||
599 | |||
600 | return rval; | ||
601 | } | ||
602 | |||
568 | static int openprom_open(struct inode * inode, struct file * file) | 603 | static int openprom_open(struct inode * inode, struct file * file) |
569 | { | 604 | { |
570 | DATA *data; | 605 | DATA *data; |
@@ -590,6 +625,7 @@ static struct file_operations openprom_fops = { | |||
590 | .owner = THIS_MODULE, | 625 | .owner = THIS_MODULE, |
591 | .llseek = no_llseek, | 626 | .llseek = no_llseek, |
592 | .ioctl = openprom_ioctl, | 627 | .ioctl = openprom_ioctl, |
628 | .compat_ioctl = openprom_compat_ioctl, | ||
593 | .open = openprom_open, | 629 | .open = openprom_open, |
594 | .release = openprom_release, | 630 | .release = openprom_release, |
595 | }; | 631 | }; |