From 24103f42ad7a65457a62ae5c0190ea0e428cb14b Mon Sep 17 00:00:00 2001 From: David Sterba Date: Thu, 25 Jan 2018 13:37:13 +0100 Subject: btrfs-progs: don't clobber errno in close_file_or_dir Preserve the errno value for the caller in case closing happens in the middle of eg. an ioctl and reporing the failure. The errors that could happen in close/closedir do not bother us. Signed-off-by: David Sterba --- utils.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/utils.c b/utils.c index 4a16413c..5f5965d0 100644 --- a/utils.c +++ b/utils.c @@ -1549,10 +1549,16 @@ int open_file_or_dir(const char *fname, DIR **dirstream) void close_file_or_dir(int fd, DIR *dirstream) { - if (dirstream) + int old_errno; + + old_errno = errno; + if (dirstream) { closedir(dirstream); - else if (fd >= 0) + } else if (fd >= 0) { close(fd); + } + + errno = old_errno; } int get_device_info(int fd, u64 devid, -- cgit v1.2.3