From 134b553b83988e145938340366b81a28e312fa6f Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 10 Jul 2024 10:40:29 +0200 Subject: [PATCH] revert recent uuidd mode changes - rebase rhel specific patches - fix uuidd-tmpfiles.conf (upstream patch) - remove unused patches --- 0000-login-lastlog-create.patch | 28 ++++ ...atch => 0001-login-default-motd-file.patch | 17 ++- ...lib-libuuid-mode-uuidd-tmpfiles.conf.patch | 34 +++++ ...-regression-when-mounting-with-atime.patch | 133 ------------------ login-lastlog-create.patch | 12 -- util-linux.spec | 14 +- uuidd-tmpfiles.conf | 1 - 7 files changed, 88 insertions(+), 151 deletions(-) create mode 100644 0000-login-lastlog-create.patch rename login-default-motd-file.patch => 0001-login-default-motd-file.patch (52%) create mode 100644 0002-uuidd-fix-var-lib-libuuid-mode-uuidd-tmpfiles.conf.patch delete mode 100644 libmount-Fix-regression-when-mounting-with-atime.patch delete mode 100644 login-lastlog-create.patch delete mode 100644 uuidd-tmpfiles.conf diff --git a/0000-login-lastlog-create.patch b/0000-login-lastlog-create.patch new file mode 100644 index 0000000..2764a28 --- /dev/null +++ b/0000-login-lastlog-create.patch @@ -0,0 +1,28 @@ +From a9d027ee07f56b67054ec8ef02481a1e60429f6d Mon Sep 17 00:00:00 2001 +From: Karel Zak +Date: Wed, 10 Jul 2024 10:29:20 +0200 +Subject: login: lastlog create + +This is port of the old RHEL patch to RHEL-10. + +Signed-off-by: Karel Zak +--- + login-utils/login.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/login-utils/login.c b/login-utils/login.c +index c8544f6a1..3de0398e9 100644 +--- a/login-utils/login.c ++++ b/login-utils/login.c +@@ -681,7 +681,7 @@ static void log_lastlog(struct login_context *cxt) + sa.sa_handler = SIG_IGN; + sigaction(SIGXFSZ, &sa, &oldsa_xfsz); + +- fd = open(_PATH_LASTLOG, O_RDWR, 0); ++ fd = open(_PATH_LASTLOG, O_RDWR | O_CREAT, 0); + if (fd < 0) + goto done; + offset = cxt->pwd->pw_uid * sizeof(ll); +-- +2.45.2 + diff --git a/login-default-motd-file.patch b/0001-login-default-motd-file.patch similarity index 52% rename from login-default-motd-file.patch rename to 0001-login-default-motd-file.patch index 3670848..7436e54 100644 --- a/login-default-motd-file.patch +++ b/0001-login-default-motd-file.patch @@ -1,5 +1,17 @@ +From c4354ccde565c742a75816ef46c2f7265415f1f7 Mon Sep 17 00:00:00 2001 +From: Karel Zak +Date: Wed, 10 Jul 2024 10:30:42 +0200 +Subject: login: default motd file + +This is port of the old RHEL patch to RHEL-10. + +Signed-off-by: Karel Zak +--- + include/pathnames.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + diff --git a/include/pathnames.h b/include/pathnames.h -index 3845d4c33..fac3a0783 100644 +index de456c53e..ac28a9a50 100644 --- a/include/pathnames.h +++ b/include/pathnames.h @@ -41,7 +41,7 @@ @@ -11,3 +23,6 @@ index 3845d4c33..fac3a0783 100644 #ifndef _PATH_NOLOGIN # define _PATH_NOLOGIN "/etc/nologin" #endif +-- +2.45.2 + diff --git a/0002-uuidd-fix-var-lib-libuuid-mode-uuidd-tmpfiles.conf.patch b/0002-uuidd-fix-var-lib-libuuid-mode-uuidd-tmpfiles.conf.patch new file mode 100644 index 0000000..0cea9b7 --- /dev/null +++ b/0002-uuidd-fix-var-lib-libuuid-mode-uuidd-tmpfiles.conf.patch @@ -0,0 +1,34 @@ +From 151dbf45503032839c02d07d8a5c89e2d064cb34 Mon Sep 17 00:00:00 2001 +From: Karel Zak +Date: Tue, 9 Jul 2024 17:04:09 +0200 +Subject: uuidd: fix /var/lib/libuuid mode uuidd-tmpfiles.conf + +The directory can be directly used by libuuid, for example, by running +"uuidgen --time" as root, even if the uuidd daemon is not installed. +In this case, we must create a clock.txt file with the uuidd group to +prevent any potential ownership mismatch if the uuidd daemon is +installed later. The 2xxx mode (setgid) forces open(O_CREAT) in +libuuid to create the file with the uuidd group. + +Please note that mode 2755 is the standard used for years in RHEL. + +Signed-off-by: Karel Zak +(cherry picked from commit e0c41735aa13a7a62e42c0428823537d3edc02a8) +(cherry picked from commit 555152c36b1026ea97eb06a9a57fac154fa36ed0) +--- + misc-utils/uuidd-tmpfiles.conf.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/misc-utils/uuidd-tmpfiles.conf.in b/misc-utils/uuidd-tmpfiles.conf.in +index b362930d8..90b8a8537 100644 +--- a/misc-utils/uuidd-tmpfiles.conf.in ++++ b/misc-utils/uuidd-tmpfiles.conf.in +@@ -3,4 +3,4 @@ + # See tmpfiles.d(5) for details + # + d @runstatedir@/uuidd 2775 uuidd uuidd - +-d @localstatedir@/lib/libuuid 0755 uuidd uuidd - ++d @localstatedir@/lib/libuuid 2755 uuidd uuidd - +-- +2.45.2 + diff --git a/libmount-Fix-regression-when-mounting-with-atime.patch b/libmount-Fix-regression-when-mounting-with-atime.patch deleted file mode 100644 index 1c98653..0000000 --- a/libmount-Fix-regression-when-mounting-with-atime.patch +++ /dev/null @@ -1,133 +0,0 @@ -From 2b99ee2526ae61be761b0e31c50e106dbec5e9e4 Mon Sep 17 00:00:00 2001 -From: Filipe Manana -Date: Thu, 17 Aug 2023 10:20:13 +0100 -Subject: [PATCH] libmount: Fix regression when mounting with atime - -A regression was introduced in v2.39 that causes mounting with the atime -option to fail: - - $ mkfs.ext4 -F /dev/sdi - $ mount -o atime /dev/sdi /mnt/sdi - mount: /mnt/sdi: not mount point or bad option. - dmesg(1) may have more information after failed mount system call. - -The failure comes from the mount_setattr(2) call returning -EINVAL. This -is because we pass an invalid value for the attr_clr argument. From a -strace capture we have: - - mount_setattr(4, "", AT_EMPTY_PATH, {attr_set=0, attr_clr=MOUNT_ATTR_NOATIME, propagation=0 /* MS_??? */, userns_fd=0}, 32) = -1 EINVAL (Invalid argument) - -We can't pass MOUNT_ATTR_NOATIME to mount_setattr(2) through the attr_clr -argument because all atime options are exclusive, so in order to set atime -one has to pass MOUNT_ATTR__ATIME to attr_clr and leave attr_set as -MOUNT_ATTR_RELATIME (which is defined as a value of 0). - -This can be read from the man page for mount_setattr(2) and also from the -kernel source: - - $ cat fs/namespace.c - static int build_mount_kattr(const struct mount_attr *attr, size_t usize, - struct mount_kattr *kattr, unsigned int flags) - { - (...) - /* - * Since the MOUNT_ATTR_ values are an enum, not a bitmap, - * users wanting to transition to a different atime setting cannot - * simply specify the atime setting in @attr_set, but must also - * specify MOUNT_ATTR__ATIME in the @attr_clr field. - * So ensure that MOUNT_ATTR__ATIME can't be partially set in - * @attr_clr and that @attr_set can't have any atime bits set if - * MOUNT_ATTR__ATIME isn't set in @attr_clr. - */ - if (attr->attr_clr & MOUNT_ATTR__ATIME) { - if ((attr->attr_clr & MOUNT_ATTR__ATIME) != MOUNT_ATTR__ATIME) - return -EINVAL; - - /* - * Clear all previous time settings as they are mutually - * exclusive. - */ - kattr->attr_clr |= MNT_RELATIME | MNT_NOATIME; - switch (attr->attr_set & MOUNT_ATTR__ATIME) { - case MOUNT_ATTR_RELATIME: - kattr->attr_set |= MNT_RELATIME; - break; - case MOUNT_ATTR_NOATIME: - kattr->attr_set |= MNT_NOATIME; - break; - case MOUNT_ATTR_STRICTATIME: - break; - default: - return -EINVAL; - } - (...) - -So fix this by setting attr_clr MOUNT_ATTR__ATIME if we want to clear any -atime related option. - -Signed-off-by: Filipe Manana ---- - libmount/src/optlist.c | 13 ++++++++++++- - tests/expected/libmount/context-mount-flags | 3 +++ - tests/ts/libmount/context | 9 ++++++++- - 3 files changed, 23 insertions(+), 2 deletions(-) - -diff --git a/libmount/src/optlist.c b/libmount/src/optlist.c -index e93810b47..d0afc94f7 100644 ---- a/libmount/src/optlist.c -+++ b/libmount/src/optlist.c -@@ -875,7 +875,18 @@ int mnt_optlist_get_attrs(struct libmnt_optlist *ls, uint64_t *set, uint64_t *cl - - if (opt->ent->mask & MNT_INVERT) { - DBG(OPTLIST, ul_debugobj(ls, " clr: %s", opt->ent->name)); -- *clr |= x; -+ /* -+ * All atime settings are mutually exclusive so *clr must -+ * have MOUNT_ATTR__ATIME set. -+ * -+ * See the function fs/namespace.c:build_mount_kattr() -+ * in the linux kernel source. -+ */ -+ if (x == MOUNT_ATTR_RELATIME || x == MOUNT_ATTR_NOATIME || -+ x == MOUNT_ATTR_STRICTATIME) -+ *clr |= MOUNT_ATTR__ATIME; -+ else -+ *clr |= x; - } else { - DBG(OPTLIST, ul_debugobj(ls, " set: %s", opt->ent->name)); - *set |= x; -diff --git a/tests/expected/libmount/context-mount-flags b/tests/expected/libmount/context-mount-flags -index 960641863..eb71323dd 100644 ---- a/tests/expected/libmount/context-mount-flags -+++ b/tests/expected/libmount/context-mount-flags -@@ -3,3 +3,6 @@ ro,nosuid,noexec - successfully mounted - rw,nosuid,noexec - successfully umounted -+successfully mounted -+rw,relatime -+successfully umounted -diff --git a/tests/ts/libmount/context b/tests/ts/libmount/context -index f5b47185e..a5d2e81a3 100755 ---- a/tests/ts/libmount/context -+++ b/tests/ts/libmount/context -@@ -116,8 +116,15 @@ $TS_CMD_FINDMNT --kernel --mountpoint $MOUNTPOINT -o VFS-OPTIONS -n >> $TS_OUTPU - - ts_run $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG - is_mounted $DEVICE && echo "$DEVICE still mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG --ts_finalize_subtest - -+# Test that the atime option works after the migration to use the new kernel mount APIs. -+ts_run $TESTPROG --mount -o atime $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG -+$TS_CMD_FINDMNT --kernel --mountpoint $MOUNTPOINT -o VFS-OPTIONS -n >> $TS_OUTPUT 2>> $TS_ERRLOG -+is_mounted $DEVICE || echo "$DEVICE not mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG -+ts_run $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG -+is_mounted $DEVICE && echo "$DEVICE still mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG -+ -+ts_finalize_subtest - - ts_init_subtest "mount-loopdev" - mkdir -p $MOUNTPOINT &> /dev/null --- -2.40.1 - diff --git a/login-lastlog-create.patch b/login-lastlog-create.patch deleted file mode 100644 index e2523d3..0000000 --- a/login-lastlog-create.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up util-linux-2.36/login-utils/login.c.kzak util-linux-2.36/login-utils/login.c ---- util-linux-2.36/login-utils/login.c.kzak 2020-07-23 14:13:26.777030764 +0200 -+++ util-linux-2.36/login-utils/login.c 2020-07-23 14:11:22.793686983 +0200 -@@ -585,7 +585,7 @@ static void log_lastlog(struct login_con - sa.sa_handler = SIG_IGN; - sigaction(SIGXFSZ, &sa, &oldsa_xfsz); - -- fd = open(_PATH_LASTLOG, O_RDWR, 0); -+ fd = open(_PATH_LASTLOG, O_RDWR | O_CREAT, 0); - if (fd < 0) - goto done; - offset = cxt->pwd->pw_uid * sizeof(ll); diff --git a/util-linux.spec b/util-linux.spec index 7737d5b..54ac0b1 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -90,13 +90,19 @@ Requires: libsmartcols = %{version}-%{release} Requires: libfdisk = %{version}-%{release} Requires: util-linux-core = %{version}-%{release} -### Ready for upstream? +### RHEL-10.0 ### + # 151635 - makeing /var/log/lastlog -Patch0: login-lastlog-create.patch +Patch0: 0000-login-lastlog-create.patch # Add `/run/motd.d` to the hardcoded MOTD_FILE # https://github.com/coreos/console-login-helper-messages/issues/60 -Patch1: login-default-motd-file.patch +Patch1: 0001-login-default-motd-file.patch + +# upstream +Patch2: 0002-uuidd-fix-var-lib-libuuid-mode-uuidd-tmpfiles.conf.patch + + %description The util-linux package contains a large variety of low-level system @@ -873,7 +879,7 @@ fi %{_mandir}/man8/uuidd.8* %{_sbindir}/uuidd %{_unitdir}/uuidd.* -%dir %attr(0775, uuidd, uuidd) /var/lib/libuuid +%dir %attr(2775, uuidd, uuidd) /var/lib/libuuid %dir %attr(2775, uuidd, uuidd) /run/uuidd %{compldir}/uuidd %{_tmpfilesdir}/uuidd-tmpfiles.conf diff --git a/uuidd-tmpfiles.conf b/uuidd-tmpfiles.conf deleted file mode 100644 index 4158c7d..0000000 --- a/uuidd-tmpfiles.conf +++ /dev/null @@ -1 +0,0 @@ -d /run/uuidd 2775 uuidd uuidd