From: Christof Schmitt Date: Thu, 16 Jan 2020 21:15:15 +0000 (-0700) Subject: vfs_gpfs: Preserve errno across unbecome_root call X-Git-Tag: ldb-2.1.1~254 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a39c4d9bed2468495e0efc13620fea5a1fb650f8;p=thirdparty%2Fsamba.git vfs_gpfs: Preserve errno across unbecome_root call Signed-off-by: Christof Schmitt Reviewed-by: Jeremy Allison --- 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: