summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristof Schmitt <cs@samba.org>2020-01-16 14:15:15 -0700
committerJeremy Allison <jra@samba.org>2020-01-21 22:08:41 +0000
commita39c4d9bed2468495e0efc13620fea5a1fb650f8 (patch)
treec648fcc42442e4545b81423b52c8f2fc03b9c413
parent01e563be72f8e37a1f4fafe7a5a8b2c7b19db7c8 (diff)
downloadsamba-a39c4d9bed2468495e0efc13620fea5a1fb650f8.tar.gz
vfs_gpfs: Preserve errno across unbecome_root call
Signed-off-by: Christof Schmitt <cs@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
-rw-r--r--source3/modules/vfs_gpfs.c8
1 files changed, 8 insertions, 0 deletions
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: