RE: [PATCH] ixgbevf: fix xfrm_state reference leak in ixgbevf_ipsec_rx()

From: Romanowski, Rafal

Date: Tue Oct 06 2026 - 04:11:20 EST


> -----Original Message-----
> From: Loktionov, Aleksandr <aleksandr.loktionov@xxxxxxxxx>
> Sent: Monday, September 21, 2026 5:30 PM
> To: Wentao Liang <vulab@xxxxxxxxxxx>; andrew+netdev@xxxxxxx
> Cc: Nguyen, Anthony L <anthony.l.nguyen@xxxxxxxxx>; davem@xxxxxxxxxxxxx;
> edumazet@xxxxxxxxxx; intel-wired-lan@xxxxxxxxxxxxxxxx; kuba@xxxxxxxxxx;
> linux-kernel@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; pabeni@xxxxxxxxxx;
> Kitszel, Przemyslaw <przemyslaw.kitszel@xxxxxxxxx>; sln@xxxxxxxxxxx;
> stable@xxxxxxxxxxxxxxx
> Subject: RE: [PATCH] ixgbevf: fix xfrm_state reference leak in ixgbevf_ipsec_rx()
>
>
>
> > -----Original Message-----
> > From: Wentao Liang <vulab@xxxxxxxxxxx>
> > Sent: Thursday, September 17, 2026 1:14 PM
> > To: andrew+netdev@xxxxxxx
> > Cc: Nguyen, Anthony L <anthony.l.nguyen@xxxxxxxxx>;
> > davem@xxxxxxxxxxxxx; edumazet@xxxxxxxxxx; intel-wired-
> > lan@xxxxxxxxxxxxxxxx; kuba@xxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> > netdev@xxxxxxxxxxxxxxx; pabeni@xxxxxxxxxx; Kitszel, Przemyslaw
> > <przemyslaw.kitszel@xxxxxxxxx>; sln@xxxxxxxxxxx; Wentao Liang
> > <vulab@xxxxxxxxxxx>; stable@xxxxxxxxxxxxxxx
> > Subject: [PATCH] ixgbevf: fix xfrm_state reference leak in
> > ixgbevf_ipsec_rx()
> >
> > ixgbevf_ipsec_find_rx_state() returns the state with an extra
> > reference, which is handed over to the secpath on the success path.
> > When
> > secpath_set() fails, the state has not been stored anywhere yet and
> > the reference is dropped on the floor.
> >
> > Release it before returning.
> >
> > Fixes: 0062e7cc955e0 ("ixgbevf: add VF IPsec offload code")
> > Cc: stable@xxxxxxxxxxxxxxx
> > Signed-off-by: Wentao Liang <vulab@xxxxxxxxxxx>
> > ---
> > drivers/net/ethernet/intel/ixgbevf/ipsec.c | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/ethernet/intel/ixgbevf/ipsec.c
> > b/drivers/net/ethernet/intel/ixgbevf/ipsec.c
> > index 076fd0a24858..bf3fcab3bd57 100644
> > --- a/drivers/net/ethernet/intel/ixgbevf/ipsec.c
> > +++ b/drivers/net/ethernet/intel/ixgbevf/ipsec.c
> > @@ -596,8 +596,10 @@ void ixgbevf_ipsec_rx(struct ixgbevf_ring
> > *rx_ring,
> > return;
> >
> > sp = secpath_set(skb);
> > - if (unlikely(!sp))
> > + if (unlikely(!sp)) {
> > + xfrm_state_put(xs);
> > return;
> > + }
> >
> > sp->xvec[sp->len++] = xs;
> > sp->olen++;
> > --
> > 2.34.1
>
> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@xxxxxxxxx>


Tested-by: Rafal Romanowski <rafal.romanowski@xxxxxxxxx>