* [PATCH net 0/2] net/sched: fix wrong behavior of MPLS push/pop action @ 2019-10-10 18:43 Davide Caratti 2019-10-10 18:43 ` [PATCH net 1/2] net: avoid errors when trying to pop MLPS header on non-MPLS packets Davide Caratti 2019-10-10 18:43 ` [PATCH net 2/2] net/sched: fix corrupted L2 header with MPLS 'push' and 'pop' actions Davide Caratti 0 siblings, 2 replies; 9+ messages in thread From: Davide Caratti @ 2019-10-10 18:43 UTC (permalink / raw) To: David S. Miller, John Hurley, Cong Wang; +Cc: Lorenzo Bianconi, netdev this series contains two fixes for TC 'act_mpls', that try to address two problems that can be observed configuring simple 'push' / 'pop' operations: - patch 1/2 avoids dropping non-MPLS packets that pass through the MPLS 'pop' action. - patch 2/2 fixes corruption of the L2 header that occurs when 'push' or 'pop' actions are configured in TC egress path. Davide Caratti (2): net: avoid errors when trying to pop MLPS header on non-MPLS packets net/sched: fix corrupted L2 header with MPLS 'push' and 'pop' actions include/linux/skbuff.h | 5 +++-- net/core/skbuff.c | 20 +++++++++++--------- net/openvswitch/actions.c | 5 +++-- net/sched/act_mpls.c | 12 ++++++++---- 4 files changed, 25 insertions(+), 17 deletions(-) -- 2.21.0 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH net 1/2] net: avoid errors when trying to pop MLPS header on non-MPLS packets 2019-10-10 18:43 [PATCH net 0/2] net/sched: fix wrong behavior of MPLS push/pop action Davide Caratti @ 2019-10-10 18:43 ` Davide Caratti 2019-10-11 7:34 ` Simon Horman 2019-10-10 18:43 ` [PATCH net 2/2] net/sched: fix corrupted L2 header with MPLS 'push' and 'pop' actions Davide Caratti 1 sibling, 1 reply; 9+ messages in thread From: Davide Caratti @ 2019-10-10 18:43 UTC (permalink / raw) To: David S. Miller, John Hurley, Cong Wang; +Cc: Lorenzo Bianconi, netdev the following script: # tc qdisc add dev eth0 clsact # tc filter add dev eth0 egress matchall action mpls pop implicitly makes the kernel drop all packets transmitted by eth0, if they don't have a MPLS header. This behavior is uncommon: other encapsulations (like VLAN) just let the packet pass unmodified. Since the result of MPLS 'pop' operation would be the same regardless of the presence / absence of MPLS header(s) in the original packet, we can let skb_mpls_pop() return 0 when dealing with non-MPLS packets. Fixes: 2a2ea50870ba ("net: sched: add mpls manipulation actions to TC") Signed-off-by: Davide Caratti <dcaratti@redhat.com> --- net/core/skbuff.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 529133611ea2..cd59ccd6da57 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -5536,7 +5536,7 @@ int skb_mpls_pop(struct sk_buff *skb, __be16 next_proto) int err; if (unlikely(!eth_p_mpls(skb->protocol))) - return -EINVAL; + return 0; err = skb_ensure_writable(skb, skb->mac_len + MPLS_HLEN); if (unlikely(err)) -- 2.21.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH net 1/2] net: avoid errors when trying to pop MLPS header on non-MPLS packets 2019-10-10 18:43 ` [PATCH net 1/2] net: avoid errors when trying to pop MLPS header on non-MPLS packets Davide Caratti @ 2019-10-11 7:34 ` Simon Horman 2019-10-11 9:26 ` John Hurley 0 siblings, 1 reply; 9+ messages in thread From: Simon Horman @ 2019-10-11 7:34 UTC (permalink / raw) To: Davide Caratti Cc: David S. Miller, John Hurley, Cong Wang, Lorenzo Bianconi, netdev On Thu, Oct 10, 2019 at 08:43:52PM +0200, Davide Caratti wrote: > the following script: > > # tc qdisc add dev eth0 clsact > # tc filter add dev eth0 egress matchall action mpls pop > > implicitly makes the kernel drop all packets transmitted by eth0, if they > don't have a MPLS header. This behavior is uncommon: other encapsulations > (like VLAN) just let the packet pass unmodified. Since the result of MPLS > 'pop' operation would be the same regardless of the presence / absence of > MPLS header(s) in the original packet, we can let skb_mpls_pop() return 0 > when dealing with non-MPLS packets. > > Fixes: 2a2ea50870ba ("net: sched: add mpls manipulation actions to TC") > Signed-off-by: Davide Caratti <dcaratti@redhat.com> Hi Davide, For the TC use-case I think this is correct for the reasons you explain above. For the OVS use-case I also think it is fine because __ovs_nla_copy_actions() will ensure that MPLS POP only occurs for packets with an MPLS Ethernet protocol. That is, this condition should never occur in that use-case. And it appears that there are no other users of this function. I think it might be worth adding something about use-cases other than TC to the changelog, but that aside: Reviewed-by: Simon Horman <simon.horman@netronome.com> > --- > net/core/skbuff.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/core/skbuff.c b/net/core/skbuff.c > index 529133611ea2..cd59ccd6da57 100644 > --- a/net/core/skbuff.c > +++ b/net/core/skbuff.c > @@ -5536,7 +5536,7 @@ int skb_mpls_pop(struct sk_buff *skb, __be16 next_proto) > int err; > > if (unlikely(!eth_p_mpls(skb->protocol))) > - return -EINVAL; > + return 0; > > err = skb_ensure_writable(skb, skb->mac_len + MPLS_HLEN); > if (unlikely(err)) > -- > 2.21.0 > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH net 1/2] net: avoid errors when trying to pop MLPS header on non-MPLS packets 2019-10-11 7:34 ` Simon Horman @ 2019-10-11 9:26 ` John Hurley 0 siblings, 0 replies; 9+ messages in thread From: John Hurley @ 2019-10-11 9:26 UTC (permalink / raw) To: Simon Horman Cc: Davide Caratti, David S. Miller, Cong Wang, Lorenzo Bianconi, Linux Netdev List On Fri, Oct 11, 2019 at 8:34 AM Simon Horman <simon.horman@netronome.com> wrote: > > On Thu, Oct 10, 2019 at 08:43:52PM +0200, Davide Caratti wrote: > > the following script: > > > > # tc qdisc add dev eth0 clsact > > # tc filter add dev eth0 egress matchall action mpls pop > > > > implicitly makes the kernel drop all packets transmitted by eth0, if they > > don't have a MPLS header. This behavior is uncommon: other encapsulations > > (like VLAN) just let the packet pass unmodified. Since the result of MPLS > > 'pop' operation would be the same regardless of the presence / absence of > > MPLS header(s) in the original packet, we can let skb_mpls_pop() return 0 > > when dealing with non-MPLS packets. > > > > Fixes: 2a2ea50870ba ("net: sched: add mpls manipulation actions to TC") > > Signed-off-by: Davide Caratti <dcaratti@redhat.com> > Acked-by: John Hurley <john.hurley@netronome.com> > Hi Davide, > > For the TC use-case I think this is correct for the reasons you explain > above. > > For the OVS use-case I also think it is fine because > __ovs_nla_copy_actions() will ensure that MPLS POP only occurs > for packets with an MPLS Ethernet protocol. That is, this condition > should never occur in that use-case. > > And it appears that there are no other users of this function. > > I think it might be worth adding something about use-cases other than TC > to the changelog, but that aside: > > Reviewed-by: Simon Horman <simon.horman@netronome.com> > > > --- > > net/core/skbuff.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/net/core/skbuff.c b/net/core/skbuff.c > > index 529133611ea2..cd59ccd6da57 100644 > > --- a/net/core/skbuff.c > > +++ b/net/core/skbuff.c > > @@ -5536,7 +5536,7 @@ int skb_mpls_pop(struct sk_buff *skb, __be16 next_proto) > > int err; > > > > if (unlikely(!eth_p_mpls(skb->protocol))) > > - return -EINVAL; > > + return 0; > > > > err = skb_ensure_writable(skb, skb->mac_len + MPLS_HLEN); > > if (unlikely(err)) > > -- > > 2.21.0 > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH net 2/2] net/sched: fix corrupted L2 header with MPLS 'push' and 'pop' actions 2019-10-10 18:43 [PATCH net 0/2] net/sched: fix wrong behavior of MPLS push/pop action Davide Caratti 2019-10-10 18:43 ` [PATCH net 1/2] net: avoid errors when trying to pop MLPS header on non-MPLS packets Davide Caratti @ 2019-10-10 18:43 ` Davide Caratti 2019-10-11 7:34 ` Simon Horman 2019-10-12 3:17 ` kbuild test robot 1 sibling, 2 replies; 9+ messages in thread From: Davide Caratti @ 2019-10-10 18:43 UTC (permalink / raw) To: David S. Miller, John Hurley, Cong Wang; +Cc: Lorenzo Bianconi, netdev the following script: # tc qdisc add dev eth0 clsact # tc filter add dev eth0 egress protocol ip matchall \ > action mpls push protocol mpls_uc label 0x355aa bos 1 causes corruption of all IP packets transmitted by eth0. On TC egress, we can't rely on the value of skb->mac_len, because it's 0 and a MPLS 'push' operation will result in an overwrite of the first 4 octets in the packet L2 header (e.g. the Destination Address if eth0 is an Ethernet); the same error pattern is present also in the MPLS 'pop' operation. Fix this error in act_mpls data plane, computing 'mac_len' as the difference between the network header and the mac header (when not at TC ingress), and use it in MPLS 'push'/'pop' core functions. CC: Lorenzo Bianconi <lorenzo@kernel.org> Fixes: 2a2ea50870ba ("net: sched: add mpls manipulation actions to TC") Signed-off-by: Davide Caratti <dcaratti@redhat.com> --- include/linux/skbuff.h | 5 +++-- net/core/skbuff.c | 18 ++++++++++-------- net/openvswitch/actions.c | 5 +++-- net/sched/act_mpls.c | 12 ++++++++---- 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 4351577b14d7..7914fdaf4226 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -3510,8 +3510,9 @@ int skb_ensure_writable(struct sk_buff *skb, int write_len); int __skb_vlan_pop(struct sk_buff *skb, u16 *vlan_tci); int skb_vlan_pop(struct sk_buff *skb); int skb_vlan_push(struct sk_buff *skb, __be16 vlan_proto, u16 vlan_tci); -int skb_mpls_push(struct sk_buff *skb, __be32 mpls_lse, __be16 mpls_proto); -int skb_mpls_pop(struct sk_buff *skb, __be16 next_proto); +int skb_mpls_push(struct sk_buff *skb, __be32 mpls_lse, __be16 mpls_proto, + int mac_len); +int skb_mpls_pop(struct sk_buff *skb, __be16 next_proto, int mac_len); int skb_mpls_update_lse(struct sk_buff *skb, __be32 mpls_lse); int skb_mpls_dec_ttl(struct sk_buff *skb); struct sk_buff *pskb_extract(struct sk_buff *skb, int off, int to_copy, diff --git a/net/core/skbuff.c b/net/core/skbuff.c index cd59ccd6da57..ea88a65491a9 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -5477,12 +5477,14 @@ static void skb_mod_eth_type(struct sk_buff *skb, struct ethhdr *hdr, * @skb: buffer * @mpls_lse: MPLS label stack entry to push * @mpls_proto: ethertype of the new MPLS header (expects 0x8847 or 0x8848) + * @mac_len: length of the MAC header * * Expects skb->data at mac header. * * Returns 0 on success, -errno otherwise. */ -int skb_mpls_push(struct sk_buff *skb, __be32 mpls_lse, __be16 mpls_proto) +int skb_mpls_push(struct sk_buff *skb, __be32 mpls_lse, __be16 mpls_proto, + int mac_len) { struct mpls_shim_hdr *lse; int err; @@ -5499,15 +5501,15 @@ int skb_mpls_push(struct sk_buff *skb, __be32 mpls_lse, __be16 mpls_proto) return err; if (!skb->inner_protocol) { - skb_set_inner_network_header(skb, skb->mac_len); + skb_set_inner_network_header(skb, mac_len); skb_set_inner_protocol(skb, skb->protocol); } skb_push(skb, MPLS_HLEN); memmove(skb_mac_header(skb) - MPLS_HLEN, skb_mac_header(skb), - skb->mac_len); + mac_len); skb_reset_mac_header(skb); - skb_set_network_header(skb, skb->mac_len); + skb_set_network_header(skb, mac_len); lse = mpls_hdr(skb); lse->label_stack_entry = mpls_lse; @@ -5531,24 +5533,24 @@ EXPORT_SYMBOL_GPL(skb_mpls_push); * * Returns 0 on success, -errno otherwise. */ -int skb_mpls_pop(struct sk_buff *skb, __be16 next_proto) +int skb_mpls_pop(struct sk_buff *skb, __be16 next_proto, int mac_len) { int err; if (unlikely(!eth_p_mpls(skb->protocol))) return 0; - err = skb_ensure_writable(skb, skb->mac_len + MPLS_HLEN); + err = skb_ensure_writable(skb, mac_len + MPLS_HLEN); if (unlikely(err)) return err; skb_postpull_rcsum(skb, mpls_hdr(skb), MPLS_HLEN); memmove(skb_mac_header(skb) + MPLS_HLEN, skb_mac_header(skb), - skb->mac_len); + mac_len); __skb_pull(skb, MPLS_HLEN); skb_reset_mac_header(skb); - skb_set_network_header(skb, skb->mac_len); + skb_set_network_header(skb, mac_len); if (skb->dev && skb->dev->type == ARPHRD_ETHER) { struct ethhdr *hdr; diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c index 3572e11b6f21..1c77f520f474 100644 --- a/net/openvswitch/actions.c +++ b/net/openvswitch/actions.c @@ -165,7 +165,8 @@ static int push_mpls(struct sk_buff *skb, struct sw_flow_key *key, { int err; - err = skb_mpls_push(skb, mpls->mpls_lse, mpls->mpls_ethertype); + err = skb_mpls_push(skb, mpls->mpls_lse, mpls->mpls_ethertype, + skb->mac_len); if (err) return err; @@ -178,7 +179,7 @@ static int pop_mpls(struct sk_buff *skb, struct sw_flow_key *key, { int err; - err = skb_mpls_pop(skb, ethertype); + err = skb_mpls_pop(skb, ethertype, skb->mac_len); if (err) return err; diff --git a/net/sched/act_mpls.c b/net/sched/act_mpls.c index e168df0e008a..4cf6c553bb0b 100644 --- a/net/sched/act_mpls.c +++ b/net/sched/act_mpls.c @@ -55,7 +55,7 @@ static int tcf_mpls_act(struct sk_buff *skb, const struct tc_action *a, struct tcf_mpls *m = to_mpls(a); struct tcf_mpls_params *p; __be32 new_lse; - int ret; + int ret, mac_len; tcf_lastuse_update(&m->tcf_tm); bstats_cpu_update(this_cpu_ptr(m->common.cpu_bstats), skb); @@ -63,8 +63,12 @@ static int tcf_mpls_act(struct sk_buff *skb, const struct tc_action *a, /* Ensure 'data' points at mac_header prior calling mpls manipulating * functions. */ - if (skb_at_tc_ingress(skb)) + if (skb_at_tc_ingress(skb)) { skb_push_rcsum(skb, skb->mac_len); + mac_len = skb->mac_len; + } else { + mac_len = skb_network_header(skb) - skb_mac_header(skb); + } ret = READ_ONCE(m->tcf_action); @@ -72,12 +76,12 @@ static int tcf_mpls_act(struct sk_buff *skb, const struct tc_action *a, switch (p->tcfm_action) { case TCA_MPLS_ACT_POP: - if (skb_mpls_pop(skb, p->tcfm_proto)) + if (skb_mpls_pop(skb, p->tcfm_proto, mac_len)) goto drop; break; case TCA_MPLS_ACT_PUSH: new_lse = tcf_mpls_get_lse(NULL, p, !eth_p_mpls(skb->protocol)); - if (skb_mpls_push(skb, new_lse, p->tcfm_proto)) + if (skb_mpls_push(skb, new_lse, p->tcfm_proto, mac_len)) goto drop; break; case TCA_MPLS_ACT_MODIFY: -- 2.21.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH net 2/2] net/sched: fix corrupted L2 header with MPLS 'push' and 'pop' actions 2019-10-10 18:43 ` [PATCH net 2/2] net/sched: fix corrupted L2 header with MPLS 'push' and 'pop' actions Davide Caratti @ 2019-10-11 7:34 ` Simon Horman 2019-10-11 9:26 ` John Hurley 2019-10-11 9:26 ` John Hurley 2019-10-12 3:17 ` kbuild test robot 1 sibling, 2 replies; 9+ messages in thread From: Simon Horman @ 2019-10-11 7:34 UTC (permalink / raw) To: Davide Caratti Cc: David S. Miller, John Hurley, Cong Wang, Lorenzo Bianconi, netdev On Thu, Oct 10, 2019 at 08:43:53PM +0200, Davide Caratti wrote: > the following script: > > # tc qdisc add dev eth0 clsact > # tc filter add dev eth0 egress protocol ip matchall \ > > action mpls push protocol mpls_uc label 0x355aa bos 1 > > causes corruption of all IP packets transmitted by eth0. On TC egress, we > can't rely on the value of skb->mac_len, because it's 0 and a MPLS 'push' > operation will result in an overwrite of the first 4 octets in the packet > L2 header (e.g. the Destination Address if eth0 is an Ethernet); the same > error pattern is present also in the MPLS 'pop' operation. Fix this error > in act_mpls data plane, computing 'mac_len' as the difference between the > network header and the mac header (when not at TC ingress), and use it in > MPLS 'push'/'pop' core functions. > > CC: Lorenzo Bianconi <lorenzo@kernel.org> > Fixes: 2a2ea50870ba ("net: sched: add mpls manipulation actions to TC") > Signed-off-by: Davide Caratti <dcaratti@redhat.com> Reviewed-by: Simon Horman <simon.horman@netronome.com> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH net 2/2] net/sched: fix corrupted L2 header with MPLS 'push' and 'pop' actions 2019-10-11 7:34 ` Simon Horman @ 2019-10-11 9:26 ` John Hurley 2019-10-11 9:26 ` John Hurley 1 sibling, 0 replies; 9+ messages in thread From: John Hurley @ 2019-10-11 9:26 UTC (permalink / raw) To: Simon Horman Cc: Davide Caratti, David S. Miller, Cong Wang, Lorenzo Bianconi, Linux Netdev List On Fri, Oct 11, 2019 at 8:34 AM Simon Horman <simon.horman@netronome.com> wrote: > > On Thu, Oct 10, 2019 at 08:43:53PM +0200, Davide Caratti wrote: > > the following script: > > > > # tc qdisc add dev eth0 clsact > > # tc filter add dev eth0 egress protocol ip matchall \ > > > action mpls push protocol mpls_uc label 0x355aa bos 1 > > > > causes corruption of all IP packets transmitted by eth0. On TC egress, we > > can't rely on the value of skb->mac_len, because it's 0 and a MPLS 'push' > > operation will result in an overwrite of the first 4 octets in the packet > > L2 header (e.g. the Destination Address if eth0 is an Ethernet); the same > > error pattern is present also in the MPLS 'pop' operation. Fix this error > > in act_mpls data plane, computing 'mac_len' as the difference between the > > network header and the mac header (when not at TC ingress), and use it in > > MPLS 'push'/'pop' core functions. > > > > CC: Lorenzo Bianconi <lorenzo@kernel.org> > > Fixes: 2a2ea50870ba ("net: sched: add mpls manipulation actions to TC") > > Signed-off-by: Davide Caratti <dcaratti@redhat.com> > > Reviewed-by: Simon Horman <simon.horman@netronome.com> > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH net 2/2] net/sched: fix corrupted L2 header with MPLS 'push' and 'pop' actions 2019-10-11 7:34 ` Simon Horman 2019-10-11 9:26 ` John Hurley @ 2019-10-11 9:26 ` John Hurley 1 sibling, 0 replies; 9+ messages in thread From: John Hurley @ 2019-10-11 9:26 UTC (permalink / raw) To: Simon Horman Cc: Davide Caratti, David S. Miller, Cong Wang, Lorenzo Bianconi, Linux Netdev List On Fri, Oct 11, 2019 at 8:34 AM Simon Horman <simon.horman@netronome.com> wrote: > > On Thu, Oct 10, 2019 at 08:43:53PM +0200, Davide Caratti wrote: > > the following script: > > > > # tc qdisc add dev eth0 clsact > > # tc filter add dev eth0 egress protocol ip matchall \ > > > action mpls push protocol mpls_uc label 0x355aa bos 1 > > > > causes corruption of all IP packets transmitted by eth0. On TC egress, we > > can't rely on the value of skb->mac_len, because it's 0 and a MPLS 'push' > > operation will result in an overwrite of the first 4 octets in the packet > > L2 header (e.g. the Destination Address if eth0 is an Ethernet); the same > > error pattern is present also in the MPLS 'pop' operation. Fix this error > > in act_mpls data plane, computing 'mac_len' as the difference between the > > network header and the mac header (when not at TC ingress), and use it in > > MPLS 'push'/'pop' core functions. > > > > CC: Lorenzo Bianconi <lorenzo@kernel.org> > > Fixes: 2a2ea50870ba ("net: sched: add mpls manipulation actions to TC") > > Signed-off-by: Davide Caratti <dcaratti@redhat.com> > Acked-by: John Hurley <john.hurley@netronome.com> > Reviewed-by: Simon Horman <simon.horman@netronome.com> > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH net 2/2] net/sched: fix corrupted L2 header with MPLS 'push' and 'pop' actions 2019-10-10 18:43 ` [PATCH net 2/2] net/sched: fix corrupted L2 header with MPLS 'push' and 'pop' actions Davide Caratti 2019-10-11 7:34 ` Simon Horman @ 2019-10-12 3:17 ` kbuild test robot 1 sibling, 0 replies; 9+ messages in thread From: kbuild test robot @ 2019-10-12 3:17 UTC (permalink / raw) To: Davide Caratti Cc: kbuild-all, David S. Miller, John Hurley, Cong Wang, Lorenzo Bianconi, netdev [-- Attachment #1: Type: text/plain, Size: 26253 bytes --] Hi Davide, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on net/master] url: https://github.com/0day-ci/linux/commits/Davide-Caratti/net-avoid-errors-when-trying-to-pop-MLPS-header-on-non-MPLS-packets/20191012-085439 reproduce: make htmldocs If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@intel.com> All warnings (new ones prefixed by >>): drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: Function parameter or member 'vm' not described in 'for_each_amdgpu_vm_pt_dfs_safe' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: Function parameter or member 'start' not described in 'for_each_amdgpu_vm_pt_dfs_safe' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: Function parameter or member 'cursor' not described in 'for_each_amdgpu_vm_pt_dfs_safe' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:546: warning: Function parameter or member 'entry' not described in 'for_each_amdgpu_vm_pt_dfs_safe' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:821: warning: Function parameter or member 'level' not described in 'amdgpu_vm_bo_param' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1283: warning: Function parameter or member 'params' not described in 'amdgpu_vm_update_flags' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1283: warning: Function parameter or member 'bo' not described in 'amdgpu_vm_update_flags' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1283: warning: Function parameter or member 'level' not described in 'amdgpu_vm_update_flags' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1283: warning: Function parameter or member 'pe' not described in 'amdgpu_vm_update_flags' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1283: warning: Function parameter or member 'addr' not described in 'amdgpu_vm_update_flags' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1283: warning: Function parameter or member 'count' not described in 'amdgpu_vm_update_flags' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1283: warning: Function parameter or member 'incr' not described in 'amdgpu_vm_update_flags' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1283: warning: Function parameter or member 'flags' not described in 'amdgpu_vm_update_flags' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:2821: warning: Function parameter or member 'pasid' not described in 'amdgpu_vm_make_compute' drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:378: warning: Excess function parameter 'entry' description in 'amdgpu_irq_dispatch' drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:379: warning: Function parameter or member 'ih' not described in 'amdgpu_irq_dispatch' drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:379: warning: Excess function parameter 'entry' description in 'amdgpu_irq_dispatch' drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c:1: warning: no structured comments found drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:1: warning: no structured comments found drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c:1: warning: 'pp_dpm_sclk pp_dpm_mclk pp_dpm_pcie' not found drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:132: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source @atomic_obj drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:238: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source gpu_info FW provided soc bounding box struct or 0 if not drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:243: warning: Function parameter or member 'atomic_obj' not described in 'amdgpu_display_manager' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:243: warning: Function parameter or member 'backlight_link' not described in 'amdgpu_display_manager' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:243: warning: Function parameter or member 'backlight_caps' not described in 'amdgpu_display_manager' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:243: warning: Function parameter or member 'freesync_module' not described in 'amdgpu_display_manager' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:243: warning: Function parameter or member 'fw_dmcu' not described in 'amdgpu_display_manager' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:243: warning: Function parameter or member 'dmcu_fw_version' not described in 'amdgpu_display_manager' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:243: warning: Function parameter or member 'soc_bounding_box' not described in 'amdgpu_display_manager' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c:1: warning: 'register_hpd_handlers' not found drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c:1: warning: 'dm_crtc_high_irq' not found drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c:1: warning: 'dm_pflip_high_irq' not found drivers/gpio/gpiolib-of.c:92: warning: Excess function parameter 'dev' description in 'of_gpio_need_valid_mask' include/linux/i2c.h:337: warning: Function parameter or member 'init_irq' not described in 'i2c_client' mm/util.c:1: warning: 'get_user_pages_fast' not found mm/slab.c:4215: warning: Function parameter or member 'objp' not described in '__ksize' fs/fs-writeback.c:913: warning: Excess function parameter 'nr_pages' description in 'cgroup_writeback_by_id' fs/direct-io.c:258: warning: Excess function parameter 'offset' description in 'dio_complete' fs/libfs.c:496: warning: Excess function parameter 'available' description in 'simple_write_end' fs/posix_acl.c:647: warning: Function parameter or member 'inode' not described in 'posix_acl_update_mode' fs/posix_acl.c:647: warning: Function parameter or member 'mode_p' not described in 'posix_acl_update_mode' fs/posix_acl.c:647: warning: Function parameter or member 'acl' not described in 'posix_acl_update_mode' drivers/usb/typec/bus.c:1: warning: 'typec_altmode_register_driver' not found drivers/usb/typec/bus.c:1: warning: 'typec_altmode_unregister_driver' not found drivers/usb/typec/class.c:1: warning: 'typec_altmode_unregister_notifier' not found drivers/usb/typec/class.c:1: warning: 'typec_altmode_register_notifier' not found include/linux/w1.h:277: warning: Function parameter or member 'of_match_table' not described in 'w1_family' kernel/dma/coherent.c:1: warning: no structured comments found include/linux/input/sparse-keymap.h:43: warning: Function parameter or member 'sw' not described in 'key_entry' lib/genalloc.c:1: warning: 'gen_pool_add_virt' not found lib/genalloc.c:1: warning: 'gen_pool_alloc' not found lib/genalloc.c:1: warning: 'gen_pool_free' not found lib/genalloc.c:1: warning: 'gen_pool_alloc_algo' not found include/linux/bitmap.h:341: warning: Function parameter or member 'nbits' not described in 'bitmap_or_equal' include/linux/rculist.h:374: warning: Excess function parameter 'cond' description in 'list_for_each_entry_rcu' include/linux/rculist.h:651: warning: Excess function parameter 'cond' description in 'hlist_for_each_entry_rcu' include/net/mac80211.h:4056: warning: Function parameter or member 'sta_set_txpwr' not described in 'ieee80211_ops' include/net/mac80211.h:2018: warning: Function parameter or member 'txpwr' not described in 'ieee80211_sta' include/net/cfg80211.h:1185: warning: Function parameter or member 'txpwr' not described in 'station_parameters' include/linux/skbuff.h:888: warning: Function parameter or member 'dev_scratch' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'list' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'ip_defrag_offset' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'skb_mstamp_ns' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member '__cloned_offset' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'head_frag' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member '__pkt_type_offset' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'encapsulation' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'encap_hdr_csum' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'csum_valid' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member '__pkt_vlan_present_offset' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'vlan_present' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'csum_complete_sw' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'csum_level' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'inner_protocol_type' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'remcsum_offload' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'sender_cpu' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'reserved_tailroom' not described in 'sk_buff' include/linux/skbuff.h:888: warning: Function parameter or member 'inner_ipproto' not described in 'sk_buff' include/net/sock.h:233: warning: Function parameter or member 'skc_addrpair' not described in 'sock_common' include/net/sock.h:233: warning: Function parameter or member 'skc_portpair' not described in 'sock_common' include/net/sock.h:233: warning: Function parameter or member 'skc_ipv6only' not described in 'sock_common' include/net/sock.h:233: warning: Function parameter or member 'skc_net_refcnt' not described in 'sock_common' include/net/sock.h:233: warning: Function parameter or member 'skc_v6_daddr' not described in 'sock_common' include/net/sock.h:233: warning: Function parameter or member 'skc_v6_rcv_saddr' not described in 'sock_common' include/net/sock.h:233: warning: Function parameter or member 'skc_cookie' not described in 'sock_common' include/net/sock.h:233: warning: Function parameter or member 'skc_listener' not described in 'sock_common' include/net/sock.h:233: warning: Function parameter or member 'skc_tw_dr' not described in 'sock_common' include/net/sock.h:233: warning: Function parameter or member 'skc_rcv_wnd' not described in 'sock_common' include/net/sock.h:233: warning: Function parameter or member 'skc_tw_rcv_nxt' not described in 'sock_common' include/net/sock.h:515: warning: Function parameter or member 'sk_rx_skb_cache' not described in 'sock' include/net/sock.h:515: warning: Function parameter or member 'sk_wq_raw' not described in 'sock' include/net/sock.h:515: warning: Function parameter or member 'tcp_rtx_queue' not described in 'sock' include/net/sock.h:515: warning: Function parameter or member 'sk_tx_skb_cache' not described in 'sock' include/net/sock.h:515: warning: Function parameter or member 'sk_route_forced_caps' not described in 'sock' include/net/sock.h:515: warning: Function parameter or member 'sk_txtime_report_errors' not described in 'sock' include/net/sock.h:515: warning: Function parameter or member 'sk_validate_xmit_skb' not described in 'sock' include/net/sock.h:515: warning: Function parameter or member 'sk_bpf_storage' not described in 'sock' include/net/sock.h:2441: warning: Function parameter or member 'tcp_rx_skb_cache_key' not described in 'DECLARE_STATIC_KEY_FALSE' include/net/sock.h:2441: warning: Excess function parameter 'sk' description in 'DECLARE_STATIC_KEY_FALSE' include/net/sock.h:2441: warning: Excess function parameter 'skb' description in 'DECLARE_STATIC_KEY_FALSE' >> net/core/skbuff.c:5538: warning: Function parameter or member 'mac_len' not described in 'skb_mpls_pop' include/linux/netdevice.h:2053: warning: Function parameter or member 'gso_partial_features' not described in 'net_device' include/linux/netdevice.h:2053: warning: Function parameter or member 'l3mdev_ops' not described in 'net_device' include/linux/netdevice.h:2053: warning: Function parameter or member 'xfrmdev_ops' not described in 'net_device' include/linux/netdevice.h:2053: warning: Function parameter or member 'tlsdev_ops' not described in 'net_device' include/linux/netdevice.h:2053: warning: Function parameter or member 'name_assign_type' not described in 'net_device' include/linux/netdevice.h:2053: warning: Function parameter or member 'ieee802154_ptr' not described in 'net_device' include/linux/netdevice.h:2053: warning: Function parameter or member 'mpls_ptr' not described in 'net_device' include/linux/netdevice.h:2053: warning: Function parameter or member 'xdp_prog' not described in 'net_device' include/linux/netdevice.h:2053: warning: Function parameter or member 'gro_flush_timeout' not described in 'net_device' include/linux/netdevice.h:2053: warning: Function parameter or member 'nf_hooks_ingress' not described in 'net_device' include/linux/netdevice.h:2053: warning: Function parameter or member '____cacheline_aligned_in_smp' not described in 'net_device' include/linux/netdevice.h:2053: warning: Function parameter or member 'qdisc_hash' not described in 'net_device' include/linux/netdevice.h:2053: warning: Function parameter or member 'xps_cpus_map' not described in 'net_device' include/linux/netdevice.h:2053: warning: Function parameter or member 'xps_rxqs_map' not described in 'net_device' include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(advertising' not described in 'phylink_link_state' include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(lp_advertising' not described in 'phylink_link_state' include/drm/drm_modeset_helper_vtables.h:1053: warning: Function parameter or member 'prepare_writeback_job' not described in 'drm_connector_helper_funcs' include/drm/drm_modeset_helper_vtables.h:1053: warning: Function parameter or member 'cleanup_writeback_job' not described in 'drm_connector_helper_funcs' include/drm/drm_atomic_state_helper.h:1: warning: no structured comments found include/drm/drm_gem_shmem_helper.h:87: warning: Function parameter or member 'madv' not described in 'drm_gem_shmem_object' include/drm/drm_gem_shmem_helper.h:87: warning: Function parameter or member 'madv_list' not described in 'drm_gem_shmem_object' drivers/gpu/drm/i915/display/intel_dpll_mgr.h:158: warning: Enum value 'DPLL_ID_TGL_MGPLL5' not described in enum 'intel_dpll_id' drivers/gpu/drm/i915/display/intel_dpll_mgr.h:158: warning: Enum value 'DPLL_ID_TGL_MGPLL6' not described in enum 'intel_dpll_id' drivers/gpu/drm/i915/display/intel_dpll_mgr.h:158: warning: Excess enum value 'DPLL_ID_TGL_TCPLL6' description in 'intel_dpll_id' drivers/gpu/drm/i915/display/intel_dpll_mgr.h:158: warning: Excess enum value 'DPLL_ID_TGL_TCPLL5' description in 'intel_dpll_id' drivers/gpu/drm/i915/display/intel_dpll_mgr.h:342: warning: Function parameter or member 'wakeref' not described in 'intel_shared_dpll' Error: Cannot open file drivers/gpu/drm/i915/i915_gem_batch_pool.c Error: Cannot open file drivers/gpu/drm/i915/i915_gem_batch_pool.c Error: Cannot open file drivers/gpu/drm/i915/i915_gem_batch_pool.c drivers/gpu/drm/i915/i915_drv.h:1129: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source The OA context specific information. drivers/gpu/drm/i915/i915_drv.h:1143: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source State of the OA buffer. drivers/gpu/drm/i915/i915_drv.h:1154: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Locks reads and writes to all head/tail state drivers/gpu/drm/i915/i915_drv.h:1176: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source One 'aging' tail pointer and one 'aged' tail pointer ready to drivers/gpu/drm/i915/i915_drv.h:1188: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Index for the aged tail ready to read() data up to. drivers/gpu/drm/i915/i915_drv.h:1193: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source A monotonic timestamp for when the current aging tail pointer drivers/gpu/drm/i915/i915_drv.h:1199: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Although we can always read back the head pointer register, drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'pinned_ctx' not described in 'i915_perf_stream' drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'specific_ctx_id' not described in 'i915_perf_stream' drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'specific_ctx_id_mask' not described in 'i915_perf_stream' drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'poll_check_timer' not described in 'i915_perf_stream' drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'poll_wq' not described in 'i915_perf_stream' drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'pollin' not described in 'i915_perf_stream' drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'periodic' not described in 'i915_perf_stream' drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'period_exponent' not described in 'i915_perf_stream' drivers/gpu/drm/i915/i915_drv.h:1207: warning: Function parameter or member 'oa_buffer' not described in 'i915_perf_stream' drivers/gpu/drm/i915/i915_drv.h:1129: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source The OA context specific information. drivers/gpu/drm/i915/i915_drv.h:1143: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source State of the OA buffer. drivers/gpu/drm/i915/i915_drv.h:1154: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Locks reads and writes to all head/tail state drivers/gpu/drm/i915/i915_drv.h:1176: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source One 'aging' tail pointer and one 'aged' tail pointer ready to drivers/gpu/drm/i915/i915_drv.h:1188: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Index for the aged tail ready to read() data up to. drivers/gpu/drm/i915/i915_drv.h:1193: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source A monotonic timestamp for when the current aging tail pointer drivers/gpu/drm/i915/i915_drv.h:1199: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Although we can always read back the head pointer register, drivers/gpu/drm/i915/i915_drv.h:1129: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source The OA context specific information. drivers/gpu/drm/i915/i915_drv.h:1143: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source State of the OA buffer. drivers/gpu/drm/i915/i915_drv.h:1154: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Locks reads and writes to all head/tail state drivers/gpu/drm/i915/i915_drv.h:1176: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source One 'aging' tail pointer and one 'aged' tail pointer ready to drivers/gpu/drm/i915/i915_drv.h:1188: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Index for the aged tail ready to read() data up to. drivers/gpu/drm/i915/i915_drv.h:1193: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source A monotonic timestamp for when the current aging tail pointer drivers/gpu/drm/i915/i915_drv.h:1199: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source Although we can always read back the head pointer register, drivers/gpu/drm/mcde/mcde_drv.c:1: warning: 'ST-Ericsson MCDE DRM Driver' not found include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'quotactl' not described in 'security_list_options' include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'quota_on' not described in 'security_list_options' include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_free_mnt_opts' not described in 'security_list_options' include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_eat_lsm_opts' not described in 'security_list_options' include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_kern_mount' not described in 'security_list_options' include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_show_options' not described in 'security_list_options' include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'sb_add_mnt_opt' not described in 'security_list_options' include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'd_instantiate' not described in 'security_list_options' include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'getprocattr' not described in 'security_list_options' include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'setprocattr' not described in 'security_list_options' include/linux/lsm_hooks.h:1822: warning: Function parameter or member 'locked_down' not described in 'security_list_options' Documentation/admin-guide/perf/imx-ddr.rst:21: WARNING: Unexpected indentation. Documentation/admin-guide/perf/imx-ddr.rst:34: WARNING: Unexpected indentation. Documentation/admin-guide/perf/imx-ddr.rst:40: WARNING: Unexpected indentation. Documentation/admin-guide/perf/imx-ddr.rst:45: WARNING: Unexpected indentation. Documentation/admin-guide/perf/imx-ddr.rst:52: WARNING: Unexpected indentation. Documentation/admin-guide/xfs.rst:257: WARNING: Block quote ends without a blank line; unexpected unindent. Documentation/arm64/memory.rst:158: WARNING: Unexpected indentation. Documentation/arm64/memory.rst:162: WARNING: Unexpected indentation. Documentation/hwmon/inspur-ipsps1.rst:2: WARNING: Title underline too short. vim +5538 net/core/skbuff.c 8822e270d69701 John Hurley 2019-07-07 5525 ed246cee09b986 John Hurley 2019-07-07 5526 /** ed246cee09b986 John Hurley 2019-07-07 5527 * skb_mpls_pop() - pop the outermost MPLS header ed246cee09b986 John Hurley 2019-07-07 5528 * ed246cee09b986 John Hurley 2019-07-07 5529 * @skb: buffer ed246cee09b986 John Hurley 2019-07-07 5530 * @next_proto: ethertype of header after popped MPLS header ed246cee09b986 John Hurley 2019-07-07 5531 * ed246cee09b986 John Hurley 2019-07-07 5532 * Expects skb->data at mac header. ed246cee09b986 John Hurley 2019-07-07 5533 * ed246cee09b986 John Hurley 2019-07-07 5534 * Returns 0 on success, -errno otherwise. ed246cee09b986 John Hurley 2019-07-07 5535 */ c3fa3a45784aab Davide Caratti 2019-10-10 5536 int skb_mpls_pop(struct sk_buff *skb, __be16 next_proto, int mac_len) ed246cee09b986 John Hurley 2019-07-07 5537 { ed246cee09b986 John Hurley 2019-07-07 @5538 int err; ed246cee09b986 John Hurley 2019-07-07 5539 ed246cee09b986 John Hurley 2019-07-07 5540 if (unlikely(!eth_p_mpls(skb->protocol))) 4fa3379002f6b6 Davide Caratti 2019-10-10 5541 return 0; ed246cee09b986 John Hurley 2019-07-07 5542 c3fa3a45784aab Davide Caratti 2019-10-10 5543 err = skb_ensure_writable(skb, mac_len + MPLS_HLEN); ed246cee09b986 John Hurley 2019-07-07 5544 if (unlikely(err)) ed246cee09b986 John Hurley 2019-07-07 5545 return err; ed246cee09b986 John Hurley 2019-07-07 5546 ed246cee09b986 John Hurley 2019-07-07 5547 skb_postpull_rcsum(skb, mpls_hdr(skb), MPLS_HLEN); ed246cee09b986 John Hurley 2019-07-07 5548 memmove(skb_mac_header(skb) + MPLS_HLEN, skb_mac_header(skb), c3fa3a45784aab Davide Caratti 2019-10-10 5549 mac_len); ed246cee09b986 John Hurley 2019-07-07 5550 ed246cee09b986 John Hurley 2019-07-07 5551 __skb_pull(skb, MPLS_HLEN); ed246cee09b986 John Hurley 2019-07-07 5552 skb_reset_mac_header(skb); c3fa3a45784aab Davide Caratti 2019-10-10 5553 skb_set_network_header(skb, mac_len); ed246cee09b986 John Hurley 2019-07-07 5554 ed246cee09b986 John Hurley 2019-07-07 5555 if (skb->dev && skb->dev->type == ARPHRD_ETHER) { ed246cee09b986 John Hurley 2019-07-07 5556 struct ethhdr *hdr; ed246cee09b986 John Hurley 2019-07-07 5557 ed246cee09b986 John Hurley 2019-07-07 5558 /* use mpls_hdr() to get ethertype to account for VLANs. */ ed246cee09b986 John Hurley 2019-07-07 5559 hdr = (struct ethhdr *)((void *)mpls_hdr(skb) - ETH_HLEN); ed246cee09b986 John Hurley 2019-07-07 5560 skb_mod_eth_type(skb, hdr, next_proto); ed246cee09b986 John Hurley 2019-07-07 5561 } ed246cee09b986 John Hurley 2019-07-07 5562 skb->protocol = next_proto; ed246cee09b986 John Hurley 2019-07-07 5563 ed246cee09b986 John Hurley 2019-07-07 5564 return 0; ed246cee09b986 John Hurley 2019-07-07 5565 } ed246cee09b986 John Hurley 2019-07-07 5566 EXPORT_SYMBOL_GPL(skb_mpls_pop); ed246cee09b986 John Hurley 2019-07-07 5567 :::::: The code at line 5538 was first introduced by commit :::::: ed246cee09b9865145a2e1e34f63ec0e31dd83a5 net: core: move pop MPLS functionality from OvS to core helper :::::: TO: John Hurley <john.hurley@netronome.com> :::::: CC: David S. Miller <davem@davemloft.net> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 7278 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2019-10-12 3:17 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-10-10 18:43 [PATCH net 0/2] net/sched: fix wrong behavior of MPLS push/pop action Davide Caratti 2019-10-10 18:43 ` [PATCH net 1/2] net: avoid errors when trying to pop MLPS header on non-MPLS packets Davide Caratti 2019-10-11 7:34 ` Simon Horman 2019-10-11 9:26 ` John Hurley 2019-10-10 18:43 ` [PATCH net 2/2] net/sched: fix corrupted L2 header with MPLS 'push' and 'pop' actions Davide Caratti 2019-10-11 7:34 ` Simon Horman 2019-10-11 9:26 ` John Hurley 2019-10-11 9:26 ` John Hurley 2019-10-12 3:17 ` kbuild test robot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).