diff --git a/src/shared/mount-util.h b/src/shared/mount-util.h index 20c63e137f..c260eef02a 100644 --- a/src/shared/mount-util.h +++ b/src/shared/mount-util.h @@ -83,19 +83,22 @@ int mount_flags_to_string(unsigned long flags, char **ret); /* Useful for usage with _cleanup_(), unmounts, removes a directory and frees the pointer */ static inline char* umount_and_rmdir_and_free(char *p) { + if (!p) + return NULL; + PROTECT_ERRNO; - if (p) { - (void) umount_recursive(p, 0); - (void) rmdir(p); - } + (void) umount_recursive(p, 0); + (void) rmdir(p); return mfree(p); } DEFINE_TRIVIAL_CLEANUP_FUNC(char*, umount_and_rmdir_and_free); -static inline char *umount_and_free(char *p) { +static inline char* umount_and_free(char *p) { + if (!p) + return NULL; + PROTECT_ERRNO; - if (p) - (void) umount_recursive(p, 0); + (void) umount_recursive(p, 0); return mfree(p); } DEFINE_TRIVIAL_CLEANUP_FUNC(char*, umount_and_free);