All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matt Wilson <msw@linux.com>
To: Paul Durrant <paul.durrant@citrix.com>
Cc: Wei Liu <wei.liu2@citrix.com>,
	Ian Campbell <Ian.Campbell@citrix.com>,
	netdev@vger.kernel.org, Simon Graham <simon.graham@citrix.com>,
	xen-devel@lists.xen.org, Annie Li <annie.li@oracle.com>,
	Matt Wilson <msw@amazon.com>, Xi Xiong <xixiong@amazon.com>
Subject: Re: [PATCH net-next] xen-netback: fix xenvif_count_skb_slots()
Date: Sun, 6 Oct 2013 17:06:52 -0700	[thread overview]
Message-ID: <20131007000652.GA5970__23072.3428460353$1381104553$gmane$org@u109add4315675089e695.ant.amazon.com> (raw)
In-Reply-To: <1380903983-27429-1-git-send-email-paul.durrant@citrix.com>

On Fri, Oct 04, 2013 at 05:26:23PM +0100, Paul Durrant wrote:
> Commit 4f0581d25827d5e864bcf07b05d73d0d12a20a5c introduced an error into
> xenvif_count_skb_slots() for skbs with a linear area spanning a page
> boundary. The alignment of skb->data needs to be taken into account, not
> just the head length. This patch fixes the issue by dry-running the code
> from xenvif_gop_skb() (and adjusting the comment above the function to note
> that).
> 
> Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> Cc: Xi Xiong <xixiong@amazon.com>
> Cc: Matt Wilson <msw@amazon.com>
> Cc: Annie Li <annie.li@oracle.com>
> Cc: Wei Liu <wei.liu2@citrix.com>
> Cc: Ian Campbell <Ian.Campbell@citrix.com>

Paul, can you reconcile this change with the one made by Simon in cs
8f985b4f7a5394c8f8725a5109451a541ddb9eea?

--msw

> ---
>  drivers/net/xen-netback/netback.c |   17 +++++++++++++++--
>  1 file changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
> index d0b0feb..6f680f4 100644
> --- a/drivers/net/xen-netback/netback.c
> +++ b/drivers/net/xen-netback/netback.c
> @@ -223,15 +223,28 @@ static bool start_new_rx_buffer(int offset, unsigned long size, int head)
>  /*
>   * Figure out how many ring slots we're going to need to send @skb to
>   * the guest. This function is essentially a dry run of
> - * xenvif_gop_frag_copy.
> + * xenvif_gop_skb.
>   */
>  unsigned int xenvif_count_skb_slots(struct xenvif *vif, struct sk_buff *skb)
>  {
> +	unsigned char *data;
>  	unsigned int count;
>  	int i, copy_off;
>  	struct skb_cb_overlay *sco;
>  
> -	count = DIV_ROUND_UP(skb_headlen(skb), PAGE_SIZE);
> +	count = 0;
> +
> +	data = skb->data;
> +	while (data < skb_tail_pointer(skb)) {
> +		unsigned int offset = offset_in_page(data);
> +		unsigned int len = PAGE_SIZE - offset;
> +
> +		if (data + len > skb_tail_pointer(skb))
> +			len = skb_tail_pointer(skb) - data;
> +
> +		count++;
> +		data += len;
> +	}
>  
>  	copy_off = skb_headlen(skb) % PAGE_SIZE;
>  

  reply	other threads:[~2013-10-07  0:06 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-04 16:26 [PATCH net-next] xen-netback: fix xenvif_count_skb_slots() Paul Durrant
2013-10-07  0:06 ` Matt Wilson [this message]
2013-10-07  0:06 ` Matt Wilson
2013-10-07  0:07   ` Matt Wilson
2013-10-07 10:17     ` Paul Durrant
2013-10-07 10:17     ` Paul Durrant
2013-10-07  0:07   ` Matt Wilson
2013-10-07  9:50 ` David Vrabel
2013-10-07  9:50 ` [Xen-devel] " David Vrabel
2013-10-07 10:23   ` Paul Durrant
2013-10-07 10:37     ` Paul Durrant
2013-10-07 10:37     ` [Xen-devel] " Paul Durrant
2013-10-07 10:53       ` Wei Liu
2013-10-07 10:53       ` [Xen-devel] " Wei Liu
2013-10-07 10:23   ` Paul Durrant
2013-10-07 10:01 ` Wei Liu
2013-10-07 10:12   ` Paul Durrant
2013-10-07 10:12   ` Paul Durrant
2013-10-07 10:01 ` Wei Liu
2013-10-07 19:36 ` David Miller
2013-10-07 20:03   ` Ian Campbell
2013-10-07 20:03   ` Ian Campbell
2013-10-07 19:36 ` David Miller
2013-10-04 16:26 Paul Durrant

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='20131007000652.GA5970__23072.3428460353$1381104553$gmane$org@u109add4315675089e695.ant.amazon.com' \
    --to=msw@linux.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=annie.li@oracle.com \
    --cc=msw@amazon.com \
    --cc=netdev@vger.kernel.org \
    --cc=paul.durrant@citrix.com \
    --cc=simon.graham@citrix.com \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xen.org \
    --cc=xixiong@amazon.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.