net: Fix bus in SKB queue splicing interfaces.
Handle the case of head being non-empty, by adding list->qlen
to head->qlen instead of using direct assignment.
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 027b061..4a144e8 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -738,7 +738,7 @@
{
if (!skb_queue_empty(list)) {
__skb_queue_splice(list, (struct sk_buff *) head, head->next);
- head->qlen = list->qlen;
+ head->qlen += list->qlen;
}
}
@@ -754,7 +754,7 @@
{
if (!skb_queue_empty(list)) {
__skb_queue_splice(list, (struct sk_buff *) head, head->next);
- head->qlen = list->qlen;
+ head->qlen += list->qlen;
__skb_queue_head_init(list);
}
}
@@ -769,7 +769,7 @@
{
if (!skb_queue_empty(list)) {
__skb_queue_splice(list, head->prev, (struct sk_buff *) head);
- head->qlen = list->qlen;
+ head->qlen += list->qlen;
}
}
@@ -786,7 +786,7 @@
{
if (!skb_queue_empty(list)) {
__skb_queue_splice(list, head->prev, (struct sk_buff *) head);
- head->qlen = list->qlen;
+ head->qlen += list->qlen;
__skb_queue_head_init(list);
}
}