|
|
@@ -336,8 +336,9 @@ struct klist_node *klist_prev(struct klist_iter *i)
|
|
|
void (*put)(struct klist_node *) = i->i_klist->put;
|
|
|
struct klist_node *last = i->i_cur;
|
|
|
struct klist_node *prev;
|
|
|
+ unsigned long flags;
|
|
|
|
|
|
- spin_lock(&i->i_klist->k_lock);
|
|
|
+ spin_lock_irqsave(&i->i_klist->k_lock, flags);
|
|
|
|
|
|
if (last) {
|
|
|
prev = to_klist_node(last->n_node.prev);
|
|
|
@@ -356,7 +357,7 @@ struct klist_node *klist_prev(struct klist_iter *i)
|
|
|
prev = to_klist_node(prev->n_node.prev);
|
|
|
}
|
|
|
|
|
|
- spin_unlock(&i->i_klist->k_lock);
|
|
|
+ spin_unlock_irqrestore(&i->i_klist->k_lock, flags);
|
|
|
|
|
|
if (put && last)
|
|
|
put(last);
|
|
|
@@ -377,8 +378,9 @@ struct klist_node *klist_next(struct klist_iter *i)
|
|
|
void (*put)(struct klist_node *) = i->i_klist->put;
|
|
|
struct klist_node *last = i->i_cur;
|
|
|
struct klist_node *next;
|
|
|
+ unsigned long flags;
|
|
|
|
|
|
- spin_lock(&i->i_klist->k_lock);
|
|
|
+ spin_lock_irqsave(&i->i_klist->k_lock, flags);
|
|
|
|
|
|
if (last) {
|
|
|
next = to_klist_node(last->n_node.next);
|
|
|
@@ -397,7 +399,7 @@ struct klist_node *klist_next(struct klist_iter *i)
|
|
|
next = to_klist_node(next->n_node.next);
|
|
|
}
|
|
|
|
|
|
- spin_unlock(&i->i_klist->k_lock);
|
|
|
+ spin_unlock_irqrestore(&i->i_klist->k_lock, flags);
|
|
|
|
|
|
if (put && last)
|
|
|
put(last);
|