Commit 2e861e5e authored by Boris Sukholitko's avatar Boris Sukholitko Committed by David S. Miller

dissector: do not set invalid PPP protocol

The following flower filter fails to match non-PPP_IP{V6} packets
wrapped in PPP_SES protocol:

tc filter add dev eth0 ingress protocol ppp_ses flower \
        action simple sdata hi64

The reason is that proto local variable is being set even when
FLOW_DISSECT_RET_OUT_BAD status is returned.

The fix is to avoid setting proto variable if the PPP protocol is unknown.
Signed-off-by: default avatarBoris Sukholitko <boris.sukholitko@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 55b115c7
...@@ -1196,9 +1196,8 @@ bool __skb_flow_dissect(const struct net *net, ...@@ -1196,9 +1196,8 @@ bool __skb_flow_dissect(const struct net *net,
break; break;
} }
proto = hdr->proto;
nhoff += PPPOE_SES_HLEN; nhoff += PPPOE_SES_HLEN;
switch (proto) { switch (hdr->proto) {
case htons(PPP_IP): case htons(PPP_IP):
proto = htons(ETH_P_IP); proto = htons(ETH_P_IP);
fdret = FLOW_DISSECT_RET_PROTO_AGAIN; fdret = FLOW_DISSECT_RET_PROTO_AGAIN;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment