From e01eedf9bfb53d7054e53b5e070e7924d3ac02c1 Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Fri, 31 May 2013 07:26:30 -0400 Subject: [PATCH] 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. (cherry picked from commit 64919d978e4cc910a4475f77c0f04b866051935d) --- src/nwfilter/nwfilter_learnipaddr.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/nwfilter/nwfilter_learnipaddr.c b/src/nwfilter/nwfilter_learnipaddr.c index b399092ef0..990374d535 100644 --- a/src/nwfilter/nwfilter_learnipaddr.c +++ b/src/nwfilter/nwfilter_learnipaddr.c @@ -250,6 +250,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;