[Devel] [PATCH] Disable softirqs when taking the socket queue lock
Dan Smith
danms at us.ibm.com
Wed Mar 24 12:41:04 PDT 2010
This prevents the lockdep report (and potential deadlock) if we get
unlucky while traversing the queues.
Signed-off-by: Dan Smith <danms at us.ibm.com>
---
net/checkpoint.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/net/checkpoint.c b/net/checkpoint.c
index 0eb8860..9197671 100644
--- a/net/checkpoint.c
+++ b/net/checkpoint.c
@@ -44,10 +44,10 @@ static int sock_copy_buffers(struct sk_buff_head *from,
*total_bytes = 0;
- spin_lock(&from->lock);
+ spin_lock_bh(&from->lock);
skb_queue_walk(from, skb)
count1++;
- spin_unlock(&from->lock);
+ spin_unlock_bh(&from->lock);
skbs = kzalloc(sizeof(*skbs) * count1, GFP_KERNEL);
if (!skbs)
@@ -60,7 +60,7 @@ static int sock_copy_buffers(struct sk_buff_head *from,
}
i = 0;
- spin_lock(&from->lock);
+ spin_lock_bh(&from->lock);
skb_queue_walk(from, skb) {
if (++count2 > count1)
break; /* The queue changed as we read it */
@@ -72,7 +72,7 @@ static int sock_copy_buffers(struct sk_buff_head *from,
*total_bytes += skb->len;
i++;
}
- spin_unlock(&from->lock);
+ spin_unlock_bh(&from->lock);
if (count1 != count2)
goto err;
--
1.6.2.5
_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers
More information about the Devel
mailing list