[Bugme-new] [Bug 32872] New: LLC PDU is dropped if skb is not linear
bugzilla-daemon at bugzilla.kernel.org
bugzilla-daemon at bugzilla.kernel.org
Fri Apr 8 02:52:34 PDT 2011
https://bugzilla.kernel.org/show_bug.cgi?id=32872
Summary: LLC PDU is dropped if skb is not linear
Product: Networking
Version: 2.5
Kernel Version: 2.6.32
Platform: All
OS/Version: Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: Other
AssignedTo: acme at ghostprotocols.net
ReportedBy: vitalyb at telenet.dn.ua
Regression: No
If skb consists of several fragments this check fails
net/llc/llc_input.c:
=============================================
llc_fixup_skb()
...
pdu = (struct llc_pdu_un *)skb->data;
...
__be16 pdulen = eth_hdr(skb)->h_proto;
s32 data_size = ntohs(pdulen) - llc_len;
if (data_size < 0 ||
((skb_tail_pointer(skb) -
(u8 *)pdu) - llc_len) < data_size)
return 0;
=============================================
and packet is silently dropped.
This breaks GVRP protocol if received packet is large ( > 512 bytes on my
system) and contains a Leave All message. Since Leave All is missed,
corresponding JoinIns are not sent and switch unregisters VLANs from port.
Attached patch seems to resolve this issue, but I don't know if it's a correct
solution.
--
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the Bugme-new
mailing list