diff --git a/[refs] b/[refs] index ae39027b5c3b..59e34b88b164 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5564af21ae7900889c5151e5b16bd42cdda11a77 +refs/heads/master: 096f0eb1dff326ddebfedeb128fb48d5b7ca75e1 diff --git a/trunk/net/llc/llc_input.c b/trunk/net/llc/llc_input.c index 789eec426451..8f3addf0724c 100644 --- a/trunk/net/llc/llc_input.c +++ b/trunk/net/llc/llc_input.c @@ -99,15 +99,19 @@ static __inline__ int llc_pdu_type(struct sk_buff *skb) static inline int llc_fixup_skb(struct sk_buff *skb) { u8 llc_len = 2; - struct llc_pdu_sn *pdu; + struct llc_pdu_un *pdu; if (unlikely(!pskb_may_pull(skb, sizeof(*pdu)))) return 0; - pdu = (struct llc_pdu_sn *)skb->data; + pdu = (struct llc_pdu_un *)skb->data; if ((pdu->ctrl_1 & LLC_PDU_TYPE_MASK) == LLC_PDU_TYPE_U) llc_len = 1; llc_len += 2; + + if (unlikely(!pskb_may_pull(skb, llc_len))) + return 0; + skb->h.raw += llc_len; skb_pull(skb, llc_len); if (skb->protocol == htons(ETH_P_802_2)) {