Hi Alexander,
I love your patch! Perhaps something to improve:
[auto build test WARNING on tip/x86/mm]
[also build test WARNING on linus/master v5.16-rc5]
[cannot apply to tip/x86/core hnaz-mm/master next-20211213]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url:
https://github.com/0day-ci/linux/commits/Alexander-Potapenko/Add-KernelMe...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
35fa745286ac44ee26ed100c2bd2553368ad193b
config: i386-randconfig-s002-20211214
(
https://download.01.org/0day-ci/archive/20211215/202112150931.TDelnQbm-lk...)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-dirty
#
https://github.com/0day-ci/linux/commit/3209eff1f0c7f4de1f9685c4692c7ad79...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Alexander-Potapenko/Add-KernelMemorySanitizer-infrastructure/20211215-003033
git checkout 3209eff1f0c7f4de1f9685c4692c7ad79e8f225b
# save the config file to linux build tree
mkdir build_dir
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir
ARCH=i386 SHELL=/bin/bash arch/x86/kernel/ kernel/
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 >>)
arch/x86/kernel/signal.c:359:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:359:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:359:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:359:9: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got
unsigned long long [usertype] * @@
arch/x86/kernel/signal.c:359:9: sparse: expected void const volatile [noderef]
__user *ptr
arch/x86/kernel/signal.c:359:9: sparse: got unsigned long long [usertype] *
arch/x86/kernel/signal.c:359:9: sparse: sparse: cast removes address space
'__user' of expression
> arch/x86/kernel/signal.c:359:9: sparse: sparse: incorrect type in
argument 1 (different address spaces) @@ expected void [noderef] __user *to @@ got
unsigned long long [usertype] * @@
arch/x86/kernel/signal.c:359:9: sparse:
expected void [noderef] __user *to
arch/x86/kernel/signal.c:359:9: sparse: got unsigned long long [usertype] *
arch/x86/kernel/signal.c:359:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:359:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:359:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:359:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:359:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:359:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:359:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:359:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:359:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:359:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:419:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:419:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:419:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:419:9: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got
unsigned long long [usertype] * @@
arch/x86/kernel/signal.c:419:9: sparse: expected void const volatile [noderef]
__user *ptr
arch/x86/kernel/signal.c:419:9: sparse: got unsigned long long [usertype] *
arch/x86/kernel/signal.c:419:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:419:9: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected void [noderef] __user *to @@ got unsigned long long
[usertype] * @@
arch/x86/kernel/signal.c:419:9: sparse: expected void [noderef] __user *to
arch/x86/kernel/signal.c:419:9: sparse: got unsigned long long [usertype] *
arch/x86/kernel/signal.c:419:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:419:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:419:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:419:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:419:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:419:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:419:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:419:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:419:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:419:9: sparse: sparse: cast removes address space
'__user' of expression
arch/x86/kernel/signal.c:952:9: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct lockdep_map const *lock @@ got struct
lockdep_map [noderef] __rcu * @@
arch/x86/kernel/signal.c:952:9: sparse: expected struct lockdep_map const *lock
arch/x86/kernel/signal.c:952:9: sparse: got struct lockdep_map [noderef] __rcu *
--
kernel/signal.c: note: in included file (through arch/x86/include/uapi/asm/signal.h,
arch/x86/include/asm/signal.h, include/uapi/linux/signal.h, ...):
include/uapi/asm-generic/signal-defs.h:83:29: sparse: sparse: multiple address spaces
given
kernel/signal.c:195:31: sparse: sparse: incorrect type in argument 1 (different address
spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock
[noderef] __rcu * @@
kernel/signal.c:195:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:195:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:198:33: sparse: sparse: incorrect type in argument 1 (different address
spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock
[noderef] __rcu * @@
kernel/signal.c:198:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:198:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:480:9: sparse: sparse: incorrect type in argument 1 (different address
spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock
[noderef] __rcu * @@
kernel/signal.c:480:9: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:480:9: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:484:34: sparse: sparse: incorrect type in argument 1 (different address
spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock
[noderef] __rcu * @@
kernel/signal.c:484:34: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:484:34: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:517:9: sparse: sparse: incorrect type in argument 1 (different address
spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock
[noderef] __rcu * @@
kernel/signal.c:517:9: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:517:9: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:520:36: sparse: sparse: incorrect type in argument 1 (different address
spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock
[noderef] __rcu * @@
kernel/signal.c:520:36: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:520:36: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:542:53: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected struct k_sigaction *ka @@ got struct k_sigaction
[noderef] __rcu * @@
kernel/signal.c:542:53: sparse: expected struct k_sigaction *ka
kernel/signal.c:542:53: sparse: got struct k_sigaction [noderef] __rcu *
include/uapi/asm-generic/signal-defs.h:83:29: sparse: sparse: multiple address spaces
given
kernel/signal.c:695:33: sparse: sparse: incorrect type in argument 1 (different address
spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock
[noderef] __rcu * @@
kernel/signal.c:695:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:695:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:697:31: sparse: sparse: incorrect type in argument 1 (different address
spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock
[noderef] __rcu * @@
kernel/signal.c:697:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:697:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:1260:29: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got
unsigned char * @@
kernel/signal.c:1260:29: sparse: expected void const volatile [noderef] __user
*ptr
kernel/signal.c:1260:29: sparse: got unsigned char *
> kernel/signal.c:1260:29: sparse: sparse: incorrect type in
argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@
got unsigned char * @@
kernel/signal.c:1260:29: sparse: expected void
const [noderef] __user *from
kernel/signal.c:1260:29: sparse: got unsigned char *
> kernel/signal.c:1260:29: sparse: sparse: incorrect type in
argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@
got unsigned char * @@
kernel/signal.c:1260:29: sparse: expected void
const [noderef] __user *from
kernel/signal.c:1260:29: sparse: got unsigned char *
kernel/signal.c:1327:9: sparse: sparse: incorrect type in argument 1 (different address
spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock
[noderef] __rcu * @@
kernel/signal.c:1327:9: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:1327:9: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:1328:16: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct k_sigaction *action @@ got struct k_sigaction
[noderef] __rcu * @@
kernel/signal.c:1328:16: sparse: expected struct k_sigaction *action
kernel/signal.c:1328:16: sparse: got struct k_sigaction [noderef] __rcu *
kernel/signal.c:1347:34: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:1347:34: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:1347:34: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:1924:36: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:1924:36: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:1924:36: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2034:44: sparse: sparse: cast removes address space '__rcu' of
expression
kernel/signal.c:2053:65: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct
[noderef] __rcu *parent @@
kernel/signal.c:2053:65: sparse: expected struct task_struct *tsk
kernel/signal.c:2053:65: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2054:40: sparse: sparse: cast removes address space '__rcu' of
expression
kernel/signal.c:2072:14: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct sighand_struct *psig @@ got struct
sighand_struct [noderef] __rcu *[noderef] __rcu sighand @@
kernel/signal.c:2072:14: sparse: expected struct sighand_struct *psig
kernel/signal.c:2072:14: sparse: got struct sighand_struct [noderef] __rcu
*[noderef] __rcu sighand
kernel/signal.c:2101:46: sparse: sparse: incorrect type in argument 3 (different
address spaces) @@ expected struct task_struct *t @@ got struct task_struct
[noderef] __rcu *parent @@
kernel/signal.c:2101:46: sparse: expected struct task_struct *t
kernel/signal.c:2101:46: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2102:34: sparse: sparse: incorrect type in argument 2 (different
address spaces) @@ expected struct task_struct *parent @@ got struct task_struct
[noderef] __rcu *parent @@
kernel/signal.c:2102:34: sparse: expected struct task_struct *parent
kernel/signal.c:2102:34: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2131:24: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct task_struct *parent @@ got struct task_struct
[noderef] __rcu *parent @@
kernel/signal.c:2131:24: sparse: expected struct task_struct *parent
kernel/signal.c:2131:24: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2134:24: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct task_struct *parent @@ got struct task_struct
[noderef] __rcu *real_parent @@
kernel/signal.c:2134:24: sparse: expected struct task_struct *parent
kernel/signal.c:2134:24: sparse: got struct task_struct [noderef] __rcu
*real_parent
kernel/signal.c:2167:17: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct sighand_struct *sighand @@ got struct
sighand_struct [noderef] __rcu *sighand @@
kernel/signal.c:2167:17: sparse: expected struct sighand_struct *sighand
kernel/signal.c:2167:17: sparse: got struct sighand_struct [noderef] __rcu
*sighand
kernel/signal.c:2205:41: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:2205:41: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2205:41: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2207:39: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:2207:39: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2207:39: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2257:33: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:2257:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2257:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2312:31: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:2312:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2312:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2346:31: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:2346:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2346:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2348:33: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:2348:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2348:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2445:41: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:2445:41: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2445:41: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2530:41: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:2530:41: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2530:41: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2542:33: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:2542:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2542:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2580:52: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct task_struct *tsk @@ got struct task_struct
[noderef] __rcu *parent @@
kernel/signal.c:2580:52: sparse: expected struct task_struct *tsk
kernel/signal.c:2580:52: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2582:49: sparse: sparse: cast removes address space '__rcu' of
expression
kernel/signal.c:2619:49: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected struct sighand_struct *sighand @@ got struct
sighand_struct [noderef] __rcu *sighand @@
kernel/signal.c:2619:49: sparse: expected struct sighand_struct *sighand
kernel/signal.c:2619:49: sparse: got struct sighand_struct [noderef] __rcu
*sighand
kernel/signal.c:2951:27: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:2951:27: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2951:27: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2971:29: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:2971:29: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2971:29: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3038:27: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:3038:27: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3038:27: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3040:29: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:3040:29: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3040:29: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3191:31: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:3191:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3191:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3194:33: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:3194:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3194:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3580:27: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:3580:27: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3580:27: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3592:37: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:3592:37: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3592:37: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3597:35: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:3597:35: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3597:35: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3602:29: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct
spinlock [noderef] __rcu * @@
kernel/signal.c:3602:29: sparse: expected struct spinlock [usertype] *lock
vim +359 arch/x86/kernel/signal.c
75779f05264b99 arch/x86/kernel/signal.c Hiroshi Shimamoto 2009-02-27 324
7e907f48980d66 arch/x86/kernel/signal_32.c Ingo Molnar 2008-03-06 325 static int
235b80226b986d arch/x86/kernel/signal.c Al Viro 2012-11-09 326
__setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
7e907f48980d66 arch/x86/kernel/signal_32.c Ingo Molnar 2008-03-06 327
struct pt_regs *regs)
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 328 {
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 329 struct
sigframe __user *frame;
7e907f48980d66 arch/x86/kernel/signal_32.c Ingo Molnar 2008-03-06 330 void __user
*restorer;
b00d8f8f0b2b39 arch/x86/kernel/signal.c Al Viro 2020-02-15 331 void __user
*fp = NULL;
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 332
b00d8f8f0b2b39 arch/x86/kernel/signal.c Al Viro 2020-02-15 333 frame =
get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp);
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 334
5c1f178094631e arch/x86/kernel/signal.c Al Viro 2020-02-15 335 if
(!user_access_begin(frame, sizeof(*frame)))
3d0aedd9538e6b arch/x86/kernel/signal_32.c Hiroshi Shimamoto 2008-09-12 336 return
-EFAULT;
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 337
5c1f178094631e arch/x86/kernel/signal.c Al Viro 2020-02-15 338
unsafe_put_user(sig, &frame->sig, Efault);
b00d8f8f0b2b39 arch/x86/kernel/signal.c Al Viro 2020-02-15 339
unsafe_put_sigcontext(&frame->sc, fp, regs, set, Efault);
5c1f178094631e arch/x86/kernel/signal.c Al Viro 2020-02-15 340
unsafe_put_user(set->sig[1], &frame->extramask[0], Efault);
1a3e4ca41c5a38 arch/x86/kernel/signal_32.c Roland McGrath 2008-04-09 341 if
(current->mm->context.vdso)
6f121e548f8367 arch/x86/kernel/signal.c Andy Lutomirski 2014-05-05 342 restorer =
current->mm->context.vdso +
0a6d1fa0d2b48f arch/x86/kernel/signal.c Andy Lutomirski 2015-10-05 343
vdso_image_32.sym___kernel_sigreturn;
9fbbd4dd17d071 arch/i386/kernel/signal.c Andi Kleen 2007-02-13 344 else
ade1af77129dea arch/x86/kernel/signal_32.c Jan Engelhardt 2008-01-30 345 restorer =
&frame->retcode;
235b80226b986d arch/x86/kernel/signal.c Al Viro 2012-11-09 346 if
(ksig->ka.sa.sa_flags & SA_RESTORER)
235b80226b986d arch/x86/kernel/signal.c Al Viro 2012-11-09 347 restorer =
ksig->ka.sa.sa_restorer;
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 348
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 349 /* Set up
to return from userspace. */
5c1f178094631e arch/x86/kernel/signal.c Al Viro 2020-02-15 350
unsafe_put_user(restorer, &frame->pretcode, Efault);
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 351
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 352 /*
7e907f48980d66 arch/x86/kernel/signal_32.c Ingo Molnar 2008-03-06 353 * This is
popl %eax ; movl $__NR_sigreturn, %eax ; int $0x80
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 354 *
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 355 * WE DO
NOT USE IT ANY MORE! It's only left here for historical
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 356 * reasons
and because gdb uses it as a signature to notice
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 357 * signal
handler stack frames.
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 358 */
5c1f178094631e arch/x86/kernel/signal.c Al Viro 2020-02-15 @359
unsafe_put_user(*((u64 *)&retcode), (u64 *)frame->retcode, Efault);
5c1f178094631e arch/x86/kernel/signal.c Al Viro 2020-02-15 360
user_access_end();
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 361
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 362 /* Set up
registers for signal handler */
65ea5b03499035 arch/x86/kernel/signal_32.c H. Peter Anvin 2008-01-30 363 regs->sp
= (unsigned long)frame;
235b80226b986d arch/x86/kernel/signal.c Al Viro 2012-11-09 364 regs->ip
= (unsigned long)ksig->ka.sa.sa_handler;
65ea5b03499035 arch/x86/kernel/signal_32.c H. Peter Anvin 2008-01-30 365 regs->ax
= (unsigned long)sig;
92bc2056855b32 arch/x86/kernel/signal_32.c Harvey Harrison 2008-02-08 366 regs->dx
= 0;
92bc2056855b32 arch/x86/kernel/signal_32.c Harvey Harrison 2008-02-08 367 regs->cx
= 0;
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 368
65ea5b03499035 arch/x86/kernel/signal_32.c H. Peter Anvin 2008-01-30 369 regs->ds
= __USER_DS;
65ea5b03499035 arch/x86/kernel/signal_32.c H. Peter Anvin 2008-01-30 370 regs->es
= __USER_DS;
65ea5b03499035 arch/x86/kernel/signal_32.c H. Peter Anvin 2008-01-30 371 regs->ss
= __USER_DS;
65ea5b03499035 arch/x86/kernel/signal_32.c H. Peter Anvin 2008-01-30 372 regs->cs
= __USER_CS;
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 373
283828f3c19ceb arch/i386/kernel/signal.c David Howells 2006-01-18 374 return 0;
b00d8f8f0b2b39 arch/x86/kernel/signal.c Al Viro 2020-02-15 375
b00d8f8f0b2b39 arch/x86/kernel/signal.c Al Viro 2020-02-15 376 Efault:
b00d8f8f0b2b39 arch/x86/kernel/signal.c Al Viro 2020-02-15 377
user_access_end();
b00d8f8f0b2b39 arch/x86/kernel/signal.c Al Viro 2020-02-15 378 return
-EFAULT;
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 379 }
^1da177e4c3f41 arch/i386/kernel/signal.c Linus Torvalds 2005-04-16 380
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org