From patchwork Thu Aug 30 02:39:00 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Ott X-Patchwork-Id: 180792 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 8AE972C0115 for ; Thu, 30 Aug 2012 12:39:34 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754746Ab2H3CjP (ORCPT ); Wed, 29 Aug 2012 22:39:15 -0400 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:40604 "EHLO out1-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754716Ab2H3CjN (ORCPT ); Wed, 29 Aug 2012 22:39:13 -0400 Received: from compute1.internal (compute1.nyi.mail.srv.osa [10.202.2.41]) by gateway1.nyi.mail.srv.osa (Postfix) with ESMTP id 65790208EE; Wed, 29 Aug 2012 22:39:13 -0400 (EDT) Received: from frontend2.nyi.mail.srv.osa ([10.202.2.161]) by compute1.internal (MEProxy); Wed, 29 Aug 2012 22:39:13 -0400 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=signal11.us; h= from:to:cc:subject:date:message-id:in-reply-to:references; s= mesmtp; bh=8o3BSAz/opl4c7cgC8fB/PDCFfU=; b=qsBbPDyzGfu0LZZhGgP2N t4bz0lWZMtTJ6xhW0BVB+qGsoegwf7KdVp4CqaCCy8KmxucKtJbpwYxMgnbQ3oru oRLmmwznKbYHO3pjrsJ8XCBWhs9GhIn38zShZ3OCn7IgrFW0crPFZvwKS268+t+S nSouawatWU0RU2wl8pG3Lk= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id :in-reply-to:references; s=smtpout; bh=8o3BSAz/opl4c7cgC8fB/PDCF fU=; b=BxsCdRtJvIYNEcSGB7wkCNumweY5rxTGrHvvTozSkm+FbRDe72KIsc1vx n2nrabnBYbpdaIioXwLWdUk3Z9E7svkTMa0miFfiZNiIZXNo77jo3HsE/TkOv7ho q6/bYTTihmmDp0svtP5WtNSXTvJqdYLLe29ORlFDBs56mgYElA= X-Sasl-enc: onDBgyaIRD8OAzHQZ7bcxR7EIT8ZDL8glscmKv7ul9yw 1346294353 Received: from localhost.localdomain (unknown [68.62.240.236]) by mail.messagingengine.com (Postfix) with ESMTPA id 92A62482497; Wed, 29 Aug 2012 22:39:12 -0400 (EDT) From: Alan Ott To: Alexander Smirnov , Dmitry Eremin-Solenikov , "David S. Miller" , Tony Cheneau Cc: linux-zigbee-devel@lists.sourceforge.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Alan Ott Subject: [PATCH v2 1/2] 6lowpan: Make a copy of skb's delivered to 6lowpan Date: Wed, 29 Aug 2012 22:39:00 -0400 Message-Id: <1346294341-26808-2-git-send-email-alan@signal11.us> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1346294341-26808-1-git-send-email-alan@signal11.us> References: <1346294341-26808-1-git-send-email-alan@signal11.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Since lowpan_process_data() modifies the skb (by calling skb_pull()), we need our own copy so that it doesn't affect the data received by other protcols (in this case, af_ieee802154). Signed-off-by: Alan Ott --- net/ieee802154/6lowpan.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) diff --git a/net/ieee802154/6lowpan.c b/net/ieee802154/6lowpan.c index 6a09522..ce33b02 100644 --- a/net/ieee802154/6lowpan.c +++ b/net/ieee802154/6lowpan.c @@ -1133,6 +1133,8 @@ static int lowpan_validate(struct nlattr *tb[], struct nlattr *data[]) static int lowpan_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev) { + struct sk_buff *local_skb; + if (!netif_running(dev)) goto drop; @@ -1144,7 +1146,12 @@ static int lowpan_rcv(struct sk_buff *skb, struct net_device *dev, case LOWPAN_DISPATCH_IPHC: /* ipv6 datagram */ case LOWPAN_DISPATCH_FRAG1: /* first fragment header */ case LOWPAN_DISPATCH_FRAGN: /* next fragments headers */ - lowpan_process_data(skb); + local_skb = skb_copy(skb, GFP_ATOMIC); + if (!local_skb) + goto drop; + lowpan_process_data(local_skb); + + kfree_skb(skb); break; default: break;