From: Mathieu Desnoyers Date: Sun, 28 Aug 2011 16:20:25 +0000 (-0400) Subject: shm: check error value of shm_unlink X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=a88038977008704e88544601cef0291b138f8387;p=ust.git shm: check error value of shm_unlink Signed-off-by: Mathieu Desnoyers --- diff --git a/libringbuffer/shm.c b/libringbuffer/shm.c index fda4a31..5639038 100644 --- a/libringbuffer/shm.c +++ b/libringbuffer/shm.c @@ -74,7 +74,11 @@ struct shm_object *shm_object_table_append(struct shm_object_table *table, * crashes between shm_open and the following shm_unlink). */ do { - (void) shm_unlink("ust-shm-tmp"); + ret = shm_unlink("ust-shm-tmp"); + if (ret < 0 && errno != ENOENT) { + PERROR("shm_unlink"); + goto error_shm_unlink; + } shmfd = shm_open("ust-shm-tmp", O_CREAT | O_EXCL | O_RDWR, 0700); } while (shmfd < 0 && errno == EEXIST); @@ -82,7 +86,11 @@ struct shm_object *shm_object_table_append(struct shm_object_table *table, PERROR("shm_open"); goto error_shm_open; } - (void) shm_unlink("ust-shm-tmp"); + ret = shm_unlink("ust-shm-tmp"); + if (ret < 0 && errno != ENOENT) { + PERROR("shm_unlink"); + goto error_shm_release; + } ret = ftruncate(shmfd, memory_map_size); if (ret) { PERROR("ftruncate"); @@ -106,11 +114,13 @@ struct shm_object *shm_object_table_append(struct shm_object_table *table, error_mmap: error_ftruncate: +error_shm_release: ret = close(shmfd); if (ret) { PERROR("close"); assert(0); } +error_shm_unlink: error_shm_open: error_fcntl: for (i = 0; i < 2; i++) {