git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
drivers
/
char
/
vt_ioctl.c
diff --git
a/drivers/char/vt_ioctl.c
b/drivers/char/vt_ioctl.c
index
8971484
..
24011e7
100644
(file)
--- a/
drivers/char/vt_ioctl.c
+++ b/
drivers/char/vt_ioctl.c
@@
-25,6
+25,7
@@
#include <linux/fs.h>
#include <linux/console.h>
#include <linux/signal.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>
#include <asm/io.h>
#include <asm/uaccess.h>
@@
-79,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 (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];
switch (cmd) {
case KDGKBENT:
key_map = key_maps[s];
@@
-191,6
+195,9
@@
do_kdgkb_ioctl(int cmd, struct kbsentry __user *user_kdgkb, int perm)
int i, j, k;
int ret;
int i, j, k;
int ret;
+ if (!capable(CAP_SYS_TTY_CONFIG))
+ perm = 0;
+
kbs = kmalloc(sizeof(*kbs), GFP_KERNEL);
if (!kbs) {
ret = -ENOMEM;
kbs = kmalloc(sizeof(*kbs), GFP_KERNEL);
if (!kbs) {
ret = -ENOMEM;
@@
-386,7
+393,7
@@
int vt_ioctl(struct tty_struct *tty, struct file * file,
if (!perm)
return -EPERM;
if (arg)
if (!perm)
return -EPERM;
if (arg)
- arg =
1193182
/ arg;
+ arg =
CLOCK_TICK_RATE
/ arg;
kd_mksound(arg, 0);
return 0;
kd_mksound(arg, 0);
return 0;
@@
-403,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)
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;
}
kd_mksound(count, ticks);
return 0;
}