Commit 95a8825c authored by Frank Haverkamp's avatar Frank Haverkamp Committed by Greg Kroah-Hartman

GenWQE: Check pci_get_totalvfs return code

Currently the driver is using the pci_get_totalvfs() return code
directly in a loop. To avoid problems with potentially negative
returns in case of errors, we are adding some more sanity checking
code.
Signed-off-by: default avatarFrank Haverkamp <haver@linux.vnet.ibm.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ffdbb715
...@@ -346,8 +346,13 @@ static bool genwqe_setup_vf_jtimer(struct genwqe_dev *cd) ...@@ -346,8 +346,13 @@ static bool genwqe_setup_vf_jtimer(struct genwqe_dev *cd)
unsigned int vf; unsigned int vf;
u32 T = genwqe_T_psec(cd); u32 T = genwqe_T_psec(cd);
u64 x; u64 x;
int totalvfs;
for (vf = 0; vf < pci_sriov_get_totalvfs(pci_dev); vf++) { totalvfs = pci_sriov_get_totalvfs(pci_dev);
if (totalvfs <= 0)
return false;
for (vf = 0; vf < totalvfs; vf++) {
if (cd->vf_jobtimeout_msec[vf] == 0) if (cd->vf_jobtimeout_msec[vf] == 0)
continue; continue;
...@@ -1125,6 +1130,8 @@ static int genwqe_pci_setup(struct genwqe_dev *cd) ...@@ -1125,6 +1130,8 @@ static int genwqe_pci_setup(struct genwqe_dev *cd)
} }
cd->num_vfs = pci_sriov_get_totalvfs(pci_dev); cd->num_vfs = pci_sriov_get_totalvfs(pci_dev);
if (cd->num_vfs < 0)
cd->num_vfs = 0;
err = genwqe_read_ids(cd); err = genwqe_read_ids(cd);
if (err) if (err)
......
...@@ -306,7 +306,7 @@ struct genwqe_dev { ...@@ -306,7 +306,7 @@ struct genwqe_dev {
struct pci_dev *pci_dev; /* PCI device */ struct pci_dev *pci_dev; /* PCI device */
void __iomem *mmio; /* BAR-0 MMIO start */ void __iomem *mmio; /* BAR-0 MMIO start */
unsigned long mmio_len; unsigned long mmio_len;
u16 num_vfs; int num_vfs;
u32 vf_jobtimeout_msec[GENWQE_MAX_VFS]; u32 vf_jobtimeout_msec[GENWQE_MAX_VFS];
int is_privileged; /* access to all regs possible */ int is_privileged; /* access to all regs possible */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment