From c1d5bad4963ef597a97490decba39cd3eea0be24 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Thu, 25 May 2006 15:09:37 -0700 Subject: [PATCH] --- yaml --- r: 27501 b: refs/heads/master c: 23dbe7912dad6be71bb9e69cb819d05e2442d362 h: refs/heads/master i: 27499: 1390005712aeeca0be13bf08e8db772db875a4f8 v: v3 --- [refs] | 2 +- trunk/net/llc/llc_input.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 34b85a9ed921..b4e25a97bce8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 29efcd2666b3a465b40aa07ef1f4d79847303e2f +refs/heads/master: 23dbe7912dad6be71bb9e69cb819d05e2442d362 diff --git a/trunk/net/llc/llc_input.c b/trunk/net/llc/llc_input.c index d62e0f9b9da3..cb9f7f058f75 100644 --- a/trunk/net/llc/llc_input.c +++ b/trunk/net/llc/llc_input.c @@ -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);