From: Hendrik Brueckner When receiving data messages, the "BUG_ON(skb->len < skb->data_len)" in the skb_pull() function triggers a kernel panic. Check if the skb uses paged data (is non-linear) and use the pskb_pull() function. Use skb_pull() for linear skbs' only. Reviewed-by: Ursula Braun Signed-off-by: Hendrik Brueckner Signed-off-by: Frank Blaschka --- net/iucv/af_iucv.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --- a/net/iucv/af_iucv.c +++ b/net/iucv/af_iucv.c @@ -1382,7 +1382,10 @@ static int iucv_sock_recvmsg(struct kioc /* SOCK_STREAM: re-queue skb if it contains unreceived data */ if (sk->sk_type == SOCK_STREAM) { - skb_pull(skb, copied); + if (skb_is_nonlinear(skb)) + pskb_pull(skb, copied); + else + skb_pull(skb, copied); if (skb->len) { skb_queue_head(&sk->sk_receive_queue, skb); goto done; -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html