]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
i40e: add max boundary check for VF filters
authorLukasz Czapnik <lukasz.czapnik@intel.com>
Wed, 13 Aug 2025 10:45:16 +0000 (12:45 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 2 Oct 2025 11:48:35 +0000 (13:48 +0200)
commit cb79fa7118c150c3c76a327894bb2eb878c02619 upstream.

There is no check for max filters that VF can request. Add it.

Fixes: e284fc280473 ("i40e: Add and delete cloud filter")
Cc: stable@vger.kernel.org
Signed-off-by: Lukasz Czapnik <lukasz.czapnik@intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c

index 378b5dc081ac3880efb99b09665e7d67c8cd80fe..360613b8bd1195b84b48e9d83d36ae3f4b9e10cb 100644 (file)
@@ -3908,6 +3908,8 @@ err:
                                       aq_ret);
 }
 
+#define I40E_MAX_VF_CLOUD_FILTER 0xFF00
+
 /**
  * i40e_vc_add_cloud_filter
  * @vf: pointer to the VF info
@@ -3947,6 +3949,14 @@ static int i40e_vc_add_cloud_filter(struct i40e_vf *vf, u8 *msg)
                goto err_out;
        }
 
+       if (vf->num_cloud_filters >= I40E_MAX_VF_CLOUD_FILTER) {
+               dev_warn(&pf->pdev->dev,
+                        "VF %d: Max number of filters reached, can't apply cloud filter\n",
+                        vf->vf_id);
+               aq_ret = -ENOSPC;
+               goto err_out;
+       }
+
        cfilter = kzalloc(sizeof(*cfilter), GFP_KERNEL);
        if (!cfilter) {
                aq_ret = -ENOMEM;