ACK w/cmt: [PATCH][trusty/utopic SRU] xen-netfront: Remove BUGs on paged skb data which crosses a page boundary
Luis Henriques
luis.henriques at canonical.com
Thu Dec 4 17:48:42 UTC 2014
On Thu, Dec 04, 2014 at 09:06:42AM -0600, Seth Forshee wrote:
> These BUGs can be erroneously triggered by frags which refer to
> tail pages within a compound page. The data in these pages may
> overrun the hardware page while still being contained within the
> compound page, but since compound_order() evaluates to 0 for tail
> pages the assertion fails. The code already iterates through
> subsequent pages correctly in this scenario, so the BUGs are
> unnecessary and can be removed.
>
> Fixes: f36c374782e4 ("xen/netfront: handle compound page fragments on transmit")
> Cc: <stable at vger.kernel.org> # 3.7+
> Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
> Reviewed-by: David Vrabel <david.vrabel at citrix.com>
> Signed-off-by: David S. Miller <davem at davemloft.net>
> (cherry picked from commit 8d609725d4357f499e2103e46011308b32f53513)
> BugLink: http://bugs.launchpad.net/bugs/1275879
Since this commit doesn't seem to be present in any kernel released by
Linus yet (it will be in the 3.18.0-rc8 or 3.18), it does not fulfill
the requirements to be queued for a stable tree.
So, if we want this in T and U soon, its probably better to go ahead
with the SRU.
Cheers,
--
Luís
> ---
> drivers/net/xen-netfront.c | 5 -----
> 1 file changed, 5 deletions(-)
>
> diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
> index fff9bbe..69e0cd6 100644
> --- a/drivers/net/xen-netfront.c
> +++ b/drivers/net/xen-netfront.c
> @@ -469,9 +469,6 @@ static void xennet_make_frags(struct sk_buff *skb, struct net_device *dev,
> len = skb_frag_size(frag);
> offset = frag->page_offset;
>
> - /* Data must not cross a page boundary. */
> - BUG_ON(len + offset > PAGE_SIZE<<compound_order(page));
> -
> /* Skip unused frames from start of page */
> page += offset >> PAGE_SHIFT;
> offset &= ~PAGE_MASK;
> @@ -479,8 +476,6 @@ static void xennet_make_frags(struct sk_buff *skb, struct net_device *dev,
> while (len > 0) {
> unsigned long bytes;
>
> - BUG_ON(offset >= PAGE_SIZE);
> -
> bytes = PAGE_SIZE - offset;
> if (bytes > len)
> bytes = len;
> --
> 1.9.1
>
>
> --
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20141204/d4108924/attachment.sig>
More information about the kernel-team
mailing list