diff mbox

[RFC,wpan] net: 6lowpan: fix reserved space for single frames

Message ID 20180601155843.29724-1-aring@mojatatu.com (mailing list archive)
State Superseded
Headers show

Commit Message

Alexander Aring June 1, 2018, 3:58 p.m. UTC
This patch fixes patch add handling to take care tail and headroom for
single 6lowpan frames. We need to be sure we have a skb with the right
head and tailroom for single frames. This patch do it by using
skb_copy_expand().

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=195059
Signed-off-by: Alexander Aring <aring@mojatatu.com>
---
I hope the refcounting doesn't change here... anyway it also copy skb.
Anyway, it fix something... we can think about perfomance later.

Also I thought the upper layer would allocate the right needed_headroom
and needed_tailroom for me, so I don't need to realloc in transmit.
Maybe this is a bigger issue in the upper layer? I am pretty sure these
extra bytes should be allocated when skb is created according the
net_device which ndo_xmit() will be called from.

I will ask this question to netdev mailinglist..., if no answer then
simple apply this patch @stefan. (If it's looking okay for you).

 net/ieee802154/6lowpan/tx.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Alexander Aring June 5, 2018, 9:17 p.m. UTC | #1
Hi,

On Fri, Jun 01, 2018 at 11:58:43AM -0400, Alexander Aring wrote:
> This patch fixes patch add handling to take care tail and headroom for
> single 6lowpan frames. We need to be sure we have a skb with the right
> head and tailroom for single frames. This patch do it by using
> skb_copy_expand().
> 
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=195059
> Signed-off-by: Alexander Aring <aring@mojatatu.com>

drop this, I found the bug in IPv6 (I suppose).

I will do a proper patch with additional Reported-by tag to David.

- Alex
--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/ieee802154/6lowpan/tx.c b/net/ieee802154/6lowpan/tx.c
index e6ff5128e61a..2d74918431e3 100644
--- a/net/ieee802154/6lowpan/tx.c
+++ b/net/ieee802154/6lowpan/tx.c
@@ -265,7 +265,8 @@  netdev_tx_t lowpan_xmit(struct sk_buff *skb, struct net_device *ldev)
 	/* We must take a copy of the skb before we modify/replace the ipv6
 	 * header as the header could be used elsewhere
 	 */
-	skb = skb_unshare(skb, GFP_ATOMIC);
+	skb = skb_copy_expand(skb, ldev->needed_headroom,
+			      ldev->needed_tailroom, GFP_ATOMIC);
 	if (!skb)
 		return NET_XMIT_DROP;