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