From c13fed3e9bf54bbcde3546ed9ab29f312baba3a8 Mon Sep 17 00:00:00 2001 From: zhangjian Date: Mon, 18 Nov 2024 16:04:46 +0800 Subject: [PATCH] backport patches from upstream commutinity Signed-off-by: zhangjian (cherry picked from commit 26b75078a052c5bc35deef9bc118b941ec3de7f0) --- ...ed-a-regression-in-the-junction-code.patch | 32 +++++++++++ ...to-get-the-domain-directly-from-host.patch | 55 +++++++++++++++++++ nfs-utils.spec | 9 ++- 3 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 0008-fixed-a-regression-in-the-junction-code.patch create mode 100644 0009-libnfsidmap-try-to-get-the-domain-directly-from-host.patch diff --git a/0008-fixed-a-regression-in-the-junction-code.patch b/0008-fixed-a-regression-in-the-junction-code.patch new file mode 100644 index 0000000..806de88 --- /dev/null +++ b/0008-fixed-a-regression-in-the-junction-code.patch @@ -0,0 +1,32 @@ +From 7916134e5d9b1641effd3b6d964c806a09cfdcee Mon Sep 17 00:00:00 2001 +From: Steve Dickson +Date: Thu, 10 Aug 2023 11:57:39 -0400 +Subject: [PATCH] Fixed a regression in the junction code + +commit cdbef4e9 created a regression in the +in the junction code by adding a O_PATH flag +to the open() in junction_open_path() + +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2213669 +Signed-off-by: Steve Dickson + +--- + support/junction/junction.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/support/junction/junction.c b/support/junction/junction.c +index 0628bb0..c1ec8ff 100644 +--- a/support/junction/junction.c ++++ b/support/junction/junction.c +@@ -63,7 +63,7 @@ junction_open_path(const char *pathname, int *fd) + if (pathname == NULL || fd == NULL) + return FEDFS_ERR_INVAL; + +- tmp = open(pathname, O_PATH|O_DIRECTORY); ++ tmp = open(pathname, O_DIRECTORY); + if (tmp == -1) { + switch (errno) { + case EPERM: +-- +2.33.0 + diff --git a/0009-libnfsidmap-try-to-get-the-domain-directly-from-host.patch b/0009-libnfsidmap-try-to-get-the-domain-directly-from-host.patch new file mode 100644 index 0000000..1c532fa --- /dev/null +++ b/0009-libnfsidmap-try-to-get-the-domain-directly-from-host.patch @@ -0,0 +1,55 @@ +From 90a23f7c6343bcb1b69c93ceccc14cc06e14d958 Mon Sep 17 00:00:00 2001 +From: Aram Akhavan +Date: Sat, 15 Jul 2023 13:21:04 -0400 +Subject: [PATCH] libnfsidmap: try to get the domain directly from hostname if + the DNS lookup fails and always show the log message if the domain can't be + determined + +In nfs4_init_name_mapping(), if no domain is specified in the config file, the hostname will be looked up in DNS, and the domain extracted from that. +If DNS resolution isn't up at this time (i.e. on idmapd startup), the hardcoded domain in IDMAPD_DEFAULT_DOMAIN is used. This will break id mapping +for anyone who doesn't happen to use "localdomain". Previously, the log message indicating this has happened requires -v to be passed, so the +"failure" was silent by default. + +Signed-off-by: Aram Akhavan +Signed-off-by: Steve Dickson +--- + support/nfsidmap/libnfsidmap.c | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/support/nfsidmap/libnfsidmap.c b/support/nfsidmap/libnfsidmap.c +index 0a912e5..1db24d1 100644 +--- a/support/nfsidmap/libnfsidmap.c ++++ b/support/nfsidmap/libnfsidmap.c +@@ -219,10 +219,16 @@ static int domain_from_dns(char **domain) + + if (gethostname(hname, sizeof(hname)) == -1) + return -1; +- if ((he = gethostbyname(hname)) == NULL) +- return -1; +- if ((c = strchr(he->h_name, '.')) == NULL || *++c == '\0') +- return -1; ++ if ((he = gethostbyname(hname)) == NULL) { ++ IDMAP_LOG(1, ("libnfsidmap: DNS lookup of hostname failed. Attempting to use domain from hostname as is.")); ++ if ((c = strchr(hname, '.')) == NULL || *++c == '\0') ++ return -1; ++ } ++ else { ++ if ((c = strchr(he->h_name, '.')) == NULL || *++c == '\0') ++ return -1; ++ } ++ + /* + * Query DNS to see if the _nfsv4idmapdomain TXT record exists + * If so use it... +@@ -387,7 +393,7 @@ int nfs4_init_name_mapping(char *conffile) + dflt = 1; + ret = domain_from_dns(&default_domain); + if (ret) { +- IDMAP_LOG(1, ("libnfsidmap: Unable to determine " ++ IDMAP_LOG(0, ("libnfsidmap: Unable to determine " + "the NFSv4 domain; Using '%s' as the NFSv4 domain " + "which means UIDs will be mapped to the 'Nobody-User' " + "user defined in %s", +-- +2.33.0 + diff --git a/nfs-utils.spec b/nfs-utils.spec index e93f394..9373b86 100644 --- a/nfs-utils.spec +++ b/nfs-utils.spec @@ -4,7 +4,7 @@ Name: nfs-utils Version: 2.6.3 -Release: 2 +Release: 3 Epoch: 2 Summary: The Linux NFS userland utility package License: MIT and GPLv2 and GPLv2+ and BSD @@ -20,7 +20,9 @@ Patch4: 0004-export-move-cache_open-before-workers-are-forked.patch Patch5: 0005-gssd-fix-handling-DNS-lookup-failure.patch Patch6: 0006-nfsidmap-fix-a-memory-leak.patch Patch7: 0007-rpc-gssd-service-has-status-failed-due-to-segfault.patch - +Patch8: 0008-fixed-a-regression-in-the-junction-code.patch +Patch9: 0009-libnfsidmap-try-to-get-the-domain-directly-from-host.patch + BuildRequires: libevent-devel,libcap-devel, libtirpc-devel libblkid-devel BuildRequires: krb5-libs >= 1.4 autoconf >= 2.57 openldap-devel >= 2.2 BuildRequires: automake, libtool, gcc, device-mapper-devel @@ -292,6 +294,9 @@ fi %{_mandir}/*/* %changelog +* Mon Nov 18 2024 zhangjian - 2:2.6.3-3 +- backport bugfix patches from community + * Tue Sep 10 2024 zhangjian - 2:2.6.3-2 - backport bugfix patches from community -- Gitee