aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/llist.h12
-rw-r--r--lib/llist.c12
2 files changed, 4 insertions, 20 deletions
diff --git a/include/linux/llist.h b/include/linux/llist.h
index 3eccdfd66096..65fca1cbf514 100644
--- a/include/linux/llist.h
+++ b/include/linux/llist.h
@@ -35,8 +35,8 @@
35 * 35 *
36 * The basic atomic operation of this list is cmpxchg on long. On 36 * The basic atomic operation of this list is cmpxchg on long. On
37 * architectures that don't have NMI-safe cmpxchg implementation, the 37 * architectures that don't have NMI-safe cmpxchg implementation, the
38 * list can NOT be used in NMI handler. So code uses the list in NMI 38 * list can NOT be used in NMI handlers. So code that uses the list in
39 * handler should depend on CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG. 39 * an NMI handler should depend on CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG.
40 * 40 *
41 * Copyright 2010,2011 Intel Corp. 41 * Copyright 2010,2011 Intel Corp.
42 * Author: Huang Ying <ying.huang@intel.com> 42 * Author: Huang Ying <ying.huang@intel.com>
@@ -147,10 +147,6 @@ static inline void llist_add(struct llist_node *new, struct llist_head *head)
147{ 147{
148 struct llist_node *entry, *old_entry; 148 struct llist_node *entry, *old_entry;
149 149
150#ifndef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG
151 BUG_ON(in_nmi());
152#endif
153
154 entry = head->first; 150 entry = head->first;
155 do { 151 do {
156 old_entry = entry; 152 old_entry = entry;
@@ -169,10 +165,6 @@ static inline void llist_add(struct llist_node *new, struct llist_head *head)
169 */ 165 */
170static inline struct llist_node *llist_del_all(struct llist_head *head) 166static inline struct llist_node *llist_del_all(struct llist_head *head)
171{ 167{
172#ifndef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG
173 BUG_ON(in_nmi());
174#endif
175
176 return xchg(&head->first, NULL); 168 return xchg(&head->first, NULL);
177} 169}
178#endif /* LLIST_H */ 170#endif /* LLIST_H */
diff --git a/lib/llist.c b/lib/llist.c
index 3e3fa9139c41..b445f2c8596a 100644
--- a/lib/llist.c
+++ b/lib/llist.c
@@ -3,8 +3,8 @@
3 * 3 *
4 * The basic atomic operation of this list is cmpxchg on long. On 4 * The basic atomic operation of this list is cmpxchg on long. On
5 * architectures that don't have NMI-safe cmpxchg implementation, the 5 * architectures that don't have NMI-safe cmpxchg implementation, the
6 * list can NOT be used in NMI handler. So code uses the list in NMI 6 * list can NOT be used in NMI handlers. So code that uses the list in
7 * handler should depend on CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG. 7 * an NMI handler should depend on CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG.
8 * 8 *
9 * Copyright 2010,2011 Intel Corp. 9 * Copyright 2010,2011 Intel Corp.
10 * Author: Huang Ying <ying.huang@intel.com> 10 * Author: Huang Ying <ying.huang@intel.com>
@@ -40,10 +40,6 @@ void llist_add_batch(struct llist_node *new_first, struct llist_node *new_last,
40{ 40{
41 struct llist_node *entry, *old_entry; 41 struct llist_node *entry, *old_entry;
42 42
43#ifndef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG
44 BUG_ON(in_nmi());
45#endif
46
47 entry = head->first; 43 entry = head->first;
48 do { 44 do {
49 old_entry = entry; 45 old_entry = entry;
@@ -71,10 +67,6 @@ struct llist_node *llist_del_first(struct llist_head *head)
71{ 67{
72 struct llist_node *entry, *old_entry, *next; 68 struct llist_node *entry, *old_entry, *next;
73 69
74#ifndef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG
75 BUG_ON(in_nmi());
76#endif
77
78 entry = head->first; 70 entry = head->first;
79 do { 71 do {
80 if (entry == NULL) 72 if (entry == NULL)