Coverity point out (CID 1660042, 1660052) that some error-exit paths
in net_init_tap() reach the "close(fd)" at the 'fail' label when 'fd'
still has its initial value of -1.  This isn't a valid fd, so while
close(-1) will fail and we are ignoring its return value anyway, we
should avoid it.  (Compare net_free_fds() which has "don't close -1"
logic in it.)

Resolves: Coverity CID 1660042, 1660052
Signed-off-by: Peter Maydell <[email protected]>
---
 net/tap.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/net/tap.c b/net/tap.c
index d71e3dd1175..ea0ad084819 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -1245,7 +1245,9 @@ int net_init_tap(const Netdev *netdev, const char *name,
     return 0;
 
 fail:
-    close(fd);
+    if (fd != -1) {
+        close(fd);
+    }
     net_free_fds(fds, queues);
     net_free_fds(vhost_fds, queues);
     return -1;
-- 
2.43.0


Reply via email to