X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;ds=inline;f=libringbuffer%2Fshm.c;h=563903877f5eb59a62409ce32662a8bd6f7600bd;hb=a88038977008704e88544601cef0291b138f8387;hp=1656adbdbd37aa1499179971ac63c20345532f56;hpb=74d89c32c1f8928943e1ce7eae5d659d4fd601a9;p=lttng-ust.git diff --git a/libringbuffer/shm.c b/libringbuffer/shm.c index 1656adbd..56390387 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,12 +114,13 @@ struct shm_object *shm_object_table_append(struct shm_object_table *table, error_mmap: error_ftruncate: -error_unlink: +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++) {