hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/net/netfilter/nft_flow_offload.c
....@@ -90,7 +90,7 @@
9090
9191 switch (ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum) {
9292 case IPPROTO_TCP:
93
- tcph = skb_header_pointer(pkt->skb, pkt->xt.thoff,
93
+ tcph = skb_header_pointer(pkt->skb, nft_thoff(pkt),
9494 sizeof(_tcph), &_tcph);
9595 if (unlikely(!tcph || tcph->fin || tcph->rst))
9696 goto out;
....@@ -174,8 +174,10 @@
174174 if (IS_ERR(flowtable))
175175 return PTR_ERR(flowtable);
176176
177
+ if (!nft_use_inc(&flowtable->use))
178
+ return -EMFILE;
179
+
177180 priv->flowtable = flowtable;
178
- flowtable->use++;
179181
180182 return nf_ct_netns_get(ctx->net, ctx->family);
181183 }
....@@ -194,7 +196,7 @@
194196 {
195197 struct nft_flow_offload *priv = nft_expr_priv(expr);
196198
197
- priv->flowtable->use++;
199
+ nft_use_inc_restore(&priv->flowtable->use);
198200 }
199201
200202 static void nft_flow_offload_destroy(const struct nft_ctx *ctx,