• Jianbo Liu's avatar
    xfrm: call xfrm_dev_policy_delete when kill policy · 89a2aefe
    Jianbo Liu authored
    xfrm_policy_kill() is called at different places to delete xfrm
    policy. It will call xfrm_pol_put(). But xfrm_dev_policy_delete() is
    not called to free the policy offloaded to hardware.
    
    The three commits cited here are to handle this issue by calling
    xfrm_dev_policy_delete() outside xfrm_get_policy(). But they didn't
    cover all the cases. An example, which is not handled for now, is
    xfrm_policy_insert(). It is called when XFRM_MSG_UPDPOLICY request is
    received. Old policy is replaced by new one, but the offloaded policy
    is not deleted, so driver doesn't have the chance to release hardware
    resources.
    
    To resolve this issue for all cases, move xfrm_dev_policy_delete()
    into xfrm_policy_kill(), so the offloaded policy can be deleted from
    hardware when it is called, which avoids hardware resources leakage.
    
    Fixes: 919e43fa ("xfrm: add an interface to offload policy")
    Fixes: bf06fcf4 ("xfrm: add missed call to delete offloaded policies")
    Fixes: 982c3aca ("xfrm: delete offloaded policy")
    Signed-off-by: default avatarJianbo Liu <jianbol@nvidia.com>
    Reviewed-by: default avatarCosmin Ratiu <cratiu@nvidia.com>
    Signed-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
    Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
    89a2aefe
xfrm_user.c 96.8 KB