From patchwork Fri Mar 13 21:10:08 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dave Jones X-Patchwork-Id: 24393 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 64360DDDF0 for ; Sat, 14 Mar 2009 08:10:20 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759215AbZCMVKR (ORCPT ); Fri, 13 Mar 2009 17:10:17 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1759127AbZCMVKP (ORCPT ); Fri, 13 Mar 2009 17:10:15 -0400 Received: from mx2.redhat.com ([66.187.237.31]:32867 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752331AbZCMVKN (ORCPT ); Fri, 13 Mar 2009 17:10:13 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n2DLA9AR029706 for ; Fri, 13 Mar 2009 17:10:09 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n2DLA9mq022214 for ; Fri, 13 Mar 2009 17:10:10 -0400 Received: from gelk.kernelslacker.org (vpn-12-86.rdu.redhat.com [10.11.12.86]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n2DLA9TT026032 for ; Fri, 13 Mar 2009 17:10:09 -0400 Received: from gelk.kernelslacker.org (localhost.localdomain [127.0.0.1]) by gelk.kernelslacker.org (8.14.3/8.14.3) with ESMTP id n2DLA8lC014807 for ; Fri, 13 Mar 2009 17:10:08 -0400 Received: (from davej@localhost) by gelk.kernelslacker.org (8.14.3/8.14.3/Submit) id n2DLA8Vk014803 for netdev@vger.kernel.org; Fri, 13 Mar 2009 17:10:08 -0400 X-Authentication-Warning: gelk.kernelslacker.org: davej set sender to davej@redhat.com using -f Date: Fri, 13 Mar 2009 17:10:08 -0400 From: Dave Jones To: netdev@vger.kernel.org Subject: r8169 skb leak Message-ID: <20090313211008.GA14796@redhat.com> References: <49B89385.4090005@cosmosbay.com> <20090312045657.GB7132@redhat.com> <49B89A33.2030207@cosmosbay.com> <20090313.133640.130060599.davem@davemloft.net> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20090313.133640.130060599.davem@davemloft.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org r8169 seems to have the same problem that the via-velocity did with skb padding. Found by code-inspection only, no hardware to test. Signed-off-by: Dave Jones diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index b347340..07b1de1 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c @@ -3145,7 +3145,9 @@ err_out: static void rtl8169_unmap_tx_skb(struct pci_dev *pdev, struct ring_info *tx_skb, struct TxDesc *desc) { - unsigned int len = tx_skb->len; + unsigned int len; + + len = max_t(unsigned, tx_skb->len, ETH_ZLEN); pci_unmap_single(pdev, le64_to_cpu(desc->addr), len, PCI_DMA_TODEVICE); desc->opts1 = 0x00; @@ -3364,11 +3366,9 @@ static int rtl8169_start_xmit(struct sk_buff *skb, struct net_device *dev) } else { len = skb->len; - if (unlikely(len < ETH_ZLEN)) { - if (skb_padto(skb, ETH_ZLEN)) - goto err_update_stats; - len = ETH_ZLEN; - } + if (skb_padto(skb, ETH_ZLEN)) + goto err_update_stats; + len = max_t(unsigned, skb->len, ETH_ZLEN); opts1 |= FirstFrag | LastFrag; tp->tx_skb[entry].skb = skb;