|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] linux-2.6.18/netback: use correct index for invalidation in netbk_tx_check_mop()
>>> On 18.11.11 at 17:25, Laszlo Ersek <lersek@xxxxxxxxxx> wrote:
> On 11/18/11 14:15, Jan Beulich wrote:
>
>> --- a/drivers/xen/netback/netback.c
>> +++ b/drivers/xen/netback/netback.c
>> @@ -1155,7 +1155,7 @@ static int netbk_tx_check_mop(struct sk_
>> pending_idx = *((u16 *)skb->data);
>> netif_idx_release(pending_idx);
>> for (j = start; j< i; j++) {
>> - pending_idx = (unsigned long)shinfo->frags[i].page;
>> + pending_idx = (unsigned long)shinfo->frags[j].page;
>> netif_idx_release(pending_idx);
>> }
>
> Please excuse the uneducated question: what could be the consequences of
> using the wrong index here? I notice that with the fix, frags[i].page is
> never touched, while without the fix, it is the only one that's released.
The index correlating to i gets released right before the loop. The
consequences of using the wrong index in the loop are - afaict -
that guests may cause netback (and perhaps Dom0 as a whole) to
run out of certain resources (grant table entries come to mind).
> I'm asking because we have an elusive bug: netloop sometimes crashes in
> skb_remove_foreign_references(). As of 1125:985b8f62df25, the crash happens
> on line 118:
>
> 116 vaddr = kmap_skb_frag(&skb_shinfo(skb)->frags[i]);
> 117 off = skb_shinfo(skb)->frags[i].page_offset;
> 118 memcpy(page_address(page) + off,
> 119 vaddr + off,
> 120 skb_shinfo(skb)->frags[i].size);
>
> because the PTE for the vaddr returned by kmap_skb_frag() for the first frag
> is 0.
>
> It appears somehow related to NFS and closing/reopening TCP connections for
> NFS.
Sorry, I don't see any connection to the above, but then again I didn't
find the bug above due to actual misbehavior, but just due to having
worked on that code while moving our patch set forward to 3.2-rc.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |