Skip to content

Commit

Permalink
mac802154: Move an skb free within the rx path
Browse files Browse the repository at this point in the history
It may appear clearer to free the skb at the end of the path rather than
in the middle, within a helper.

Move kfree_skb() from the end of __ieee802154_rx_handle_packet() to
right after it in the calling function ieee802154_rx(). Doing so implies
reworking a little bit the exit path.

Suggested-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Acked-by: Alexander Aring <aahringo@redhat.com>
Link: https://lore.kernel.org/r/20221026093502.602734-2-miquel.raynal@bootlin.com
Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
  • Loading branch information
miquelraynal authored and Stefan-Schmidt committed Nov 1, 2022
1 parent 95d9a3d commit 4d1c7d8
Showing 1 changed file with 4 additions and 9 deletions.
13 changes: 4 additions & 9 deletions net/mac802154/rx.c
Original file line number Diff line number Diff line change
Expand Up @@ -234,8 +234,6 @@ __ieee802154_rx_handle_packet(struct ieee802154_local *local,
skb = NULL;
break;
}

kfree_skb(skb);
}

static void
Expand Down Expand Up @@ -274,7 +272,7 @@ void ieee802154_rx(struct ieee802154_local *local, struct sk_buff *skb)
WARN_ON_ONCE(softirq_count() == 0);

if (local->suspended)
goto drop;
goto free_skb;

/* TODO: When a transceiver omits the checksum here, we
* add an own calculated one. This is currently an ugly
Expand All @@ -292,20 +290,17 @@ void ieee802154_rx(struct ieee802154_local *local, struct sk_buff *skb)
/* Level 1 filtering: Check the FCS by software when relevant */
if (local->hw.phy->filtering == IEEE802154_FILTERING_NONE) {
crc = crc_ccitt(0, skb->data, skb->len);
if (crc) {
rcu_read_unlock();
if (crc)
goto drop;
}
}
/* remove crc */
skb_trim(skb, skb->len - 2);

__ieee802154_rx_handle_packet(local, skb);

rcu_read_unlock();

return;
drop:
rcu_read_unlock();
free_skb:
kfree_skb(skb);
}

Expand Down

0 comments on commit 4d1c7d8

Please sign in to comment.