From a39c4d9bed2468495e0efc13620fea5a1fb650f8 Mon Sep 17 00:00:00 2001 From: Christof Schmitt Date: Thu, 16 Jan 2020 14:15:15 -0700 Subject: vfs_gpfs: Preserve errno across unbecome_root call Signed-off-by: Christof Schmitt Reviewed-by: Jeremy Allison --- source3/modules/vfs_gpfs.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source3/modules/vfs_gpfs.c b/source3/modules/vfs_gpfs.c index 3967a7c723a..1c843db503d 100644 --- a/source3/modules/vfs_gpfs.c +++ b/source3/modules/vfs_gpfs.c @@ -252,6 +252,7 @@ static int vfs_gpfs_setlease(vfs_handle_struct *handle, if (config->leases) { int gpfs_lease_type = lease_type_to_gpfs(leasetype); + int saved_errno = 0; /* * Ensure the lease owner is root to allow @@ -259,7 +260,14 @@ static int vfs_gpfs_setlease(vfs_handle_struct *handle, */ become_root(); ret = gpfswrap_set_lease(fsp->fh->fd, gpfs_lease_type); + if (ret < 0) { + saved_errno = errno; + } unbecome_root(); + + if (saved_errno != 0) { + errno = saved_errno; + } } failure: -- cgit v1.2.1