crypto: hisilicon/qm - return failure if vfs_num exceeds total VFs
authorWeili Qian <qianweili@huawei.com>
Sat, 27 Aug 2022 10:27:56 +0000 (18:27 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 2 Sep 2022 10:38:07 +0000 (18:38 +0800)
The accelerator drivers supports users to enable VFs through the
module parameter 'vfs_num'. If the number of VFs to be enabled
exceeds the total VFs, all VFs are enabled. Change it to the same
as enabling VF through the 'sriov_numvfs' file. Returns -ERANGE
if the number of VFs to be enabled exceeds total VFs.

Signed-off-by: Weili Qian <qianweili@huawei.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/hisilicon/qm.c

index fd9fb15..54bbd7f 100644 (file)
@@ -4766,7 +4766,13 @@ int hisi_qm_sriov_enable(struct pci_dev *pdev, int max_vfs)
                goto err_put_sync;
        }
 
-       num_vfs = min_t(int, max_vfs, total_vfs);
+       if (max_vfs > total_vfs) {
+               pci_err(pdev, "%d VFs is more than total VFs %d!\n", max_vfs, total_vfs);
+               ret = -ERANGE;
+               goto err_put_sync;
+       }
+
+       num_vfs = max_vfs;
        ret = qm_vf_q_assign(qm, num_vfs);
        if (ret) {
                pci_err(pdev, "Can't assign queues for VF!\n");