From patchwork Sat Nov 8 23:09:43 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lennert Buytenhek X-Patchwork-Id: 7900 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 3009DDDDE3 for ; Sun, 9 Nov 2008 10:12:02 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753112AbYKHXJq (ORCPT ); Sat, 8 Nov 2008 18:09:46 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753059AbYKHXJq (ORCPT ); Sat, 8 Nov 2008 18:09:46 -0500 Received: from xi.wantstofly.org ([80.101.37.227]:54847 "EHLO xi.wantstofly.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752945AbYKHXJp (ORCPT ); Sat, 8 Nov 2008 18:09:45 -0500 Received: by xi.wantstofly.org (Postfix, from userid 500) id D18857F9D0; Sun, 9 Nov 2008 00:09:43 +0100 (CET) Date: Sun, 9 Nov 2008 00:09:43 +0100 From: Lennert Buytenhek To: davem@davemloft.net Cc: netdev@vger.kernel.org, linux@ddcrew.com, dirk@upexia.nl Subject: [PATCH] net: fix setting of skb->tail in skb_recycle_check() Message-ID: <20081108230943.GW32552@xi.wantstofly.org> Mime-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.4.2.2i Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Since skb_reset_tail_pointer() reads skb->data, we need to set skb->data before calling skb_reset_tail_pointer(). This was causing spurious skb_over_panic()s from skb_put() being called on a recycled skb that had its skb->tail set to beyond where it should have been. Bug report from Peter van Valderen . Signed-off-by: Lennert Buytenhek --- Please apply for 2.6.28, thanks! -- 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 diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 2c218a0..a17117e 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -454,8 +454,8 @@ int skb_recycle_check(struct sk_buff *skb, int skb_size) shinfo->frag_list = NULL; memset(skb, 0, offsetof(struct sk_buff, tail)); - skb_reset_tail_pointer(skb); skb->data = skb->head + NET_SKB_PAD; + skb_reset_tail_pointer(skb); return 1; }