The Coverity checker spotted the following bogus code in drivers/net/xen-netfront.c: <-- snip --> ... static void xennet_alloc_rx_buffers(struct net_device *dev) { ... for (nr_flips = i = 0; ; i++) { skb = __skb_dequeue(&np->rx_batch); if (skb == NULL) break; skb->dev = dev; id = xennet_rxidx(req_prod + i); BUG_ON(np->rx_skbs[id]); np->rx_skbs[id] = skb; ref = gnttab_claim_grant_reference(&np->gref_rx_head); BUG_ON((signed short)ref < 0); np->grant_rx_ref[id] = ref; pfn = page_to_pfn(skb_shinfo(skb)->frags[0].page); vaddr = page_address(skb_shinfo(skb)->frags[0].page); req = RING_GET_REQUEST(&np->rx, req_prod + i); gnttab_grant_foreign_access_ref(ref, np->xbdev->otherend_id, pfn_to_mfn(pfn), 0); req->id = id; req->gref = ref; } if (nr_flips != 0) { ... <-- snip --> Note that "nr_flips" is always 0 in the last line. cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jeremy Fitzhardinge
2007-Jul-23 06:46 UTC
[Xen-devel] Re: drivers/net/xen-netfront.c: bogus code
Adrian Bunk wrote:> The Coverity checker spotted the following bogus code > in drivers/net/xen-netfront.c: > > <-- snip --> > > ... > static void xennet_alloc_rx_buffers(struct net_device *dev) > { > ... > for (nr_flips = i = 0; ; i++) { > skb = __skb_dequeue(&np->rx_batch); > if (skb == NULL) > break; > > skb->dev = dev; > > id = xennet_rxidx(req_prod + i); > > BUG_ON(np->rx_skbs[id]); > np->rx_skbs[id] = skb; > > ref = gnttab_claim_grant_reference(&np->gref_rx_head); > BUG_ON((signed short)ref < 0); > np->grant_rx_ref[id] = ref; > > pfn = page_to_pfn(skb_shinfo(skb)->frags[0].page); > vaddr = page_address(skb_shinfo(skb)->frags[0].page); > > req = RING_GET_REQUEST(&np->rx, req_prod + i); > gnttab_grant_foreign_access_ref(ref, > np->xbdev->otherend_id, > pfn_to_mfn(pfn), > 0); > > req->id = id; > req->gref = ref; > } > > if (nr_flips != 0) { > ... > > <-- snip --> > > Note that "nr_flips" is always 0 in the last line. >Thanks. That''s probably a residual from me removing the page-flipping code. I''ll give it another pass. J _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel