This repository has been archived on 2026-03-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
ubports_kernel_google_msm/include/linux
Oleg Nesterov f20011457f pids: init_struct_pid.tasks should never see the swapper process
"statically initialize struct pid for swapper" commit 820e45db says:

	Statically initialize a struct pid for the swapper process (pid_t == 0)
	and attach it to init_task.  This is needed so task_pid(), task_pgrp()
	and task_session() interfaces work on the swapper process also.

OK, but:

	- it doesn't make sense to add init_task.pids[].node into
	  init_struct_pid.tasks[], and in fact this just wrong.

	  idle threads are special, they shouldn't be visible on any
	  global list. In particular do_each_pid_task(init_struct_pid)
	  shouldn't see swapper.

	  This is the actual reason why kill(0, SIGKILL) from /sbin/init
	  (which starts with 0,0 special pids) crashes the kernel. The
	  signal sent to pgid/sid == 0 must never see idle threads, even
	  if the previous patch fixed the crash itself.

	- we have other idle threads running on the non-boot CPUs, see
	  the next patch.

Change INIT_STRUCT_PID/INIT_PID_LINK to create the empty/unhashed
hlist_head/hlist_node. Like any other idle thread swapper can never exit,
so detach_pid()->__hlist_del() is not possible, but we could change
INIT_PID_LINK() to set pprev = &next if needed.

All we need is the valid swapper->pids[].pid == &init_struct_pid.

Reported-by: Mathias Krause <mathias.krause@secunet.com>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Cc: Cedric Le Goater <clg@fr.ibm.com>
Cc: Dave Hansen <haveblue@us.ibm.com>
Cc: Eric Biederman <ebiederm@xmission.com>
Cc: Herbert Poetzl <herbert@13thfloor.at>
Cc: Mathias Krause <Mathias.Krause@secunet.com>
Acked-by: Roland McGrath <roland@redhat.com>
Acked-by: Serge Hallyn <serue@us.ibm.com>
Cc: Sukadev Bhattiprolu <sukadev@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-05-27 09:12:52 -07:00
..
2010-05-17 22:39:48 -07:00
2010-05-03 08:33:00 -04:00
2010-03-12 15:53:10 -08:00
2010-05-14 17:08:01 -04:00
2010-05-19 13:38:54 -04:00
2010-03-12 15:52:32 -08:00
2010-05-10 16:08:01 -07:00
2010-05-17 16:30:58 -07:00
2010-05-21 19:30:44 +02:00
2010-04-09 08:36:07 +02:00
2010-03-16 08:55:32 +01:00
2010-05-25 08:07:01 -07:00
2010-05-27 09:12:42 -07:00
2010-05-21 09:34:29 -07:00
2010-03-07 22:17:09 +01:00
2010-03-12 15:52:36 -08:00
2010-05-11 12:01:10 -07:00
2010-03-12 15:52:40 -08:00
2010-05-11 14:40:55 +02:00
2010-05-03 11:50:57 +02:00
2010-04-23 02:08:44 +02:00
2010-05-21 09:37:29 -07:00
2010-05-14 15:09:32 -04:00
2010-05-17 12:17:10 +03:00
2010-04-03 14:56:05 -07:00
2010-03-12 15:52:28 -08:00
2010-05-11 14:40:55 +02:00
2010-04-13 14:49:34 -07:00
2010-05-17 05:27:42 +02:00
2010-05-19 13:44:27 +10:00
2010-04-02 14:30:39 -07:00
2010-05-10 23:08:19 +02:00
2010-03-12 15:53:11 -08:00
2010-05-21 19:30:44 +02:00
2010-05-03 15:53:54 -07:00
2010-03-12 15:52:44 -08:00
2010-05-27 09:12:50 -07:00
2010-05-27 09:12:51 -07:00
2010-05-11 10:09:47 +02:00
2010-03-12 15:53:10 -08:00
2010-05-06 10:56:07 +10:00
2010-03-12 15:52:44 -08:00
2010-05-17 17:18:50 -07:00
2010-04-03 15:09:04 -07:00
2010-05-10 11:08:35 -07:00
2010-05-27 09:12:43 -07:00
2010-05-15 23:28:39 -07:00
2010-03-25 17:18:43 -07:00
2010-04-13 12:43:42 +02:00
2010-03-23 17:19:38 +01:00
2010-05-12 23:02:23 -07:00
2010-05-21 09:34:29 -07:00
2010-05-19 22:15:46 +09:30
2010-04-06 20:35:58 +04:00