mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-12 03:26:26 +00:00
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: Frank Haverkamp <haver@linux.vnet.ibm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
ffdbb715fa
commit
95a8825c9c
2 changed files with 9 additions and 2 deletions
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
||||||
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 */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue