diff options
author | Jiri Pirko <jpirko@redhat.com> | 2009-04-14 14:17:16 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-04-15 06:05:25 -0400 |
commit | 05725f7eb4b8acb147c5fc7b91397b1f6bcab00d (patch) | |
tree | 1f22c6bec3429f7ec9ebb8acd25672249e39b380 | |
parent | 72c6a9870f901045f2464c3dc6ee8914bfdc07aa (diff) |
rculist: use list_entry_rcu in places where it's appropriate
Use previously introduced list_entry_rcu instead of an open-coded
list_entry + rcu_dereference combination.
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Reviewed-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: dipankar@in.ibm.com
LKML-Reference: <20090414181715.GA3634@psychotron.englab.brq.redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r-- | include/linux/sched.h | 8 | ||||
-rw-r--r-- | ipc/sem.c | 4 | ||||
-rw-r--r-- | security/integrity/ima/ima_fs.c | 4 | ||||
-rw-r--r-- | security/smack/smackfs.c | 8 |
4 files changed, 13 insertions, 11 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index b4c38bc8049c..886df41e7452 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -77,6 +77,7 @@ struct sched_param { | |||
77 | #include <linux/proportions.h> | 77 | #include <linux/proportions.h> |
78 | #include <linux/seccomp.h> | 78 | #include <linux/seccomp.h> |
79 | #include <linux/rcupdate.h> | 79 | #include <linux/rcupdate.h> |
80 | #include <linux/rculist.h> | ||
80 | #include <linux/rtmutex.h> | 81 | #include <linux/rtmutex.h> |
81 | 82 | ||
82 | #include <linux/time.h> | 83 | #include <linux/time.h> |
@@ -2010,7 +2011,8 @@ static inline unsigned long wait_task_inactive(struct task_struct *p, | |||
2010 | } | 2011 | } |
2011 | #endif | 2012 | #endif |
2012 | 2013 | ||
2013 | #define next_task(p) list_entry(rcu_dereference((p)->tasks.next), struct task_struct, tasks) | 2014 | #define next_task(p) \ |
2015 | list_entry_rcu((p)->tasks.next, struct task_struct, tasks) | ||
2014 | 2016 | ||
2015 | #define for_each_process(p) \ | 2017 | #define for_each_process(p) \ |
2016 | for (p = &init_task ; (p = next_task(p)) != &init_task ; ) | 2018 | for (p = &init_task ; (p = next_task(p)) != &init_task ; ) |
@@ -2049,8 +2051,8 @@ int same_thread_group(struct task_struct *p1, struct task_struct *p2) | |||
2049 | 2051 | ||
2050 | static inline struct task_struct *next_thread(const struct task_struct *p) | 2052 | static inline struct task_struct *next_thread(const struct task_struct *p) |
2051 | { | 2053 | { |
2052 | return list_entry(rcu_dereference(p->thread_group.next), | 2054 | return list_entry_rcu(p->thread_group.next, |
2053 | struct task_struct, thread_group); | 2055 | struct task_struct, thread_group); |
2054 | } | 2056 | } |
2055 | 2057 | ||
2056 | static inline int thread_group_empty(struct task_struct *p) | 2058 | static inline int thread_group_empty(struct task_struct *p) |
@@ -1290,8 +1290,8 @@ void exit_sem(struct task_struct *tsk) | |||
1290 | int i; | 1290 | int i; |
1291 | 1291 | ||
1292 | rcu_read_lock(); | 1292 | rcu_read_lock(); |
1293 | un = list_entry(rcu_dereference(ulp->list_proc.next), | 1293 | un = list_entry_rcu(ulp->list_proc.next, |
1294 | struct sem_undo, list_proc); | 1294 | struct sem_undo, list_proc); |
1295 | if (&un->list_proc == &ulp->list_proc) | 1295 | if (&un->list_proc == &ulp->list_proc) |
1296 | semid = -1; | 1296 | semid = -1; |
1297 | else | 1297 | else |
diff --git a/security/integrity/ima/ima_fs.c b/security/integrity/ima/ima_fs.c index ffbe259700b1..510186f0b72e 100644 --- a/security/integrity/ima/ima_fs.c +++ b/security/integrity/ima/ima_fs.c | |||
@@ -84,8 +84,8 @@ static void *ima_measurements_next(struct seq_file *m, void *v, loff_t *pos) | |||
84 | * against concurrent list-extension | 84 | * against concurrent list-extension |
85 | */ | 85 | */ |
86 | rcu_read_lock(); | 86 | rcu_read_lock(); |
87 | qe = list_entry(rcu_dereference(qe->later.next), | 87 | qe = list_entry_rcu(qe->later.next, |
88 | struct ima_queue_entry, later); | 88 | struct ima_queue_entry, later); |
89 | rcu_read_unlock(); | 89 | rcu_read_unlock(); |
90 | (*pos)++; | 90 | (*pos)++; |
91 | 91 | ||
diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c index e03a7e19c73b..11d2cb19d7a6 100644 --- a/security/smack/smackfs.c +++ b/security/smack/smackfs.c | |||
@@ -734,8 +734,8 @@ static void smk_netlbladdr_insert(struct smk_netlbladdr *new) | |||
734 | return; | 734 | return; |
735 | } | 735 | } |
736 | 736 | ||
737 | m = list_entry(rcu_dereference(smk_netlbladdr_list.next), | 737 | m = list_entry_rcu(smk_netlbladdr_list.next, |
738 | struct smk_netlbladdr, list); | 738 | struct smk_netlbladdr, list); |
739 | 739 | ||
740 | /* the comparison '>' is a bit hacky, but works */ | 740 | /* the comparison '>' is a bit hacky, but works */ |
741 | if (new->smk_mask.s_addr > m->smk_mask.s_addr) { | 741 | if (new->smk_mask.s_addr > m->smk_mask.s_addr) { |
@@ -748,8 +748,8 @@ static void smk_netlbladdr_insert(struct smk_netlbladdr *new) | |||
748 | list_add_rcu(&new->list, &m->list); | 748 | list_add_rcu(&new->list, &m->list); |
749 | return; | 749 | return; |
750 | } | 750 | } |
751 | m_next = list_entry(rcu_dereference(m->list.next), | 751 | m_next = list_entry_rcu(m->list.next, |
752 | struct smk_netlbladdr, list); | 752 | struct smk_netlbladdr, list); |
753 | if (new->smk_mask.s_addr > m_next->smk_mask.s_addr) { | 753 | if (new->smk_mask.s_addr > m_next->smk_mask.s_addr) { |
754 | list_add_rcu(&new->list, &m->list); | 754 | list_add_rcu(&new->list, &m->list); |
755 | return; | 755 | return; |