63 lines
2.4 KiB
Diff
63 lines
2.4 KiB
Diff
|
|
From 02c67ab8c1f1e29bf8274d9b460dc2f07b8e195b Mon Sep 17 00:00:00 2001
|
||
|
|
From: Peter Maydell <peter.maydell@linaro.org>
|
||
|
|
Date: Mon, 31 Oct 2022 13:29:01 +0000
|
||
|
|
Subject: [PATCH] net/vhost-vdpa.c: Fix clang compilation failure
|
||
|
|
|
||
|
|
Commit 8801ccd0500437 introduced a compilation failure with clang
|
||
|
|
version 10.0.0-4ubuntu1:
|
||
|
|
|
||
|
|
../../net/vhost-vdpa.c:654:16: error: variable 'vdpa_device_fd' is
|
||
|
|
used uninitialized whenever 'if' condition is false
|
||
|
|
[-Werror,-Wsometimes-uninitialized]
|
||
|
|
} else if (opts->has_vhostfd) {
|
||
|
|
^~~~~~~~~~~~~~~~~
|
||
|
|
../../net/vhost-vdpa.c:662:33: note: uninitialized use occurs here
|
||
|
|
r = vhost_vdpa_get_features(vdpa_device_fd, &features, errp);
|
||
|
|
^~~~~~~~~~~~~~
|
||
|
|
../../net/vhost-vdpa.c:654:12: note: remove the 'if' if its condition
|
||
|
|
is always true
|
||
|
|
} else if (opts->has_vhostfd) {
|
||
|
|
^~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
../../net/vhost-vdpa.c:629:23: note: initialize the variable
|
||
|
|
'vdpa_device_fd' to silence this warning
|
||
|
|
int vdpa_device_fd;
|
||
|
|
^
|
||
|
|
= 0
|
||
|
|
1 error generated.
|
||
|
|
|
||
|
|
It's a false positive -- the compiler doesn't manage to figure out
|
||
|
|
that the error checks further up mean that there's no code path where
|
||
|
|
vdpa_device_fd isn't initialized. Put another way, the problem is
|
||
|
|
that we check "if (opts->has_vhostfd)" when in fact that condition
|
||
|
|
must always be true. A cleverer static analyser would probably warn
|
||
|
|
that we were checking an always-true condition.
|
||
|
|
|
||
|
|
Fix the compilation failure by removing the unnecessary if().
|
||
|
|
|
||
|
|
Fixes: 8801ccd0500437 ("vhost-vdpa: allow passing opened vhostfd to vhost-vdpa")
|
||
|
|
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
|
||
|
|
Message-Id: <20221031132901.1277150-1-peter.maydell@linaro.org>
|
||
|
|
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||
|
|
Signed-off-by: fangyi <eric.fangyi@huawei.com>
|
||
|
|
---
|
||
|
|
net/vhost-vdpa.c | 3 ++-
|
||
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||
|
|
|
||
|
|
diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
|
||
|
|
index 58225649f9..c89f9d1243 100644
|
||
|
|
--- a/net/vhost-vdpa.c
|
||
|
|
+++ b/net/vhost-vdpa.c
|
||
|
|
@@ -659,7 +659,8 @@ int net_init_vhost_vdpa(const Netdev *netdev, const char *name,
|
||
|
|
if (vdpa_device_fd == -1) {
|
||
|
|
return -errno;
|
||
|
|
}
|
||
|
|
- } else if (opts->has_vhostfd) {
|
||
|
|
+ } else {
|
||
|
|
+ /* has_vhostfd */
|
||
|
|
vdpa_device_fd = monitor_fd_param(monitor_cur(), opts->vhostfd, errp);
|
||
|
|
if (vdpa_device_fd == -1) {
|
||
|
|
error_prepend(errp, "vhost-vdpa: unable to parse vhostfd: ");
|
||
|
|
--
|
||
|
|
2.27.0
|
||
|
|
|