From 8b4c5d90ee3137472fd63eea1b46cf19da874abd Mon Sep 17 00:00:00 2001 From: Zhiqiang Liu Date: Thu, 5 Nov 2020 18:16:58 +0800 Subject: [PATCH] example/cuse_client.c: fix fd leakage problem In cuse_client.c, fd should be closed before return. Otherwise, it will cause fd leakage problem. Signed-off-by: Zhiqiang Liu Signed-off-by: Haotian Li --- example/cuse_client.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/example/cuse_client.c b/example/cuse_client.c index fe928d6..465302c 100644 --- a/example/cuse_client.c +++ b/example/cuse_client.c @@ -121,16 +121,17 @@ int main(int argc, char **argv) if (!argc) { if (ioctl(fd, FIOC_GET_SIZE, &size)) { perror("ioctl"); - return 1; + goto error; } printf("%zu\n", size); } else { size = param[0]; if (ioctl(fd, FIOC_SET_SIZE, &size)) { perror("ioctl"); - return 1; + goto error; } } + close(fd); return 0; case 'r': @@ -138,13 +139,18 @@ int main(int argc, char **argv) rc = do_rw(fd, cmd == 'r', param[0], param[1], &prev_size, &new_size); if (rc < 0) - return 1; + goto error; fprintf(stderr, "transferred %d bytes (%zu -> %zu)\n", rc, prev_size, new_size); + close(fd); return 0; } - usage: +usage: fprintf(stderr, "%s", usage); return 1; + +error: + close(fd); + return 1; } -- 2.30.2