From: Michal Privoznik Date: Sun, 19 Apr 2020 05:25:34 +0000 (+0200) Subject: virNetDevSwitchdevFeature: Make failure to get 'family_id' non-fatal X-Git-Tag: v6.3.0-rc1~105 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=423664a6e9287905574d6c62ded36f273c2f09ac;p=thirdparty%2Flibvirt.git virNetDevSwitchdevFeature: Make failure to get 'family_id' non-fatal I've just got a new machine and I'm still converging on the kernel config. Anyway, since I don't have enabled any of SRIO-V drivers, my kernel doesn't have NET_DEVLINK enabled (i.e. virNetDevGetFamilyId() returns 0). But this makes nodedev driver ignore all interfaces, because when enumerating all devices via udev, the control reaches virNetDevSwitchdevFeature() eventually and subsequently virNetDevGetFamilyId() which 'fails'. Well, it's not really a failure - the virNetDevSwitchdevFeature() stub simply returns 0. Also, move the call a few lines below, just around the place where it's needed. Signed-off-by: Michal Privoznik Reviewed-by: Ján Tomko --- diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c index 3431aaf6a9..ff86aa1fc9 100644 --- a/src/util/virnetdev.c +++ b/src/util/virnetdev.c @@ -3146,9 +3146,7 @@ virNetDevSwitchdevFeature(const char *ifname, int is_vf = -1; int ret = -1; uint32_t family_id; - - if (virNetDevGetFamilyId(DEVLINK_GENL_NAME, &family_id) <= 0) - return ret; + int rv; if ((is_vf = virNetDevIsVirtualFunction(ifname)) < 0) return ret; @@ -3168,6 +3166,9 @@ virNetDevSwitchdevFeature(const char *ifname, goto cleanup; } + if ((rv = virNetDevGetFamilyId(DEVLINK_GENL_NAME, &family_id)) <= 0) + return rv; + if (!(nl_msg = nlmsg_alloc_simple(family_id, NLM_F_REQUEST | NLM_F_ACK))) { virReportOOMError();