On 2/12/2026 6:10 PM, Bruce Richardson wrote:
On Thu, Feb 12, 2026 at 12:53:25PM +0000, Anatoly Burakov wrote:
Currently, security flows are implemented as a special case and do not go
through the normal flow create/destroy infrastructure. However, because of
that, it is impossible to destroy such flows once created. Fix it by adding
a flag to rte_flow indicating that it is a security flow, so that it can be
destroyed later.

Additionally, security flows return pointer to allocated `rte_flow` struct
unconditionally, even though the underlying call to ipsec code might have
failed. Fix that by checking the return value from the filter function
before returning.

Fixes: 9a0752f498d2 ("net/ixgbe: enable inline IPsec")
Cc: [email protected]
Cc: [email protected]

Signed-off-by: Anatoly Burakov <[email protected]>

<snip>

@@ -3350,6 +3354,12 @@ ixgbe_flow_destroy(struct rte_eth_dev *dev,
                IXGBE_DEV_PRIVATE_TO_FDIR_INFO(dev->data->dev_private);
        struct ixgbe_rss_conf_ele *rss_filter_ptr;
+ /* Special case for SECURITY flows */
+       if (flow->is_security) {
+               ret = 0;

Rather than assigning ret explicitly here, I think it might be better just
to set it = 0  at definition, and leaving this as a simple goto free. [It
would also head off any future compiler warnings about ret being
uninitialized :-)]


I actually remember a lot of commits *removing* that sort of thing, with the idea being that we *want* to have these warnings to make sure every path is covered. Additionally, I personally prefer it this way for clarity (i.e. explicitly indicating success).

I can still fix it if you have strong feelings on it, but I'd rather leave it as is.

--
Thanks,
Anatoly

Reply via email to