From c405a011669cbd3bc37145d833507a5ed62adcfe Mon Sep 17 00:00:00 2001 From: Adrian Reber Date: Wed, 14 Oct 2020 08:29:13 +0000 Subject: [PATCH] coverity: get_service_fd() is passed to a parameter that cannot be negative criu/fdstore.c:110: negative_return_fn: Function "get_service_fd(FDSTORE_SK_OFF)" returns a negative number. criu/fdstore.c:110: assign: Assigning: "sk" = "get_service_fd(FDSTORE_SK_OFF)". criu/fdstore.c:114: negative_returns: "sk" is passed to a parameter that cannot be negative. criu/namespaces.c:1366: negative_return_fn: Function "get_service_fd(USERNSD_SK)" returns a negative number. criu/namespaces.c:1366: assign: Assigning: "sk" = "get_service_fd(USERNSD_SK)". criu/namespaces.c:1389: negative_returns: "sk" is passed to a parameter that cannot be negative. Signed-off-by: Adrian Reber Signed-off-by: Andrei Vagin --- criu/fdstore.c | 9 +++++++-- criu/namespaces.c | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/criu/fdstore.c b/criu/fdstore.c index a4583fdf4..7c8eb7208 100644 --- a/criu/fdstore.c +++ b/criu/fdstore.c @@ -107,8 +107,13 @@ int fdstore_add(int fd) int fdstore_get(int id) { - int sk = get_service_fd(FDSTORE_SK_OFF); - int fd; + int sk, fd; + + sk = get_service_fd(FDSTORE_SK_OFF); + if (sk < 0) { + pr_err("Cannot get FDSTORE_SK_OFF fd\n"); + return -1; + } mutex_lock(&desc->lock); if (setsockopt(sk, SOL_SOCKET, SO_PEEK_OFF, &id, sizeof(id))) { diff --git a/criu/namespaces.c b/criu/namespaces.c index c8baf42fc..eeb9205d0 100644 --- a/criu/namespaces.c +++ b/criu/namespaces.c @@ -1364,6 +1364,10 @@ int __userns_call(const char *func_name, uns_call_t call, int flags, return call(arg, fd, getpid()); sk = get_service_fd(USERNSD_SK); + if (sk < 0) { + pr_err("Cannot get USERNSD_SK fd\n"); + return -1; + } pr_debug("uns: calling %s (%d, %x)\n", func_name, fd, flags); if (!async)