On Thu, Jul 24, 2014 at 05:50:03PM +0530, Varka Bhadram wrote:
> Hi Alex,
> 
> On 07/24/2014 05:40 PM, Alexander Aring wrote:
> >Varka,
> >
> >On Thu, Jul 24, 2014 at 05:16:39PM +0530, varkabhad...@gmail.com wrote:
> >>From: Varka Bhadram <var...@cdac.in>
> >>
> >>This patch replace the kfree(skb) with dev_kfree_skb() which is
> >s/kfree(skb)/kfree_skb(skb)
> >
> >>used on tx error path. And also use sizeof(*work) instead of
> >>sizeof(struct xmit_work)
> >>
> >>Signed-off-by: Varka Bhadram <var...@cdac.in>
> >>---
> >>  net/mac802154/tx.c |    9 ++++-----
> >>  1 file changed, 4 insertions(+), 5 deletions(-)
> >>
> >>diff --git a/net/mac802154/tx.c b/net/mac802154/tx.c
> >>index 8124353..d05d6ea 100644
> >>--- a/net/mac802154/tx.c
> >>+++ b/net/mac802154/tx.c
> >>@@ -89,7 +89,7 @@ netdev_tx_t mac802154_tx(struct mac802154_priv *priv, 
> >>struct sk_buff *skb,
> >>    if (!(priv->phy->channels_supported[page] & (1 << chan))) {
> >>            WARN_ON(1);
> >>-           kfree_skb(skb);
> >>+           dev_kfree_skb(skb);
> >>            return NETDEV_TX_OK;
> >>    }
> >>@@ -104,13 +104,13 @@ netdev_tx_t mac802154_tx(struct mac802154_priv *priv, 
> >>struct sk_buff *skb,
> >>    }
> >>    if (skb_cow_head(skb, priv->hw.extra_tx_headroom)) {
> >>-           kfree_skb(skb);
> >>+           dev_kfree_skb(skb);
> 
> Is it acceptable here..?

No on all error paths we need to use kfree_skb.

Look commit 92a2ec72a7dbb84f4b614c9b72880d86db69475f. Actually at this
branch you reverting this commit.

> 
> >>            return NETDEV_TX_OK;
> >>    }
> >>-   work = kzalloc(sizeof(struct xmit_work), GFP_ATOMIC);
> >>+   work = kzalloc(sizeof(*work), GFP_ATOMIC);
> >>    if (!work) {
> >>-           kfree_skb(skb);
> >>+           dev_kfree_skb(skb);
> >>            return NETDEV_TX_BUSY;
> >>    }
> >Sorry this is wrong. dev_kfree_skb is the same like consume_skb.
> >
> >Look for the documentation:
> >
> >"Drop a ref to the buffer and free it if the usage count has hit zero
> >  Functions identically to kfree_skb, but kfree_skb assumes that the frame
> >  is being dropped after a failure and notes that"
> 
> This type of functionality use on IEEE-80211 subsystem also.. Every where on 
> Tx
> error path subsystem uses dev_kfree_skb(skb);
> 
mhh, maybe we could clear this. Can you give a link with an example
where they do this?

- Alex

------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck
Code Sight - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
_______________________________________________
Linux-zigbee-devel mailing list
Linux-zigbee-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel

Reply via email to