[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: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
29efcd2666
commit
23dbe7912d
1 changed files with 5 additions and 2 deletions
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue