[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