lkml.org 
[lkml]   [2014]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 3/7] pid: use the CONST_CAST macro instead to write to const task_struct::pid
Date
The CONST_CAST macro is a cleaner and more reliable way to write to the const
task_struct::pid.

Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
---
fs/exec.c | 4 +---
kernel/fork.c | 5 +----
2 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/fs/exec.c b/fs/exec.c
index a6b585e..1d2369d 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -906,8 +906,6 @@ static int de_thread(struct task_struct *tsk)
*/
if (!thread_group_leader(tsk)) {
struct task_struct *leader = tsk->group_leader;
- /* tast_struct::pid is const pid_t, hence the ugly cast */
- pid_t *pid_p = (pid_t*)&(tsk->pid);

sig->notify_count = -1; /* for exit_notify() */
for (;;) {
@@ -950,7 +948,7 @@ static int de_thread(struct task_struct *tsk)
* Note: The old leader also uses this pid until release_task
* is called. Odd but simple and correct.
*/
- *pid_p = leader->pid;
+ CONST_CAST(pid_t, tsk->pid) = leader->pid;
change_pid(tsk, PIDTYPE_PID, task_pid(leader));
transfer_pid(leader, tsk, PIDTYPE_PGID);
transfer_pid(leader, tsk, PIDTYPE_SID);
diff --git a/kernel/fork.c b/kernel/fork.c
index 296e564..207c543 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1135,7 +1135,6 @@ static struct task_struct *copy_process(unsigned long clone_flags,
{
int retval;
struct task_struct *p;
- pid_t *pid_p;

if ((clone_flags & (CLONE_NEWNS|CLONE_FS)) == (CLONE_NEWNS|CLONE_FS))
return ERR_PTR(-EINVAL);
@@ -1391,9 +1390,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,

/* ok, now we should be set up.. */

- /* tast_struct::pid is const pid_t, hence the ugly cast */
- pid_p = (pid_t*)&(p->pid);
- *pid_p = pid_nr(pid);
+ CONST_CAST(pid_t, p->pid) = pid_nr(pid);
if (clone_flags & CLONE_THREAD) {
p->exit_signal = -1;
p->group_leader = current->group_leader;
--
1.7.1


\
 
 \ /
  Last update: 2014-01-23 21:21    [W:0.277 / U:1.136 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site