sfxge: skip VPD info population if access is denied
The patch allows to run on unprivileged PF (PFIOV) passed to a virtual machine. Reviewed by: gnn Sponsored by: Solarflare Communications, Inc. MFC after: 2 days Differential Revision: https://reviews.freebsd.org/D2891
This commit is contained in:
parent
71f5e47790
commit
667a1955d0
@ -905,8 +905,15 @@ sfxge_vpd_init(struct sfxge_softc *sc)
|
||||
efx_vpd_value_t value;
|
||||
int rc;
|
||||
|
||||
if ((rc = efx_vpd_size(sc->enp, &sc->vpd_size)) != 0)
|
||||
if ((rc = efx_vpd_size(sc->enp, &sc->vpd_size)) != 0) {
|
||||
/*
|
||||
* Unpriviledged functions deny VPD access.
|
||||
* Simply skip VPD in this case.
|
||||
*/
|
||||
if (rc == EACCES)
|
||||
goto done;
|
||||
goto fail;
|
||||
}
|
||||
sc->vpd_data = malloc(sc->vpd_size, M_SFXGE, M_WAITOK);
|
||||
if ((rc = efx_vpd_read(sc->enp, sc->vpd_data, sc->vpd_size)) != 0)
|
||||
goto fail2;
|
||||
@ -935,6 +942,7 @@ sfxge_vpd_init(struct sfxge_softc *sc)
|
||||
for (keyword[1] = 'A'; keyword[1] <= 'Z'; keyword[1]++)
|
||||
sfxge_vpd_try_add(sc, vpd_list, EFX_VPD_RO, keyword);
|
||||
|
||||
done:
|
||||
return (0);
|
||||
|
||||
fail2:
|
||||
|
Loading…
x
Reference in New Issue
Block a user