[SERIAL] Ensure 8250_pci quirks are not marked __devinit
[safe/jmp/linux-2.6] / drivers / char / vt_ioctl.c
index 5d386f4..24011e7 100644 (file)
@@ -24,6 +24,8 @@
 #include <linux/major.h>
 #include <linux/fs.h>
 #include <linux/console.h>
+#include <linux/signal.h>
+#include <linux/timex.h>
 
 #include <asm/io.h>
 #include <asm/uaccess.h>
@@ -78,6 +80,9 @@ do_kdsk_ioctl(int cmd, struct kbentry __user *user_kbe, int perm, struct kbd_str
        if (copy_from_user(&tmp, user_kbe, sizeof(struct kbentry)))
                return -EFAULT;
 
+       if (!capable(CAP_SYS_TTY_CONFIG))
+               perm = 0;
+
        switch (cmd) {
        case KDGKBENT:
                key_map = key_maps[s];
@@ -190,6 +195,9 @@ do_kdgkb_ioctl(int cmd, struct kbsentry __user *user_kdgkb, int perm)
        int i, j, k;
        int ret;
 
+       if (!capable(CAP_SYS_TTY_CONFIG))
+               perm = 0;
+
        kbs = kmalloc(sizeof(*kbs), GFP_KERNEL);
        if (!kbs) {
                ret = -ENOMEM;
@@ -385,7 +393,7 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
                if (!perm)
                        return -EPERM;
                if (arg)
-                       arg = 1193182 / arg;
+                       arg = CLOCK_TICK_RATE / arg;
                kd_mksound(arg, 0);
                return 0;
 
@@ -402,7 +410,7 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
                ticks = HZ * ((arg >> 16) & 0xffff) / 1000;
                count = ticks ? (arg & 0xffff) : 0;
                if (count)
-                       count = 1193182 / count;
+                       count = CLOCK_TICK_RATE / count;
                kd_mksound(count, ticks);
                return 0;
        }
@@ -641,7 +649,7 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
                extern int spawnpid, spawnsig;
                if (!perm || !capable(CAP_KILL))
                  return -EPERM;
-               if (arg < 1 || arg > _NSIG || arg == SIGKILL)
+               if (!valid_signal(arg) || arg < 1 || arg == SIGKILL)
                  return -EINVAL;
                spawnpid = current->pid;
                spawnsig = arg;