On Thursday 24 July 2014 10:04 PM, Alexander Aring wrote:
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?

Please see:  http://lxr.free-electrons.com/source/net/mac80211/tx.c#L2218  
<http://lxr.free-electrons.com/source/net/mac80211/tx.c#L2218>


--
-Varka Bhadram

------------------------------------------------------------------------------
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