Message ID | 0683b4ff-43eb-029d-b28d-e98bb41516a4@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | [netdev/net,ppc,bisected,8550ff8] build fails net/core/dev.c:6020:19: error: dereferencing pointer | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/merge (311c00a9a9990647758763cc87d0588b6adcad02) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/next (019b3fd94ba73d3ac615f0537440b81f129821f6) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch linus/master (e9f1cbc0c4114880090c7a578117d3b9cf184ad4) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/fixes (1df3af6dc3cfe643f43d46f202bd44861ccbdb99) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch linux-next (a180bd1d7e16173d965b263c5a536aa40afa2a2a) |
snowpatch_ozlabs/apply_patch | fail | Failed to apply to any branch |
On 2021-07-08 9:29 AM, Abdul Haleem wrote: > Greetings > > netdev's net branch fails to build on my PowerPC box with error > > net/core/dev.c: In function 'gro_list_prepare': > net/core/dev.c:6015:51: error: 'TC_SKB_EXT' undeclared (first use in this function); did you mean 'TC_U32_EAT'? > struct tc_skb_ext *skb_ext = skb_ext_find(skb, TC_SKB_EXT); > ^~~~~~~~~~ > TC_U32_EAT > net/core/dev.c:6015:51: note: each undeclared identifier is reported only once for each function it appears in > net/core/dev.c:6020:19: error: dereferencing pointer to incomplete type 'struct tc_skb_ext' > diffs |= p_ext->chain ^ skb_ext->chain; > ^~ > make[2]: *** [scripts/Makefile.build:273: net/core/dev.o] Error 1 > make[2]: *** Waiting for unfinished jobs.... > make[1]: *** [scripts/Makefile.build:516: net/core] Error 2 > make[1]: *** Waiting for unfinished jobs.... > make: *** [Makefile:1847: net] Error 2 > make: *** Waiting for unfinished jobs... > > Which was included due to below commit > > commit 8550ff8d8c75416e984d9c4b082845e57e560984 > Author: Paul Blakey <paulb@nvidia.com <mailto:paulb@nvidia.com>> > Date: Mon Jul 5 13:54:51 2021 +0300 > > skbuff: Release nfct refcount on napi stolen or re-used skbs > > When multiple SKBs are merged to a new skb under napi GRO, > or SKB is re-used by napi, if nfct was set for them in the > driver, it will not be released while freeing their stolen > head state or on re-use. > > Release nfct on napi's stolen or re-used SKBs, and > in gro_list_prepare, check conntrack metadata diff. > > Fixes: 5c6b94604744 ("net/mlx5e: CT: Handle misses after executing CT action") > Reviewed-by: Roi Dayan <roid@nvidia.com <mailto:roid@nvidia.com>> > Signed-off-by: Paul Blakey <paulb@nvidia.com <mailto:paulb@nvidia.com>> > Signed-off-by: David S. Miller <davem@davemloft.net <mailto:davem@davemloft.net>> > > diff --git a/net/core/dev.c b/net/core/dev.c > index c253c2aafe97..177a5aec0b6b 100644 > --- a/net/core/dev.c > +++ b/net/core/dev.c > @@ -6008,6 +6008,18 @@ static void gro_list_prepare(const struct list_head *head, > diffs = memcmp(skb_mac_header(p), > skb_mac_header(skb), > maclen); > + > + diffs |= skb_get_nfct(p) ^ skb_get_nfct(skb); > + > + if (!diffs) { > + struct tc_skb_ext *skb_ext = skb_ext_find(skb, TC_SKB_EXT); > + struct tc_skb_ext *p_ext = skb_ext_find(p, TC_SKB_EXT); > + > + diffs |= (!!p_ext) ^ (!!skb_ext); > + if (!diffs && unlikely(skb_ext)) > + diffs |= p_ext->chain ^ skb_ext->chain; > + } > + > NAPI_GRO_CB(p)->same_flow = !diffs; > } > } > > kernel config is attached > > @paul, could you please have a look into this ? > > -- > Regard's > > Abdul Haleem > IBM Linux Technology Center > Hi, This looks the same reason as Floarian fixed, missing CONFIG_SKB_EXTENSIONS and CONFIG_NET_TC_SKB_EXT. Fix was sent by Floarian titled "[PATCH net] skbuff: Fix build with SKB extensions disabled". Thanks, Roi
diff --git a/net/core/dev.c b/net/core/dev.c index c253c2aafe97..177a5aec0b6b 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -6008,6 +6008,18 @@ static void gro_list_prepare(const struct list_head *head, diffs = memcmp(skb_mac_header(p), skb_mac_header(skb), maclen); + + diffs |= skb_get_nfct(p) ^ skb_get_nfct(skb); + + if (!diffs) { + struct tc_skb_ext *skb_ext = skb_ext_find(skb, TC_SKB_EXT); + struct tc_skb_ext *p_ext = skb_ext_find(p, TC_SKB_EXT); + + diffs |= (!!p_ext) ^ (!!skb_ext); + if (!diffs && unlikely(skb_ext)) + diffs |= p_ext->chain ^ skb_ext->chain; + } + NAPI_GRO_CB(p)->same_flow = !diffs; } }