diff options
author | Christof Schmitt <cs@samba.org> | 2020-01-16 14:15:15 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2020-01-21 22:08:41 +0000 |
commit | a39c4d9bed2468495e0efc13620fea5a1fb650f8 (patch) | |
tree | c648fcc42442e4545b81423b52c8f2fc03b9c413 | |
parent | 01e563be72f8e37a1f4fafe7a5a8b2c7b19db7c8 (diff) | |
download | samba-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.c | 8 |
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: |