> -----Original Message----- > From: Igor Druzhinin [mailto:[email protected]] > Sent: 28 February 2019 11:44 > To: Paul Durrant <[email protected]>; Wei Liu <[email protected]> > Cc: [email protected]; [email protected]; > [email protected]; > [email protected] > Subject: Re: [PATCH] xen-netback: fix occasional leak of grant ref mappings > under memory pressure > > On 28/02/2019 11:21, Paul Durrant wrote: > >>> @@ -1153,6 +1152,10 @@ static int xenvif_tx_submit(struct xenvif_queue > >>> *queue) > >>> kfree_skb(skb); > >>> continue; > >>> } > >>> + > >>> + /* Copied all the bits from the frag list. */ > >>> + skb_frag_list_init(skb); > >>> + kfree(nskb); > >> > >> I think you want kfree_skb here? > > > > No. nskb is the frag list... it is unlinked from skb by the call to > > skb_frag_list_init() and then it > can be freed on its own. The skb is what we need to retain, because that now > contains all the data. > > > > Are you saying previous code in xenvif_handle_frag_list() incorrectly > called kfree_skb()?
No, it correctly called kfree_skb() on nskb in the success case. What Wei and myself would prefer is that we have a single place that the frag list is freed in both the success and error cases. Paul > > Igor

