aboutsummaryrefslogtreecommitdiffstats
path: root/net/llc/llc_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/llc/llc_input.c')
-rw-r--r--net/llc/llc_input.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/net/llc/llc_input.c b/net/llc/llc_input.c
index 60c1acac7c97..789eec426451 100644
--- a/net/llc/llc_input.c
+++ b/net/llc/llc_input.c
@@ -166,17 +166,22 @@ int llc_rcv(struct sk_buff *skb, struct net_device *dev,
166 */ 166 */
167 if (sap->rcv_func) { 167 if (sap->rcv_func) {
168 sap->rcv_func(skb, dev, pt, orig_dev); 168 sap->rcv_func(skb, dev, pt, orig_dev);
169 goto out; 169 goto out_put;
170 } 170 }
171 dest = llc_pdu_type(skb); 171 dest = llc_pdu_type(skb);
172 if (unlikely(!dest || !llc_type_handlers[dest - 1])) 172 if (unlikely(!dest || !llc_type_handlers[dest - 1]))
173 goto drop; 173 goto drop_put;
174 llc_type_handlers[dest - 1](sap, skb); 174 llc_type_handlers[dest - 1](sap, skb);
175out_put:
176 llc_sap_put(sap);
175out: 177out:
176 return 0; 178 return 0;
177drop: 179drop:
178 kfree_skb(skb); 180 kfree_skb(skb);
179 goto out; 181 goto out;
182drop_put:
183 kfree_skb(skb);
184 goto out_put;
180handle_station: 185handle_station:
181 if (!llc_station_handler) 186 if (!llc_station_handler)
182 goto drop; 187 goto drop;