Commit 1ec320af authored by Cedric Le Goater's avatar Cedric Le Goater Committed by Linus Torvalds

[PATCH] add process_session() helper routine: deprecate old field

Add an anonymous union and ((deprecated)) to catch direct usage of the
session field.

[akpm@osdl.org: fix various missed conversions]
[jdike@addtoit.com: fix UML bug]
Signed-off-by: default avatarJeff Dike <jdike@addtoit.com>
Cc: Cedric Le Goater <clg@fr.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 937949d9
...@@ -3855,7 +3855,7 @@ EXPORT_SYMBOL(proc_clear_tty); ...@@ -3855,7 +3855,7 @@ EXPORT_SYMBOL(proc_clear_tty);
void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty) void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty)
{ {
if (tty) { if (tty) {
tty->session = tsk->signal->session; tty->session = process_session(tsk);
tty->pgrp = process_group(tsk); tty->pgrp = process_group(tsk);
} }
tsk->signal->tty = tty; tsk->signal->tty = tty;
......
...@@ -381,7 +381,7 @@ static int do_task_stat(struct task_struct *task, char * buffer, int whole) ...@@ -381,7 +381,7 @@ static int do_task_stat(struct task_struct *task, char * buffer, int whole)
stime = cputime_add(stime, sig->stime); stime = cputime_add(stime, sig->stime);
} }
sid = sig->session; sid = signal_session(sig);
pgid = process_group(task); pgid = process_group(task);
ppid = rcu_dereference(task->real_parent)->tgid; ppid = rcu_dereference(task->real_parent)->tgid;
......
...@@ -57,17 +57,18 @@ ...@@ -57,17 +57,18 @@
.cpu_vm_mask = CPU_MASK_ALL, \ .cpu_vm_mask = CPU_MASK_ALL, \
} }
#define INIT_SIGNALS(sig) { \ #define INIT_SIGNALS(sig) { \
.count = ATOMIC_INIT(1), \ .count = ATOMIC_INIT(1), \
.wait_chldexit = __WAIT_QUEUE_HEAD_INITIALIZER(sig.wait_chldexit),\ .wait_chldexit = __WAIT_QUEUE_HEAD_INITIALIZER(sig.wait_chldexit),\
.shared_pending = { \ .shared_pending = { \
.list = LIST_HEAD_INIT(sig.shared_pending.list), \ .list = LIST_HEAD_INIT(sig.shared_pending.list), \
.signal = {{0}}}, \ .signal = {{0}}}, \
.posix_timers = LIST_HEAD_INIT(sig.posix_timers), \ .posix_timers = LIST_HEAD_INIT(sig.posix_timers), \
.cpu_timers = INIT_CPU_TIMERS(sig.cpu_timers), \ .cpu_timers = INIT_CPU_TIMERS(sig.cpu_timers), \
.rlim = INIT_RLIMITS, \ .rlim = INIT_RLIMITS, \
.pgrp = 1, \ .pgrp = 1, \
.session = 1, \ .tty_old_pgrp = 0, \
{ .__session = 1}, \
} }
extern struct nsproxy init_nsproxy; extern struct nsproxy init_nsproxy;
......
...@@ -436,7 +436,12 @@ struct signal_struct { ...@@ -436,7 +436,12 @@ struct signal_struct {
/* job control IDs */ /* job control IDs */
pid_t pgrp; pid_t pgrp;
pid_t tty_old_pgrp; pid_t tty_old_pgrp;
pid_t session;
union {
pid_t session __deprecated;
pid_t __session;
};
/* boolean value for session group leader */ /* boolean value for session group leader */
int leader; int leader;
...@@ -1047,9 +1052,19 @@ static inline pid_t process_group(struct task_struct *tsk) ...@@ -1047,9 +1052,19 @@ static inline pid_t process_group(struct task_struct *tsk)
return tsk->signal->pgrp; return tsk->signal->pgrp;
} }
static inline pid_t signal_session(struct signal_struct *sig)
{
return sig->__session;
}
static inline pid_t process_session(struct task_struct *tsk) static inline pid_t process_session(struct task_struct *tsk)
{ {
return tsk->signal->session; return signal_session(tsk->signal);
}
static inline void set_signal_session(struct signal_struct *sig, pid_t session)
{
sig->__session = session;
} }
static inline struct pid *task_pid(struct task_struct *task) static inline struct pid *task_pid(struct task_struct *task)
......
...@@ -304,7 +304,7 @@ void __set_special_pids(pid_t session, pid_t pgrp) ...@@ -304,7 +304,7 @@ void __set_special_pids(pid_t session, pid_t pgrp)
if (process_session(curr) != session) { if (process_session(curr) != session) {
detach_pid(curr, PIDTYPE_SID); detach_pid(curr, PIDTYPE_SID);
curr->signal->session = session; set_signal_session(curr->signal, session);
attach_pid(curr, PIDTYPE_SID, session); attach_pid(curr, PIDTYPE_SID, session);
} }
if (process_group(curr) != pgrp) { if (process_group(curr) != pgrp) {
......
...@@ -1259,7 +1259,7 @@ static struct task_struct *copy_process(unsigned long clone_flags, ...@@ -1259,7 +1259,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
if (thread_group_leader(p)) { if (thread_group_leader(p)) {
p->signal->tty = current->signal->tty; p->signal->tty = current->signal->tty;
p->signal->pgrp = process_group(current); p->signal->pgrp = process_group(current);
p->signal->session = process_session(current); set_signal_session(p->signal, process_session(current));
attach_pid(p, PIDTYPE_PGID, process_group(p)); attach_pid(p, PIDTYPE_PGID, process_group(p));
attach_pid(p, PIDTYPE_SID, process_session(p)); attach_pid(p, PIDTYPE_SID, process_session(p));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment