From: John Ferlan Date: Fri, 31 May 2013 11:26:30 +0000 (-0400) Subject: Check for existence of interface prior to setting terminate flag X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=64919d978e4cc910a4475f77c0f04b866051935d;p=libvirt.git Check for existence of interface prior to setting terminate flag https://bugzilla.redhat.com/show_bug.cgi?id=903480 During domain destruction it's possible that the learnIPAddressThread has already removed the interface prior to the teardown filter path being run. The teardown code would only be telling the thread to terminate. --- diff --git a/src/nwfilter/nwfilter_learnipaddr.c b/src/nwfilter/nwfilter_learnipaddr.c index 2b493337f9..eabcf94e5c 100644 --- a/src/nwfilter/nwfilter_learnipaddr.c +++ b/src/nwfilter/nwfilter_learnipaddr.c @@ -251,6 +251,14 @@ virNWFilterTerminateLearnReq(const char *ifname) { int ifindex; virNWFilterIPAddrLearnReqPtr req; + /* It's possible that it's already been removed as a result of + * virNWFilterDeregisterLearnReq during learnIPAddressThread() exit + */ + if (virNetDevExists(ifname) != 1) { + virResetLastError(); + return 0; + } + if (virNetDevGetIndex(ifname, &ifindex) < 0) { virResetLastError(); return rc;