lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 13 Aug 2009 09:45:49 -0400 From: Dave Jones <davej@...hat.com> To: David Miller <davem@...emloft.net> Cc: netdev@...r.kernel.org, Francois Romieu <romieu@...zoreil.com> Subject: Re: 8139cp dma-debug warning. On Wed, Aug 12, 2009 at 10:20:46PM -0700, David Miller wrote: > From: Dave Jones <davej@...hat.com> > Date: Wed, 12 Aug 2009 13:13:33 -0400 > > > There's another instance of the same further in the file. > > > > Does this look right? > > Dave, Francois posted the following fix to lkml (he forgot > to CC: netdev and the people reporting this bug, oh well) Ah, I missed it (disk crashed on friday, so I've been backlogged since then). Thanks for the forward. > Did you see it? It should fix the bug. > > 8139cp: balance dma_map_single vs dma_unmap_single pair > > The driver always: > 1. allocate cp->rx_buf_sz + NET_IP_ALIGN > 2. map cp->rx_buf_sz > > Signed-off-by: Francois Romieu <romieu@...zoreil.com> > Signed-off-by: David S. Miller <davem@...emloft.net> > --- > drivers/net/8139cp.c | 5 ++--- > 1 files changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c > index 50efde1..d0dbbf3 100644 > --- a/drivers/net/8139cp.c > +++ b/drivers/net/8139cp.c > @@ -515,7 +515,7 @@ rx_status_loop: > dma_addr_t mapping; > struct sk_buff *skb, *new_skb; > struct cp_desc *desc; > - unsigned buflen; > + const unsigned buflen = cp->rx_buf_sz; > > skb = cp->rx_skb[rx_tail]; > BUG_ON(!skb); > @@ -549,8 +549,7 @@ rx_status_loop: > pr_debug("%s: rx slot %d status 0x%x len %d\n", > dev->name, rx_tail, status, len); > > - buflen = cp->rx_buf_sz + NET_IP_ALIGN; > - new_skb = netdev_alloc_skb(dev, buflen); > + new_skb = netdev_alloc_skb(dev, buflen + NET_IP_ALIGN); > if (!new_skb) { > dev->stats.rx_dropped++; > goto rx_next; Below this, we're still doing an skb_reserve(NET_IP_ALIGN) on new_skb. Although the mapping is now constantly sized, aren't we still wastefully bumping the data/tail of the skb twice ? Dave -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists