tree:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: fc4f28bb3daf3265d6bc5f73b497306985bb23ab
commit: e5fc436f06eef54ef512ea55a9db8eb9f2e76959 sparse: use static inline for
__chk_{user,io}_ptr()
date: 2 weeks ago
config: sh-randconfig-s031-20200913 (attached as .config)
compiler: sh4-linux-gcc (GCC) 9.3.0
reproduce:
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.2-191-g10164920-dirty
git checkout e5fc436f06eef54ef512ea55a9db8eb9f2e76959
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=sh
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
drivers/tty/vt/vt_ioctl.c:1004:21: sparse: sparse: incorrect type in initializer
(different address spaces) @@ expected unsigned short const *__gu_addr @@ got
unsigned short [noderef] __user * @@
drivers/tty/vt/vt_ioctl.c:1004:21: sparse: expected unsigned short const
*__gu_addr
drivers/tty/vt/vt_ioctl.c:1004:21: sparse: got unsigned short [noderef] __user *
> drivers/tty/vt/vt_ioctl.c:1004:21: sparse: sparse: incorrect type
in argument 1 (different address spaces) @@ expected void const volatile [noderef]
__user *ptr @@ got unsigned short const *__gu_addr @@
> drivers/tty/vt/vt_ioctl.c:1004:21: sparse: expected void const volatile [noderef]
__user *ptr
drivers/tty/vt/vt_ioctl.c:1004:21: sparse: got unsigned short
const *__gu_addr
drivers/tty/vt/vt_ioctl.c:1005:21: sparse: sparse: incorrect type in initializer
(different address spaces) @@ expected unsigned short const *__gu_addr @@ got
unsigned short [noderef] __user * @@
drivers/tty/vt/vt_ioctl.c:1005:21: sparse: expected unsigned short const
*__gu_addr
drivers/tty/vt/vt_ioctl.c:1005:21: sparse: got unsigned short [noderef] __user *
drivers/tty/vt/vt_ioctl.c:1005:21: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected void const volatile [noderef] __user *ptr @@
got unsigned short const *__gu_addr @@
drivers/tty/vt/vt_ioctl.c:1005:21: sparse: expected void const volatile [noderef]
__user *ptr
drivers/tty/vt/vt_ioctl.c:1005:21: sparse: got unsigned short const *__gu_addr
--
drivers/tty/vt/vt.c:4301:13: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected char const *__gu_addr @@ got char [noderef] __user *
@@
drivers/tty/vt/vt.c:4301:13: sparse: expected char const *__gu_addr
drivers/tty/vt/vt.c:4301:13: sparse: got char [noderef] __user *
> drivers/tty/vt/vt.c:4301:13: sparse: sparse: incorrect type in
argument 1 (different address spaces) @@ expected void const volatile [noderef] __user
*ptr @@ got char const *__gu_addr @@
> drivers/tty/vt/vt.c:4301:13: sparse: expected void const volatile [noderef]
__user *ptr
drivers/tty/vt/vt.c:4301:13: sparse: got char const *__gu_addr
drivers/tty/vt/vt.c:225:5: sparse: sparse: symbol 'console_blank_hook' was not
declared. Should it be static?
drivers/tty/vt/vt.c:2991:19: sparse: sparse: symbol 'console_driver' was not
declared. Should it be static?
drivers/tty/vt/vt.c:3147:13: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected char const *__gu_addr @@ got char [noderef] __user *p
@@
drivers/tty/vt/vt.c:3147:13: sparse: expected char const *__gu_addr
drivers/tty/vt/vt.c:3147:13: sparse: got char [noderef] __user *p
drivers/tty/vt/vt.c:3147:13: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got char
const *__gu_addr @@
drivers/tty/vt/vt.c:3147:13: sparse: expected void const volatile [noderef] __user
*ptr
drivers/tty/vt/vt.c:3147:13: sparse: got char const *__gu_addr
drivers/tty/vt/vt.c:3200:37: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected char const *__gu_addr @@ got char [noderef] __user *
@@
drivers/tty/vt/vt.c:3200:37: sparse: expected char const *__gu_addr
drivers/tty/vt/vt.c:3200:37: sparse: got char [noderef] __user *
drivers/tty/vt/vt.c:3200:37: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got char
const *__gu_addr @@
drivers/tty/vt/vt.c:3200:37: sparse: expected void const volatile [noderef] __user
*ptr
drivers/tty/vt/vt.c:3200:37: sparse: got char const *__gu_addr
drivers/tty/vt/vt.c:3213:29: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected signed int const *__gu_addr @@ got signed int
[noderef] [usertype] __user * @@
drivers/tty/vt/vt.c:3213:29: sparse: expected signed int const *__gu_addr
drivers/tty/vt/vt.c:3213:29: sparse: got signed int [noderef] [usertype] __user *
> drivers/tty/vt/vt.c:3213:29: sparse: sparse: incorrect type in
argument 1 (different address spaces) @@ expected void const volatile [noderef] __user
*ptr @@ got signed int const *__gu_addr @@
drivers/tty/vt/vt.c:3213:29:
sparse: expected void const volatile [noderef] __user *ptr
drivers/tty/vt/vt.c:3213:29: sparse: got signed int const *__gu_addr
drivers/tty/vt/vt.c:3032:13: sparse: sparse: context imbalance in
'vt_console_print' - wrong count at exit
--
drivers/tty/vt/keyboard.c:1730:21: sparse: sparse: incorrect type in initializer
(different address spaces) @@ expected unsigned int const *__gu_addr @@ got
unsigned int [noderef] __user * @@
drivers/tty/vt/keyboard.c:1730:21: sparse: expected unsigned int const *__gu_addr
drivers/tty/vt/keyboard.c:1730:21: sparse: got unsigned int [noderef] __user *
> drivers/tty/vt/keyboard.c:1730:21: sparse: sparse: incorrect type
in argument 1 (different address spaces) @@ expected void const volatile [noderef]
__user *ptr @@ got unsigned int const *__gu_addr @@
> drivers/tty/vt/keyboard.c:1730:21: sparse: expected void const volatile [noderef]
__user *ptr
drivers/tty/vt/keyboard.c:1730:21: sparse: got unsigned int const
*__gu_addr
drivers/tty/vt/keyboard.c:1768:21: sparse: sparse: incorrect type in initializer
(different address spaces) @@ expected unsigned int const *__gu_addr @@ got
unsigned int [noderef] __user * @@
drivers/tty/vt/keyboard.c:1768:21: sparse: expected unsigned int const *__gu_addr
drivers/tty/vt/keyboard.c:1768:21: sparse: got unsigned int [noderef] __user *
drivers/tty/vt/keyboard.c:1768:21: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected void const volatile [noderef] __user *ptr @@
got unsigned int const *__gu_addr @@
drivers/tty/vt/keyboard.c:1768:21: sparse: expected void const volatile [noderef]
__user *ptr
drivers/tty/vt/keyboard.c:1768:21: sparse: got unsigned int const *__gu_addr
#
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit...
git remote add linus
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout e5fc436f06eef54ef512ea55a9db8eb9f2e76959
vim +1004 drivers/tty/vt/vt_ioctl.c
5422337d569ead drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 821
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 822 /*
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 823 * We handle
the console-specific ioctl's here. We allow the
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 824 *
capability to modify any console, not just the fg_console.
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 825 */
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 826 int
vt_ioctl(struct tty_struct *tty,
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 827
unsigned int cmd, unsigned long arg)
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 828 {
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 829 struct
vc_data *vc = tty->driver_data;
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 830 void __user
*up = (void __user *)arg;
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 831 int i,
perm;
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 832 int ret;
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 833
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 834 /*
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 835 * To have
permissions to do most of the vt ioctls, we either have
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 836 * to be
the owner of the tty, or have CAP_SYS_TTY_CONFIG.
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 837 */
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 838 perm = 0;
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 839 if
(current->signal->tty == tty || capable(CAP_SYS_TTY_CONFIG))
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 840 perm = 1;
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 841
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 842 ret =
vt_k_ioctl(tty, cmd, arg, perm);
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 843 if (ret !=
-ENOIOCTLCMD)
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 844 return
ret;
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 845
bfbbdfa4de133e drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 846 ret =
vt_io_ioctl(vc, cmd, up, perm);
bfbbdfa4de133e drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 847 if (ret !=
-ENOIOCTLCMD)
bfbbdfa4de133e drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 848 return
ret;
bfbbdfa4de133e drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 849
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 850 switch
(cmd) {
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 851 case
TIOCLINUX:
832a62ab6b7d32 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 852 return
tioclinux(tty, arg);
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 853 case
VT_SETMODE:
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 854 {
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 855 struct
vt_mode tmp;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 856
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 857 if
(!perm)
4001d7b7fc2710 drivers/tty/vt/vt_ioctl.c Alan Cox 2012-03-02 858 return
-EPERM;
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 859 if
(copy_from_user(&tmp, up, sizeof(struct vt_mode)))
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 860 return
-EFAULT;
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 861 if
(tmp.mode != VT_AUTO && tmp.mode != VT_PROCESS)
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 862 return
-EINVAL;
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 863
ac751efa6a0d70 drivers/tty/vt/vt_ioctl.c Torben Hohn 2011-01-25 864
console_lock();
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 865
vc->vt_mode = tmp;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 866 /* the
frsig is ignored, so we set it to 0 */
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 867
vc->vt_mode.frsig = 0;
8b6312f4dcc1ef drivers/char/vt_ioctl.c Eric W. Biederman 2007-02-10 868
put_pid(vc->vt_pid);
8b6312f4dcc1ef drivers/char/vt_ioctl.c Eric W. Biederman 2007-02-10 869
vc->vt_pid = get_pid(task_pid(current));
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 870 /* no
switch is required -- saw(a)shade.msu.ru */
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 871
vc->vt_newvt = -1;
ac751efa6a0d70 drivers/tty/vt/vt_ioctl.c Torben Hohn 2011-01-25 872
console_unlock();
9cc3c22bf017f3 drivers/char/vt_ioctl.c Alan Cox 2008-04-30 873 break;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 874 }
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 875
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 876 case
VT_GETMODE:
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 877 {
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 878 struct
vt_mode tmp;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 879 int rc;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 880
ac751efa6a0d70 drivers/tty/vt/vt_ioctl.c Torben Hohn 2011-01-25 881
console_lock();
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 882
memcpy(&tmp, &vc->vt_mode, sizeof(struct vt_mode));
ac751efa6a0d70 drivers/tty/vt/vt_ioctl.c Torben Hohn 2011-01-25 883
console_unlock();
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 884
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 885 rc =
copy_to_user(up, &tmp, sizeof(struct vt_mode));
9cc3c22bf017f3 drivers/char/vt_ioctl.c Alan Cox 2008-04-30 886 if (rc)
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 887 return
-EFAULT;
9cc3c22bf017f3 drivers/char/vt_ioctl.c Alan Cox 2008-04-30 888 break;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 889 }
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 890
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 891 /*
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 892 * Returns
global vt state. Note that VT 0 is always open, since
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 893 * it's
an alias for the current VT, and people can't use it here.
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 894 * We
cannot return state for more than 16 VTs, since v_state is short.
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 895 */
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 896 case
VT_GETSTATE:
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 897 {
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 898 struct
vt_stat __user *vtstat = up;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 899 unsigned
short state, mask;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 900
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 901 if
(put_user(fg_console + 1, &vtstat->v_active))
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 902 return
-EFAULT;
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 903
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 904 state =
1; /* /dev/tty0 is always open */
7cf64b18b0b96e drivers/tty/vt/vt_ioctl.c Eric Biggers 2020-03-21 905
console_lock(); /* required by vt_in_use() */
9cc3c22bf017f3 drivers/char/vt_ioctl.c Alan Cox 2008-04-30 906 for (i =
0, mask = 2; i < MAX_NR_CONSOLES && mask;
9cc3c22bf017f3 drivers/char/vt_ioctl.c Alan Cox 2008-04-30 907 ++i,
mask <<= 1)
e587e8f17433dd drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-02-19 908 if
(vt_in_use(i))
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 909 state |=
mask;
7cf64b18b0b96e drivers/tty/vt/vt_ioctl.c Eric Biggers 2020-03-21 910
console_unlock();
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 911 return
put_user(state, &vtstat->v_state);
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 912 }
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 913
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 914 /*
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 915 * Returns
the first available (non-opened) console.
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 916 */
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 917 case
VT_OPENQRY:
7cf64b18b0b96e drivers/tty/vt/vt_ioctl.c Eric Biggers 2020-03-21 918
console_lock(); /* required by vt_in_use() */
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 919 for (i =
0; i < MAX_NR_CONSOLES; ++i)
e587e8f17433dd drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-02-19 920 if
(!vt_in_use(i))
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 921 break;
7cf64b18b0b96e drivers/tty/vt/vt_ioctl.c Eric Biggers 2020-03-21 922
console_unlock();
eca734d8f0043e drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 923 i = i <
MAX_NR_CONSOLES ? (i+1) : -1;
eca734d8f0043e drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 924 return
put_user(i, (int __user *)arg);
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 925
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 926 /*
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 927 *
ioctl(fd, VT_ACTIVATE, num) will cause us to switch to vt # num,
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 928 * with num
>= 1 (switches to vt 0, our console, are not allowed, just
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 929 * to
preserve sanity).
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 930 */
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 931 case
VT_ACTIVATE:
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 932 if
(!perm)
4001d7b7fc2710 drivers/tty/vt/vt_ioctl.c Alan Cox 2012-03-02 933 return
-EPERM;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 934 if (arg ==
0 || arg > MAX_NR_CONSOLES)
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 935 return
-ENXIO;
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 936
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 937 arg--;
ac751efa6a0d70 drivers/tty/vt/vt_ioctl.c Torben Hohn 2011-01-25 938
console_lock();
9cc3c22bf017f3 drivers/char/vt_ioctl.c Alan Cox 2008-04-30 939 ret =
vc_allocate(arg);
ac751efa6a0d70 drivers/tty/vt/vt_ioctl.c Torben Hohn 2011-01-25 940
console_unlock();
9cc3c22bf017f3 drivers/char/vt_ioctl.c Alan Cox 2008-04-30 941 if (ret)
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 942 return
ret;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 943
set_console(arg);
9cc3c22bf017f3 drivers/char/vt_ioctl.c Alan Cox 2008-04-30 944 break;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 945
d3b5cffcf84a8b drivers/char/vt_ioctl.c Alan Cox 2009-09-19 946 case
VT_SETACTIVATE:
d3b5cffcf84a8b drivers/char/vt_ioctl.c Alan Cox 2009-09-19 947 if
(!perm)
4001d7b7fc2710 drivers/tty/vt/vt_ioctl.c Alan Cox 2012-03-02 948 return
-EPERM;
d3b5cffcf84a8b drivers/char/vt_ioctl.c Alan Cox 2009-09-19 949
ebf1efbb1a7f79 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 950 return
vt_setactivate(up);
d3b5cffcf84a8b drivers/char/vt_ioctl.c Alan Cox 2009-09-19 951
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 952 /*
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 953 * wait
until the specified VT has been activated
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 954 */
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 955 case
VT_WAITACTIVE:
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 956 if
(!perm)
4001d7b7fc2710 drivers/tty/vt/vt_ioctl.c Alan Cox 2012-03-02 957 return
-EPERM;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 958 if (arg ==
0 || arg > MAX_NR_CONSOLES)
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 959 return
-ENXIO;
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 960 return
vt_waitactive(arg);
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 961
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 962 /*
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 963 * If a vt
is under process control, the kernel will not switch to it
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 964 *
immediately, but postpone the operation until the process calls this
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 965 * ioctl,
allowing the switch to complete.
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 966 *
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 967 *
According to the X sources this is the behavior:
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 968
* 0: pending switch-from not OK
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 969
* 1: pending switch-from OK
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 970
* 2: completed switch-to OK
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 971 */
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 972 case
VT_RELDISP:
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 973 if
(!perm)
4001d7b7fc2710 drivers/tty/vt/vt_ioctl.c Alan Cox 2012-03-02 974 return
-EPERM;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 975
4001d7b7fc2710 drivers/tty/vt/vt_ioctl.c Alan Cox 2012-03-02 976
console_lock();
535082d9078d0b drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 977 ret =
vt_reldisp(vc, arg);
4001d7b7fc2710 drivers/tty/vt/vt_ioctl.c Alan Cox 2012-03-02 978
console_unlock();
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 979
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 980 return
ret;
535082d9078d0b drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 981
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 982
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 983 /*
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 984 *
Disallocate memory associated to VT (but leave VT1)
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 985 */
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 986 case
VT_DISALLOCATE:
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 987 if (arg
> MAX_NR_CONSOLES)
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 988 return
-ENXIO;
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 989
421b40a6286ee3 drivers/tty/vt/vt_ioctl.c Peter Hurley 2013-05-17 990 if (arg ==
0)
421b40a6286ee3 drivers/tty/vt/vt_ioctl.c Peter Hurley 2013-05-17 991
vt_disallocate_all();
421b40a6286ee3 drivers/tty/vt/vt_ioctl.c Peter Hurley 2013-05-17 992 else
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 993 return
vt_disallocate(--arg);
9cc3c22bf017f3 drivers/char/vt_ioctl.c Alan Cox 2008-04-30 994 break;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 995
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 996 case
VT_RESIZE:
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 997 {
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 998 struct
vt_sizes __user *vtsizes = up;
e400b6ec4ede4d drivers/char/vt_ioctl.c Antonino A. Daplas 2007-10-16 999 struct
vc_data *vc;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1000 ushort
ll,cc;
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 1001
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1002 if
(!perm)
4001d7b7fc2710 drivers/tty/vt/vt_ioctl.c Alan Cox 2012-03-02 1003 return
-EPERM;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 @1004 if
(get_user(ll, &vtsizes->v_rows) ||
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1005
get_user(cc, &vtsizes->v_cols))
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 1006 return
-EFAULT;
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 1007
ac751efa6a0d70 drivers/tty/vt/vt_ioctl.c Torben Hohn 2011-01-25 1008
console_lock();
e400b6ec4ede4d drivers/char/vt_ioctl.c Antonino A. Daplas 2007-10-16 1009 for (i =
0; i < MAX_NR_CONSOLES; i++) {
e400b6ec4ede4d drivers/char/vt_ioctl.c Antonino A. Daplas 2007-10-16 1010 vc =
vc_cons[i].d;
e400b6ec4ede4d drivers/char/vt_ioctl.c Antonino A. Daplas 2007-10-16 1011
e400b6ec4ede4d drivers/char/vt_ioctl.c Antonino A. Daplas 2007-10-16 1012 if (vc)
{
e400b6ec4ede4d drivers/char/vt_ioctl.c Antonino A. Daplas 2007-10-16 1013
vc->vc_resize_user = 1;
4001d7b7fc2710 drivers/tty/vt/vt_ioctl.c Alan Cox 2012-03-02 1014 /*
FIXME: review v tty lock */
8c9a9dd0fa3a26 drivers/char/vt_ioctl.c Alan Cox 2008-08-15 1015
vc_resize(vc_cons[i].d, cc, ll);
e400b6ec4ede4d drivers/char/vt_ioctl.c Antonino A. Daplas 2007-10-16 1016 }
e400b6ec4ede4d drivers/char/vt_ioctl.c Antonino A. Daplas 2007-10-16 1017 }
ac751efa6a0d70 drivers/tty/vt/vt_ioctl.c Torben Hohn 2011-01-25 1018
console_unlock();
9cc3c22bf017f3 drivers/char/vt_ioctl.c Alan Cox 2008-04-30 1019 break;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1020 }
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1021
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1022 case
VT_RESIZEX:
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1023 if
(!perm)
4001d7b7fc2710 drivers/tty/vt/vt_ioctl.c Alan Cox 2012-03-02 1024 return
-EPERM;
6cd1ed50efd882 drivers/tty/vt/vt_ioctl.c Eric Dumazet 2020-02-10 1025
5422337d569ead drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 1026 return
vt_resizex(vc, up);
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1027
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1028 case
VT_LOCKSWITCH:
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1029 if
(!capable(CAP_SYS_TTY_CONFIG))
4001d7b7fc2710 drivers/tty/vt/vt_ioctl.c Alan Cox 2012-03-02 1030 return
-EPERM;
f400991bf872de drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-02-19 1031
vt_dont_switch = true;
9cc3c22bf017f3 drivers/char/vt_ioctl.c Alan Cox 2008-04-30 1032 break;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1033 case
VT_UNLOCKSWITCH:
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1034 if
(!capable(CAP_SYS_TTY_CONFIG))
4001d7b7fc2710 drivers/tty/vt/vt_ioctl.c Alan Cox 2012-03-02 1035 return
-EPERM;
f400991bf872de drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-02-19 1036
vt_dont_switch = false;
9cc3c22bf017f3 drivers/char/vt_ioctl.c Alan Cox 2008-04-30 1037 break;
533475d3d48eb8 drivers/char/vt_ioctl.c Samuel Thibault 2006-08-27 1038 case
VT_GETHIFONTMASK:
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 1039 return
put_user(vc->vc_hi_font_mask,
9cc3c22bf017f3 drivers/char/vt_ioctl.c Alan Cox 2008-04-30 1040
(unsigned short __user *)arg);
8b92e87d39bfd0 drivers/char/vt_ioctl.c Alan Cox 2009-09-19 1041 case
VT_WAITEVENT:
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 1042 return
vt_event_wait_ioctl((struct vt_event __user *)arg);
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1043 default:
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 1044 return
-ENOIOCTLCMD;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1045 }
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 1046
0ce8179e248023 drivers/tty/vt/vt_ioctl.c Jiri Slaby 2020-06-15 1047 return 0;
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1048 }
^1da177e4c3f41 drivers/char/vt_ioctl.c Linus Torvalds 2005-04-16 1049
:::::: The code at line 1004 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds(a)ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds(a)ppc970.osdl.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org