From ee1cf8a58273d53ef56c578810f2a94b1aeb55a4 Mon Sep 17 00:00:00 2001 From: Jiri Slaby Date: Thu, 29 Oct 2020 12:32:12 +0100 Subject: vt: keyboard, union perm checks in vt_do_kdsk_ioctl Do the permission check on a single place. That is where perm is really checked. Signed-off-by: Jiri Slaby Link: https://lore.kernel.org/r/20201029113222.32640-7-jslaby@suse.cz Signed-off-by: Greg Kroah-Hartman --- drivers/tty/vt/keyboard.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'drivers/tty/vt/keyboard.c') diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c index c1709b8dbb52..823df9bb52b1 100644 --- a/drivers/tty/vt/keyboard.c +++ b/drivers/tty/vt/keyboard.c @@ -2004,16 +2004,13 @@ int vt_do_kdsk_ioctl(int cmd, struct kbentry __user *user_kbe, int perm, if (copy_from_user(&kbe, user_kbe, sizeof(struct kbentry))) return -EFAULT; - if (!capable(CAP_SYS_TTY_CONFIG)) - perm = 0; - switch (cmd) { case KDGKBENT: return put_user(vt_kdgkbent(kb->kbdmode, kbe.kb_index, kbe.kb_table), &user_kbe->kb_value); case KDSKBENT: - if (!perm) + if (!perm || !capable(CAP_SYS_TTY_CONFIG)) return -EPERM; return vt_kdskbent(kb->kbdmode, kbe.kb_index, kbe.kb_table, kbe.kb_value); -- cgit v1.2.3