qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 010/109] virtiofsd: Fix fuse_daemonize ignored return valu


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v2 010/109] virtiofsd: Fix fuse_daemonize ignored return values
Date: Tue, 21 Jan 2020 16:24:25 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2

On 1/21/20 1:22 PM, Dr. David Alan Gilbert (git) wrote:
From: "Dr. David Alan Gilbert" <address@hidden>

QEMU's compiler enables warnings/errors for ignored values
and the (void) trick used in the fuse code isn't enough.
Turn all the return values into a return value on the function.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Daniel P. Berrangé <address@hidden>
---
  tools/virtiofsd/helper.c | 33 ++++++++++++++++++++++-----------
  1 file changed, 22 insertions(+), 11 deletions(-)

diff --git a/tools/virtiofsd/helper.c b/tools/virtiofsd/helper.c
index 46466f4054..0ad34f0619 100644
--- a/tools/virtiofsd/helper.c
+++ b/tools/virtiofsd/helper.c
@@ -10,12 +10,10 @@
   * See the file COPYING.LIB.
   */
-#include "config.h"
  #include "fuse_i.h"
  #include "fuse_lowlevel.h"
  #include "fuse_misc.h"
  #include "fuse_opt.h"
-#include "mount_util.h"
#include <errno.h>
  #include <limits.h>
@@ -173,6 +171,7 @@ int fuse_parse_cmdline(struct fuse_args *args, struct 
fuse_cmdline_opts *opts)
int fuse_daemonize(int foreground)
  {
+    int ret = 0, rett;
      if (!foreground) {
          int nullfd;
          int waiter[2];
@@ -194,8 +193,8 @@ int fuse_daemonize(int foreground)
          case 0:
              break;
          default:
-            (void)read(waiter[0], &completed, sizeof(completed));
-            _exit(0);
+            _exit(read(waiter[0], &completed,
+                       sizeof(completed) != sizeof(completed)));
          }
if (setsid() == -1) {
@@ -203,13 +202,22 @@ int fuse_daemonize(int foreground)
              return -1;
          }
- (void)chdir("/");
+        ret = chdir("/");
nullfd = open("/dev/null", O_RDWR, 0);
          if (nullfd != -1) {
-            (void)dup2(nullfd, 0);
-            (void)dup2(nullfd, 1);
-            (void)dup2(nullfd, 2);
+            rett = dup2(nullfd, 0);
+            if (!ret) {
+                ret = rett;
+            }
+            rett = dup2(nullfd, 1);
+            if (!ret) {
+                ret = rett;
+            }
+            rett = dup2(nullfd, 2);
+            if (!ret) {
+                ret = rett;
+            }
              if (nullfd > 2) {
                  close(nullfd);
              }
@@ -217,13 +225,16 @@ int fuse_daemonize(int foreground)
/* Propagate completion of daemon initialization */
          completed = 1;
-        (void)write(waiter[1], &completed, sizeof(completed));
+        rett = write(waiter[1], &completed, sizeof(completed));
+        if (!ret) {
+            ret = rett;
+        }
          close(waiter[0]);
          close(waiter[1]);
      } else {
-        (void)chdir("/");
+        ret = chdir("/");
      }
-    return 0;
+    return ret;
  }
void fuse_apply_conn_info_opts(struct fuse_conn_info_opts *opts,


Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Tested-by: Philippe Mathieu-Daudé <address@hidden>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]