[PATCH 11/33] util: vircommand: Remove OOM handling

Peter Krempa pkrempa at redhat.com
Wed Feb 24 16:16:46 UTC 2021


The OOM error handling is dead code nowadays.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/util/vircommand.c | 96 +++++++++----------------------------------
 1 file changed, 20 insertions(+), 76 deletions(-)

diff --git a/src/util/vircommand.c b/src/util/vircommand.c
index f11caf0d6e..1a4b77ea24 100644
--- a/src/util/vircommand.c
+++ b/src/util/vircommand.c
@@ -90,7 +90,7 @@ struct _virCommandSendBuffer {
 };

 struct _virCommand {
-    int has_error; /* ENOMEM on allocation failure, -1 for anything else.  */
+    int has_error; /* 0 on success, -1 on error  */

     char **args;
     size_t nargs;
@@ -198,7 +198,6 @@ virCommandFDIsSet(virCommandPtr cmd,
  *
  * Returns: 0 on success,
  *          -1 on usage error,
- *          ENOMEM on OOM
  */
 static int
 virCommandFDSet(virCommandPtr cmd,
@@ -211,8 +210,7 @@ virCommandFDSet(virCommandPtr cmd,
     if (virCommandFDIsSet(cmd, fd))
         return 0;

-    if (VIR_EXPAND_N(cmd->passfd, cmd->npassfd, 1) < 0)
-        return ENOMEM;
+    ignore_value(VIR_EXPAND_N(cmd->passfd, cmd->npassfd, 1));

     cmd->passfd[cmd->npassfd - 1].fd = fd;
     cmd->passfd[cmd->npassfd - 1].flags = flags;
@@ -1344,10 +1342,7 @@ virCommandAddEnv(virCommandPtr cmd,
     }

     /* Arg plus trailing NULL. */
-    if (VIR_RESIZE_N(cmd->env, cmd->maxenv, cmd->nenv, 1 + 1) < 0) {
-        cmd->has_error = ENOMEM;
-        return;
-    }
+    ignore_value(VIR_RESIZE_N(cmd->env, cmd->maxenv, cmd->nenv, 1 + 1));

     cmd->env[cmd->nenv++] = g_steal_pointer(&env);
 }
@@ -1474,10 +1469,7 @@ virCommandAddEnvPassCommon(virCommandPtr cmd)
     if (!cmd || cmd->has_error)
         return;

-    if (VIR_RESIZE_N(cmd->env, cmd->maxenv, cmd->nenv, 9) < 0) {
-        cmd->has_error = ENOMEM;
-        return;
-    }
+    ignore_value(VIR_RESIZE_N(cmd->env, cmd->maxenv, cmd->nenv, 9));

     virCommandAddEnvPair(cmd, "LC_ALL", "C");

@@ -1497,10 +1489,7 @@ virCommandAddEnvXDG(virCommandPtr cmd, const char *baseDir)
     if (!cmd || cmd->has_error)
         return;

-    if (VIR_RESIZE_N(cmd->env, cmd->maxenv, cmd->nenv, 3) < 0) {
-        cmd->has_error = ENOMEM;
-        return;
-    }
+    ignore_value(VIR_RESIZE_N(cmd->env, cmd->maxenv, cmd->nenv, 3));

     virCommandAddEnvFormat(cmd, "XDG_DATA_HOME=%s/%s",
                            baseDir, ".local/share");
@@ -1530,10 +1519,7 @@ virCommandAddArg(virCommandPtr cmd, const char *val)
     }

     /* Arg plus trailing NULL. */
-    if (VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, 1 + 1) < 0) {
-        cmd->has_error = ENOMEM;
-        return;
-    }
+    ignore_value(VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, 1 + 1));

     cmd->args[cmd->nargs++] = g_strdup(val);
 }
@@ -1559,10 +1545,7 @@ virCommandAddArgBuffer(virCommandPtr cmd, virBufferPtr buf)
         str = g_strdup("");

     /* Arg plus trailing NULL. */
-    if (VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, 1 + 1) < 0) {
-        cmd->has_error = ENOMEM;
-        return;
-    }
+    ignore_value(VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, 1 + 1));

     cmd->args[cmd->nargs] = g_steal_pointer(&str);
     cmd->nargs++;
@@ -1591,11 +1574,7 @@ virCommandAddArgFormat(virCommandPtr cmd, const char *format, ...)
     va_end(list);

     /* Arg plus trailing NULL. */
-    if (VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, 1 + 1) < 0) {
-        VIR_FREE(arg);
-        cmd->has_error = ENOMEM;
-        return;
-    }
+    ignore_value(VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, 1 + 1));

     cmd->args[cmd->nargs++] = arg;
 }
@@ -1642,10 +1621,7 @@ virCommandAddArgSet(virCommandPtr cmd, const char *const*vals)
         narg++;

     /* narg plus trailing NULL. */
-    if (VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, narg + 1) < 0) {
-        cmd->has_error = ENOMEM;
-        return;
-    }
+    ignore_value(VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, narg + 1));

     narg = 0;
     while (vals[narg] != NULL) {
@@ -1678,10 +1654,7 @@ virCommandAddArgList(virCommandPtr cmd, ...)
     va_end(list);

     /* narg plus trailing NULL. */
-    if (VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, narg + 1) < 0) {
-        cmd->has_error = ENOMEM;
-        return;
-    }
+    ignore_value(VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, narg + 1));

     va_start(list, cmd);
     while (1) {
@@ -1765,10 +1738,7 @@ virCommandSetSendBuffer(virCommandPtr cmd,
     }

     i = virCommandGetNumSendBuffers(cmd);
-    if (VIR_REALLOC_N(cmd->sendBuffers, i + 1) < 0) {
-        cmd->has_error = ENOMEM;
-        return -1;
-    }
+    ignore_value(VIR_REALLOC_N(cmd->sendBuffers, i + 1));

     cmd->sendBuffers[i].fd = fd;
     cmd->sendBuffers[i].buffer = buffer;
@@ -2099,11 +2069,7 @@ virCommandToString(virCommandPtr cmd, bool linebreaks)

     /* Cannot assume virCommandRun will be called; so report the error
      * now.  If virCommandRun is called, it will report the same error. */
-    if (!cmd ||cmd->has_error == ENOMEM) {
-        virReportOOMError();
-        return NULL;
-    }
-    if (cmd->has_error) {
+    if (!cmd || cmd->has_error) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("invalid use of command API"));
         return NULL;
@@ -2339,11 +2305,7 @@ virCommandProcessIO(virCommandPtr cmd)
  */
 int virCommandExec(virCommandPtr cmd, gid_t *groups, int ngroups)
 {
-    if (!cmd ||cmd->has_error == ENOMEM) {
-        virReportOOMError();
-        return -1;
-    }
-    if (cmd->has_error) {
+    if (!cmd || cmd->has_error) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("invalid use of command API"));
         return -1;
@@ -2388,11 +2350,7 @@ virCommandRun(virCommandPtr cmd, int *exitstatus)
     char *str;
     int tmpfd;

-    if (!cmd ||cmd->has_error == ENOMEM) {
-        virReportOOMError();
-        return -1;
-    }
-    if (cmd->has_error) {
+    if (!cmd || cmd->has_error) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("invalid use of command API"));
         return -1;
@@ -2539,11 +2497,7 @@ virCommandRunAsync(virCommandPtr cmd, pid_t *pid)
     bool synchronous = false;
     int infd[2] = {-1, -1};

-    if (!cmd || cmd->has_error == ENOMEM) {
-        virReportOOMError();
-        return -1;
-    }
-    if (cmd->has_error) {
+    if (!cmd || cmd->has_error) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("invalid use of command API"));
         return -1;
@@ -2692,11 +2646,7 @@ virCommandWait(virCommandPtr cmd, int *exitstatus)
     int ret;
     int status = 0;

-    if (!cmd ||cmd->has_error == ENOMEM) {
-        virReportOOMError();
-        return -1;
-    }
-    if (cmd->has_error) {
+    if (!cmd || cmd->has_error) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("invalid use of command API"));
         return -1;
@@ -2835,11 +2785,8 @@ int virCommandHandshakeWait(virCommandPtr cmd)
 {
     char c;
     int rv;
-    if (!cmd ||cmd->has_error == ENOMEM) {
-        virReportOOMError();
-        return -1;
-    }
-    if (cmd->has_error || !cmd->handshake) {
+
+    if (!cmd || cmd->has_error || !cmd->handshake) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("invalid use of command API"));
         return -1;
@@ -2896,11 +2843,8 @@ int virCommandHandshakeWait(virCommandPtr cmd)
 int virCommandHandshakeNotify(virCommandPtr cmd)
 {
     char c = '1';
-    if (!cmd ||cmd->has_error == ENOMEM) {
-        virReportOOMError();
-        return -1;
-    }
-    if (cmd->has_error || !cmd->handshake) {
+
+    if (!cmd || cmd->has_error || !cmd->handshake) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("invalid use of command API"));
         return -1;
-- 
2.29.2




More information about the libvir-list mailing list