From: kernel test robot <lkp@intel.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>,
linux-kernel@vger.kernel.org
Cc: kbuild-all@lists.01.org, rjw@rjwysocki.net,
Oleg Nesterov <oleg@redhat.com>,
mingo@kernel.org, vincent.guittot@linaro.org,
dietmar.eggemann@arm.com, rostedt@goodmis.org, mgorman@suse.de,
bigeasy@linutronix.de, Will Deacon <will@kernel.org>,
tj@kernel.org, linux-pm@vger.kernel.org,
Peter Zijlstra <peterz@infradead.org>,
Richard Weinberger <richard@nod.at>,
Anton Ivanov <anton.ivanov@cambridgegreys.com>,
Johannes Berg <johannes@sipsolutions.net>,
linux-um@lists.infradead.org, Chris Zankel <chris@zankel.net>,
Max Filippov <jcmvbkbc@gmail.com>,
linux-xtensa@linux-xtensa.org, Kees Cook <keescook@chromium.org>,
Jann Horn <jannh@google.com>,
linux-ia64@vger.kernel.org, Robert OCallahan <roc@pernos.co>,
Kyle Huey <khuey@pernos.co>, Richard Henderson <rth@twiddle.net>,
Ivan Kokshaysky <ink@jurassic.park.msu.ru>,
Matt Turner <mattst88@gmail.com>,
Jason Wessel <jason.wessel@windriver.com>,
Daniel Thompson <daniel.thompson@linaro.org>
Subject: Re: [PATCH 16/16] signal: Always call do_notify_parent_cldstop with siglock held
Date: Fri, 20 May 2022 16:19:05 +0000 [thread overview]
Message-ID: <202205210010.E4Hyn2kD-lkp@intel.com> (raw)
In-Reply-To: <20220518225355.784371-16-ebiederm@xmission.com>
Hi "Eric,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on next-20220518]
[cannot apply to linux/master powerpc/next wireless-next/main wireless/main linus/master v5.18-rc7 v5.18-rc6 v5.18-rc5 v5.18-rc7]
[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/intel-lab-lkp/linux/commits/Eric-W-Biederman/signal-alpha-Remove-unused-definition-of-TASK_REAL_PARENT/20220519-065947
base: 736ee37e2e8eed7fe48d0a37ee5a709514d478b3
config: parisc-randconfig-s032-20220519 (https://download.01.org/0day-ci/archive/20220521/202205210010.E4Hyn2kD-lkp@intel.com/config)
compiler: hppa-linux-gcc (GCC) 11.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.4-dirty
# https://github.com/intel-lab-lkp/linux/commit/4b66a617bf6d095d33fe43e9dbcfdf2e0de9fb29
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Eric-W-Biederman/signal-alpha-Remove-unused-definition-of-TASK_REAL_PARENT/20220519-065947
git checkout 4b66a617bf6d095d33fe43e9dbcfdf2e0de9fb29
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=parisc SHELL=/bin/bash
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
kernel/signal.c: note: in included file (through arch/parisc/include/uapi/asm/signal.h, arch/parisc/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: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:1261:9: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: incompatible types for 'case' statement
kernel/signal.c:1267:29: sparse: sparse: incompatible types for 'case' statement
kernel/signal.c:1267:29: sparse: sparse: incompatible types for 'case' statement
kernel/signal.c:1267:29: sparse: sparse: incompatible types for 'case' statement
kernel/signal.c:1328:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:1328:9: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:1328:9: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:1329:16: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct k_sigaction *action @@ got struct k_sigaction [noderef] __rcu * @@
kernel/signal.c:1329:16: sparse: expected struct k_sigaction *action
kernel/signal.c:1329:16: sparse: got struct k_sigaction [noderef] __rcu *
kernel/signal.c:1349:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:1349:34: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:1349:34: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:1938:36: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:1938:36: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:1938:36: sparse: got struct spinlock [noderef] __rcu *
>> kernel/signal.c:2048:46: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *m_sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@
kernel/signal.c:2048:46: sparse: expected struct sighand_struct *m_sighand
kernel/signal.c:2048:46: sparse: got struct sighand_struct [noderef] __rcu *sighand
kernel/signal.c:2057: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:2057:24: sparse: expected struct task_struct *parent
kernel/signal.c:2057:24: sparse: got struct task_struct [noderef] __rcu *real_parent
kernel/signal.c:2087:21: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> kernel/signal.c:2087:21: sparse: struct task_struct [noderef] __rcu *
>> kernel/signal.c:2087:21: sparse: struct task_struct *
>> kernel/signal.c:2117:40: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *parent @@ got struct task_struct [noderef] __rcu *real_parent @@
kernel/signal.c:2117:40: sparse: expected struct task_struct *parent
kernel/signal.c:2117:40: sparse: got struct task_struct [noderef] __rcu *real_parent
kernel/signal.c:2119:46: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *m_sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@
kernel/signal.c:2119:46: sparse: expected struct sighand_struct *m_sighand
kernel/signal.c:2119:46: sparse: got struct sighand_struct [noderef] __rcu *sighand
>> kernel/signal.c:2120:50: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *p_sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@
kernel/signal.c:2120:50: sparse: expected struct sighand_struct *p_sighand
kernel/signal.c:2120:50: sparse: got struct sighand_struct [noderef] __rcu *sighand
>> kernel/signal.c:2125:58: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *t_sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@
kernel/signal.c:2125:58: sparse: expected struct sighand_struct *t_sighand
kernel/signal.c:2125:58: sparse: got struct sighand_struct [noderef] __rcu *sighand
kernel/signal.c:2171:44: sparse: sparse: cast removes address space '__rcu' of expression
kernel/signal.c:2190: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:2190:65: sparse: expected struct task_struct *tsk
kernel/signal.c:2190:65: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2191:40: sparse: sparse: cast removes address space '__rcu' of expression
kernel/signal.c:2209: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:2209:14: sparse: expected struct sighand_struct *psig
kernel/signal.c:2209:14: sparse: got struct sighand_struct [noderef] __rcu *[noderef] __rcu sighand
kernel/signal.c:2238:53: 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:2238:53: sparse: expected struct task_struct *t
kernel/signal.c:2238:53: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2239: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:2239:34: sparse: expected struct task_struct *parent
kernel/signal.c:2239:34: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2269: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:2269:24: sparse: expected struct task_struct *parent
kernel/signal.c:2269:24: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2272: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:2272:24: sparse: expected struct task_struct *parent
kernel/signal.c:2272:24: sparse: got struct task_struct [noderef] __rcu *real_parent
kernel/signal.c:2307: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:2307:17: sparse: expected struct sighand_struct *sighand
kernel/signal.c:2307:17: sparse: got struct sighand_struct [noderef] __rcu *sighand
kernel/signal.c:2341:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2341:41: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2341:41: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2343:39: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2343:39: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2343:39: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2428:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2428:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2428:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2440:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2440:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2440:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2479:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2479:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2479:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2481:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2481:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2481:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2584:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2584:41: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2584:41: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2599:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2599:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2599:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2656:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2656:41: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2656:41: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2668:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2668:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2668:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2726: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:2726:49: sparse: expected struct sighand_struct *sighand
kernel/signal.c:2726:49: sparse: got struct sighand_struct [noderef] __rcu *sighand
kernel/signal.c:3052:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3052:27: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3052:27: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3081:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3081:29: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3081:29: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3138:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3138:27: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3138:27: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3140:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3140:29: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3140:29: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3291:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3291:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3291:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3294:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3294:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3294:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3683:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3683:27: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3683:27: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3695:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3695:37: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3695:37: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3700:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3700:35: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3700:35: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3705:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3705:29: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3705:29: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:4159:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:4159:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:4159:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:4171:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:4171:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:4171:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:4189:11: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct k_sigaction *k @@ got struct k_sigaction [noderef] __rcu * @@
kernel/signal.c:4189:11: sparse: expected struct k_sigaction *k
kernel/signal.c:4189:11: sparse: got struct k_sigaction [noderef] __rcu *
kernel/signal.c:4191:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:4191:25: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:4191:25: sparse: got struct spinlock [noderef] __rcu *
vim +2048 kernel/signal.c
1934
1935 void sigqueue_free(struct sigqueue *q)
1936 {
1937 unsigned long flags;
> 1938 spinlock_t *lock = ¤t->sighand->siglock;
1939
1940 BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
1941 /*
1942 * We must hold ->siglock while testing q->list
1943 * to serialize with collect_signal() or with
1944 * __exit_signal()->flush_sigqueue().
1945 */
1946 spin_lock_irqsave(lock, flags);
1947 q->flags &= ~SIGQUEUE_PREALLOC;
1948 /*
1949 * If it is queued it will be freed when dequeued,
1950 * like the "regular" sigqueue.
1951 */
1952 if (!list_empty(&q->list))
1953 q = NULL;
1954 spin_unlock_irqrestore(lock, flags);
1955
1956 if (q)
1957 __sigqueue_free(q);
1958 }
1959
1960 int send_sigqueue(struct sigqueue *q, struct pid *pid, enum pid_type type)
1961 {
1962 int sig = q->info.si_signo;
1963 struct sigpending *pending;
1964 struct task_struct *t;
1965 unsigned long flags;
1966 int ret, result;
1967
1968 BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
1969
1970 ret = -1;
1971 rcu_read_lock();
1972 t = pid_task(pid, type);
1973 if (!t || !likely(lock_task_sighand(t, &flags)))
1974 goto ret;
1975
1976 ret = 1; /* the signal is ignored */
1977 result = TRACE_SIGNAL_IGNORED;
1978 if (!prepare_signal(sig, t, false))
1979 goto out;
1980
1981 ret = 0;
1982 if (unlikely(!list_empty(&q->list))) {
1983 /*
1984 * If an SI_TIMER entry is already queue just increment
1985 * the overrun count.
1986 */
1987 BUG_ON(q->info.si_code != SI_TIMER);
1988 q->info.si_overrun++;
1989 result = TRACE_SIGNAL_ALREADY_PENDING;
1990 goto out;
1991 }
1992 q->info.si_overrun = 0;
1993
1994 signalfd_notify(t, sig);
1995 pending = (type != PIDTYPE_PID) ? &t->signal->shared_pending : &t->pending;
1996 list_add_tail(&q->list, &pending->list);
1997 sigaddset(&pending->signal, sig);
1998 complete_signal(sig, t, type);
1999 result = TRACE_SIGNAL_DELIVERED;
2000 out:
2001 trace_signal_generate(sig, &q->info, t, type != PIDTYPE_PID, result);
2002 unlock_task_sighand(t, &flags);
2003 ret:
2004 rcu_read_unlock();
2005 return ret;
2006 }
2007
2008 /**
2009 * lock_parents_siglocks - Take current, real_parent, and parent's siglock
2010 * @lock_tracer: The tracers siglock is needed.
2011 *
2012 * There is no natural ordering to these locks so they must be sorted
2013 * before being taken.
2014 *
2015 * There are two complicating factors here:
2016 * - The locks live in sighand and sighand can be arbitrarily shared
2017 * - parent and real_parent can change when current's siglock is unlocked.
2018 *
2019 * To deal with this first the all of the sighand pointers are
2020 * gathered under current's siglock, and the sighand pointers are
2021 * sorted. As siglock lives inside of sighand this also sorts the
2022 * siglock's by address.
2023 *
2024 * Then the siglocks are taken in order dropping current's siglock if
2025 * necessary.
2026 *
2027 * Finally if parent and real_parent have not changed return.
2028 * If they either parent has changed drop their locks and try again.
2029 *
2030 * Changing sighand is an infrequent and somewhat expensive operation
2031 * (unshare or exec) and so even in the worst case this loop
2032 * should not loop too many times before all of the proper locks are
2033 * taken in order.
2034 *
2035 * CONTEXT:
2036 * Must be called with @current->sighand->siglock held
2037 *
2038 * RETURNS:
2039 * current's, real_parent's, and parent's siglock held.
2040 */
2041 static void lock_parents_siglocks(bool lock_tracer)
2042 __releases(¤t->sighand->siglock)
2043 __acquires(¤t->sighand->siglock)
2044 __acquires(¤t->real_parent->sighand->siglock)
2045 __acquires(¤t->parent->sighand->siglock)
2046 {
2047 struct task_struct *me = current;
> 2048 struct sighand_struct *m_sighand = me->sighand;
2049
2050 lockdep_assert_held(&m_sighand->siglock);
2051
2052 rcu_read_lock();
2053 for (;;) {
2054 struct task_struct *parent, *tracer;
2055 struct sighand_struct *p_sighand, *t_sighand, *s1, *s2, *s3;
2056
2057 parent = me->real_parent;
2058 tracer = ptrace_parent(me);
2059 if (!tracer || !lock_tracer)
2060 tracer = parent;
2061
2062 p_sighand = rcu_dereference(parent->sighand);
2063 t_sighand = rcu_dereference(tracer->sighand);
2064
2065 /* Sort the sighands so that s1 >= s2 >= s3 */
2066 s1 = m_sighand;
2067 s2 = p_sighand;
2068 s3 = t_sighand;
2069 if (s1 > s2)
2070 swap(s1, s2);
2071 if (s1 > s3)
2072 swap(s1, s3);
2073 if (s2 > s3)
2074 swap(s2, s3);
2075
2076 /* Take the locks in order */
2077 if (s1 != m_sighand) {
2078 spin_unlock(&m_sighand->siglock);
2079 spin_lock(&s1->siglock);
2080 }
2081 if (s1 != s2)
2082 spin_lock_nested(&s2->siglock, 1);
2083 if (s2 != s3)
2084 spin_lock_nested(&s3->siglock, 2);
2085
2086 /* Verify the proper locks are held */
> 2087 if (likely((s1 = m_sighand) ||
2088 ((me->real_parent = parent) &&
2089 (me->parent = tracer) &&
2090 (parent->sighand = p_sighand) &&
2091 (tracer->sighand = t_sighand)))) {
2092 break;
2093 }
2094
2095 /* Drop all but current's siglock */
2096 if (p_sighand != m_sighand)
2097 spin_unlock(&p_sighand->siglock);
2098 if (t_sighand != p_sighand)
2099 spin_unlock(&t_sighand->siglock);
2100
2101 /*
2102 * Since [pt]_sighand will likely change if we go
2103 * around, and m_sighand is the only one held, make sure
2104 * it is subclass-0, since the above 's1 != m_sighand'
2105 * clause very much relies on that.
2106 */
2107 lock_set_subclass(&m_sighand->siglock.dep_map, 0, _RET_IP_);
2108 }
2109 rcu_read_unlock();
2110 }
2111
2112 static void unlock_parents_siglocks(bool unlock_tracer)
2113 __releases(¤t->real_parent->sighand->siglock)
2114 __releases(¤t->parent->sighand->siglock)
2115 {
2116 struct task_struct *me = current;
> 2117 struct task_struct *parent = me->real_parent;
2118 struct task_struct *tracer = ptrace_parent(me);
2119 struct sighand_struct *m_sighand = me->sighand;
> 2120 struct sighand_struct *p_sighand = parent->sighand;
2121
2122 if (p_sighand != m_sighand)
2123 spin_unlock(&p_sighand->siglock);
2124 if (tracer && unlock_tracer) {
> 2125 struct sighand_struct *t_sighand = tracer->sighand;
2126 if (t_sighand != p_sighand)
2127 spin_unlock(&t_sighand->siglock);
2128 }
2129 }
2130
--
0-DAY CI Kernel Test Service
https://01.org/lkp
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>,
linux-kernel@vger.kernel.org
Cc: kbuild-all@lists.01.org, rjw@rjwysocki.net,
Oleg Nesterov <oleg@redhat.com>,
mingo@kernel.org, vincent.guittot@linaro.org,
dietmar.eggemann@arm.com, rostedt@goodmis.org, mgorman@suse.de,
bigeasy@linutronix.de, Will Deacon <will@kernel.org>,
tj@kernel.org, linux-pm@vger.kernel.org,
Peter Zijlstra <peterz@infradead.org>,
Richard Weinberger <richard@nod.at>,
Anton Ivanov <anton.ivanov@cambridgegreys.com>,
Johannes Berg <johannes@sipsolutions.net>,
linux-um@lists.infradead.org, Chris Zankel <chris@zankel.net>,
Max Filippov <jcmvbkbc@gmail.com>,
linux-xtensa@linux-xtensa.org, Kees Cook <keescook@chromium.org>,
Jann Horn <jannh@google.com>,
linux-ia64@vger.kernel.org, Robert OCallahan <roc@pernos.co>,
Kyle Huey <khuey@pernos.co>, Richard Henderson <rth@twiddle.net>,
Ivan Kokshaysky <ink@jurassic.park.msu.ru>,
Matt Turner <mattst88@gmail.com>,
Jason Wessel <jason.wessel@windriver.com>,
Daniel Thompson <daniel.thompson@linaro.org>
Subject: Re: [PATCH 16/16] signal: Always call do_notify_parent_cldstop with siglock held
Date: Sat, 21 May 2022 00:19:05 +0800 [thread overview]
Message-ID: <202205210010.E4Hyn2kD-lkp@intel.com> (raw)
In-Reply-To: <20220518225355.784371-16-ebiederm@xmission.com>
Hi "Eric,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on next-20220518]
[cannot apply to linux/master powerpc/next wireless-next/main wireless/main linus/master v5.18-rc7 v5.18-rc6 v5.18-rc5 v5.18-rc7]
[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/intel-lab-lkp/linux/commits/Eric-W-Biederman/signal-alpha-Remove-unused-definition-of-TASK_REAL_PARENT/20220519-065947
base: 736ee37e2e8eed7fe48d0a37ee5a709514d478b3
config: parisc-randconfig-s032-20220519 (https://download.01.org/0day-ci/archive/20220521/202205210010.E4Hyn2kD-lkp@intel.com/config)
compiler: hppa-linux-gcc (GCC) 11.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.4-dirty
# https://github.com/intel-lab-lkp/linux/commit/4b66a617bf6d095d33fe43e9dbcfdf2e0de9fb29
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Eric-W-Biederman/signal-alpha-Remove-unused-definition-of-TASK_REAL_PARENT/20220519-065947
git checkout 4b66a617bf6d095d33fe43e9dbcfdf2e0de9fb29
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=parisc SHELL=/bin/bash
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
kernel/signal.c: note: in included file (through arch/parisc/include/uapi/asm/signal.h, arch/parisc/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: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:1261:9: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: incompatible types for 'case' statement
kernel/signal.c:1267:29: sparse: sparse: incompatible types for 'case' statement
kernel/signal.c:1267:29: sparse: sparse: incompatible types for 'case' statement
kernel/signal.c:1267:29: sparse: sparse: incompatible types for 'case' statement
kernel/signal.c:1328:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:1328:9: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:1328:9: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:1329:16: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct k_sigaction *action @@ got struct k_sigaction [noderef] __rcu * @@
kernel/signal.c:1329:16: sparse: expected struct k_sigaction *action
kernel/signal.c:1329:16: sparse: got struct k_sigaction [noderef] __rcu *
kernel/signal.c:1349:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:1349:34: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:1349:34: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:1938:36: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:1938:36: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:1938:36: sparse: got struct spinlock [noderef] __rcu *
>> kernel/signal.c:2048:46: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *m_sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@
kernel/signal.c:2048:46: sparse: expected struct sighand_struct *m_sighand
kernel/signal.c:2048:46: sparse: got struct sighand_struct [noderef] __rcu *sighand
kernel/signal.c:2057: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:2057:24: sparse: expected struct task_struct *parent
kernel/signal.c:2057:24: sparse: got struct task_struct [noderef] __rcu *real_parent
kernel/signal.c:2087:21: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> kernel/signal.c:2087:21: sparse: struct task_struct [noderef] __rcu *
>> kernel/signal.c:2087:21: sparse: struct task_struct *
>> kernel/signal.c:2117:40: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *parent @@ got struct task_struct [noderef] __rcu *real_parent @@
kernel/signal.c:2117:40: sparse: expected struct task_struct *parent
kernel/signal.c:2117:40: sparse: got struct task_struct [noderef] __rcu *real_parent
kernel/signal.c:2119:46: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *m_sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@
kernel/signal.c:2119:46: sparse: expected struct sighand_struct *m_sighand
kernel/signal.c:2119:46: sparse: got struct sighand_struct [noderef] __rcu *sighand
>> kernel/signal.c:2120:50: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *p_sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@
kernel/signal.c:2120:50: sparse: expected struct sighand_struct *p_sighand
kernel/signal.c:2120:50: sparse: got struct sighand_struct [noderef] __rcu *sighand
>> kernel/signal.c:2125:58: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *t_sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@
kernel/signal.c:2125:58: sparse: expected struct sighand_struct *t_sighand
kernel/signal.c:2125:58: sparse: got struct sighand_struct [noderef] __rcu *sighand
kernel/signal.c:2171:44: sparse: sparse: cast removes address space '__rcu' of expression
kernel/signal.c:2190: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:2190:65: sparse: expected struct task_struct *tsk
kernel/signal.c:2190:65: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2191:40: sparse: sparse: cast removes address space '__rcu' of expression
kernel/signal.c:2209: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:2209:14: sparse: expected struct sighand_struct *psig
kernel/signal.c:2209:14: sparse: got struct sighand_struct [noderef] __rcu *[noderef] __rcu sighand
kernel/signal.c:2238:53: 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:2238:53: sparse: expected struct task_struct *t
kernel/signal.c:2238:53: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2239: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:2239:34: sparse: expected struct task_struct *parent
kernel/signal.c:2239:34: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2269: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:2269:24: sparse: expected struct task_struct *parent
kernel/signal.c:2269:24: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2272: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:2272:24: sparse: expected struct task_struct *parent
kernel/signal.c:2272:24: sparse: got struct task_struct [noderef] __rcu *real_parent
kernel/signal.c:2307: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:2307:17: sparse: expected struct sighand_struct *sighand
kernel/signal.c:2307:17: sparse: got struct sighand_struct [noderef] __rcu *sighand
kernel/signal.c:2341:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2341:41: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2341:41: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2343:39: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2343:39: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2343:39: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2428:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2428:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2428:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2440:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2440:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2440:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2479:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2479:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2479:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2481:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2481:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2481:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2584:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2584:41: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2584:41: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2599:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2599:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2599:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2656:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2656:41: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2656:41: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2668:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2668:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2668:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2726: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:2726:49: sparse: expected struct sighand_struct *sighand
kernel/signal.c:2726:49: sparse: got struct sighand_struct [noderef] __rcu *sighand
kernel/signal.c:3052:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3052:27: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3052:27: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3081:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3081:29: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3081:29: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3138:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3138:27: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3138:27: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3140:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3140:29: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3140:29: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3291:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3291:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3291:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3294:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3294:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3294:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3683:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3683:27: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3683:27: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3695:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3695:37: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3695:37: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3700:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3700:35: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3700:35: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3705:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3705:29: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3705:29: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:4159:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:4159:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:4159:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:4171:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:4171:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:4171:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:4189:11: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct k_sigaction *k @@ got struct k_sigaction [noderef] __rcu * @@
kernel/signal.c:4189:11: sparse: expected struct k_sigaction *k
kernel/signal.c:4189:11: sparse: got struct k_sigaction [noderef] __rcu *
kernel/signal.c:4191:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:4191:25: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:4191:25: sparse: got struct spinlock [noderef] __rcu *
vim +2048 kernel/signal.c
1934
1935 void sigqueue_free(struct sigqueue *q)
1936 {
1937 unsigned long flags;
> 1938 spinlock_t *lock = ¤t->sighand->siglock;
1939
1940 BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
1941 /*
1942 * We must hold ->siglock while testing q->list
1943 * to serialize with collect_signal() or with
1944 * __exit_signal()->flush_sigqueue().
1945 */
1946 spin_lock_irqsave(lock, flags);
1947 q->flags &= ~SIGQUEUE_PREALLOC;
1948 /*
1949 * If it is queued it will be freed when dequeued,
1950 * like the "regular" sigqueue.
1951 */
1952 if (!list_empty(&q->list))
1953 q = NULL;
1954 spin_unlock_irqrestore(lock, flags);
1955
1956 if (q)
1957 __sigqueue_free(q);
1958 }
1959
1960 int send_sigqueue(struct sigqueue *q, struct pid *pid, enum pid_type type)
1961 {
1962 int sig = q->info.si_signo;
1963 struct sigpending *pending;
1964 struct task_struct *t;
1965 unsigned long flags;
1966 int ret, result;
1967
1968 BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
1969
1970 ret = -1;
1971 rcu_read_lock();
1972 t = pid_task(pid, type);
1973 if (!t || !likely(lock_task_sighand(t, &flags)))
1974 goto ret;
1975
1976 ret = 1; /* the signal is ignored */
1977 result = TRACE_SIGNAL_IGNORED;
1978 if (!prepare_signal(sig, t, false))
1979 goto out;
1980
1981 ret = 0;
1982 if (unlikely(!list_empty(&q->list))) {
1983 /*
1984 * If an SI_TIMER entry is already queue just increment
1985 * the overrun count.
1986 */
1987 BUG_ON(q->info.si_code != SI_TIMER);
1988 q->info.si_overrun++;
1989 result = TRACE_SIGNAL_ALREADY_PENDING;
1990 goto out;
1991 }
1992 q->info.si_overrun = 0;
1993
1994 signalfd_notify(t, sig);
1995 pending = (type != PIDTYPE_PID) ? &t->signal->shared_pending : &t->pending;
1996 list_add_tail(&q->list, &pending->list);
1997 sigaddset(&pending->signal, sig);
1998 complete_signal(sig, t, type);
1999 result = TRACE_SIGNAL_DELIVERED;
2000 out:
2001 trace_signal_generate(sig, &q->info, t, type != PIDTYPE_PID, result);
2002 unlock_task_sighand(t, &flags);
2003 ret:
2004 rcu_read_unlock();
2005 return ret;
2006 }
2007
2008 /**
2009 * lock_parents_siglocks - Take current, real_parent, and parent's siglock
2010 * @lock_tracer: The tracers siglock is needed.
2011 *
2012 * There is no natural ordering to these locks so they must be sorted
2013 * before being taken.
2014 *
2015 * There are two complicating factors here:
2016 * - The locks live in sighand and sighand can be arbitrarily shared
2017 * - parent and real_parent can change when current's siglock is unlocked.
2018 *
2019 * To deal with this first the all of the sighand pointers are
2020 * gathered under current's siglock, and the sighand pointers are
2021 * sorted. As siglock lives inside of sighand this also sorts the
2022 * siglock's by address.
2023 *
2024 * Then the siglocks are taken in order dropping current's siglock if
2025 * necessary.
2026 *
2027 * Finally if parent and real_parent have not changed return.
2028 * If they either parent has changed drop their locks and try again.
2029 *
2030 * Changing sighand is an infrequent and somewhat expensive operation
2031 * (unshare or exec) and so even in the worst case this loop
2032 * should not loop too many times before all of the proper locks are
2033 * taken in order.
2034 *
2035 * CONTEXT:
2036 * Must be called with @current->sighand->siglock held
2037 *
2038 * RETURNS:
2039 * current's, real_parent's, and parent's siglock held.
2040 */
2041 static void lock_parents_siglocks(bool lock_tracer)
2042 __releases(¤t->sighand->siglock)
2043 __acquires(¤t->sighand->siglock)
2044 __acquires(¤t->real_parent->sighand->siglock)
2045 __acquires(¤t->parent->sighand->siglock)
2046 {
2047 struct task_struct *me = current;
> 2048 struct sighand_struct *m_sighand = me->sighand;
2049
2050 lockdep_assert_held(&m_sighand->siglock);
2051
2052 rcu_read_lock();
2053 for (;;) {
2054 struct task_struct *parent, *tracer;
2055 struct sighand_struct *p_sighand, *t_sighand, *s1, *s2, *s3;
2056
2057 parent = me->real_parent;
2058 tracer = ptrace_parent(me);
2059 if (!tracer || !lock_tracer)
2060 tracer = parent;
2061
2062 p_sighand = rcu_dereference(parent->sighand);
2063 t_sighand = rcu_dereference(tracer->sighand);
2064
2065 /* Sort the sighands so that s1 >= s2 >= s3 */
2066 s1 = m_sighand;
2067 s2 = p_sighand;
2068 s3 = t_sighand;
2069 if (s1 > s2)
2070 swap(s1, s2);
2071 if (s1 > s3)
2072 swap(s1, s3);
2073 if (s2 > s3)
2074 swap(s2, s3);
2075
2076 /* Take the locks in order */
2077 if (s1 != m_sighand) {
2078 spin_unlock(&m_sighand->siglock);
2079 spin_lock(&s1->siglock);
2080 }
2081 if (s1 != s2)
2082 spin_lock_nested(&s2->siglock, 1);
2083 if (s2 != s3)
2084 spin_lock_nested(&s3->siglock, 2);
2085
2086 /* Verify the proper locks are held */
> 2087 if (likely((s1 == m_sighand) ||
2088 ((me->real_parent == parent) &&
2089 (me->parent == tracer) &&
2090 (parent->sighand == p_sighand) &&
2091 (tracer->sighand == t_sighand)))) {
2092 break;
2093 }
2094
2095 /* Drop all but current's siglock */
2096 if (p_sighand != m_sighand)
2097 spin_unlock(&p_sighand->siglock);
2098 if (t_sighand != p_sighand)
2099 spin_unlock(&t_sighand->siglock);
2100
2101 /*
2102 * Since [pt]_sighand will likely change if we go
2103 * around, and m_sighand is the only one held, make sure
2104 * it is subclass-0, since the above 's1 != m_sighand'
2105 * clause very much relies on that.
2106 */
2107 lock_set_subclass(&m_sighand->siglock.dep_map, 0, _RET_IP_);
2108 }
2109 rcu_read_unlock();
2110 }
2111
2112 static void unlock_parents_siglocks(bool unlock_tracer)
2113 __releases(¤t->real_parent->sighand->siglock)
2114 __releases(¤t->parent->sighand->siglock)
2115 {
2116 struct task_struct *me = current;
> 2117 struct task_struct *parent = me->real_parent;
2118 struct task_struct *tracer = ptrace_parent(me);
2119 struct sighand_struct *m_sighand = me->sighand;
> 2120 struct sighand_struct *p_sighand = parent->sighand;
2121
2122 if (p_sighand != m_sighand)
2123 spin_unlock(&p_sighand->siglock);
2124 if (tracer && unlock_tracer) {
> 2125 struct sighand_struct *t_sighand = tracer->sighand;
2126 if (t_sighand != p_sighand)
2127 spin_unlock(&t_sighand->siglock);
2128 }
2129 }
2130
--
0-DAY CI Kernel Test Service
https://01.org/lkp
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>,
linux-kernel@vger.kernel.org
Cc: kbuild-all@lists.01.org, rjw@rjwysocki.net,
Oleg Nesterov <oleg@redhat.com>,
mingo@kernel.org, vincent.guittot@linaro.org,
dietmar.eggemann@arm.com, rostedt@goodmis.org, mgorman@suse.de,
bigeasy@linutronix.de, Will Deacon <will@kernel.org>,
tj@kernel.org, linux-pm@vger.kernel.org,
Peter Zijlstra <peterz@infradead.org>,
Richard Weinberger <richard@nod.at>,
Anton Ivanov <anton.ivanov@cambridgegreys.com>,
Johannes Berg <johannes@sipsolutions.net>,
linux-um@lists.infradead.org, Chris Zankel <chris@zankel.net>,
Max Filippov <jcmvbkbc@gmail.com>,
linux-xtensa@linux-xtensa.org, Kees Cook <keescook@chromium.org>,
Jann Horn <jannh@google.com>,
linux-ia64@vger.kernel.org, Robert OCallahan <roc@pernos.co>,
Kyle Huey <khuey@pernos.co>, Richard Henderson <rth@twiddle.net>,
Ivan Kokshaysky <ink@jurassic.park.msu.ru>,
Matt Turner <mattst88@gmail.com>,
Jason Wessel <jason.wessel@windriver.com>,
Daniel Thompson <daniel.thompson@linaro.org>
Subject: Re: [PATCH 16/16] signal: Always call do_notify_parent_cldstop with siglock held
Date: Sat, 21 May 2022 00:19:05 +0800 [thread overview]
Message-ID: <202205210010.E4Hyn2kD-lkp@intel.com> (raw)
In-Reply-To: <20220518225355.784371-16-ebiederm@xmission.com>
Hi "Eric,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on next-20220518]
[cannot apply to linux/master powerpc/next wireless-next/main wireless/main linus/master v5.18-rc7 v5.18-rc6 v5.18-rc5 v5.18-rc7]
[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/intel-lab-lkp/linux/commits/Eric-W-Biederman/signal-alpha-Remove-unused-definition-of-TASK_REAL_PARENT/20220519-065947
base: 736ee37e2e8eed7fe48d0a37ee5a709514d478b3
config: parisc-randconfig-s032-20220519 (https://download.01.org/0day-ci/archive/20220521/202205210010.E4Hyn2kD-lkp@intel.com/config)
compiler: hppa-linux-gcc (GCC) 11.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.4-dirty
# https://github.com/intel-lab-lkp/linux/commit/4b66a617bf6d095d33fe43e9dbcfdf2e0de9fb29
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Eric-W-Biederman/signal-alpha-Remove-unused-definition-of-TASK_REAL_PARENT/20220519-065947
git checkout 4b66a617bf6d095d33fe43e9dbcfdf2e0de9fb29
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=parisc SHELL=/bin/bash
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
kernel/signal.c: note: in included file (through arch/parisc/include/uapi/asm/signal.h, arch/parisc/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: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:1261:9: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: cannot dereference this type
kernel/signal.c:1267:29: sparse: sparse: no member 'ip' in struct pt_regs
kernel/signal.c:1267:29: sparse: sparse: cast from unknown type
kernel/signal.c:1267:29: sparse: sparse: incompatible types for 'case' statement
kernel/signal.c:1267:29: sparse: sparse: incompatible types for 'case' statement
kernel/signal.c:1267:29: sparse: sparse: incompatible types for 'case' statement
kernel/signal.c:1267:29: sparse: sparse: incompatible types for 'case' statement
kernel/signal.c:1328:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:1328:9: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:1328:9: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:1329:16: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct k_sigaction *action @@ got struct k_sigaction [noderef] __rcu * @@
kernel/signal.c:1329:16: sparse: expected struct k_sigaction *action
kernel/signal.c:1329:16: sparse: got struct k_sigaction [noderef] __rcu *
kernel/signal.c:1349:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:1349:34: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:1349:34: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:1938:36: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:1938:36: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:1938:36: sparse: got struct spinlock [noderef] __rcu *
>> kernel/signal.c:2048:46: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *m_sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@
kernel/signal.c:2048:46: sparse: expected struct sighand_struct *m_sighand
kernel/signal.c:2048:46: sparse: got struct sighand_struct [noderef] __rcu *sighand
kernel/signal.c:2057: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:2057:24: sparse: expected struct task_struct *parent
kernel/signal.c:2057:24: sparse: got struct task_struct [noderef] __rcu *real_parent
kernel/signal.c:2087:21: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> kernel/signal.c:2087:21: sparse: struct task_struct [noderef] __rcu *
>> kernel/signal.c:2087:21: sparse: struct task_struct *
>> kernel/signal.c:2117:40: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct task_struct *parent @@ got struct task_struct [noderef] __rcu *real_parent @@
kernel/signal.c:2117:40: sparse: expected struct task_struct *parent
kernel/signal.c:2117:40: sparse: got struct task_struct [noderef] __rcu *real_parent
kernel/signal.c:2119:46: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *m_sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@
kernel/signal.c:2119:46: sparse: expected struct sighand_struct *m_sighand
kernel/signal.c:2119:46: sparse: got struct sighand_struct [noderef] __rcu *sighand
>> kernel/signal.c:2120:50: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *p_sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@
kernel/signal.c:2120:50: sparse: expected struct sighand_struct *p_sighand
kernel/signal.c:2120:50: sparse: got struct sighand_struct [noderef] __rcu *sighand
>> kernel/signal.c:2125:58: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct sighand_struct *t_sighand @@ got struct sighand_struct [noderef] __rcu *sighand @@
kernel/signal.c:2125:58: sparse: expected struct sighand_struct *t_sighand
kernel/signal.c:2125:58: sparse: got struct sighand_struct [noderef] __rcu *sighand
kernel/signal.c:2171:44: sparse: sparse: cast removes address space '__rcu' of expression
kernel/signal.c:2190: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:2190:65: sparse: expected struct task_struct *tsk
kernel/signal.c:2190:65: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2191:40: sparse: sparse: cast removes address space '__rcu' of expression
kernel/signal.c:2209: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:2209:14: sparse: expected struct sighand_struct *psig
kernel/signal.c:2209:14: sparse: got struct sighand_struct [noderef] __rcu *[noderef] __rcu sighand
kernel/signal.c:2238:53: 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:2238:53: sparse: expected struct task_struct *t
kernel/signal.c:2238:53: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2239: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:2239:34: sparse: expected struct task_struct *parent
kernel/signal.c:2239:34: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2269: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:2269:24: sparse: expected struct task_struct *parent
kernel/signal.c:2269:24: sparse: got struct task_struct [noderef] __rcu *parent
kernel/signal.c:2272: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:2272:24: sparse: expected struct task_struct *parent
kernel/signal.c:2272:24: sparse: got struct task_struct [noderef] __rcu *real_parent
kernel/signal.c:2307: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:2307:17: sparse: expected struct sighand_struct *sighand
kernel/signal.c:2307:17: sparse: got struct sighand_struct [noderef] __rcu *sighand
kernel/signal.c:2341:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2341:41: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2341:41: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2343:39: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2343:39: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2343:39: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2428:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2428:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2428:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2440:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2440:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2440:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2479:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2479:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2479:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2481:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2481:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2481:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2584:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2584:41: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2584:41: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2599:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2599:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2599:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2656:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2656:41: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2656:41: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2668:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:2668:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:2668:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:2726: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:2726:49: sparse: expected struct sighand_struct *sighand
kernel/signal.c:2726:49: sparse: got struct sighand_struct [noderef] __rcu *sighand
kernel/signal.c:3052:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3052:27: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3052:27: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3081:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3081:29: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3081:29: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3138:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3138:27: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3138:27: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3140:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3140:29: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3140:29: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3291:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3291:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3291:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3294:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3294:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3294:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3683:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3683:27: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3683:27: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3695:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3695:37: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3695:37: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3700:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3700:35: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3700:35: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:3705:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:3705:29: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:3705:29: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:4159:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:4159:31: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:4159:31: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:4171:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:4171:33: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:4171:33: sparse: got struct spinlock [noderef] __rcu *
kernel/signal.c:4189:11: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct k_sigaction *k @@ got struct k_sigaction [noderef] __rcu * @@
kernel/signal.c:4189:11: sparse: expected struct k_sigaction *k
kernel/signal.c:4189:11: sparse: got struct k_sigaction [noderef] __rcu *
kernel/signal.c:4191:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@
kernel/signal.c:4191:25: sparse: expected struct spinlock [usertype] *lock
kernel/signal.c:4191:25: sparse: got struct spinlock [noderef] __rcu *
vim +2048 kernel/signal.c
1934
1935 void sigqueue_free(struct sigqueue *q)
1936 {
1937 unsigned long flags;
> 1938 spinlock_t *lock = ¤t->sighand->siglock;
1939
1940 BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
1941 /*
1942 * We must hold ->siglock while testing q->list
1943 * to serialize with collect_signal() or with
1944 * __exit_signal()->flush_sigqueue().
1945 */
1946 spin_lock_irqsave(lock, flags);
1947 q->flags &= ~SIGQUEUE_PREALLOC;
1948 /*
1949 * If it is queued it will be freed when dequeued,
1950 * like the "regular" sigqueue.
1951 */
1952 if (!list_empty(&q->list))
1953 q = NULL;
1954 spin_unlock_irqrestore(lock, flags);
1955
1956 if (q)
1957 __sigqueue_free(q);
1958 }
1959
1960 int send_sigqueue(struct sigqueue *q, struct pid *pid, enum pid_type type)
1961 {
1962 int sig = q->info.si_signo;
1963 struct sigpending *pending;
1964 struct task_struct *t;
1965 unsigned long flags;
1966 int ret, result;
1967
1968 BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));
1969
1970 ret = -1;
1971 rcu_read_lock();
1972 t = pid_task(pid, type);
1973 if (!t || !likely(lock_task_sighand(t, &flags)))
1974 goto ret;
1975
1976 ret = 1; /* the signal is ignored */
1977 result = TRACE_SIGNAL_IGNORED;
1978 if (!prepare_signal(sig, t, false))
1979 goto out;
1980
1981 ret = 0;
1982 if (unlikely(!list_empty(&q->list))) {
1983 /*
1984 * If an SI_TIMER entry is already queue just increment
1985 * the overrun count.
1986 */
1987 BUG_ON(q->info.si_code != SI_TIMER);
1988 q->info.si_overrun++;
1989 result = TRACE_SIGNAL_ALREADY_PENDING;
1990 goto out;
1991 }
1992 q->info.si_overrun = 0;
1993
1994 signalfd_notify(t, sig);
1995 pending = (type != PIDTYPE_PID) ? &t->signal->shared_pending : &t->pending;
1996 list_add_tail(&q->list, &pending->list);
1997 sigaddset(&pending->signal, sig);
1998 complete_signal(sig, t, type);
1999 result = TRACE_SIGNAL_DELIVERED;
2000 out:
2001 trace_signal_generate(sig, &q->info, t, type != PIDTYPE_PID, result);
2002 unlock_task_sighand(t, &flags);
2003 ret:
2004 rcu_read_unlock();
2005 return ret;
2006 }
2007
2008 /**
2009 * lock_parents_siglocks - Take current, real_parent, and parent's siglock
2010 * @lock_tracer: The tracers siglock is needed.
2011 *
2012 * There is no natural ordering to these locks so they must be sorted
2013 * before being taken.
2014 *
2015 * There are two complicating factors here:
2016 * - The locks live in sighand and sighand can be arbitrarily shared
2017 * - parent and real_parent can change when current's siglock is unlocked.
2018 *
2019 * To deal with this first the all of the sighand pointers are
2020 * gathered under current's siglock, and the sighand pointers are
2021 * sorted. As siglock lives inside of sighand this also sorts the
2022 * siglock's by address.
2023 *
2024 * Then the siglocks are taken in order dropping current's siglock if
2025 * necessary.
2026 *
2027 * Finally if parent and real_parent have not changed return.
2028 * If they either parent has changed drop their locks and try again.
2029 *
2030 * Changing sighand is an infrequent and somewhat expensive operation
2031 * (unshare or exec) and so even in the worst case this loop
2032 * should not loop too many times before all of the proper locks are
2033 * taken in order.
2034 *
2035 * CONTEXT:
2036 * Must be called with @current->sighand->siglock held
2037 *
2038 * RETURNS:
2039 * current's, real_parent's, and parent's siglock held.
2040 */
2041 static void lock_parents_siglocks(bool lock_tracer)
2042 __releases(¤t->sighand->siglock)
2043 __acquires(¤t->sighand->siglock)
2044 __acquires(¤t->real_parent->sighand->siglock)
2045 __acquires(¤t->parent->sighand->siglock)
2046 {
2047 struct task_struct *me = current;
> 2048 struct sighand_struct *m_sighand = me->sighand;
2049
2050 lockdep_assert_held(&m_sighand->siglock);
2051
2052 rcu_read_lock();
2053 for (;;) {
2054 struct task_struct *parent, *tracer;
2055 struct sighand_struct *p_sighand, *t_sighand, *s1, *s2, *s3;
2056
2057 parent = me->real_parent;
2058 tracer = ptrace_parent(me);
2059 if (!tracer || !lock_tracer)
2060 tracer = parent;
2061
2062 p_sighand = rcu_dereference(parent->sighand);
2063 t_sighand = rcu_dereference(tracer->sighand);
2064
2065 /* Sort the sighands so that s1 >= s2 >= s3 */
2066 s1 = m_sighand;
2067 s2 = p_sighand;
2068 s3 = t_sighand;
2069 if (s1 > s2)
2070 swap(s1, s2);
2071 if (s1 > s3)
2072 swap(s1, s3);
2073 if (s2 > s3)
2074 swap(s2, s3);
2075
2076 /* Take the locks in order */
2077 if (s1 != m_sighand) {
2078 spin_unlock(&m_sighand->siglock);
2079 spin_lock(&s1->siglock);
2080 }
2081 if (s1 != s2)
2082 spin_lock_nested(&s2->siglock, 1);
2083 if (s2 != s3)
2084 spin_lock_nested(&s3->siglock, 2);
2085
2086 /* Verify the proper locks are held */
> 2087 if (likely((s1 == m_sighand) ||
2088 ((me->real_parent == parent) &&
2089 (me->parent == tracer) &&
2090 (parent->sighand == p_sighand) &&
2091 (tracer->sighand == t_sighand)))) {
2092 break;
2093 }
2094
2095 /* Drop all but current's siglock */
2096 if (p_sighand != m_sighand)
2097 spin_unlock(&p_sighand->siglock);
2098 if (t_sighand != p_sighand)
2099 spin_unlock(&t_sighand->siglock);
2100
2101 /*
2102 * Since [pt]_sighand will likely change if we go
2103 * around, and m_sighand is the only one held, make sure
2104 * it is subclass-0, since the above 's1 != m_sighand'
2105 * clause very much relies on that.
2106 */
2107 lock_set_subclass(&m_sighand->siglock.dep_map, 0, _RET_IP_);
2108 }
2109 rcu_read_unlock();
2110 }
2111
2112 static void unlock_parents_siglocks(bool unlock_tracer)
2113 __releases(¤t->real_parent->sighand->siglock)
2114 __releases(¤t->parent->sighand->siglock)
2115 {
2116 struct task_struct *me = current;
> 2117 struct task_struct *parent = me->real_parent;
2118 struct task_struct *tracer = ptrace_parent(me);
2119 struct sighand_struct *m_sighand = me->sighand;
> 2120 struct sighand_struct *p_sighand = parent->sighand;
2121
2122 if (p_sighand != m_sighand)
2123 spin_unlock(&p_sighand->siglock);
2124 if (tracer && unlock_tracer) {
> 2125 struct sighand_struct *t_sighand = tracer->sighand;
2126 if (t_sighand != p_sighand)
2127 spin_unlock(&t_sighand->siglock);
2128 }
2129 }
2130
--
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um
next prev parent reply other threads:[~2022-05-20 16:19 UTC|newest]
Thread overview: 572+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-21 15:02 [PATCH v2 0/5] ptrace-vs-PREEMPT_RT and freezer rewrite Peter Zijlstra
2022-04-21 15:02 ` [PATCH v2 1/5] sched,signal,ptrace: Rework TASK_TRACED, TASK_STOPPED state Peter Zijlstra
2022-04-26 23:34 ` Eric W. Biederman
2022-04-28 10:00 ` Peter Zijlstra
2022-04-21 15:02 ` [PATCH v2 2/5] sched,ptrace: Fix ptrace_check_attach() vs PREEMPT_RT Peter Zijlstra
2022-04-21 18:23 ` Oleg Nesterov
2022-04-21 19:58 ` Peter Zijlstra
2022-04-21 18:40 ` Eric W. Biederman
2022-04-26 22:50 ` [PATCH 0/9] ptrace: cleaning up ptrace_stop Eric W. Biederman
2022-04-26 22:50 ` Eric W. Biederman
2022-04-26 22:52 ` [PATCH 1/9] signal: Rename send_signal send_signal_locked Eric W. Biederman
2022-04-26 22:52 ` Eric W. Biederman
2022-04-28 10:27 ` Peter Zijlstra
2022-04-28 10:27 ` Peter Zijlstra
2022-04-26 22:52 ` [PATCH 2/9] signal: Replace __group_send_sig_info with send_signal_locked Eric W. Biederman
2022-04-26 22:52 ` Eric W. Biederman
2022-04-26 22:52 ` [PATCH 3/9] ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP Eric W. Biederman
2022-04-26 22:52 ` Eric W. Biederman
2022-04-27 7:10 ` Johannes Berg
2022-04-27 7:10 ` Johannes Berg
2022-04-27 13:50 ` Eric W. Biederman
2022-04-27 13:50 ` Eric W. Biederman
2022-04-26 22:52 ` [PATCH 4/9] ptrace/xtensa: Replace PT_SINGLESTEP " Eric W. Biederman
2022-04-26 22:52 ` Eric W. Biederman
2022-04-26 23:33 ` Max Filippov
2022-04-26 23:33 ` Max Filippov
2022-04-26 22:52 ` [PATCH 5/9] signal: Protect parent child relationships by childs siglock Eric W. Biederman
2022-04-26 22:52 ` Eric W. Biederman
2022-04-27 6:40 ` Sebastian Andrzej Siewior
2022-04-27 6:40 ` Sebastian Andrzej Siewior
2022-04-27 13:35 ` Eric W. Biederman
2022-04-27 13:35 ` Eric W. Biederman
2022-04-26 22:52 ` [PATCH 6/9] signal: Always call do_notify_parent_cldstop with siglock held Eric W. Biederman
2022-04-26 22:52 ` Eric W. Biederman
2022-04-27 14:10 ` Oleg Nesterov
2022-04-27 14:10 ` Oleg Nesterov
2022-04-27 14:20 ` Eric W. Biederman
2022-04-27 14:20 ` Eric W. Biederman
2022-04-27 14:43 ` Oleg Nesterov
2022-04-27 14:43 ` Oleg Nesterov
2022-04-27 14:47 ` Eric W. Biederman
2022-04-27 14:47 ` Eric W. Biederman
2022-04-28 17:44 ` Peter Zijlstra
2022-04-28 17:44 ` Peter Zijlstra
2022-04-28 18:22 ` Oleg Nesterov
2022-04-28 18:22 ` Oleg Nesterov
2022-04-28 18:37 ` Eric W. Biederman
2022-04-28 18:37 ` Eric W. Biederman
2022-04-28 20:49 ` Eric W. Biederman
2022-04-28 20:49 ` Eric W. Biederman
2022-04-28 22:19 ` Peter Zijlstra
2022-04-28 22:19 ` Peter Zijlstra
2022-04-27 14:56 ` Oleg Nesterov
2022-04-27 14:56 ` Oleg Nesterov
2022-04-27 15:00 ` Oleg Nesterov
2022-04-27 15:00 ` Oleg Nesterov
2022-04-27 21:52 ` Eric W. Biederman
2022-04-27 21:52 ` Eric W. Biederman
2022-04-28 10:38 ` Peter Zijlstra
2022-04-28 10:38 ` Peter Zijlstra
2022-04-26 22:52 ` [PATCH 7/9] ptrace: Simplify the wait_task_inactive call in ptrace_check_attach Eric W. Biederman
2022-04-26 22:52 ` Eric W. Biederman
2022-04-27 13:42 ` Eric W. Biederman
2022-04-27 13:42 ` Eric W. Biederman
2022-04-27 14:27 ` Eric W. Biederman
2022-04-27 14:27 ` Eric W. Biederman
2022-04-27 15:14 ` Oleg Nesterov
2022-04-27 15:14 ` Oleg Nesterov
2022-04-28 10:42 ` Peter Zijlstra
2022-04-28 10:42 ` Peter Zijlstra
2022-04-28 11:19 ` Oleg Nesterov
2022-04-28 11:19 ` Oleg Nesterov
2022-04-28 13:54 ` Peter Zijlstra
2022-04-28 13:54 ` Peter Zijlstra
2022-04-28 14:57 ` Oleg Nesterov
2022-04-28 14:57 ` Oleg Nesterov
2022-04-28 16:09 ` Peter Zijlstra
2022-04-28 16:09 ` Peter Zijlstra
2022-04-28 16:19 ` Oleg Nesterov
2022-04-28 16:19 ` Oleg Nesterov
2022-04-26 22:52 ` [PATCH 8/9] ptrace: Use siglock instead of tasklist_lock " Eric W. Biederman
2022-04-26 22:52 ` Eric W. Biederman
2022-04-27 15:20 ` Oleg Nesterov
2022-04-27 15:20 ` Oleg Nesterov
2022-04-26 22:52 ` [PATCH 9/9] ptrace: Don't change __state Eric W. Biederman
2022-04-26 22:52 ` Eric W. Biederman
2022-04-27 15:41 ` Oleg Nesterov
2022-04-27 15:41 ` Oleg Nesterov
2022-04-27 22:35 ` Eric W. Biederman
2022-04-27 22:35 ` Eric W. Biederman
2022-04-27 16:09 ` Oleg Nesterov
2022-04-27 16:33 ` Eric W. Biederman
2022-04-27 17:18 ` Oleg Nesterov
2022-04-27 17:18 ` Oleg Nesterov
2022-04-27 17:21 ` Oleg Nesterov
2022-04-27 17:21 ` Oleg Nesterov
2022-04-27 17:31 ` Eric W. Biederman
2022-04-27 17:31 ` Eric W. Biederman
2022-04-27 23:05 ` Eric W. Biederman
2022-04-27 23:05 ` Eric W. Biederman
2022-04-28 15:11 ` Oleg Nesterov
2022-04-28 15:11 ` Oleg Nesterov
2022-04-28 16:50 ` Eric W. Biederman
2022-04-28 16:50 ` Eric W. Biederman
2022-04-28 18:53 ` Oleg Nesterov
2022-04-28 18:53 ` Oleg Nesterov
2022-04-28 10:07 ` [PATCH 0/9] ptrace: cleaning up ptrace_stop Peter Zijlstra
2022-04-28 10:07 ` Peter Zijlstra
2022-04-29 21:46 ` [PATCH 0/12] " Eric W. Biederman
2022-04-29 21:46 ` Eric W. Biederman
2022-04-29 21:46 ` Eric W. Biederman
2022-04-29 21:48 ` [PATCH v2 01/12] signal: Rename send_signal send_signal_locked Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-05-02 7:50 ` Sebastian Andrzej Siewior
2022-05-02 7:50 ` Sebastian Andrzej Siewior
2022-05-02 7:50 ` Sebastian Andrzej Siewior
2022-04-29 21:48 ` [PATCH v2 02/12] signal: Replace __group_send_sig_info with send_signal_locked Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-05-02 7:58 ` Sebastian Andrzej Siewior
2022-05-02 7:58 ` Sebastian Andrzej Siewior
2022-05-02 7:58 ` Sebastian Andrzej Siewior
2022-04-29 21:48 ` [PATCH v2 03/12] ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` [PATCH v2 04/12] ptrace/xtensa: Replace PT_SINGLESTEP " Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` [PATCH v2 05/12] signal: Use lockdep_assert_held instead of assert_spin_locked Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` [PATCH v2 06/12] ptrace: Reimplement PTRACE_KILL by always sending SIGKILL Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-05-02 14:37 ` Oleg Nesterov
2022-05-02 14:37 ` Oleg Nesterov
2022-05-02 14:37 ` Oleg Nesterov
2022-05-03 19:36 ` Eric W. Biederman
2022-05-03 19:36 ` Eric W. Biederman
2022-05-03 19:36 ` Eric W. Biederman
2022-04-29 21:48 ` [PATCH v2 07/12] ptrace: Don't change __state Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 22:27 ` Peter Zijlstra
2022-04-29 22:27 ` Peter Zijlstra
2022-04-29 22:27 ` Peter Zijlstra
2022-05-02 8:59 ` Sebastian Andrzej Siewior
2022-05-02 8:59 ` Sebastian Andrzej Siewior
2022-05-02 8:59 ` Sebastian Andrzej Siewior
2022-05-02 15:39 ` Oleg Nesterov
2022-05-02 15:39 ` Oleg Nesterov
2022-05-02 15:39 ` Oleg Nesterov
2022-05-02 16:35 ` Eric W. Biederman
2022-05-02 16:35 ` Eric W. Biederman
2022-05-02 16:35 ` Eric W. Biederman
2022-05-03 13:41 ` Oleg Nesterov
2022-05-03 13:41 ` Oleg Nesterov
2022-05-03 13:41 ` Oleg Nesterov
2022-05-03 20:45 ` Eric W. Biederman
2022-05-03 20:45 ` Eric W. Biederman
2022-05-03 20:45 ` Eric W. Biederman
2022-05-04 14:02 ` Oleg Nesterov
2022-05-04 14:02 ` Oleg Nesterov
2022-05-04 14:02 ` Oleg Nesterov
2022-05-04 17:37 ` Eric W. Biederman
2022-05-04 17:37 ` Eric W. Biederman
2022-05-04 17:37 ` Eric W. Biederman
2022-05-04 18:28 ` Eric W. Biederman
2022-05-04 18:28 ` Eric W. Biederman
2022-05-04 18:28 ` Eric W. Biederman
2022-05-02 15:47 ` Oleg Nesterov
2022-05-02 15:47 ` Oleg Nesterov
2022-05-02 15:47 ` Oleg Nesterov
2022-04-29 21:48 ` [PATCH v2 08/12] ptrace: Remove arch_ptrace_attach Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` [PATCH v2 09/12] ptrace: Always take siglock in ptrace_resume Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` [PATCH v2 10/12] ptrace: Only return signr from ptrace_stop if it was provided Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-05-02 10:08 ` Sebastian Andrzej Siewior
2022-05-02 10:08 ` Sebastian Andrzej Siewior
2022-05-02 10:08 ` Sebastian Andrzej Siewior
2022-04-29 21:48 ` [PATCH v2 11/12] ptrace: Always call schedule in ptrace_stop Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` Eric W. Biederman
2022-04-29 21:48 ` [PATCH v2 12/12] sched,signal,ptrace: Rework TASK_TRACED, TASK_STOPPED state Eric W. Biederman
2022-04-29 21:48 ` [PATCH v2 12/12] sched, signal, ptrace: " Eric W. Biederman
2022-04-29 21:48 ` [PATCH v2 12/12] sched,signal,ptrace: " Eric W. Biederman
2022-05-02 10:18 ` Sebastian Andrzej Siewior
2022-05-02 10:18 ` Sebastian Andrzej Siewior
2022-05-02 10:18 ` Sebastian Andrzej Siewior
2022-05-02 13:38 ` [PATCH 0/12] ptrace: cleaning up ptrace_stop Sebastian Andrzej Siewior
2022-05-02 13:38 ` Sebastian Andrzej Siewior
2022-05-02 13:38 ` Sebastian Andrzej Siewior
2022-05-04 22:39 ` [PATCH v3 0/11] " Eric W. Biederman
2022-05-04 22:39 ` Eric W. Biederman
2022-05-04 22:39 ` Eric W. Biederman
2022-05-04 22:40 ` [PATCH v3 01/11] signal: Rename send_signal send_signal_locked Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` [PATCH v3 02/11] signal: Replace __group_send_sig_info with send_signal_locked Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` [PATCH v3 03/11] ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` [PATCH v3 04/11] ptrace/xtensa: Replace PT_SINGLESTEP " Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` [PATCH v3 05/11] ptrace: Remove arch_ptrace_attach Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` [PATCH v3 06/11] signal: Use lockdep_assert_held instead of assert_spin_locked Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` [PATCH v3 07/11] ptrace: Reimplement PTRACE_KILL by always sending SIGKILL Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` [PATCH v3 08/11] ptrace: Admit ptrace_stop can generate spuriuos SIGTRAPs Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-05 14:57 ` Oleg Nesterov
2022-05-05 14:57 ` Oleg Nesterov
2022-05-05 14:57 ` Oleg Nesterov
2022-05-05 16:59 ` Eric W. Biederman
2022-05-05 16:59 ` Eric W. Biederman
2022-05-05 16:59 ` Eric W. Biederman
2022-05-05 15:01 ` Oleg Nesterov
2022-05-05 15:01 ` Oleg Nesterov
2022-05-05 15:01 ` Oleg Nesterov
2022-05-05 17:21 ` Eric W. Biederman
2022-05-05 17:21 ` Eric W. Biederman
2022-05-05 17:21 ` Eric W. Biederman
2022-05-05 17:27 ` Oleg Nesterov
2022-05-05 17:27 ` Oleg Nesterov
2022-05-05 17:27 ` Oleg Nesterov
2022-05-05 15:28 ` Oleg Nesterov
2022-05-05 15:28 ` Oleg Nesterov
2022-05-05 15:28 ` Oleg Nesterov
2022-05-05 17:53 ` Eric W. Biederman
2022-05-05 17:53 ` Eric W. Biederman
2022-05-05 17:53 ` Eric W. Biederman
2022-05-05 18:10 ` Oleg Nesterov
2022-05-05 18:10 ` Oleg Nesterov
2022-05-05 18:10 ` Oleg Nesterov
2022-05-04 22:40 ` [PATCH v3 09/11] ptrace: Don't change __state Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-05 12:50 ` Sebastian Andrzej Siewior
2022-05-05 12:50 ` Sebastian Andrzej Siewior
2022-05-05 12:50 ` Sebastian Andrzej Siewior
2022-05-05 16:48 ` Eric W. Biederman
2022-05-05 16:48 ` Eric W. Biederman
2022-05-05 16:48 ` Eric W. Biederman
2022-05-04 22:40 ` [PATCH v3 10/11] ptrace: Always take siglock in ptrace_resume Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` Eric W. Biederman
2022-05-04 22:40 ` [PATCH v3 11/11] sched,signal,ptrace: Rework TASK_TRACED, TASK_STOPPED state Eric W. Biederman
2022-05-04 22:40 ` [PATCH v3 11/11] sched, signal, ptrace: " Eric W. Biederman
2022-05-04 22:40 ` [PATCH v3 11/11] sched,signal,ptrace: " Eric W. Biederman
2022-05-05 18:25 ` [PATCH v4 0/12] ptrace: cleaning up ptrace_stop Eric W. Biederman
2022-05-05 18:25 ` Eric W. Biederman
2022-05-05 18:25 ` Eric W. Biederman
2022-05-05 18:26 ` [PATCH v4 01/12] signal: Rename send_signal send_signal_locked Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` [PATCH v4 02/12] signal: Replace __group_send_sig_info with send_signal_locked Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` [PATCH v4 03/12] ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` [PATCH v4 04/12] ptrace/xtensa: Replace PT_SINGLESTEP " Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` [PATCH v4 05/12] ptrace: Remove arch_ptrace_attach Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` [PATCH v4 06/12] signal: Use lockdep_assert_held instead of assert_spin_locked Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` [PATCH v4 07/12] ptrace: Reimplement PTRACE_KILL by always sending SIGKILL Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` [PATCH v4 08/12] ptrace: Document that wait_task_inactive can't fail Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-06 6:55 ` Sebastian Andrzej Siewior
2022-05-06 6:55 ` Sebastian Andrzej Siewior
2022-05-06 6:55 ` Sebastian Andrzej Siewior
2022-05-05 18:26 ` [PATCH v4 09/12] ptrace: Admit ptrace_stop can generate spuriuos SIGTRAPs Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` [PATCH v4 10/12] ptrace: Don't change __state Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-06 15:09 ` Oleg Nesterov
2022-05-06 15:09 ` Oleg Nesterov
2022-05-06 15:09 ` Oleg Nesterov
2022-05-06 19:42 ` Eric W. Biederman
2022-05-06 19:42 ` Eric W. Biederman
2022-05-06 19:42 ` Eric W. Biederman
2022-05-10 14:23 ` Oleg Nesterov
2022-05-10 14:23 ` Oleg Nesterov
2022-05-10 14:23 ` Oleg Nesterov
2022-05-10 15:17 ` Eric W. Biederman
2022-05-10 15:17 ` Eric W. Biederman
2022-05-10 15:17 ` Eric W. Biederman
2022-05-10 15:34 ` Oleg Nesterov
2022-05-10 15:34 ` Oleg Nesterov
2022-05-10 15:34 ` Oleg Nesterov
2022-05-05 18:26 ` [PATCH v4 11/12] ptrace: Always take siglock in ptrace_resume Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` Eric W. Biederman
2022-05-05 18:26 ` [PATCH v4 12/12] sched,signal,ptrace: Rework TASK_TRACED, TASK_STOPPED state Eric W. Biederman
2022-05-05 18:26 ` [PATCH v4 12/12] sched, signal, ptrace: " Eric W. Biederman
2022-05-05 18:26 ` [PATCH v4 12/12] sched,signal,ptrace: " Eric W. Biederman
2022-06-21 13:00 ` Alexander Gordeev
2022-06-21 13:00 ` Alexander Gordeev
2022-06-21 13:00 ` Alexander Gordeev
2022-06-21 14:02 ` Eric W. Biederman
2022-06-21 14:02 ` Eric W. Biederman
2022-06-21 15:15 ` Alexander Gordeev
2022-06-21 15:15 ` Alexander Gordeev
2022-06-21 15:15 ` Alexander Gordeev
2022-06-21 17:47 ` Eric W. Biederman
2022-06-21 17:47 ` Eric W. Biederman
2022-06-21 17:47 ` Eric W. Biederman
2022-06-25 16:34 ` Eric W. Biederman
2022-06-25 16:34 ` Eric W. Biederman
2022-06-25 16:34 ` Eric W. Biederman
2022-06-28 18:36 ` Alexander Gordeev
2022-06-28 18:36 ` Alexander Gordeev
2022-06-28 18:36 ` Alexander Gordeev
2022-06-28 22:42 ` Eric W. Biederman
2022-06-28 22:42 ` Eric W. Biederman
2022-06-28 22:48 ` Steven Rostedt
2022-06-28 22:48 ` Steven Rostedt
2022-06-29 3:39 ` Eric W. Biederman
2022-06-29 3:39 ` Eric W. Biederman
2022-06-29 3:39 ` Eric W. Biederman
2022-06-29 20:25 ` Alexander Gordeev
2022-06-29 20:25 ` Alexander Gordeev
2022-06-29 20:25 ` Alexander Gordeev
2022-07-05 15:44 ` Peter Zijlstra
2022-07-05 15:44 ` Peter Zijlstra
2022-07-05 15:44 ` Peter Zijlstra
2022-07-06 6:56 ` Alexander Gordeev
2022-07-06 6:56 ` Alexander Gordeev
2022-07-06 6:56 ` Alexander Gordeev
2022-06-28 23:15 ` Steven Rostedt
2022-06-28 23:15 ` Steven Rostedt
2022-06-28 23:15 ` Steven Rostedt
2022-07-05 13:47 ` Sven Schnelle
2022-07-05 13:47 ` Sven Schnelle
2022-07-05 13:47 ` Sven Schnelle
2022-07-05 17:28 ` Sven Schnelle
2022-07-05 17:28 ` Sven Schnelle
2022-07-05 17:28 ` Sven Schnelle
2022-07-05 19:25 ` Peter Zijlstra
2022-07-05 19:25 ` Peter Zijlstra
2022-07-05 19:25 ` Peter Zijlstra
2022-07-06 7:58 ` Sven Schnelle
2022-07-06 7:58 ` Sven Schnelle
2022-07-06 7:58 ` Sven Schnelle
2022-07-06 8:59 ` Peter Zijlstra
2022-07-06 8:59 ` Peter Zijlstra
2022-07-06 8:59 ` Peter Zijlstra
2022-07-06 9:27 ` Sven Schnelle
2022-07-06 9:27 ` Sven Schnelle
2022-07-06 9:27 ` Sven Schnelle
2022-07-06 10:11 ` Peter Zijlstra
2022-07-06 10:11 ` Peter Zijlstra
2022-05-06 14:14 ` [PATCH v4 0/12] ptrace: cleaning up ptrace_stop Oleg Nesterov
2022-05-06 14:14 ` Oleg Nesterov
2022-05-06 14:14 ` Oleg Nesterov
2022-05-06 14:38 ` Eric W. Biederman
2022-05-06 14:38 ` Eric W. Biederman
2022-05-06 14:38 ` Eric W. Biederman
2022-05-06 21:26 ` Kees Cook
2022-05-06 21:26 ` Kees Cook
2022-05-06 21:59 ` Eric W. Biederman
2022-05-06 21:59 ` Eric W. Biederman
2022-05-06 21:59 ` Eric W. Biederman
2022-05-10 14:11 ` Oleg Nesterov
2022-05-10 14:11 ` Oleg Nesterov
2022-05-10 14:11 ` Oleg Nesterov
2022-05-10 14:26 ` Eric W. Biederman
2022-05-10 14:26 ` Eric W. Biederman
2022-05-10 14:26 ` Eric W. Biederman
2022-05-10 14:45 ` Sebastian Andrzej Siewior
2022-05-10 14:45 ` Sebastian Andrzej Siewior
2022-05-10 14:45 ` Sebastian Andrzej Siewior
2022-05-10 15:18 ` Eric W. Biederman
2022-05-10 15:18 ` Eric W. Biederman
2022-05-10 15:18 ` Eric W. Biederman
2022-05-11 20:00 ` Eric W. Biederman
2022-05-11 20:00 ` Eric W. Biederman
2022-05-11 20:00 ` Eric W. Biederman
2022-05-18 22:49 ` [PATCH 00/16] ptrace: cleanups and calling do_cldstop with only siglock Eric W. Biederman
2022-05-18 22:49 ` Eric W. Biederman
2022-05-18 22:49 ` Eric W. Biederman
2022-05-18 22:53 ` [PATCH 01/16] signal/alpha: Remove unused definition of TASK_REAL_PARENT Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` [PATCH 02/16] signal/ia64: Remove unused definition of IA64_TASK_REAL_PARENT_OFFSET Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` [PATCH 03/16] kdb: Use real_parent when displaying a list of processes Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-19 7:56 ` Peter Zijlstra
2022-05-19 7:56 ` Peter Zijlstra
2022-05-19 7:56 ` Peter Zijlstra
2022-05-19 18:06 ` Eric W. Biederman
2022-05-19 18:06 ` Eric W. Biederman
2022-05-19 18:06 ` Eric W. Biederman
2022-05-19 20:52 ` Doug Anderson
2022-05-19 20:52 ` Doug Anderson
2022-05-19 20:52 ` Doug Anderson
2022-05-19 23:48 ` Eric W. Biederman
2022-05-19 23:48 ` Eric W. Biederman
2022-05-19 23:48 ` Eric W. Biederman
2022-05-20 23:01 ` Doug Anderson
2022-05-20 23:01 ` Doug Anderson
2022-05-20 23:01 ` Doug Anderson
2022-05-18 22:53 ` [PATCH 04/16] powerpc/xmon: " Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` [PATCH 05/16] ptrace: Remove dead code from __ptrace_detach Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-24 11:42 ` Oleg Nesterov
2022-05-24 11:42 ` Oleg Nesterov
2022-05-24 11:42 ` Oleg Nesterov
2022-05-25 14:33 ` Oleg Nesterov
2022-05-25 14:33 ` Oleg Nesterov
2022-05-25 14:33 ` Oleg Nesterov
2022-06-06 16:06 ` Eric W. Biederman
2022-06-06 16:06 ` Eric W. Biederman
2022-06-06 16:06 ` Eric W. Biederman
2022-05-18 22:53 ` [PATCH 06/16] ptrace: Remove unnecessary locking in ptrace_(get|set)siginfo Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-24 13:25 ` Oleg Nesterov
2022-05-24 13:25 ` Oleg Nesterov
2022-05-24 13:25 ` Oleg Nesterov
2022-05-18 22:53 ` [PATCH 07/16] signal: Wake up the designated parent Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-24 13:25 ` Oleg Nesterov
2022-05-24 13:25 ` Oleg Nesterov
2022-05-24 13:25 ` Oleg Nesterov
2022-05-24 16:28 ` Oleg Nesterov
2022-05-24 16:28 ` Oleg Nesterov
2022-05-24 16:28 ` Oleg Nesterov
2022-05-25 14:28 ` Oleg Nesterov
2022-05-25 14:28 ` Oleg Nesterov
2022-05-25 14:28 ` Oleg Nesterov
2022-06-06 22:10 ` Eric W. Biederman
2022-06-06 22:10 ` Eric W. Biederman
2022-06-06 22:10 ` Eric W. Biederman
2022-06-07 15:26 ` Oleg Nesterov
2022-06-07 15:26 ` Oleg Nesterov
2022-06-07 15:26 ` Oleg Nesterov
2022-05-18 22:53 ` [PATCH 08/16] ptrace: Only populate last_siginfo from ptrace Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-24 15:27 ` Oleg Nesterov
2022-05-24 15:27 ` Oleg Nesterov
2022-05-24 15:27 ` Oleg Nesterov
2022-06-06 22:16 ` Eric W. Biederman
2022-06-06 22:16 ` Eric W. Biederman
2022-06-06 22:16 ` Eric W. Biederman
2022-06-07 15:29 ` Oleg Nesterov
2022-06-07 15:29 ` Oleg Nesterov
2022-06-07 15:29 ` Oleg Nesterov
2022-05-18 22:53 ` [PATCH 09/16] ptrace: In ptrace_setsiginfo deal with invalid si_signo Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` [PATCH 10/16] ptrace: In ptrace_signal look at what the debugger did with siginfo Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` [PATCH 11/16] ptrace: Use si_sino as the signal number to resume with Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` [PATCH 12/16] ptrace: Stop protecting ptrace_set_signr with tasklist_lock Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` [PATCH 13/16] ptrace: Document why ptrace_setoptions does not need a lock Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` [PATCH 14/16] signal: Protect parent child relationships by childs siglock Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` [PATCH 15/16] ptrace: Use siglock instead of tasklist_lock in ptrace_check_attach Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` [PATCH 16/16] signal: Always call do_notify_parent_cldstop with siglock held Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-18 22:53 ` Eric W. Biederman
2022-05-20 16:19 ` kernel test robot [this message]
2022-05-20 16:19 ` kernel test robot
2022-05-20 16:19 ` kernel test robot
[not found] ` <CALWUPBdFDLuT7JaNGSJ_UXbHf8y9uKdC-SkAqzd=FQC0MX4nNQ@mail.gmail.com>
2022-05-19 6:19 ` [PATCH 00/16] ptrace: cleanups and calling do_cldstop with only siglock Sebastian Andrzej Siewior
2022-05-19 6:19 ` Sebastian Andrzej Siewior
2022-05-19 6:19 ` Sebastian Andrzej Siewior
2022-05-19 18:05 ` Eric W. Biederman
2022-05-19 18:05 ` Eric W. Biederman
2022-05-19 18:05 ` Eric W. Biederman
2022-05-20 5:24 ` Kyle Huey
2022-05-20 5:24 ` Kyle Huey
2022-05-20 5:24 ` Kyle Huey
2022-06-06 16:12 ` Eric W. Biederman
2022-06-06 16:12 ` Eric W. Biederman
2022-06-09 19:59 ` Kyle Huey
2022-06-09 19:59 ` Kyle Huey
2022-06-09 19:59 ` Kyle Huey
2022-05-20 7:33 ` Sebastian Andrzej Siewior
2022-05-20 7:33 ` Sebastian Andrzej Siewior
2022-05-20 7:33 ` Sebastian Andrzej Siewior
2022-05-20 19:32 ` Eric W. Biederman
2022-05-20 19:32 ` Eric W. Biederman
2022-05-20 19:32 ` Eric W. Biederman
2022-05-20 19:58 ` Peter Zijlstra
2022-05-20 19:58 ` Peter Zijlstra
2022-05-20 19:58 ` Peter Zijlstra
2022-05-20 9:19 ` Sebastian Andrzej Siewior
2022-05-20 9:19 ` Sebastian Andrzej Siewior
2022-05-20 9:19 ` Sebastian Andrzej Siewior
2022-06-22 16:43 ` [PATCH 0/3] ptrace: Stop supporting SIGKILL for PTRACE_EVENT_EXIT Eric W. Biederman
2022-06-22 16:45 ` [PATCH 1/3] signal: Ensure SIGNAL_GROUP_EXIT gets set in do_group_exit Eric W. Biederman
2022-06-22 16:46 ` [PATCH 2/3] signal: Guarantee that SIGNAL_GROUP_EXIT is set on process exit Eric W. Biederman
2022-06-23 7:49 ` kernel test robot
2022-06-22 16:47 ` [PATCH 3/3] signal: Drop signals received after a fatal signal has been processed Eric W. Biederman
2022-06-23 15:12 ` [PATCH 0/3] ptrace: Stop supporting SIGKILL for PTRACE_EVENT_EXIT Alexander Gordeev
2022-06-23 21:55 ` Eric W. Biederman
2022-07-08 22:25 ` Eric W. Biederman
2022-07-08 23:22 ` Keno Fischer
2022-07-12 20:03 ` Eric W. Biederman
2022-07-16 21:29 ` Eric W. Biederman
2022-07-16 23:21 ` Kyle Huey
2022-04-25 14:35 ` [PATCH v2 2/5] sched,ptrace: Fix ptrace_check_attach() vs PREEMPT_RT Oleg Nesterov
2022-04-25 18:33 ` Peter Zijlstra
2022-04-26 0:38 ` Eric W. Biederman
2022-04-26 5:51 ` Oleg Nesterov
2022-04-26 17:19 ` Eric W. Biederman
2022-04-26 18:11 ` Oleg Nesterov
2022-04-25 17:47 ` Oleg Nesterov
2022-04-27 0:24 ` Eric W. Biederman
2022-04-28 20:29 ` Peter Zijlstra
2022-04-28 20:59 ` Oleg Nesterov
2022-04-28 22:21 ` Peter Zijlstra
2022-04-28 22:50 ` Oleg Nesterov
2022-04-27 15:53 ` Oleg Nesterov
2022-04-27 21:57 ` Eric W. Biederman
2022-04-21 15:02 ` [PATCH v2 3/5] freezer: Have {,un}lock_system_sleep() save/restore flags Peter Zijlstra
2022-04-21 15:02 ` [PATCH v2 4/5] freezer,umh: Clean up freezer/initrd interaction Peter Zijlstra
2022-04-21 15:02 ` [PATCH v2 5/5] freezer,sched: Rewrite core freezer logic Peter Zijlstra
2022-04-21 17:26 ` Eric W. Biederman
2022-04-21 17:57 ` Oleg Nesterov
2022-04-21 19:55 ` Peter Zijlstra
2022-04-21 20:07 ` Peter Zijlstra
2022-04-22 15:52 ` Eric W. Biederman
2022-04-22 17:43 ` [PATCH v2 0/5] ptrace-vs-PREEMPT_RT and freezer rewrite Sebastian Andrzej Siewior
2022-04-22 19:15 ` Eric W. Biederman
2022-04-22 21:13 ` Sebastian Andrzej Siewior
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202205210010.E4Hyn2kD-lkp@intel.com \
--to=lkp@intel.com \
--cc=anton.ivanov@cambridgegreys.com \
--cc=bigeasy@linutronix.de \
--cc=chris@zankel.net \
--cc=daniel.thompson@linaro.org \
--cc=dietmar.eggemann@arm.com \
--cc=ebiederm@xmission.com \
--cc=ink@jurassic.park.msu.ru \
--cc=jannh@google.com \
--cc=jason.wessel@windriver.com \
--cc=jcmvbkbc@gmail.com \
--cc=johannes@sipsolutions.net \
--cc=kbuild-all@lists.01.org \
--cc=keescook@chromium.org \
--cc=khuey@pernos.co \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-um@lists.infradead.org \
--cc=linux-xtensa@linux-xtensa.org \
--cc=mattst88@gmail.com \
--cc=mgorman@suse.de \
--cc=mingo@kernel.org \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=richard@nod.at \
--cc=rjw@rjwysocki.net \
--cc=roc@pernos.co \
--cc=rostedt@goodmis.org \
--cc=rth@twiddle.net \
--cc=tj@kernel.org \
--cc=vincent.guittot@linaro.org \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.