Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 23dbe791 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller
Browse files

[LLC]: use rcu_dereference on receive handler



The receive hander pointer might be modified during network changes
of protocol. So use rcu_dereference (only matters on alpha).

Signed-off-by: default avatarStephen Hemminger <shemminger@osdl.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 29efcd26
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -142,6 +142,8 @@ int llc_rcv(struct sk_buff *skb, struct net_device *dev,
	struct llc_sap *sap;
	struct llc_pdu_sn *pdu;
	int dest;
	int (*rcv)(struct sk_buff *, struct net_device *,
		   struct packet_type *, struct net_device *);

	/*
	 * When the interface is in promisc. mode, drop all the crap that it
@@ -169,8 +171,9 @@ int llc_rcv(struct sk_buff *skb, struct net_device *dev,
	 * First the upper layer protocols that don't need the full
	 * LLC functionality
	 */
	if (sap->rcv_func) {
		sap->rcv_func(skb, dev, pt, orig_dev);
	rcv = rcu_dereference(sap->rcv_func);
	if (rcv) {
		rcv(skb, dev, pt, orig_dev);
		goto out_put;
	}
	dest = llc_pdu_type(skb);