Skip to content

Commit

Permalink
[LLC]: Fix llc_fixup_skb() bug
Browse files Browse the repository at this point in the history
llc_fixup_skb() had a bug dropping 3 bytes packets (like UA frames). Token ring
doesn't pad these frames.

Signed-off-by: Jochen Friedrich <jochen@scram.de>
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
  • Loading branch information
Jochen Friedrich authored and Arnaldo Carvalho de Melo committed Sep 22, 2005
1 parent 5564af2 commit 096f0eb
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions net/llc/llc_input.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down

0 comments on commit 096f0eb

Please sign in to comment.