commit
2338280b74
@ -0,0 +1 @@
|
||||
SOURCES/util-linux-2.37.4.tar.xz
|
@ -0,0 +1 @@
|
||||
6e6c49c1dbb288b90b933e4328bde4786172f021 SOURCES/util-linux-2.37.4.tar.xz
|
@ -0,0 +1,26 @@
|
||||
From ef8c8e117234f135a22ba7180114f0153b2444d8 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Mon, 20 Jun 2016 11:09:02 +0200
|
||||
Subject: login: create /var/log/lastlog
|
||||
|
||||
Addresses: http://bugzilla.redhat.com/show_bug.cgi?id=151635
|
||||
---
|
||||
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 c6cd340b6..3657f04cd 100644
|
||||
--- a/login-utils/login.c
|
||||
+++ b/login-utils/login.c
|
||||
@@ -662,7 +662,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.34.1
|
||||
|
@ -0,0 +1,28 @@
|
||||
From c8574869e60a0351551cb281872e08b4d8fc68d8 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Tue, 24 Aug 2021 13:50:57 +0200
|
||||
Subject: login: default motd file
|
||||
|
||||
Add `/run/motd.d` to the hardcoded MOTD_FILE
|
||||
|
||||
Addresses: https://github.com/coreos/console-login-helper-messages/issues/60
|
||||
---
|
||||
include/pathnames.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/pathnames.h b/include/pathnames.h
|
||||
index 9be2baa83..7e7d9053f 100644
|
||||
--- a/include/pathnames.h
|
||||
+++ b/include/pathnames.h
|
||||
@@ -41,7 +41,7 @@
|
||||
#ifndef _PATH_MAILDIR
|
||||
# define _PATH_MAILDIR "/var/spool/mail"
|
||||
#endif
|
||||
-#define _PATH_MOTDFILE "/usr/share/misc/motd:/run/motd:/etc/motd"
|
||||
+#define _PATH_MOTDFILE "/usr/share/misc/motd:/run/motd:/run/motd.d:/etc/motd:/etc/motd.d"
|
||||
#ifndef _PATH_NOLOGIN
|
||||
# define _PATH_NOLOGIN "/etc/nologin"
|
||||
#endif
|
||||
--
|
||||
2.34.1
|
||||
|
@ -0,0 +1,30 @@
|
||||
From 38b2b2e49e72638639c997e532a846ee935ce148 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Mon, 23 Aug 2021 15:15:38 +0200
|
||||
Subject: tests: make ./run.sh more robust
|
||||
|
||||
Let's make upstream tests more stable to be usable in RHEL
|
||||
environment where we do not use ASAN and meson.
|
||||
|
||||
Upstream: http://github.com/karelzak/util-linux/commit/331c5e0c54d9cb6f67dc3e825eec2d78c67d8ce6
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
tests/run.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tests/run.sh b/tests/run.sh
|
||||
index 9d26406c4..d020bfe88 100755
|
||||
--- a/tests/run.sh
|
||||
+++ b/tests/run.sh
|
||||
@@ -165,7 +165,7 @@ OPTS="$OPTS --srcdir=$top_srcdir --builddir=$top_builddir"
|
||||
if [ -z "$has_asan_opt" ]; then
|
||||
if [ -e "$top_builddir/Makefile" ]; then
|
||||
asan=$(awk '/^ASAN_LDFLAGS/ { print $3 }' $top_builddir/Makefile)
|
||||
- else
|
||||
+ elif [ -f "$top_builddir/meson.conf" ]; then
|
||||
. "$top_builddir/meson.conf"
|
||||
fi
|
||||
if [ -n "$asan" ]; then
|
||||
--
|
||||
2.34.1
|
||||
|
@ -0,0 +1,66 @@
|
||||
From a4d1feed2803a5c0596877b64487734bcdb781ef Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Mon, 23 Aug 2021 16:28:52 +0200
|
||||
Subject: tests: make mount/fstab-all more robust
|
||||
|
||||
Upstream: http://github.com/karelzak/util-linux/commit/85ae61dd6d956e7c9fe2b22b8c46bb1d0bfd13da
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
tests/ts/mount/fstab-all | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/tests/ts/mount/fstab-all b/tests/ts/mount/fstab-all
|
||||
index acc64e462..6b7018823 100755
|
||||
--- a/tests/ts/mount/fstab-all
|
||||
+++ b/tests/ts/mount/fstab-all
|
||||
@@ -79,6 +79,7 @@ echo "${TS_DEVICE}4 ${MOUNTPOINT}D ext4 rw,defaults 0 0" >> $MY_FSTAB
|
||||
ts_init_subtest "basic"
|
||||
$TS_CMD_MOUNT --all --fstab $MY_FSTAB >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
[ $? == 0 ] || ts_log "mount failed"
|
||||
+udevadm settle
|
||||
$TS_CMD_UMOUNT ${MOUNTPOINT}{A,B,C,D}
|
||||
[ $? == 0 ] || ts_log "umount failed"
|
||||
ts_finalize_subtest
|
||||
@@ -87,6 +88,7 @@ ts_finalize_subtest
|
||||
ts_init_subtest "filter-type"
|
||||
$TS_CMD_MOUNT --all --fstab $MY_FSTAB -t ext4 >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
[ $? == 0 ] || ts_log "mount failed"
|
||||
+udevadm settle
|
||||
$TS_CMD_UMOUNT ${MOUNTPOINT}D
|
||||
[ $? == 0 ] || ts_log "umount failed"
|
||||
ts_finalize_subtest
|
||||
@@ -95,6 +97,7 @@ ts_finalize_subtest
|
||||
ts_init_subtest "filter-notype"
|
||||
$TS_CMD_MOUNT --all --fstab $MY_FSTAB -t noext4 >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
[ $? == 0 ] || ts_log "mount failed"
|
||||
+udevadm settle
|
||||
$TS_CMD_UMOUNT ${MOUNTPOINT}{A,B,C}
|
||||
[ $? == 0 ] || ts_log "umount failed"
|
||||
ts_finalize_subtest
|
||||
@@ -103,6 +106,7 @@ ts_finalize_subtest
|
||||
ts_init_subtest "filter-option"
|
||||
$TS_CMD_MOUNT --all --fstab $MY_FSTAB -O ro >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
[ $? == 0 ] || ts_log "mount failed"
|
||||
+udevadm settle
|
||||
$TS_CMD_UMOUNT ${MOUNTPOINT}C
|
||||
[ $? == 0 ] || ts_log "umount failed"
|
||||
ts_finalize_subtest
|
||||
@@ -111,6 +115,7 @@ ts_finalize_subtest
|
||||
ts_init_subtest "override-option"
|
||||
$TS_CMD_MOUNT --all --fstab $MY_FSTAB -o ro >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
[ $? == 0 ] || ts_log "mount failed"
|
||||
+udevadm settle
|
||||
$TS_CMD_UMOUNT ${MOUNTPOINT}{A,B,C,D}
|
||||
[ $? == 0 ] || ts_log "umount failed"
|
||||
ts_finalize_subtest
|
||||
@@ -132,6 +137,7 @@ $TS_CMD_MOUNT --all \
|
||||
--target-prefix $MY_ROOT \
|
||||
-o X-mount.mkdir >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
[ $? == 0 ] || ts_log "mount failed"
|
||||
+udevadm settle
|
||||
$TS_CMD_UMOUNT $MY_ROOT/foo/{A,B,C,D}
|
||||
[ $? == 0 ] || ts_log "umount failed"
|
||||
ts_finalize_subtest
|
||||
--
|
||||
2.34.1
|
||||
|
@ -0,0 +1,42 @@
|
||||
From 54c1c6895ec53929d44153073a862521f6ed869d Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Tue, 24 Aug 2021 10:49:32 +0200
|
||||
Subject: tests: make eject umount tests more robust
|
||||
|
||||
Upstream: http://github.com/karelzak/util-linux/commit/abe16d0d34413555fbd621f90a0b93c2105116a2
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
tests/ts/eject/umount | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/tests/ts/eject/umount b/tests/ts/eject/umount
|
||||
index 2be281ee3..04f53ed99 100755
|
||||
--- a/tests/ts/eject/umount
|
||||
+++ b/tests/ts/eject/umount
|
||||
@@ -83,6 +83,7 @@ mkfs.ext2 -q -F $TS_DEVICE
|
||||
udevadm settle
|
||||
mkdir -p $TS_MOUNTPOINT
|
||||
$TS_CMD_MOUNT $TS_DEVICE $TS_MOUNTPOINT
|
||||
+udevadm settle
|
||||
$TS_CMD_EJECT --force $TS_DEVICE && ts_log "Success"
|
||||
deinit_device
|
||||
ts_finalize_subtest
|
||||
@@ -95,6 +96,7 @@ mkdir -p ${TS_MOUNTPOINT}1
|
||||
mkdir -p ${TS_MOUNTPOINT}2
|
||||
$TS_CMD_MOUNT ${TS_DEVICE}1 ${TS_MOUNTPOINT}1
|
||||
$TS_CMD_MOUNT ${TS_DEVICE}2 ${TS_MOUNTPOINT}2
|
||||
+udevadm settle
|
||||
$TS_CMD_EJECT --force $TS_DEVICE && ts_log "Success"
|
||||
deinit_device
|
||||
ts_finalize_subtest
|
||||
@@ -115,6 +117,7 @@ mkdir -p ${TS_MOUNTPOINT}1
|
||||
mkdir -p ${TS_MOUNTPOINT}2
|
||||
$TS_CMD_MOUNT ${TS_DEVICE}1 ${TS_MOUNTPOINT}1
|
||||
$TS_CMD_MOUNT ${TS_DEVICE}2 ${TS_MOUNTPOINT}2
|
||||
+udevadm settle
|
||||
$TS_CMD_EJECT --force ${TS_DEVICE}1 && ts_log "Success"
|
||||
deinit_device
|
||||
ts_finalize_subtest
|
||||
--
|
||||
2.34.1
|
||||
|
@ -0,0 +1,52 @@
|
||||
From 41ae35c39241575c63db204c786cb1423c202815 Mon Sep 17 00:00:00 2001
|
||||
From: "Andrew G. Morgan" <morgan@kernel.org>
|
||||
Date: Sat, 27 Nov 2021 21:00:22 -0800
|
||||
Subject: Complete Linux-PAM compliance for forked child in su and login.
|
||||
|
||||
As documented here:
|
||||
|
||||
http://www.linux-pam.org/Linux-PAM-html/adg-interface-by-app-expected.html#adg-pam_end
|
||||
|
||||
The child that is about to exec*() the user shell is supposed to pam_end()
|
||||
with PAM_DATA_SILENT. This gives the modules a last chance to do a minor
|
||||
cleanup of the module state before the user's shell is launched.
|
||||
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2037212
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/4660286e9cdff6d95b49295674b96f83af10ea36
|
||||
Signed-off-by: Andrew G. Morgan <morgan@kernel.org>
|
||||
---
|
||||
login-utils/login.c | 3 +++
|
||||
login-utils/su-common.c | 3 +++
|
||||
2 files changed, 6 insertions(+)
|
||||
|
||||
diff --git a/login-utils/login.c b/login-utils/login.c
|
||||
index 3657f04cd..c62e91e94 100644
|
||||
--- a/login-utils/login.c
|
||||
+++ b/login-utils/login.c
|
||||
@@ -1521,6 +1521,9 @@ int main(int argc, char **argv)
|
||||
|
||||
child_argv[child_argc++] = NULL;
|
||||
|
||||
+ /* http://www.linux-pam.org/Linux-PAM-html/adg-interface-by-app-expected.html#adg-pam_end */
|
||||
+ (void) pam_end(cxt.pamh, PAM_SUCCESS|PAM_DATA_SILENT);
|
||||
+
|
||||
execvp(child_argv[0], child_argv + 1);
|
||||
|
||||
if (!strcmp(child_argv[0], "/bin/sh"))
|
||||
diff --git a/login-utils/su-common.c b/login-utils/su-common.c
|
||||
index afd0ea8ad..7d4826bbc 100644
|
||||
--- a/login-utils/su-common.c
|
||||
+++ b/login-utils/su-common.c
|
||||
@@ -1231,6 +1231,9 @@ int su_main(int argc, char **argv, int mode)
|
||||
if (su->simulate_login && chdir(su->pwd->pw_dir) != 0)
|
||||
warn(_("warning: cannot change directory to %s"), su->pwd->pw_dir);
|
||||
|
||||
+ /* http://www.linux-pam.org/Linux-PAM-html/adg-interface-by-app-expected.html#adg-pam_end */
|
||||
+ (void) pam_end(su->pamh, PAM_SUCCESS|PAM_DATA_SILENT);
|
||||
+
|
||||
if (shell)
|
||||
run_shell(su, shell, command, argv + optind, max(0, argc - optind));
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
@ -0,0 +1,70 @@
|
||||
From a80ba745cc54d5ba726e48065aebe6dac50dedd2 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Mon, 24 Jan 2022 14:08:08 +0100
|
||||
Subject: uuidd: fix open/lock state issue
|
||||
|
||||
* warn on open/lock state issue
|
||||
|
||||
* enable access to /var/lib/libuuid/, because ProtectSystem=strict make it read-only
|
||||
|
||||
openat(AT_FDCWD, "/var/lib/libuuid/clock.txt",
|
||||
O_RDWR|O_CREAT|O_CLOEXEC, 0660) = -1 EROFS (Read-only file system)
|
||||
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2040366
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/f27876f9c1056bf41fd940d5c4990b4277e0024f
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/417982d0236a12756923d88e627f5e4facf8951c
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
misc-utils/uuidd.c | 9 ++++++---
|
||||
misc-utils/uuidd.service.in | 1 +
|
||||
2 files changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/misc-utils/uuidd.c b/misc-utils/uuidd.c
|
||||
index fa8db173b..78a37d2e8 100644
|
||||
--- a/misc-utils/uuidd.c
|
||||
+++ b/misc-utils/uuidd.c
|
||||
@@ -494,7 +494,8 @@ static void server_loop(const char *socket_path, const char *pidfile_path,
|
||||
break;
|
||||
case UUIDD_OP_TIME_UUID:
|
||||
num = 1;
|
||||
- __uuid_generate_time(uu, &num);
|
||||
+ if (__uuid_generate_time(uu, &num) < 0 && !uuidd_cxt->quiet)
|
||||
+ warnx(_("failed to open/lock clock counter"));
|
||||
if (uuidd_cxt->debug) {
|
||||
uuid_unparse(uu, str);
|
||||
fprintf(stderr, _("Generated time UUID: %s\n"), str);
|
||||
@@ -504,7 +505,8 @@ static void server_loop(const char *socket_path, const char *pidfile_path,
|
||||
break;
|
||||
case UUIDD_OP_RANDOM_UUID:
|
||||
num = 1;
|
||||
- __uuid_generate_random(uu, &num);
|
||||
+ if (__uuid_generate_time(uu, &num) < 0 && !uuidd_cxt->quiet)
|
||||
+ warnx(_("failed to open/lock clock counter"));
|
||||
if (uuidd_cxt->debug) {
|
||||
uuid_unparse(uu, str);
|
||||
fprintf(stderr, _("Generated random UUID: %s\n"), str);
|
||||
@@ -513,7 +515,8 @@ static void server_loop(const char *socket_path, const char *pidfile_path,
|
||||
reply_len = sizeof(uu);
|
||||
break;
|
||||
case UUIDD_OP_BULK_TIME_UUID:
|
||||
- __uuid_generate_time(uu, &num);
|
||||
+ if (__uuid_generate_time(uu, &num) < 0 && !uuidd_cxt->quiet)
|
||||
+ warnx(_("failed to open/lock clock counter"));
|
||||
if (uuidd_cxt->debug) {
|
||||
uuid_unparse(uu, str);
|
||||
fprintf(stderr, P_("Generated time UUID %s "
|
||||
diff --git a/misc-utils/uuidd.service.in b/misc-utils/uuidd.service.in
|
||||
index b4c9c4635..e64ca59b5 100644
|
||||
--- a/misc-utils/uuidd.service.in
|
||||
+++ b/misc-utils/uuidd.service.in
|
||||
@@ -18,6 +18,7 @@ ProtectKernelModules=yes
|
||||
ProtectControlGroups=yes
|
||||
RestrictAddressFamilies=AF_UNIX
|
||||
MemoryDenyWriteExecute=yes
|
||||
+ReadWritePaths=/var/lib/libuuid/
|
||||
SystemCallFilter=@default @file-system @basic-io @system-service @signal @io-event @network-io
|
||||
|
||||
[Install]
|
||||
--
|
||||
2.34.1
|
||||
|
@ -0,0 +1,51 @@
|
||||
From 9c45c4bf1a1a02ebaf9e24fd7d81d62c676eda7c Mon Sep 17 00:00:00 2001
|
||||
From: Portisch <hugo.portisch@yahoo.de>
|
||||
Date: Mon, 8 Nov 2021 12:31:39 +0100
|
||||
Subject: sysfs: fallback for partitions not including parent name
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/9b59641bcec3df9c451eea4c7057751a153a3fcb
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2021462
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
lib/sysfs.c | 12 +++++++-----
|
||||
1 file changed, 7 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/lib/sysfs.c b/lib/sysfs.c
|
||||
index bb7183319..191d870f6 100644
|
||||
--- a/lib/sysfs.c
|
||||
+++ b/lib/sysfs.c
|
||||
@@ -210,9 +210,10 @@ int sysfs_blkdev_is_partition_dirent(DIR *dir, struct dirent *d, const char *par
|
||||
d->d_type != DT_UNKNOWN)
|
||||
return 0;
|
||||
#endif
|
||||
+ size_t len = 0;
|
||||
+
|
||||
if (parent_name) {
|
||||
const char *p = parent_name;
|
||||
- size_t len;
|
||||
|
||||
/* /dev/sda --> "sda" */
|
||||
if (*parent_name == '/') {
|
||||
@@ -223,14 +224,15 @@ int sysfs_blkdev_is_partition_dirent(DIR *dir, struct dirent *d, const char *par
|
||||
}
|
||||
|
||||
len = strlen(p);
|
||||
- if (strlen(d->d_name) <= len)
|
||||
- return 0;
|
||||
+ if ((strlen(d->d_name) <= len) || (strncmp(p, d->d_name, len) != 0))
|
||||
+ len = 0;
|
||||
+ }
|
||||
|
||||
+ if (len > 0) {
|
||||
/* partitions subdir name is
|
||||
* "<parent>[:digit:]" or "<parent>p[:digit:]"
|
||||
*/
|
||||
- return strncmp(p, d->d_name, len) == 0 &&
|
||||
- ((*(d->d_name + len) == 'p' && isdigit(*(d->d_name + len + 1)))
|
||||
+ return ((*(d->d_name + len) == 'p' && isdigit(*(d->d_name + len + 1)))
|
||||
|| isdigit(*(d->d_name + len)));
|
||||
}
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
@ -0,0 +1,54 @@
|
||||
From 006aca565d4c8565baf05296b8e65ca4d5f203d3 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Fri, 30 Jul 2021 13:22:54 +0200
|
||||
Subject: wdctl: Workaround reported boot-status bits not being present in
|
||||
wd->ident.options
|
||||
|
||||
Some watchdog drivers are capable of reporting WDIOF_CARDRESET in their
|
||||
bootstatus, but they do not advertise this in the options field
|
||||
returned by the WDIOC_GETSUPPORT ioctl.
|
||||
|
||||
This causes wdctl to not print the CARDRESET flag on these devices,
|
||||
even when the reset was caused by the watchdog and this is being
|
||||
reported in the WDIOC_GETBOOTSTATUS return.
|
||||
|
||||
Add a workaround by or-ing any bits which are set in the status and
|
||||
bstatus returns into wd->ident.options so that reported flags will
|
||||
get printend independent of them being advertised as supported in
|
||||
wd->ident.options.
|
||||
|
||||
This will make wdctl print a CARDRESET line when the system was
|
||||
actually reset by the watchdog while omitting it when it was not
|
||||
reset by the watchdog. At least on drivers which have the
|
||||
CARDRESET is missing from info.options problem. On other drivers
|
||||
the CARDRESET line will always be printend, but the actual reported
|
||||
value will change.
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/b1b0259fe42aad1bf0997ce1c03a020ce59e38ab
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2057046
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
sys-utils/wdctl.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/sys-utils/wdctl.c b/sys-utils/wdctl.c
|
||||
index 8de5d5a2d..6b9affa0a 100644
|
||||
--- a/sys-utils/wdctl.c
|
||||
+++ b/sys-utils/wdctl.c
|
||||
@@ -419,6 +419,13 @@ static int read_watchdog_from_device(struct wd_device *wd)
|
||||
ioctl(fd, WDIOC_GETSTATUS, &wd->status);
|
||||
ioctl(fd, WDIOC_GETBOOTSTATUS, &wd->bstatus);
|
||||
|
||||
+ /*
|
||||
+ * Sometimes supported options like WDIOF_CARDRESET are missing from
|
||||
+ * ident.options, add anything set in status/bstatus to ident.options.
|
||||
+ */
|
||||
+ wd->ident.options |= wd->status;
|
||||
+ wd->ident.options |= wd->bstatus;
|
||||
+
|
||||
if (ioctl(fd, WDIOC_GETTIMEOUT, &wd->timeout) >= 0)
|
||||
wd->has_timeout = 1;
|
||||
if (ioctl(fd, WDIOC_GETPRETIMEOUT, &wd->pretimeout) >= 0)
|
||||
--
|
||||
2.34.1
|
||||
|
@ -0,0 +1,28 @@
|
||||
From 097fc3427d3221d763f0b1c41923758af2f471a3 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Thu, 21 Jul 2022 10:57:36 +0200
|
||||
Subject: lslogins: remove unexpected debug message
|
||||
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2094216
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
login-utils/lslogins.c | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/login-utils/lslogins.c b/login-utils/lslogins.c
|
||||
index 9431a50bb..c37df9096 100644
|
||||
--- a/login-utils/lslogins.c
|
||||
+++ b/login-utils/lslogins.c
|
||||
@@ -562,9 +562,6 @@ static int get_sgroups(gid_t **list, size_t *len, struct passwd *pwd)
|
||||
|
||||
*list = xcalloc(1, ngroups * sizeof(gid_t));
|
||||
|
||||
-fprintf(stderr, "KZAK>>> alloc '%p' for %s\n", *list, pwd->pw_name);
|
||||
-
|
||||
-
|
||||
/* now for the actual list of GIDs */
|
||||
if (-1 == getgrouplist(pwd->pw_name, pwd->pw_gid, *list, &ngroups))
|
||||
return -1;
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,92 @@
|
||||
From 53339f53ab71c138578d4102a4e4011344d33b2d Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Tue, 7 Jun 2022 09:11:56 +0200
|
||||
Subject: lslogins: improve prefixes interpretation
|
||||
|
||||
It seems that for example 'passwd --lock' uses two exclamation marks
|
||||
in password field. It seems better to assume arbitrary number of '!'
|
||||
and '*' prefixes.
|
||||
|
||||
The patch also makes description of the PWD-EMPTY output field more
|
||||
explicit.
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/c51cba1e838ae7e36a843ec785543492bb8737cd
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2094216
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
login-utils/lslogins.c | 33 ++++++++++++++++++++++++++-------
|
||||
1 file changed, 26 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/login-utils/lslogins.c b/login-utils/lslogins.c
|
||||
index c37df9096..1332a9925 100644
|
||||
--- a/login-utils/lslogins.c
|
||||
+++ b/login-utils/lslogins.c
|
||||
@@ -225,7 +225,7 @@ static const struct lslogins_coldesc coldescs[] =
|
||||
{
|
||||
[COL_USER] = { "USER", N_("user name"), N_("Username"), 0.1, SCOLS_FL_NOEXTREMES },
|
||||
[COL_UID] = { "UID", N_("user ID"), "UID", 1, SCOLS_FL_RIGHT},
|
||||
- [COL_PWDEMPTY] = { "PWD-EMPTY", N_("password not required"), N_("Password not required"), 1, SCOLS_FL_RIGHT },
|
||||
+ [COL_PWDEMPTY] = { "PWD-EMPTY", N_("password not defined"), N_("Password not required (empty)"), 1, SCOLS_FL_RIGHT },
|
||||
[COL_PWDDENY] = { "PWD-DENY", N_("login by password disabled"), N_("Login by password disabled"), 1, SCOLS_FL_RIGHT },
|
||||
[COL_PWDLOCK] = { "PWD-LOCK", N_("password defined, but locked"), N_("Password is locked"), 1, SCOLS_FL_RIGHT },
|
||||
[COL_PWDMETHOD] = { "PWD-METHOD", N_("password encryption method"), N_("Password encryption method"), 0.1 },
|
||||
@@ -817,23 +817,42 @@ static struct lslogins_user *get_user_info(struct lslogins_control *ctl, const c
|
||||
break;
|
||||
case COL_PWDEMPTY:
|
||||
if (shadow) {
|
||||
- if (!*shadow->sp_pwdp) /* '\0' */
|
||||
+ const char *p = shadow->sp_pwdp;
|
||||
+
|
||||
+ while (p && (*p == '!' || *p == '*'))
|
||||
+ p++;
|
||||
+
|
||||
+ if (!p || !*p)
|
||||
user->pwd_empty = STATUS_TRUE;
|
||||
} else
|
||||
user->pwd_empty = STATUS_UNKNOWN;
|
||||
break;
|
||||
case COL_PWDDENY:
|
||||
if (shadow) {
|
||||
- if ((*shadow->sp_pwdp == '!' ||
|
||||
- *shadow->sp_pwdp == '*') &&
|
||||
- !valid_pwd(shadow->sp_pwdp + 1))
|
||||
+ const char *p = shadow->sp_pwdp;
|
||||
+
|
||||
+ while (p && (*p == '!' || *p == '*'))
|
||||
+ p++;
|
||||
+
|
||||
+ if (p && *p && p != shadow->sp_pwdp && !valid_pwd(p))
|
||||
user->pwd_deny = STATUS_TRUE;
|
||||
} else
|
||||
user->pwd_deny = STATUS_UNKNOWN;
|
||||
break;
|
||||
case COL_PWDLOCK:
|
||||
if (shadow) {
|
||||
- if (*shadow->sp_pwdp == '!' && valid_pwd(shadow->sp_pwdp + 1))
|
||||
+ const char *p = shadow->sp_pwdp;
|
||||
+ int i = 0;
|
||||
+
|
||||
+ /* 'passwd --lock' uses two exclamation marks,
|
||||
+ * shadow(5) describes the lock as "field which
|
||||
+ * starts with an exclamation mark". Let's
|
||||
+ * support more '!' ...
|
||||
+ */
|
||||
+ while (p && *p == '!')
|
||||
+ p++, i++;
|
||||
+
|
||||
+ if (i != 0 && (!*p || valid_pwd(p)))
|
||||
user->pwd_lock = STATUS_TRUE;
|
||||
} else
|
||||
user->pwd_lock = STATUS_UNKNOWN;
|
||||
@@ -842,7 +861,7 @@ static struct lslogins_user *get_user_info(struct lslogins_control *ctl, const c
|
||||
if (shadow) {
|
||||
const char *p = shadow->sp_pwdp;
|
||||
|
||||
- if (*p == '!' || *p == '*')
|
||||
+ while (p && (*p == '!' || *p == '*'))
|
||||
p++;
|
||||
user->pwd_method = get_pwd_method(p, NULL, NULL);
|
||||
} else
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,38 @@
|
||||
From c269e116ea4d9e96a5f5801aecf1f624199fa6ec Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Tue, 7 Jun 2022 09:46:54 +0200
|
||||
Subject: lslogins: fix free(): invalid pointer
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/890d4d3f236e2d28db35ea9bc9dc3e5e35db975c
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2094216
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
login-utils/lslogins.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/login-utils/lslogins.c b/login-utils/lslogins.c
|
||||
index 1332a9925..ff4386d1b 100644
|
||||
--- a/login-utils/lslogins.c
|
||||
+++ b/login-utils/lslogins.c
|
||||
@@ -488,7 +488,7 @@ static int parse_utmpx(const char *path, size_t *nrecords, struct utmpx **record
|
||||
|
||||
/* optimize allocation according to file size, the realloc() below is
|
||||
* just fallback only */
|
||||
- if (stat(path, &st) == 0 && (size_t) st.st_size > sizeof(struct utmpx)) {
|
||||
+ if (stat(path, &st) == 0 && (size_t) st.st_size >= sizeof(struct utmpx)) {
|
||||
imax = st.st_size / sizeof(struct utmpx);
|
||||
ary = xmalloc(imax * sizeof(struct utmpx));
|
||||
}
|
||||
@@ -1007,6 +1007,9 @@ static void free_ctl(struct lslogins_control *ctl)
|
||||
{
|
||||
size_t n = 0;
|
||||
|
||||
+ if (!ctl)
|
||||
+ return;
|
||||
+
|
||||
free(ctl->wtmp);
|
||||
free(ctl->btmp);
|
||||
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,30 @@
|
||||
From 1c4ee8348e220b633d676214fd585ee2b3945cf6 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Mon, 6 Jun 2022 16:14:14 +0200
|
||||
Subject: login-utils/logindefs: fix compiler warning
|
||||
[-Werror=format-truncation=]
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/977f98ee34ca002cb5301c2d3a5953c754f813ec
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2094216
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
login-utils/logindefs.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/login-utils/logindefs.c b/login-utils/logindefs.c
|
||||
index 97150dc28..95631223a 100644
|
||||
--- a/login-utils/logindefs.c
|
||||
+++ b/login-utils/logindefs.c
|
||||
@@ -521,7 +521,8 @@ int get_hushlogin_status(struct passwd *pwd, int force_check)
|
||||
if (strlen(pwd->pw_dir) + strlen(file) + 2 > sizeof(buf))
|
||||
continue;
|
||||
|
||||
- sprintf(buf, "%s/%s", pwd->pw_dir, file);
|
||||
+ if (snprintf(buf, sizeof(buf), "%s/%s", pwd->pw_dir, file) < 0)
|
||||
+ continue;
|
||||
|
||||
if (force_check) {
|
||||
uid_t ruid = getuid();
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,38 @@
|
||||
From 3ceddbb1238e13a51efbe23119c885568e820e69 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Thu, 2 Jun 2022 16:55:49 +0200
|
||||
Subject: uuidd: allow AF_INET in systemd service
|
||||
|
||||
libuuid uses
|
||||
|
||||
socket(AF_INET, SOCK_DGRAM, IPPROTO_IP)
|
||||
|
||||
to get MAC address for time based UUIDs, but there is
|
||||
|
||||
RestrictAddressFamilies=AF_UNIX
|
||||
|
||||
in uuidd service file ...
|
||||
|
||||
Fixes: https://github.com/util-linux/util-linux/issues/1704
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/304b4dc4936b115ca33af5325c3b04d0997c1353
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2092943
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
misc-utils/uuidd.service.in | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/misc-utils/uuidd.service.in b/misc-utils/uuidd.service.in
|
||||
index e64ca59b5..64580287f 100644
|
||||
--- a/misc-utils/uuidd.service.in
|
||||
+++ b/misc-utils/uuidd.service.in
|
||||
@@ -16,7 +16,6 @@ PrivateUsers=yes
|
||||
ProtectKernelTunables=yes
|
||||
ProtectKernelModules=yes
|
||||
ProtectControlGroups=yes
|
||||
-RestrictAddressFamilies=AF_UNIX
|
||||
MemoryDenyWriteExecute=yes
|
||||
ReadWritePaths=/var/lib/libuuid/
|
||||
SystemCallFilter=@default @file-system @basic-io @system-service @signal @io-event @network-io
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,28 @@
|
||||
From bf0cd2995c5e34338703105c62e49a785c6c9dcc Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Fri, 3 Jun 2022 09:07:09 +0200
|
||||
Subject: uuidd: remove also PrivateNetwork=yes from systemd service
|
||||
|
||||
Fixes: https://github.com/util-linux/util-linux/issues/1704
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2092943
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/c9671a3cf7738bb81e1cbef2f56485a36c6e7623
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
misc-utils/uuidd.service.in | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/misc-utils/uuidd.service.in b/misc-utils/uuidd.service.in
|
||||
index 64580287f..4ad6d97c9 100644
|
||||
--- a/misc-utils/uuidd.service.in
|
||||
+++ b/misc-utils/uuidd.service.in
|
||||
@@ -11,7 +11,6 @@ Group=uuidd
|
||||
ProtectSystem=strict
|
||||
ProtectHome=yes
|
||||
PrivateDevices=yes
|
||||
-PrivateNetwork=yes
|
||||
PrivateUsers=yes
|
||||
ProtectKernelTunables=yes
|
||||
ProtectKernelModules=yes
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,31 @@
|
||||
From 338d5f2876c54e5d811100ba816d3a6dec00ab11 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Fri, 29 Apr 2022 10:11:49 +0200
|
||||
Subject: lsirq: improve --sort IRQ
|
||||
|
||||
IRQ column mixes numbers and text, it seems better to use strverscmp()
|
||||
rather than classic strcmp().
|
||||
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2078787
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/d382861c0815ff241fb2844a2a896f0fb1c7b73e
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
sys-utils/irq-common.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sys-utils/irq-common.c b/sys-utils/irq-common.c
|
||||
index 350675394..22080b96d 100644
|
||||
--- a/sys-utils/irq-common.c
|
||||
+++ b/sys-utils/irq-common.c
|
||||
@@ -371,7 +371,7 @@ static inline int cmp_delta(const struct irq_info *a,
|
||||
static inline int cmp_interrupts(const struct irq_info *a,
|
||||
const struct irq_info *b)
|
||||
{
|
||||
- return (strcmp(a->irq, b->irq) > 0) ? 1 : 0;
|
||||
+ return (strverscmp(a->irq, b->irq) > 0) ? 1 : 0;
|
||||
}
|
||||
|
||||
static void sort_result(struct irq_output *out,
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,28 @@
|
||||
From de0402358f6d363a57e6fef98c92a9eef5690cdd Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Mon, 6 Jun 2022 16:14:30 +0200
|
||||
Subject: irqtop: fix compiler warning [-Werror=format-truncation=]
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/b7865ae165bb43b1626c6928250843cc2c96be57
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2078787
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
sys-utils/irq-common.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sys-utils/irq-common.c b/sys-utils/irq-common.c
|
||||
index 22080b96d..e39ef823c 100644
|
||||
--- a/sys-utils/irq-common.c
|
||||
+++ b/sys-utils/irq-common.c
|
||||
@@ -426,7 +426,7 @@ struct libscols_table *get_scols_cpus_table(struct irq_output *out,
|
||||
struct libscols_table *table;
|
||||
struct libscols_column *cl;
|
||||
struct libscols_line *ln;
|
||||
- char colname[sizeof(stringify_value(LONG_MAX))];
|
||||
+ char colname[sizeof("cpu") + sizeof(stringify_value(LONG_MAX))];
|
||||
size_t i;
|
||||
|
||||
if (prev) {
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,34 @@
|
||||
From f45fe0768ac09cb5e05b095afa47a0a71e931f84 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Wed, 20 Apr 2022 14:42:32 +0200
|
||||
Subject: dmesg: fix --since and --until
|
||||
|
||||
Now --since and --until requires any time field in the output (e.g.
|
||||
--ctime,-T), it means "dmesg --since '1 day ago'" doesn't work, but
|
||||
"dmesg -T --since '1 day ago'" works as expected.
|
||||
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2076829
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/c9667633f1f6b7a84116f2af067d1d15c72e6382
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
sys-utils/dmesg.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c
|
||||
index d301951bb..5c580107a 100644
|
||||
--- a/sys-utils/dmesg.c
|
||||
+++ b/sys-utils/dmesg.c
|
||||
@@ -1539,7 +1539,9 @@ int main(int argc, char *argv[])
|
||||
|
||||
if ((is_timefmt(&ctl, RELTIME) ||
|
||||
is_timefmt(&ctl, CTIME) ||
|
||||
- is_timefmt(&ctl, ISO8601))) {
|
||||
+ is_timefmt(&ctl, ISO8601)) ||
|
||||
+ ctl.since ||
|
||||
+ ctl.until) {
|
||||
if (dmesg_get_boot_time(&ctl.boot_time) != 0)
|
||||
ctl.time_fmt = DMESG_TIMEFTM_NONE;
|
||||
else
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,62 @@
|
||||
From f02e9004303df5ab3d9b868f6f60af44663cce69 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Tue, 19 Apr 2022 09:44:07 +0200
|
||||
Subject: libblkid: check fsync() return code
|
||||
|
||||
Since 39f5af25982d8b0244000e92a9d0e0e6557d0e17 libblkid uses
|
||||
O_NONBLOCK. Now it's more obvious that check fsync() (and close())
|
||||
return value after write() is always a good idea ...
|
||||
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2074486
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/133a0d70f637b4f4e4337811e452153b04f2bdcf
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
libblkid/src/probe.c | 5 ++++-
|
||||
misc-utils/wipefs.c | 8 ++++++--
|
||||
2 files changed, 10 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libblkid/src/probe.c b/libblkid/src/probe.c
|
||||
index 5f01bc3b3..d317dc19a 100644
|
||||
--- a/libblkid/src/probe.c
|
||||
+++ b/libblkid/src/probe.c
|
||||
@@ -1298,7 +1298,10 @@ int blkid_do_wipe(blkid_probe pr, int dryrun)
|
||||
/* wipen on device */
|
||||
if (write_all(fd, buf, len))
|
||||
return -1;
|
||||
- fsync(fd);
|
||||
+
|
||||
+ if (fsync(fd) != 0)
|
||||
+ return -1;
|
||||
+
|
||||
pr->flags &= ~BLKID_FL_MODIF_BUFF; /* be paranoid */
|
||||
|
||||
return blkid_probe_step_back(pr);
|
||||
diff --git a/misc-utils/wipefs.c b/misc-utils/wipefs.c
|
||||
index 78dc63ee7..f08a9ba4f 100644
|
||||
--- a/misc-utils/wipefs.c
|
||||
+++ b/misc-utils/wipefs.c
|
||||
@@ -615,7 +615,9 @@ static int do_wipe(struct wipe_control *ctl)
|
||||
if (need_force)
|
||||
warnx(_("Use the --force option to force erase."));
|
||||
|
||||
- fsync(blkid_probe_get_fd(pr));
|
||||
+ if (fsync(blkid_probe_get_fd(pr)) != 0)
|
||||
+ err(EXIT_FAILURE, _("%s: cannot flush modified buffers"),
|
||||
+ ctl->devname);
|
||||
|
||||
#ifdef BLKRRPART
|
||||
if (reread && (mode & O_EXCL)) {
|
||||
@@ -635,7 +637,9 @@ static int do_wipe(struct wipe_control *ctl)
|
||||
}
|
||||
#endif
|
||||
|
||||
- close(blkid_probe_get_fd(pr));
|
||||
+ if (close(blkid_probe_get_fd(pr)) != 0)
|
||||
+ err(EXIT_FAILURE, _("%s: close device failed"), ctl->devname);
|
||||
+
|
||||
blkid_free_probe(pr);
|
||||
free(backup);
|
||||
return 0;
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,87 @@
|
||||
From 863ecca27cfc937bc6fb2131e0d0e35947e38ce6 Mon Sep 17 00:00:00 2001
|
||||
From: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
Date: Mon, 25 Apr 2022 17:08:37 +0200
|
||||
Subject: libblkid: add interface for FSSIZE field
|
||||
|
||||
Add interface to let filesystem probe calculate and set FSSIZE.
|
||||
Enable that field in the 'superblocks' sample.
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/ad08ae0aa
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2064810
|
||||
Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
---
|
||||
libblkid/samples/superblocks.c | 2 +-
|
||||
libblkid/src/blkid.h.in | 1 +
|
||||
libblkid/src/superblocks/superblocks.c | 11 +++++++++++
|
||||
libblkid/src/superblocks/superblocks.h | 1 +
|
||||
4 files changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libblkid/samples/superblocks.c b/libblkid/samples/superblocks.c
|
||||
index 7d9555771..38903ecee 100644
|
||||
--- a/libblkid/samples/superblocks.c
|
||||
+++ b/libblkid/samples/superblocks.c
|
||||
@@ -44,7 +44,7 @@ int main(int argc, char *argv[])
|
||||
BLKID_SUBLKS_UUID | BLKID_SUBLKS_UUIDRAW |
|
||||
BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE |
|
||||
BLKID_SUBLKS_USAGE | BLKID_SUBLKS_VERSION |
|
||||
- BLKID_SUBLKS_MAGIC);
|
||||
+ BLKID_SUBLKS_MAGIC | BLKID_SUBLKS_FSSIZE);
|
||||
|
||||
rc = blkid_do_safeprobe(pr);
|
||||
if (rc == -1)
|
||||
diff --git a/libblkid/src/blkid.h.in b/libblkid/src/blkid.h.in
|
||||
index 3cd4116d9..ad4becf0a 100644
|
||||
--- a/libblkid/src/blkid.h.in
|
||||
+++ b/libblkid/src/blkid.h.in
|
||||
@@ -281,6 +281,7 @@ extern int blkid_probe_enable_superblocks(blkid_probe pr, int enable)
|
||||
#define BLKID_SUBLKS_VERSION (1 << 8) /* read FS type from superblock */
|
||||
#define BLKID_SUBLKS_MAGIC (1 << 9) /* define SBMAGIC and SBMAGIC_OFFSET */
|
||||
#define BLKID_SUBLKS_BADCSUM (1 << 10) /* allow a bad checksum */
|
||||
+#define BLKID_SUBLKS_FSSIZE (1 << 11) /* read and define FSSIZE from superblock */
|
||||
|
||||
#define BLKID_SUBLKS_DEFAULT (BLKID_SUBLKS_LABEL | BLKID_SUBLKS_UUID | \
|
||||
BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE)
|
||||
diff --git a/libblkid/src/superblocks/superblocks.c b/libblkid/src/superblocks/superblocks.c
|
||||
index f21365538..9adc2cfa3 100644
|
||||
--- a/libblkid/src/superblocks/superblocks.c
|
||||
+++ b/libblkid/src/superblocks/superblocks.c
|
||||
@@ -7,6 +7,7 @@
|
||||
* GNU Lesser General Public License.
|
||||
*/
|
||||
|
||||
+#include <inttypes.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
@@ -584,6 +585,16 @@ static int blkid_probe_set_usage(blkid_probe pr, int usage)
|
||||
return blkid_probe_set_value(pr, "USAGE", (unsigned char *) u, strlen(u) + 1);
|
||||
}
|
||||
|
||||
+int blkid_probe_set_fssize(blkid_probe pr, uint64_t size)
|
||||
+{
|
||||
+ struct blkid_chain *chn = blkid_probe_get_chain(pr);
|
||||
+
|
||||
+ if (!(chn->flags & BLKID_SUBLKS_FSSIZE))
|
||||
+ return 0;
|
||||
+
|
||||
+ return blkid_probe_sprintf_value(pr, "FSSIZE", "%" PRIu64, size);
|
||||
+}
|
||||
+
|
||||
int blkid_probe_set_id_label(blkid_probe pr, const char *name,
|
||||
const unsigned char *data, size_t len)
|
||||
{
|
||||
diff --git a/libblkid/src/superblocks/superblocks.h b/libblkid/src/superblocks/superblocks.h
|
||||
index 9c489c438..67803679f 100644
|
||||
--- a/libblkid/src/superblocks/superblocks.h
|
||||
+++ b/libblkid/src/superblocks/superblocks.h
|
||||
@@ -111,6 +111,7 @@ extern int blkid_probe_set_utf8_id_label(blkid_probe pr, const char *name,
|
||||
const unsigned char *data, size_t len, int enc);
|
||||
|
||||
int blkid_probe_set_block_size(blkid_probe pr, unsigned block_size);
|
||||
+int blkid_probe_set_fssize(blkid_probe pr, uint64_t size);
|
||||
|
||||
extern int blkid_probe_is_bitlocker(blkid_probe pr);
|
||||
extern int blkid_probe_is_ntfs(blkid_probe pr);
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,45 @@
|
||||
From e81cc68312e91ab7086188542f3377605bf144a8 Mon Sep 17 00:00:00 2001
|
||||
From: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
Date: Mon, 25 Apr 2022 17:08:38 +0200
|
||||
Subject: libblkid: implement FSSIZE calculation for XFS
|
||||
|
||||
The implementation is similar to one provided by statfs(2) + lsblk.
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/d7ec8fe8e
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2064810
|
||||
Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
---
|
||||
libblkid/src/superblocks/xfs.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/libblkid/src/superblocks/xfs.c b/libblkid/src/superblocks/xfs.c
|
||||
index d8c6fb6d4..444050f55 100644
|
||||
--- a/libblkid/src/superblocks/xfs.c
|
||||
+++ b/libblkid/src/superblocks/xfs.c
|
||||
@@ -158,6 +158,15 @@ static int xfs_verify_sb(struct xfs_super_block *ondisk)
|
||||
return 1;
|
||||
}
|
||||
|
||||
+static uint64_t xfs_fssize(struct xfs_super_block *xs)
|
||||
+{
|
||||
+ uint32_t lsize = xs->sb_logstart ? xs->sb_logblocks : 0;
|
||||
+ uint64_t avail_blocks = be64_to_cpu(xs->sb_dblocks) - be32_to_cpu(lsize);
|
||||
+ uint64_t fssize = avail_blocks*be32_to_cpu(xs->sb_blocksize);
|
||||
+
|
||||
+ return fssize;
|
||||
+}
|
||||
+
|
||||
static int probe_xfs(blkid_probe pr, const struct blkid_idmag *mag)
|
||||
{
|
||||
struct xfs_super_block *xs;
|
||||
@@ -173,6 +182,7 @@ static int probe_xfs(blkid_probe pr, const struct blkid_idmag *mag)
|
||||
blkid_probe_set_label(pr, (unsigned char *) xs->sb_fname,
|
||||
sizeof(xs->sb_fname));
|
||||
blkid_probe_set_uuid(pr, xs->sb_uuid);
|
||||
+ blkid_probe_set_fssize(pr, xfs_fssize(xs));
|
||||
blkid_probe_set_block_size(pr, be16_to_cpu(xs->sb_sectsize));
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,54 @@
|
||||
From d3d0e6dc70889e5fe9d9dfeab67e9ba1f0491a28 Mon Sep 17 00:00:00 2001
|
||||
From: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
Date: Mon, 25 Apr 2022 17:08:39 +0200
|
||||
Subject: blkid: add FSSIZE tag with tests for XFS
|
||||
|
||||
The FSSIZE tag was added to the libblkid. Enable this tag in blkid
|
||||
and update tests golden output for XFS test cases.
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/60cedc921
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2064810
|
||||
Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
---
|
||||
misc-utils/blkid.c | 3 ++-
|
||||
tests/expected/blkid/low-probe-xfs | 1 +
|
||||
tests/expected/blkid/low-probe-xfs-v5 | 1 +
|
||||
3 files changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/misc-utils/blkid.c b/misc-utils/blkid.c
|
||||
index cccd8af87..4f456be52 100644
|
||||
--- a/misc-utils/blkid.c
|
||||
+++ b/misc-utils/blkid.c
|
||||
@@ -892,7 +892,8 @@ int main(int argc, char **argv)
|
||||
blkid_probe_set_superblocks_flags(pr,
|
||||
BLKID_SUBLKS_LABEL | BLKID_SUBLKS_UUID |
|
||||
BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE |
|
||||
- BLKID_SUBLKS_USAGE | BLKID_SUBLKS_VERSION);
|
||||
+ BLKID_SUBLKS_USAGE | BLKID_SUBLKS_VERSION |
|
||||
+ BLKID_SUBLKS_FSSIZE);
|
||||
|
||||
|
||||
if (fltr_usage &&
|
||||
diff --git a/tests/expected/blkid/low-probe-xfs b/tests/expected/blkid/low-probe-xfs
|
||||
index 6eb1b4600..a91e92bcc 100644
|
||||
--- a/tests/expected/blkid/low-probe-xfs
|
||||
+++ b/tests/expected/blkid/low-probe-xfs
|
||||
@@ -1,4 +1,5 @@
|
||||
ID_FS_BLOCK_SIZE=512
|
||||
+ID_FS_FSSIZE=11862016
|
||||
ID_FS_LABEL=test-xfs
|
||||
ID_FS_LABEL_ENC=test-xfs
|
||||
ID_FS_TYPE=xfs
|
||||
diff --git a/tests/expected/blkid/low-probe-xfs-v5 b/tests/expected/blkid/low-probe-xfs-v5
|
||||
index 513a3818f..129b41f26 100644
|
||||
--- a/tests/expected/blkid/low-probe-xfs-v5
|
||||
+++ b/tests/expected/blkid/low-probe-xfs-v5
|
||||
@@ -1,4 +1,5 @@
|
||||
ID_FS_BLOCK_SIZE=512
|
||||
+ID_FS_FSSIZE=17469440
|
||||
ID_FS_LABEL=test-xfs-v5
|
||||
ID_FS_LABEL_ENC=test-xfs-v5
|
||||
ID_FS_TYPE=xfs
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,28 @@
|
||||
From 8ae64e23bc34fd939586705f64a93676bae8c2b2 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Tue, 26 Apr 2022 10:32:05 +0200
|
||||
Subject: libblkid: fix FSSIZE docs
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/9c01f798f
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2064810
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
libblkid/src/superblocks/superblocks.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libblkid/src/superblocks/superblocks.c b/libblkid/src/superblocks/superblocks.c
|
||||
index 9adc2cfa3..adf4ee025 100644
|
||||
--- a/libblkid/src/superblocks/superblocks.c
|
||||
+++ b/libblkid/src/superblocks/superblocks.c
|
||||
@@ -66,7 +66,7 @@
|
||||
*
|
||||
* @SBMAGIC_OFFSET: offset of SBMAGIC
|
||||
*
|
||||
- * @FSSIZE: size of filesystem [not-implemented yet]
|
||||
+ * @FSSIZE: size of filesystem (implemented for XFS only)
|
||||
*
|
||||
* @SYSTEM_ID: ISO9660 system identifier
|
||||
*
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,113 @@
|
||||
From fb9ea75a8a69b06eb6a4039b841ce3ccabb76775 Mon Sep 17 00:00:00 2001
|
||||
From: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
Date: Wed, 27 Apr 2022 13:24:56 +0200
|
||||
Subject: libblkid: add FSLASTBLOCK field interface showing area occupied by fs
|
||||
|
||||
Add interface to let filesystem set FSLASTBLOCK which is basically
|
||||
total number of fsblocks (area occupied by fs). Enable that field in
|
||||
the 'superblocks' sample.
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/b7cb26ec3
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2064810
|
||||
Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
---
|
||||
libblkid/samples/superblocks.c | 3 ++-
|
||||
libblkid/src/blkid.h.in | 23 ++++++++++++-----------
|
||||
libblkid/src/superblocks/superblocks.c | 13 +++++++++++++
|
||||
libblkid/src/superblocks/superblocks.h | 1 +
|
||||
4 files changed, 28 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/libblkid/samples/superblocks.c b/libblkid/samples/superblocks.c
|
||||
index 38903ecee..b7f94ec14 100644
|
||||
--- a/libblkid/samples/superblocks.c
|
||||
+++ b/libblkid/samples/superblocks.c
|
||||
@@ -44,7 +44,8 @@ int main(int argc, char *argv[])
|
||||
BLKID_SUBLKS_UUID | BLKID_SUBLKS_UUIDRAW |
|
||||
BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE |
|
||||
BLKID_SUBLKS_USAGE | BLKID_SUBLKS_VERSION |
|
||||
- BLKID_SUBLKS_MAGIC | BLKID_SUBLKS_FSSIZE);
|
||||
+ BLKID_SUBLKS_MAGIC | BLKID_SUBLKS_FSSIZE |
|
||||
+ BLKID_SUBLKS_FSLASTBLOCK);
|
||||
|
||||
rc = blkid_do_safeprobe(pr);
|
||||
if (rc == -1)
|
||||
diff --git a/libblkid/src/blkid.h.in b/libblkid/src/blkid.h.in
|
||||
index ad4becf0a..56e64f9ab 100644
|
||||
--- a/libblkid/src/blkid.h.in
|
||||
+++ b/libblkid/src/blkid.h.in
|
||||
@@ -271,17 +271,18 @@ extern int blkid_superblocks_get_name(size_t idx, const char **name, int *usage)
|
||||
extern int blkid_probe_enable_superblocks(blkid_probe pr, int enable)
|
||||
__ul_attribute__((nonnull));
|
||||
|
||||
-#define BLKID_SUBLKS_LABEL (1 << 1) /* read LABEL from superblock */
|
||||
-#define BLKID_SUBLKS_LABELRAW (1 << 2) /* read and define LABEL_RAW result value*/
|
||||
-#define BLKID_SUBLKS_UUID (1 << 3) /* read UUID from superblock */
|
||||
-#define BLKID_SUBLKS_UUIDRAW (1 << 4) /* read and define UUID_RAW result value */
|
||||
-#define BLKID_SUBLKS_TYPE (1 << 5) /* define TYPE result value */
|
||||
-#define BLKID_SUBLKS_SECTYPE (1 << 6) /* define compatible fs type (second type) */
|
||||
-#define BLKID_SUBLKS_USAGE (1 << 7) /* define USAGE result value */
|
||||
-#define BLKID_SUBLKS_VERSION (1 << 8) /* read FS type from superblock */
|
||||
-#define BLKID_SUBLKS_MAGIC (1 << 9) /* define SBMAGIC and SBMAGIC_OFFSET */
|
||||
-#define BLKID_SUBLKS_BADCSUM (1 << 10) /* allow a bad checksum */
|
||||
-#define BLKID_SUBLKS_FSSIZE (1 << 11) /* read and define FSSIZE from superblock */
|
||||
+#define BLKID_SUBLKS_LABEL (1 << 1) /* read LABEL from superblock */
|
||||
+#define BLKID_SUBLKS_LABELRAW (1 << 2) /* read and define LABEL_RAW result value*/
|
||||
+#define BLKID_SUBLKS_UUID (1 << 3) /* read UUID from superblock */
|
||||
+#define BLKID_SUBLKS_UUIDRAW (1 << 4) /* read and define UUID_RAW result value */
|
||||
+#define BLKID_SUBLKS_TYPE (1 << 5) /* define TYPE result value */
|
||||
+#define BLKID_SUBLKS_SECTYPE (1 << 6) /* define compatible fs type (second type) */
|
||||
+#define BLKID_SUBLKS_USAGE (1 << 7) /* define USAGE result value */
|
||||
+#define BLKID_SUBLKS_VERSION (1 << 8) /* read FS type from superblock */
|
||||
+#define BLKID_SUBLKS_MAGIC (1 << 9) /* define SBMAGIC and SBMAGIC_OFFSET */
|
||||
+#define BLKID_SUBLKS_BADCSUM (1 << 10) /* allow a bad checksum */
|
||||
+#define BLKID_SUBLKS_FSSIZE (1 << 11) /* read and define FSSIZE from superblock */
|
||||
+#define BLKID_SUBLKS_FSLASTBLOCK (1 << 12) /* read and define FSLASTBLOCK from superblock */
|
||||
|
||||
#define BLKID_SUBLKS_DEFAULT (BLKID_SUBLKS_LABEL | BLKID_SUBLKS_UUID | \
|
||||
BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE)
|
||||
diff --git a/libblkid/src/superblocks/superblocks.c b/libblkid/src/superblocks/superblocks.c
|
||||
index adf4ee025..5b899a830 100644
|
||||
--- a/libblkid/src/superblocks/superblocks.c
|
||||
+++ b/libblkid/src/superblocks/superblocks.c
|
||||
@@ -68,6 +68,8 @@
|
||||
*
|
||||
* @FSSIZE: size of filesystem (implemented for XFS only)
|
||||
*
|
||||
+ * @FSLASTBLOCK: last fsblock/total number of fsblocks
|
||||
+ *
|
||||
* @SYSTEM_ID: ISO9660 system identifier
|
||||
*
|
||||
* @PUBLISHER_ID: ISO9660 publisher identifier
|
||||
@@ -595,6 +597,17 @@ int blkid_probe_set_fssize(blkid_probe pr, uint64_t size)
|
||||
return blkid_probe_sprintf_value(pr, "FSSIZE", "%" PRIu64, size);
|
||||
}
|
||||
|
||||
+int blkid_probe_set_fslastblock(blkid_probe pr, uint64_t lastblock)
|
||||
+{
|
||||
+ struct blkid_chain *chn = blkid_probe_get_chain(pr);
|
||||
+
|
||||
+ if (!(chn->flags & BLKID_SUBLKS_FSLASTBLOCK))
|
||||
+ return 0;
|
||||
+
|
||||
+ return blkid_probe_sprintf_value(pr, "FSLASTBLOCK", "%" PRIu64,
|
||||
+ lastblock);
|
||||
+}
|
||||
+
|
||||
int blkid_probe_set_id_label(blkid_probe pr, const char *name,
|
||||
const unsigned char *data, size_t len)
|
||||
{
|
||||
diff --git a/libblkid/src/superblocks/superblocks.h b/libblkid/src/superblocks/superblocks.h
|
||||
index 67803679f..251e2e386 100644
|
||||
--- a/libblkid/src/superblocks/superblocks.h
|
||||
+++ b/libblkid/src/superblocks/superblocks.h
|
||||
@@ -112,6 +112,7 @@ extern int blkid_probe_set_utf8_id_label(blkid_probe pr, const char *name,
|
||||
|
||||
int blkid_probe_set_block_size(blkid_probe pr, unsigned block_size);
|
||||
int blkid_probe_set_fssize(blkid_probe pr, uint64_t size);
|
||||
+int blkid_probe_set_fslastblock(blkid_probe pr, uint64_t lastblock);
|
||||
|
||||
extern int blkid_probe_is_bitlocker(blkid_probe pr);
|
||||
extern int blkid_probe_is_ntfs(blkid_probe pr);
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,86 @@
|
||||
From 9c7f3317fc66fe971a331dd71e76aff7ae091ab2 Mon Sep 17 00:00:00 2001
|
||||
From: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
Date: Wed, 27 Apr 2022 14:46:33 +0200
|
||||
Subject: libblkid: add FSLASTBLOCK implementation for xfs, ext and btrfs
|
||||
|
||||
Implementation of FSLASTBLOCK for most common filesystems. Most of
|
||||
the fs store total number of reserved blocks in superblock.
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/5f995b3f1
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2064810
|
||||
Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
---
|
||||
libblkid/src/superblocks/btrfs.c | 5 +++++
|
||||
libblkid/src/superblocks/ext.c | 10 ++++++++--
|
||||
libblkid/src/superblocks/xfs.c | 1 +
|
||||
3 files changed, 14 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libblkid/src/superblocks/btrfs.c b/libblkid/src/superblocks/btrfs.c
|
||||
index f0fde700d..9708f2e28 100644
|
||||
--- a/libblkid/src/superblocks/btrfs.c
|
||||
+++ b/libblkid/src/superblocks/btrfs.c
|
||||
@@ -76,6 +76,11 @@ static int probe_btrfs(blkid_probe pr, const struct blkid_idmag *mag)
|
||||
blkid_probe_set_uuid_as(pr, bfs->dev_item.uuid, "UUID_SUB");
|
||||
blkid_probe_set_block_size(pr, le32_to_cpu(bfs->sectorsize));
|
||||
|
||||
+ uint32_t sectorsize_log = 31 -
|
||||
+ __builtin_clz(le32_to_cpu(bfs->sectorsize));
|
||||
+ blkid_probe_set_fslastblock(pr,
|
||||
+ le64_to_cpu(bfs->total_bytes) >> sectorsize_log);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/libblkid/src/superblocks/ext.c b/libblkid/src/superblocks/ext.c
|
||||
index 3870522fa..0b9023734 100644
|
||||
--- a/libblkid/src/superblocks/ext.c
|
||||
+++ b/libblkid/src/superblocks/ext.c
|
||||
@@ -164,10 +164,11 @@ static struct ext2_super_block *ext_get_super(
|
||||
static void ext_get_info(blkid_probe pr, int ver, struct ext2_super_block *es)
|
||||
{
|
||||
struct blkid_chain *chn = blkid_probe_get_chain(pr);
|
||||
+ uint32_t s_feature_incompat = le32_to_cpu(es->s_feature_incompat);
|
||||
|
||||
DBG(PROBE, ul_debug("ext2_sb.compat = %08X:%08X:%08X",
|
||||
le32_to_cpu(es->s_feature_compat),
|
||||
- le32_to_cpu(es->s_feature_incompat),
|
||||
+ s_feature_incompat,
|
||||
le32_to_cpu(es->s_feature_ro_compat)));
|
||||
|
||||
if (*es->s_volume_name != '\0')
|
||||
@@ -179,7 +180,7 @@ static void ext_get_info(blkid_probe pr, int ver, struct ext2_super_block *es)
|
||||
blkid_probe_set_uuid_as(pr, es->s_journal_uuid, "EXT_JOURNAL");
|
||||
|
||||
if (ver != 2 && (chn->flags & BLKID_SUBLKS_SECTYPE) &&
|
||||
- ((le32_to_cpu(es->s_feature_incompat) & EXT2_FEATURE_INCOMPAT_UNSUPPORTED) == 0))
|
||||
+ ((s_feature_incompat & EXT2_FEATURE_INCOMPAT_UNSUPPORTED) == 0))
|
||||
blkid_probe_set_value(pr, "SEC_TYPE",
|
||||
(unsigned char *) "ext2",
|
||||
sizeof("ext2"));
|
||||
@@ -190,6 +191,11 @@ static void ext_get_info(blkid_probe pr, int ver, struct ext2_super_block *es)
|
||||
|
||||
if (le32_to_cpu(es->s_log_block_size) < 32)
|
||||
blkid_probe_set_block_size(pr, 1024U << le32_to_cpu(es->s_log_block_size));
|
||||
+
|
||||
+ uint64_t fslastblock = le32_to_cpu(es->s_blocks_count) |
|
||||
+ ((s_feature_incompat & EXT4_FEATURE_INCOMPAT_64BIT) ?
|
||||
+ (uint64_t) le32_to_cpu(es->s_blocks_count_hi) << 32 : 0);
|
||||
+ blkid_probe_set_fslastblock(pr, fslastblock);
|
||||
}
|
||||
|
||||
|
||||
diff --git a/libblkid/src/superblocks/xfs.c b/libblkid/src/superblocks/xfs.c
|
||||
index 444050f55..1f2e92cac 100644
|
||||
--- a/libblkid/src/superblocks/xfs.c
|
||||
+++ b/libblkid/src/superblocks/xfs.c
|
||||
@@ -183,6 +183,7 @@ static int probe_xfs(blkid_probe pr, const struct blkid_idmag *mag)
|
||||
sizeof(xs->sb_fname));
|
||||
blkid_probe_set_uuid(pr, xs->sb_uuid);
|
||||
blkid_probe_set_fssize(pr, xfs_fssize(xs));
|
||||
+ blkid_probe_set_fslastblock(pr, be64_to_cpu(xs->sb_dblocks));
|
||||
blkid_probe_set_block_size(pr, be16_to_cpu(xs->sb_sectsize));
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,146 @@
|
||||
From ab34732c0aaf7814393acbffa59cb82a79583e3d Mon Sep 17 00:00:00 2001
|
||||
From: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
Date: Wed, 27 Apr 2022 17:29:27 +0200
|
||||
Subject: blkid: add image for btrfs testing
|
||||
|
||||
The btrfs is one of the popular filesystem which is supported by
|
||||
blkid. However, the image for 'low-probe' tests was missing. Add
|
||||
115M BTRFS default image (mkfs.btrfs btrfs.img).
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/bf64c83ec
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2064810
|
||||
Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
---
|
||||
tests/expected/blkid/low-probe-btrfs | 7 +++++++
|
||||
tests/ts/blkid/images-fs/btrfs.img.xz | Bin 0 -> 21696 bytes
|
||||
2 files changed, 7 insertions(+)
|
||||
create mode 100644 tests/expected/blkid/low-probe-btrfs
|
||||
create mode 100644 tests/ts/blkid/images-fs/btrfs.img.xz
|
||||
|
||||
diff --git a/tests/expected/blkid/low-probe-btrfs b/tests/expected/blkid/low-probe-btrfs
|
||||
new file mode 100644
|
||||
index 000000000..509fac378
|
||||
--- /dev/null
|
||||
+++ b/tests/expected/blkid/low-probe-btrfs
|
||||
@@ -0,0 +1,7 @@
|
||||
+ID_FS_BLOCK_SIZE=4096
|
||||
+ID_FS_TYPE=btrfs
|
||||
+ID_FS_USAGE=filesystem
|
||||
+ID_FS_UUID=d4a78b72-55e4-4811-86a6-09af936d43f9
|
||||
+ID_FS_UUID_ENC=d4a78b72-55e4-4811-86a6-09af936d43f9
|
||||
+ID_FS_UUID_SUB=1e7603cb-d0be-4d8f-8972-9dddf7d5543c
|
||||
+ID_FS_UUID_SUB_ENC=1e7603cb-d0be-4d8f-8972-9dddf7d5543c
|
||||
diff --git a/tests/ts/blkid/images-fs/btrfs.img.xz b/tests/ts/blkid/images-fs/btrfs.img.xz
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..418833d42078492f0266d73b22170d5626b80cc0
|
||||
GIT binary patch
|
||||
literal 21696
|
||||
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
|
||||
|
||||
literal 0
|
||||
HcmV?d00001
|
||||
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,94 @@
|
||||
From 96a699563b65b6a9204f2c3184faf1366155a614 Mon Sep 17 00:00:00 2001
|
||||
From: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
Date: Wed, 27 Apr 2022 17:33:33 +0200
|
||||
Subject: blkid: add tests for FSLASTBLOCK tag
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/800ed56f4
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2064810
|
||||
Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
---
|
||||
misc-utils/blkid.c | 2 +-
|
||||
tests/expected/blkid/low-probe-btrfs | 1 +
|
||||
tests/expected/blkid/low-probe-ext2 | 1 +
|
||||
tests/expected/blkid/low-probe-ext3 | 1 +
|
||||
tests/expected/blkid/low-probe-jbd | 1 +
|
||||
tests/expected/blkid/low-probe-xfs | 1 +
|
||||
tests/expected/blkid/low-probe-xfs-v5 | 1 +
|
||||
7 files changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/misc-utils/blkid.c b/misc-utils/blkid.c
|
||||
index 4f456be52..f2b190ce3 100644
|
||||
--- a/misc-utils/blkid.c
|
||||
+++ b/misc-utils/blkid.c
|
||||
@@ -893,7 +893,7 @@ int main(int argc, char **argv)
|
||||
BLKID_SUBLKS_LABEL | BLKID_SUBLKS_UUID |
|
||||
BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE |
|
||||
BLKID_SUBLKS_USAGE | BLKID_SUBLKS_VERSION |
|
||||
- BLKID_SUBLKS_FSSIZE);
|
||||
+ BLKID_SUBLKS_FSSIZE | BLKID_SUBLKS_FSLASTBLOCK);
|
||||
|
||||
|
||||
if (fltr_usage &&
|
||||
diff --git a/tests/expected/blkid/low-probe-btrfs b/tests/expected/blkid/low-probe-btrfs
|
||||
index 509fac378..48649389a 100644
|
||||
--- a/tests/expected/blkid/low-probe-btrfs
|
||||
+++ b/tests/expected/blkid/low-probe-btrfs
|
||||
@@ -1,4 +1,5 @@
|
||||
ID_FS_BLOCK_SIZE=4096
|
||||
+ID_FS_FSLASTBLOCK=29440
|
||||
ID_FS_TYPE=btrfs
|
||||
ID_FS_USAGE=filesystem
|
||||
ID_FS_UUID=d4a78b72-55e4-4811-86a6-09af936d43f9
|
||||
diff --git a/tests/expected/blkid/low-probe-ext2 b/tests/expected/blkid/low-probe-ext2
|
||||
index 087da97a4..e236c6e8a 100644
|
||||
--- a/tests/expected/blkid/low-probe-ext2
|
||||
+++ b/tests/expected/blkid/low-probe-ext2
|
||||
@@ -1,4 +1,5 @@
|
||||
ID_FS_BLOCK_SIZE=1024
|
||||
+ID_FS_FSLASTBLOCK=100
|
||||
ID_FS_LABEL=test-ext2
|
||||
ID_FS_LABEL_ENC=test-ext2
|
||||
ID_FS_TYPE=ext2
|
||||
diff --git a/tests/expected/blkid/low-probe-ext3 b/tests/expected/blkid/low-probe-ext3
|
||||
index 8684884c1..164fefb7b 100644
|
||||
--- a/tests/expected/blkid/low-probe-ext3
|
||||
+++ b/tests/expected/blkid/low-probe-ext3
|
||||
@@ -1,4 +1,5 @@
|
||||
ID_FS_BLOCK_SIZE=1024
|
||||
+ID_FS_FSLASTBLOCK=2048
|
||||
ID_FS_LABEL=test-ext3
|
||||
ID_FS_LABEL_ENC=test-ext3
|
||||
ID_FS_SEC_TYPE=ext2
|
||||
diff --git a/tests/expected/blkid/low-probe-jbd b/tests/expected/blkid/low-probe-jbd
|
||||
index c9f9f6b79..f5462a2a3 100644
|
||||
--- a/tests/expected/blkid/low-probe-jbd
|
||||
+++ b/tests/expected/blkid/low-probe-jbd
|
||||
@@ -1,4 +1,5 @@
|
||||
ID_FS_BLOCK_SIZE=1024
|
||||
+ID_FS_FSLASTBLOCK=1024
|
||||
ID_FS_LOGUUID=0d7a07df-7b06-4829-bce7-3b9c3ece570c
|
||||
ID_FS_TYPE=jbd
|
||||
ID_FS_USAGE=other
|
||||
diff --git a/tests/expected/blkid/low-probe-xfs b/tests/expected/blkid/low-probe-xfs
|
||||
index a91e92bcc..be9c4194a 100644
|
||||
--- a/tests/expected/blkid/low-probe-xfs
|
||||
+++ b/tests/expected/blkid/low-probe-xfs
|
||||
@@ -1,4 +1,5 @@
|
||||
ID_FS_BLOCK_SIZE=512
|
||||
+ID_FS_FSLASTBLOCK=4096
|
||||
ID_FS_FSSIZE=11862016
|
||||
ID_FS_LABEL=test-xfs
|
||||
ID_FS_LABEL_ENC=test-xfs
|
||||
diff --git a/tests/expected/blkid/low-probe-xfs-v5 b/tests/expected/blkid/low-probe-xfs-v5
|
||||
index 129b41f26..fd2cba933 100644
|
||||
--- a/tests/expected/blkid/low-probe-xfs-v5
|
||||
+++ b/tests/expected/blkid/low-probe-xfs-v5
|
||||
@@ -1,4 +1,5 @@
|
||||
ID_FS_BLOCK_SIZE=512
|
||||
+ID_FS_FSLASTBLOCK=5120
|
||||
ID_FS_FSSIZE=17469440
|
||||
ID_FS_LABEL=test-xfs-v5
|
||||
ID_FS_LABEL_ENC=test-xfs-v5
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,120 @@
|
||||
From f58a63a3d88cccd5fdf53ead425c5e8186f32cc1 Mon Sep 17 00:00:00 2001
|
||||
From: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
Date: Mon, 2 May 2022 17:08:33 +0200
|
||||
Subject: libblkid: merge FS* flags into one FSINFO
|
||||
|
||||
Put BLOCK_SIZE, FSSIZE and FSLASTBLOCK tags under one FSINFO flag.
|
||||
These, and probably future ones, are read directly from the
|
||||
superblock (with minor post-processing). These properties are
|
||||
combined under one flag to escape adding a flag per superblock
|
||||
member.
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/c9b2297eb
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2064810
|
||||
Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
---
|
||||
libblkid/samples/superblocks.c | 3 +--
|
||||
libblkid/src/blkid.h.in | 23 +++++++++++------------
|
||||
libblkid/src/superblocks/superblocks.c | 9 +++++++--
|
||||
misc-utils/blkid.c | 3 +--
|
||||
4 files changed, 20 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/libblkid/samples/superblocks.c b/libblkid/samples/superblocks.c
|
||||
index b7f94ec14..5253f9cc4 100644
|
||||
--- a/libblkid/samples/superblocks.c
|
||||
+++ b/libblkid/samples/superblocks.c
|
||||
@@ -44,8 +44,7 @@ int main(int argc, char *argv[])
|
||||
BLKID_SUBLKS_UUID | BLKID_SUBLKS_UUIDRAW |
|
||||
BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE |
|
||||
BLKID_SUBLKS_USAGE | BLKID_SUBLKS_VERSION |
|
||||
- BLKID_SUBLKS_MAGIC | BLKID_SUBLKS_FSSIZE |
|
||||
- BLKID_SUBLKS_FSLASTBLOCK);
|
||||
+ BLKID_SUBLKS_MAGIC | BLKID_SUBLKS_FSINFO);
|
||||
|
||||
rc = blkid_do_safeprobe(pr);
|
||||
if (rc == -1)
|
||||
diff --git a/libblkid/src/blkid.h.in b/libblkid/src/blkid.h.in
|
||||
index 56e64f9ab..ae4e555e3 100644
|
||||
--- a/libblkid/src/blkid.h.in
|
||||
+++ b/libblkid/src/blkid.h.in
|
||||
@@ -271,18 +271,17 @@ extern int blkid_superblocks_get_name(size_t idx, const char **name, int *usage)
|
||||
extern int blkid_probe_enable_superblocks(blkid_probe pr, int enable)
|
||||
__ul_attribute__((nonnull));
|
||||
|
||||
-#define BLKID_SUBLKS_LABEL (1 << 1) /* read LABEL from superblock */
|
||||
-#define BLKID_SUBLKS_LABELRAW (1 << 2) /* read and define LABEL_RAW result value*/
|
||||
-#define BLKID_SUBLKS_UUID (1 << 3) /* read UUID from superblock */
|
||||
-#define BLKID_SUBLKS_UUIDRAW (1 << 4) /* read and define UUID_RAW result value */
|
||||
-#define BLKID_SUBLKS_TYPE (1 << 5) /* define TYPE result value */
|
||||
-#define BLKID_SUBLKS_SECTYPE (1 << 6) /* define compatible fs type (second type) */
|
||||
-#define BLKID_SUBLKS_USAGE (1 << 7) /* define USAGE result value */
|
||||
-#define BLKID_SUBLKS_VERSION (1 << 8) /* read FS type from superblock */
|
||||
-#define BLKID_SUBLKS_MAGIC (1 << 9) /* define SBMAGIC and SBMAGIC_OFFSET */
|
||||
-#define BLKID_SUBLKS_BADCSUM (1 << 10) /* allow a bad checksum */
|
||||
-#define BLKID_SUBLKS_FSSIZE (1 << 11) /* read and define FSSIZE from superblock */
|
||||
-#define BLKID_SUBLKS_FSLASTBLOCK (1 << 12) /* read and define FSLASTBLOCK from superblock */
|
||||
+#define BLKID_SUBLKS_LABEL (1 << 1) /* read LABEL from superblock */
|
||||
+#define BLKID_SUBLKS_LABELRAW (1 << 2) /* read and define LABEL_RAW result value*/
|
||||
+#define BLKID_SUBLKS_UUID (1 << 3) /* read UUID from superblock */
|
||||
+#define BLKID_SUBLKS_UUIDRAW (1 << 4) /* read and define UUID_RAW result value */
|
||||
+#define BLKID_SUBLKS_TYPE (1 << 5) /* define TYPE result value */
|
||||
+#define BLKID_SUBLKS_SECTYPE (1 << 6) /* define compatible fs type (second type) */
|
||||
+#define BLKID_SUBLKS_USAGE (1 << 7) /* define USAGE result value */
|
||||
+#define BLKID_SUBLKS_VERSION (1 << 8) /* read FS type from superblock */
|
||||
+#define BLKID_SUBLKS_MAGIC (1 << 9) /* define SBMAGIC and SBMAGIC_OFFSET */
|
||||
+#define BLKID_SUBLKS_BADCSUM (1 << 10) /* allow a bad checksum */
|
||||
+#define BLKID_SUBLKS_FSINFO (1 << 11) /* read and define fs properties from superblock */
|
||||
|
||||
#define BLKID_SUBLKS_DEFAULT (BLKID_SUBLKS_LABEL | BLKID_SUBLKS_UUID | \
|
||||
BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE)
|
||||
diff --git a/libblkid/src/superblocks/superblocks.c b/libblkid/src/superblocks/superblocks.c
|
||||
index 5b899a830..a1f42c611 100644
|
||||
--- a/libblkid/src/superblocks/superblocks.c
|
||||
+++ b/libblkid/src/superblocks/superblocks.c
|
||||
@@ -562,6 +562,11 @@ int blkid_probe_sprintf_version(blkid_probe pr, const char *fmt, ...)
|
||||
|
||||
int blkid_probe_set_block_size(blkid_probe pr, unsigned block_size)
|
||||
{
|
||||
+ struct blkid_chain *chn = blkid_probe_get_chain(pr);
|
||||
+
|
||||
+ if (!(chn->flags & BLKID_SUBLKS_FSINFO))
|
||||
+ return 0;
|
||||
+
|
||||
return blkid_probe_sprintf_value(pr, "BLOCK_SIZE", "%u", block_size);
|
||||
}
|
||||
|
||||
@@ -591,7 +596,7 @@ int blkid_probe_set_fssize(blkid_probe pr, uint64_t size)
|
||||
{
|
||||
struct blkid_chain *chn = blkid_probe_get_chain(pr);
|
||||
|
||||
- if (!(chn->flags & BLKID_SUBLKS_FSSIZE))
|
||||
+ if (!(chn->flags & BLKID_SUBLKS_FSINFO))
|
||||
return 0;
|
||||
|
||||
return blkid_probe_sprintf_value(pr, "FSSIZE", "%" PRIu64, size);
|
||||
@@ -601,7 +606,7 @@ int blkid_probe_set_fslastblock(blkid_probe pr, uint64_t lastblock)
|
||||
{
|
||||
struct blkid_chain *chn = blkid_probe_get_chain(pr);
|
||||
|
||||
- if (!(chn->flags & BLKID_SUBLKS_FSLASTBLOCK))
|
||||
+ if (!(chn->flags & BLKID_SUBLKS_FSINFO))
|
||||
return 0;
|
||||
|
||||
return blkid_probe_sprintf_value(pr, "FSLASTBLOCK", "%" PRIu64,
|
||||
diff --git a/misc-utils/blkid.c b/misc-utils/blkid.c
|
||||
index f2b190ce3..744151616 100644
|
||||
--- a/misc-utils/blkid.c
|
||||
+++ b/misc-utils/blkid.c
|
||||
@@ -893,8 +893,7 @@ int main(int argc, char **argv)
|
||||
BLKID_SUBLKS_LABEL | BLKID_SUBLKS_UUID |
|
||||
BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE |
|
||||
BLKID_SUBLKS_USAGE | BLKID_SUBLKS_VERSION |
|
||||
- BLKID_SUBLKS_FSSIZE | BLKID_SUBLKS_FSLASTBLOCK);
|
||||
-
|
||||
+ BLKID_SUBLKS_FSINFO);
|
||||
|
||||
if (fltr_usage &&
|
||||
blkid_probe_filter_superblocks_usage(pr, fltr_flag, fltr_usage))
|
||||
--
|
||||
2.36.1
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,32 @@
|
||||
From 5300d69be2919d0a50968377d23807831fdf3f71 Mon Sep 17 00:00:00 2001
|
||||
From: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
Date: Fri, 27 May 2022 12:56:27 +0200
|
||||
Subject: libblkid: update documentation of BLOCK_SIZE tag
|
||||
|
||||
The name BLOCK_SIZE is unfortunate. This tag doesn't represent
|
||||
commonly used file system block size but minimal block size
|
||||
accessible by file system (sector size).
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/895f0b609
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2064810
|
||||
Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
|
||||
---
|
||||
libblkid/src/superblocks/superblocks.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libblkid/src/superblocks/superblocks.c b/libblkid/src/superblocks/superblocks.c
|
||||
index 9cfa991fc..9c32bc9d5 100644
|
||||
--- a/libblkid/src/superblocks/superblocks.c
|
||||
+++ b/libblkid/src/superblocks/superblocks.c
|
||||
@@ -80,7 +80,7 @@
|
||||
*
|
||||
* @BOOT_SYSTEM_ID: ISO9660 boot system identifier
|
||||
*
|
||||
- * @BLOCK_SIZE: block size
|
||||
+ * @BLOCK_SIZE: minimal block size accessible by file system
|
||||
*/
|
||||
|
||||
static int superblocks_probe(blkid_probe pr, struct blkid_chain *chn);
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,28 @@
|
||||
From da3add097b70160cd2c6bab0a4acb699df07ebe8 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Thu, 17 Mar 2022 10:48:33 +0100
|
||||
Subject: cfdisk: don't use NULL in printf [coverity scan]
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/30cc5f5751698cccb625193f715f1a606a7f91b4
|
||||
Addresses: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=2109459
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
disk-utils/cfdisk.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/disk-utils/cfdisk.c b/disk-utils/cfdisk.c
|
||||
index c1b28889f..36eb3f8c6 100644
|
||||
--- a/disk-utils/cfdisk.c
|
||||
+++ b/disk-utils/cfdisk.c
|
||||
@@ -2080,7 +2080,7 @@ done:
|
||||
}
|
||||
free(cm);
|
||||
DBG(UI, ul_debug("get parrtype done [type=%s] ", t ?
|
||||
- fdisk_parttype_get_name(t) : NULL));
|
||||
+ fdisk_parttype_get_name(t) : ""));
|
||||
return t;
|
||||
}
|
||||
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,28 @@
|
||||
From cee4a7f69d853fcc574241d394edc5bcb91469a5 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Mon, 6 Jun 2022 16:19:16 +0200
|
||||
Subject: zramctl: fix compiler warning [-Werror=maybe-uninitialized]
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/8883f037466a5534554d7d9114aceb740295ef20
|
||||
Addresses: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=2109459
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
sys-utils/zramctl.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sys-utils/zramctl.c b/sys-utils/zramctl.c
|
||||
index 003349fad..64d5fcd81 100644
|
||||
--- a/sys-utils/zramctl.c
|
||||
+++ b/sys-utils/zramctl.c
|
||||
@@ -291,7 +291,7 @@ static struct path_cxt *zram_get_control(void)
|
||||
|
||||
static int zram_control_add(struct zram *z)
|
||||
{
|
||||
- int n;
|
||||
+ int n = 0;
|
||||
struct path_cxt *ctl;
|
||||
|
||||
if (!zram_has_control(z) || !(ctl = zram_get_control()))
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,46 @@
|
||||
From f6fffc1a89e57b7d5dd4adf1ee6b2146e58ec411 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Thu, 17 Mar 2022 12:18:03 +0100
|
||||
Subject: lib/path: make ul_path_read_buffer() more robust [coverity scan]
|
||||
|
||||
Make sure we never call buf[rc - 1] for rc=0.
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/ea459dcf95d0bb04c816b71d2b85fbcd8cfc5ee4
|
||||
Addresses: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=2109459
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
lib/path.c | 17 ++++++++++-------
|
||||
1 file changed, 10 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/lib/path.c b/lib/path.c
|
||||
index 21f9bd1c4..ab034e110 100644
|
||||
--- a/lib/path.c
|
||||
+++ b/lib/path.c
|
||||
@@ -666,14 +666,17 @@ int ul_path_readf_string(struct path_cxt *pc, char **str, const char *path, ...)
|
||||
int ul_path_read_buffer(struct path_cxt *pc, char *buf, size_t bufsz, const char *path)
|
||||
{
|
||||
int rc = ul_path_read(pc, buf, bufsz - 1, path);
|
||||
- if (rc < 0)
|
||||
- return rc;
|
||||
|
||||
- /* Remove tailing newline (usual in sysfs) */
|
||||
- if (rc > 0 && *(buf + rc - 1) == '\n')
|
||||
- buf[--rc] = '\0';
|
||||
- else
|
||||
- buf[rc - 1] = '\0';
|
||||
+ if (rc == 0)
|
||||
+ buf[0] = '\0';
|
||||
+
|
||||
+ else if (rc > 0) {
|
||||
+ /* Remove tailing newline (usual in sysfs) */
|
||||
+ if (*(buf + rc - 1) == '\n')
|
||||
+ buf[--rc] = '\0';
|
||||
+ else
|
||||
+ buf[rc - 1] = '\0';
|
||||
+ }
|
||||
|
||||
return rc;
|
||||
}
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,27 @@
|
||||
From 53af90a8edf2e60342b477d28e0d802dc26f18b7 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Tue, 9 Aug 2022 12:35:05 +0200
|
||||
Subject: lslogins: improve for static analyzer
|
||||
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2094216
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
login-utils/lslogins.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/login-utils/lslogins.c b/login-utils/lslogins.c
|
||||
index ff4386d1b..56431212d 100644
|
||||
--- a/login-utils/lslogins.c
|
||||
+++ b/login-utils/lslogins.c
|
||||
@@ -852,7 +852,7 @@ static struct lslogins_user *get_user_info(struct lslogins_control *ctl, const c
|
||||
while (p && *p == '!')
|
||||
p++, i++;
|
||||
|
||||
- if (i != 0 && (!*p || valid_pwd(p)))
|
||||
+ if (i != 0 && p && (!*p || valid_pwd(p)))
|
||||
user->pwd_lock = STATUS_TRUE;
|
||||
} else
|
||||
user->pwd_lock = STATUS_UNKNOWN;
|
||||
--
|
||||
2.37.1
|
||||
|
@ -0,0 +1,48 @@
|
||||
From 723438ad02928d9614439def99b36e0758f62d26 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Fri, 12 Aug 2022 08:30:49 +0200
|
||||
Subject: tests: add udevadm settle to loop overlap test
|
||||
|
||||
Addresses: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=2117203
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
tests/ts/libmount/loop-overlay | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/tests/ts/libmount/loop-overlay b/tests/ts/libmount/loop-overlay
|
||||
index 62874a182..c27f60d0f 100755
|
||||
--- a/tests/ts/libmount/loop-overlay
|
||||
+++ b/tests/ts/libmount/loop-overlay
|
||||
@@ -43,22 +43,29 @@ dd if="$IMG" of="$IMG" oflag=append bs=1024k count=5 conv=notrunc &>/dev/null
|
||||
|
||||
echo "second should fail" >>$TS_OUTPUT
|
||||
$TS_CMD_MOUNT -oloop "$IMG" "$TS_MOUNTPOINT-1" >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
+udevadm settle
|
||||
$TS_CMD_MOUNT -oloop,offset=$OFFSET "$IMG" "$TS_MOUNTPOINT-2" 2>&1 \
|
||||
| sed 's/:.*:/: <target>/; s/for .*/for <source>/' >> $TS_OUTPUT
|
||||
$TS_CMD_UMOUNT "$TS_MOUNTPOINT-1" >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
+udevadm settle
|
||||
|
||||
echo "should succeed" >>$TS_OUTPUT
|
||||
$TS_CMD_MOUNT -oloop,sizelimit=$OFFSET "$IMG" "$TS_MOUNTPOINT-1" >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
+udevadm settle
|
||||
$TS_CMD_MOUNT -oloop,offset=$OFFSET "$IMG" "$TS_MOUNTPOINT-2" >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
+udevadm settle
|
||||
$TS_CMD_UMOUNT "$TS_MOUNTPOINT-1" >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
$TS_CMD_UMOUNT "$TS_MOUNTPOINT-2" >> $TS_OUTPUT 2>> $TS_ERRLOG
|
||||
+udevadm settle
|
||||
|
||||
echo "both should fail" >>$TS_OUTPUT
|
||||
LOOPDEV=$($TS_CMD_LOSETUP --show -f --offset 1 --sizelimit $OFFSET "$IMG")
|
||||
+udevadm settle
|
||||
$TS_CMD_MOUNT -oloop,sizelimit=$OFFSET "$IMG" "$TS_MOUNTPOINT-1" 2>&1 \
|
||||
| sed 's/:.*:/: <target>/; s/for .*/for <source>/' >> $TS_OUTPUT
|
||||
$TS_CMD_MOUNT -oloop,offset=$OFFSET "$IMG" "$TS_MOUNTPOINT-2" 2>&1 \
|
||||
| sed 's/:.*:/: <target>/; s/for .*/for <source>/' >> $TS_OUTPUT
|
||||
+udevadm settle
|
||||
$TS_CMD_LOSETUP --detach $LOOPDEV
|
||||
|
||||
ts_log "Success"
|
||||
--
|
||||
2.37.2
|
||||
|
@ -0,0 +1,161 @@
|
||||
From a1dfd3c737f7dad832b0f6ec975bcc5c9cc80ffe Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Wed, 24 Aug 2022 12:20:25 +0200
|
||||
Subject: lslogins: support more password methods
|
||||
|
||||
* detect more hashing methods
|
||||
|
||||
* don't care about hash size
|
||||
|
||||
* follow crypt(5) when check for valid chars
|
||||
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2094216
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/2b9373e06243d5adf93d627916a5421b34a7e63f
|
||||
Reported-by: Radka Skvarilova <rskvaril@redhat.com>
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
login-utils/lslogins.c | 66 +++++++++++++++++++++++++++---------------
|
||||
1 file changed, 42 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/login-utils/lslogins.c b/login-utils/lslogins.c
|
||||
index 56431212d..22e3cd23e 100644
|
||||
--- a/login-utils/lslogins.c
|
||||
+++ b/login-utils/lslogins.c
|
||||
@@ -598,7 +598,7 @@ static int get_nprocs(const uid_t uid)
|
||||
}
|
||||
#endif
|
||||
|
||||
-static const char *get_pwd_method(const char *str, const char **next, unsigned int *sz)
|
||||
+static const char *get_pwd_method(const char *str, const char **next)
|
||||
{
|
||||
const char *p = str;
|
||||
const char *res = NULL;
|
||||
@@ -606,32 +606,50 @@ static const char *get_pwd_method(const char *str, const char **next, unsigned i
|
||||
if (!p || *p++ != '$')
|
||||
return NULL;
|
||||
|
||||
- if (sz)
|
||||
- *sz = 0;
|
||||
-
|
||||
switch (*p) {
|
||||
case '1':
|
||||
res = "MD5";
|
||||
- if (sz)
|
||||
- *sz = 22;
|
||||
break;
|
||||
case '2':
|
||||
- p++;
|
||||
- if (*p == 'a' || *p == 'y')
|
||||
+ switch(*(p+1)) {
|
||||
+ case 'a':
|
||||
+ case 'y':
|
||||
+ p++;
|
||||
res = "Blowfish";
|
||||
+ break;
|
||||
+ case 'b':
|
||||
+ p++;
|
||||
+ res = "bcrypt";
|
||||
+ break;
|
||||
+ }
|
||||
+ break;
|
||||
+ case '3':
|
||||
+ res = "NT";
|
||||
break;
|
||||
case '5':
|
||||
res = "SHA-256";
|
||||
- if (sz)
|
||||
- *sz = 43;
|
||||
break;
|
||||
case '6':
|
||||
res = "SHA-512";
|
||||
- if (sz)
|
||||
- *sz = 86;
|
||||
+ break;
|
||||
+ case '7':
|
||||
+ res = "scrypt";
|
||||
+ break;
|
||||
+ case 'y':
|
||||
+ res = "yescrypt";
|
||||
+ break;
|
||||
+ case 'g':
|
||||
+ if (*(p + 1) == 'y') {
|
||||
+ p++;
|
||||
+ res = "gost-yescrypt";
|
||||
+ }
|
||||
+ break;
|
||||
+ case '_':
|
||||
+ res = "bsdicrypt";
|
||||
break;
|
||||
default:
|
||||
- return NULL;
|
||||
+ res = "unknown";
|
||||
+ break;
|
||||
}
|
||||
p++;
|
||||
|
||||
@@ -642,7 +660,10 @@ static const char *get_pwd_method(const char *str, const char **next, unsigned i
|
||||
return res;
|
||||
}
|
||||
|
||||
-#define is_valid_pwd_char(x) (isalnum((unsigned char) (x)) || (x) == '.' || (x) == '/')
|
||||
+#define is_invalid_pwd_char(x) (isspace((unsigned char) (x)) || \
|
||||
+ (x) == ':' || (x) == ';' || (x) == '*' || \
|
||||
+ (x) == '!' || (x) == '\\')
|
||||
+#define is_valid_pwd_char(x) (isascii((unsigned char) (x)) && !is_invalid_pwd_char(x))
|
||||
|
||||
/*
|
||||
* This function do not accept empty passwords or locked accouns.
|
||||
@@ -650,17 +671,16 @@ static const char *get_pwd_method(const char *str, const char **next, unsigned i
|
||||
static int valid_pwd(const char *str)
|
||||
{
|
||||
const char *p = str;
|
||||
- unsigned int sz = 0, n;
|
||||
|
||||
if (!str || !*str)
|
||||
return 0;
|
||||
|
||||
/* $id$ */
|
||||
- if (get_pwd_method(str, &p, &sz) == NULL)
|
||||
+ if (get_pwd_method(str, &p) == NULL)
|
||||
return 0;
|
||||
+
|
||||
if (!p || !*p)
|
||||
return 0;
|
||||
-
|
||||
/* salt$ */
|
||||
for (; *p; p++) {
|
||||
if (*p == '$') {
|
||||
@@ -670,17 +690,15 @@ static int valid_pwd(const char *str)
|
||||
if (!is_valid_pwd_char(*p))
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
if (!*p)
|
||||
return 0;
|
||||
-
|
||||
/* encrypted */
|
||||
- for (n = 0; *p; p++, n++) {
|
||||
- if (!is_valid_pwd_char(*p))
|
||||
+ for (; *p; p++) {
|
||||
+ if (!is_valid_pwd_char(*p)) {
|
||||
return 0;
|
||||
+ }
|
||||
}
|
||||
-
|
||||
- if (sz && n != sz)
|
||||
- return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -863,7 +881,7 @@ static struct lslogins_user *get_user_info(struct lslogins_control *ctl, const c
|
||||
|
||||
while (p && (*p == '!' || *p == '*'))
|
||||
p++;
|
||||
- user->pwd_method = get_pwd_method(p, NULL, NULL);
|
||||
+ user->pwd_method = get_pwd_method(p, NULL);
|
||||
} else
|
||||
user->pwd_method = NULL;
|
||||
break;
|
||||
--
|
||||
2.37.2
|
||||
|
@ -0,0 +1,93 @@
|
||||
From 07ed253a49cbe80c15d43ed3800206f99d15b43e Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Mon, 4 Oct 2021 11:14:01 +0200
|
||||
Subject: fstrim: don't trigger autofs
|
||||
|
||||
- ignore read-only entries
|
||||
- ignore autofs entries (for example from /proc/self/mountinfo)
|
||||
- ignore autofs mountpoints where automounter has not been triggered yet
|
||||
|
||||
Fixes: https://github.com/karelzak/util-linux/issues/1463
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2165981
|
||||
---
|
||||
sys-utils/fstrim.8.adoc | 2 +-
|
||||
sys-utils/fstrim.c | 28 +++++++++++++++++++++++++++-
|
||||
2 files changed, 28 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/sys-utils/fstrim.8.adoc b/sys-utils/fstrim.8.adoc
|
||||
index 66671c293..d2f3b05be 100644
|
||||
--- a/sys-utils/fstrim.8.adoc
|
||||
+++ b/sys-utils/fstrim.8.adoc
|
||||
@@ -29,7 +29,7 @@ Running *fstrim* frequently, or even using *mount -o discard*, might negatively
|
||||
The _offset_, _length_, and _minimum-size_ arguments may be followed by the multiplicative suffixes KiB (=1024), MiB (=1024*1024), and so on for GiB, TiB, PiB, EiB, ZiB and YiB (the "iB" is optional, e.g., "K" has the same meaning as "KiB") or the suffixes KB (=1000), MB (=1000*1000), and so on for GB, TB, PB, EB, ZB and YB.
|
||||
|
||||
*-A, --fstab*::
|
||||
-Trim all mounted filesystems mentioned in _/etc/fstab_ on devices that support the discard operation. The root filesystem is determined from kernel command line if missing in the file. The other supplied options, like *--offset*, *--length* and *--minimum*, are applied to all these devices. Errors from filesystems that do not support the discard operation, read-only devices and read-only filesystems are silently ignored.
|
||||
+Trim all mounted filesystems mentioned in _/etc/fstab_ on devices that support the discard operation. The root filesystem is determined from kernel command line if missing in the file. The other supplied options, like *--offset*, *--length* and *--minimum*, are applied to all these devices. Errors from filesystems that do not support the discard operation, read-only devices, autofs and read-only filesystems are silently ignored.
|
||||
|
||||
*-a, --all*::
|
||||
Trim all mounted filesystems on devices that support the discard operation. The other supplied options, like *--offset*, *--length* and *--minimum*, are applied to all these devices. Errors from filesystems that do not support the discard operation, read-only devices and read-only filesystems are silently ignored.
|
||||
diff --git a/sys-utils/fstrim.c b/sys-utils/fstrim.c
|
||||
index d2aec4f71..ea787f42c 100644
|
||||
--- a/sys-utils/fstrim.c
|
||||
+++ b/sys-utils/fstrim.c
|
||||
@@ -35,6 +35,7 @@
|
||||
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/stat.h>
|
||||
+#include <sys/vfs.h>
|
||||
#include <linux/fs.h>
|
||||
|
||||
#include "nls.h"
|
||||
@@ -45,6 +46,7 @@
|
||||
#include "pathnames.h"
|
||||
#include "sysfs.h"
|
||||
#include "optutils.h"
|
||||
+#include "statfs_magic.h"
|
||||
|
||||
#include <libmount.h>
|
||||
|
||||
@@ -207,6 +209,30 @@ fail:
|
||||
return 1;
|
||||
}
|
||||
|
||||
+static int is_unwanted_fs(struct libmnt_fs *fs, const char *tgt)
|
||||
+{
|
||||
+ struct statfs vfs;
|
||||
+ int fd, rc;
|
||||
+
|
||||
+ if (mnt_fs_is_pseudofs(fs))
|
||||
+ return 1;
|
||||
+ if (mnt_fs_is_netfs(fs))
|
||||
+ return 1;
|
||||
+ if (mnt_fs_is_swaparea(fs))
|
||||
+ return 1;
|
||||
+ if (mnt_fs_match_fstype(fs, "autofs"))
|
||||
+ return 1;
|
||||
+ if (mnt_fs_match_options(fs, "ro"))
|
||||
+ return 1;
|
||||
+
|
||||
+ fd = open(tgt, O_PATH);
|
||||
+ if (!fd)
|
||||
+ return 1;
|
||||
+ rc = fstatfs(fd, &vfs) != 0 || vfs.f_type == STATFS_AUTOFS_MAGIC;
|
||||
+ close(fd);
|
||||
+
|
||||
+ return rc;
|
||||
+}
|
||||
|
||||
static int uniq_fs_target_cmp(
|
||||
struct libmnt_table *tb __attribute__((__unused__)),
|
||||
@@ -292,7 +318,7 @@ static int fstrim_all_from_file(struct fstrim_control *ctl, const char *filename
|
||||
const char *src = mnt_fs_get_srcpath(fs),
|
||||
*tgt = mnt_fs_get_target(fs);
|
||||
|
||||
- if (!tgt || mnt_fs_is_pseudofs(fs) || mnt_fs_is_netfs(fs)) {
|
||||
+ if (!tgt || is_unwanted_fs(fs, tgt)) {
|
||||
mnt_table_remove_fs(tab, fs);
|
||||
continue;
|
||||
}
|
||||
--
|
||||
2.39.1
|
||||
|
@ -0,0 +1,28 @@
|
||||
From 825f9a8eb7800c572d4ded17dd202249312e3240 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Mon, 4 Oct 2021 11:14:01 +0200
|
||||
Subject: fstrim: fix typo
|
||||
|
||||
Addresses: https://github.com/karelzak/util-linux/issues/1463
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2165981
|
||||
---
|
||||
sys-utils/fstrim.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sys-utils/fstrim.c b/sys-utils/fstrim.c
|
||||
index ea787f42c..88397f0ec 100644
|
||||
--- a/sys-utils/fstrim.c
|
||||
+++ b/sys-utils/fstrim.c
|
||||
@@ -226,7 +226,7 @@ static int is_unwanted_fs(struct libmnt_fs *fs, const char *tgt)
|
||||
return 1;
|
||||
|
||||
fd = open(tgt, O_PATH);
|
||||
- if (!fd)
|
||||
+ if (fd < 0)
|
||||
return 1;
|
||||
rc = fstatfs(fd, &vfs) != 0 || vfs.f_type == STATFS_AUTOFS_MAGIC;
|
||||
close(fd);
|
||||
--
|
||||
2.39.1
|
||||
|
@ -0,0 +1,114 @@
|
||||
From c76c1e5d7d3b043549f69c8dc8d6b878b1db0231 Mon Sep 17 00:00:00 2001
|
||||
From: Scott Shambarger <devel@shambarger.net>
|
||||
Date: Thu, 12 May 2022 16:27:26 -0700
|
||||
Subject: fstrim: Remove all skipped entries before de-duplication
|
||||
|
||||
When processing fstab entries, de-duplication is performed based on the
|
||||
source before all tests on the target have been checked, resulting in
|
||||
some entries being skipped when a removed duplicate with a different
|
||||
target would not have been.
|
||||
|
||||
The fix is to move all the target checks before the source
|
||||
de-duplication.
|
||||
|
||||
Addresses: #1686
|
||||
Signed-off-by: Scott Shambarger <devel@shambarger.net>
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2165981
|
||||
---
|
||||
sys-utils/fstrim.c | 53 ++++++++++++++++++++++++++--------------------
|
||||
1 file changed, 30 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/sys-utils/fstrim.c b/sys-utils/fstrim.c
|
||||
index 88397f0ec..0b05e590e 100644
|
||||
--- a/sys-utils/fstrim.c
|
||||
+++ b/sys-utils/fstrim.c
|
||||
@@ -230,8 +230,17 @@ static int is_unwanted_fs(struct libmnt_fs *fs, const char *tgt)
|
||||
return 1;
|
||||
rc = fstatfs(fd, &vfs) != 0 || vfs.f_type == STATFS_AUTOFS_MAGIC;
|
||||
close(fd);
|
||||
+ if (rc)
|
||||
+ return 1;
|
||||
|
||||
- return rc;
|
||||
+ /* FITRIM on read-only filesystem can fail, and it can fail */
|
||||
+ if (access(tgt, W_OK) != 0) {
|
||||
+ if (errno == EROFS)
|
||||
+ return 1;
|
||||
+ if (errno == EACCES)
|
||||
+ return 1;
|
||||
+ }
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
static int uniq_fs_target_cmp(
|
||||
@@ -317,6 +326,8 @@ static int fstrim_all_from_file(struct fstrim_control *ctl, const char *filename
|
||||
while (mnt_table_next_fs(tab, itr, &fs) == 0) {
|
||||
const char *src = mnt_fs_get_srcpath(fs),
|
||||
*tgt = mnt_fs_get_target(fs);
|
||||
+ char *path;
|
||||
+ int rc = 1;
|
||||
|
||||
if (!tgt || is_unwanted_fs(fs, tgt)) {
|
||||
mnt_table_remove_fs(tab, fs);
|
||||
@@ -339,19 +350,6 @@ static int fstrim_all_from_file(struct fstrim_control *ctl, const char *filename
|
||||
mnt_table_remove_fs(tab, fs);
|
||||
continue;
|
||||
}
|
||||
- }
|
||||
-
|
||||
- /* de-duplicate by source */
|
||||
- mnt_table_uniq_fs(tab, MNT_UNIQ_FORWARD, uniq_fs_source_cmp);
|
||||
-
|
||||
- mnt_reset_iter(itr, MNT_ITER_BACKWARD);
|
||||
-
|
||||
- /* Do FITRIM */
|
||||
- while (mnt_table_next_fs(tab, itr, &fs) == 0) {
|
||||
- const char *src = mnt_fs_get_srcpath(fs),
|
||||
- *tgt = mnt_fs_get_target(fs);
|
||||
- char *path;
|
||||
- int rc = 1;
|
||||
|
||||
/* Is it really accessible mountpoint? Not all mountpoints are
|
||||
* accessible (maybe over mounted by another filesystem) */
|
||||
@@ -359,20 +357,29 @@ static int fstrim_all_from_file(struct fstrim_control *ctl, const char *filename
|
||||
if (path && streq_paths(path, tgt))
|
||||
rc = 0;
|
||||
free(path);
|
||||
- if (rc)
|
||||
+ if (rc) {
|
||||
+ mnt_table_remove_fs(tab, fs);
|
||||
continue; /* overlaying mount */
|
||||
-
|
||||
- /* FITRIM on read-only filesystem can fail, and it can fail */
|
||||
- if (access(tgt, W_OK) != 0) {
|
||||
- if (errno == EROFS)
|
||||
- continue;
|
||||
- if (errno == EACCES)
|
||||
- continue;
|
||||
}
|
||||
|
||||
if (!is_directory(tgt, 1) ||
|
||||
- !has_discard(src, &wholedisk))
|
||||
+ !has_discard(src, &wholedisk)) {
|
||||
+ mnt_table_remove_fs(tab, fs);
|
||||
continue;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* de-duplicate by source */
|
||||
+ mnt_table_uniq_fs(tab, MNT_UNIQ_FORWARD, uniq_fs_source_cmp);
|
||||
+
|
||||
+ mnt_reset_iter(itr, MNT_ITER_BACKWARD);
|
||||
+
|
||||
+ /* Do FITRIM */
|
||||
+ while (mnt_table_next_fs(tab, itr, &fs) == 0) {
|
||||
+ const char *src = mnt_fs_get_srcpath(fs),
|
||||
+ *tgt = mnt_fs_get_target(fs);
|
||||
+ int rc;
|
||||
+
|
||||
cnt++;
|
||||
|
||||
/*
|
||||
--
|
||||
2.39.1
|
||||
|
@ -0,0 +1,339 @@
|
||||
From a3b3df8d0891ff83b61f62020652798d365299c0 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Trapp <michael.trapp@sap.com>
|
||||
Date: Mon, 20 Jun 2022 17:10:36 +0200
|
||||
Subject: libuuid: Implement continuous clock handling for time based UUIDs
|
||||
|
||||
In a uuidd setup, the daemon is a singleton and can maintain it's own
|
||||
resources for time based UUID generation. This requires a dedicated
|
||||
'clock sequence range' but does not need any further lock/update of
|
||||
the LIBUUID_CLOCK_FILE from uuidd. The range of available clock values
|
||||
is extended by a continuous handling of the clock updates - instead of
|
||||
updating the value to the current timestamp, it is incremented by
|
||||
the number of requested UUIDs.
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/3cfba7d39b66eff4307218fefd8bb34bb1621f83
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2141970
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
libuuid/src/gen_uuid.c | 91 ++++++++++++++++++++++++++++++++++++++---
|
||||
libuuid/src/libuuid.sym | 1 +
|
||||
libuuid/src/uuidd.h | 1 +
|
||||
misc-utils/uuidd.8.adoc | 3 ++
|
||||
misc-utils/uuidd.c | 54 +++++++++++++++++++++---
|
||||
5 files changed, 140 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/libuuid/src/gen_uuid.c b/libuuid/src/gen_uuid.c
|
||||
index d353fa1a0..ac682a1d8 100644
|
||||
--- a/libuuid/src/gen_uuid.c
|
||||
+++ b/libuuid/src/gen_uuid.c
|
||||
@@ -209,6 +209,8 @@ static int get_node_id(unsigned char *node_id)
|
||||
|
||||
/* Assume that the gettimeofday() has microsecond granularity */
|
||||
#define MAX_ADJUSTMENT 10
|
||||
+/* Reserve a clock_seq value for the 'continuous clock' implementation */
|
||||
+#define CLOCK_SEQ_CONT 0
|
||||
|
||||
/*
|
||||
* Get clock from global sequence clock counter.
|
||||
@@ -275,8 +277,10 @@ static int get_clock(uint32_t *clock_high, uint32_t *clock_low,
|
||||
}
|
||||
|
||||
if ((last.tv_sec == 0) && (last.tv_usec == 0)) {
|
||||
- ul_random_get_bytes(&clock_seq, sizeof(clock_seq));
|
||||
- clock_seq &= 0x3FFF;
|
||||
+ do {
|
||||
+ ul_random_get_bytes(&clock_seq, sizeof(clock_seq));
|
||||
+ clock_seq &= 0x3FFF;
|
||||
+ } while (clock_seq == CLOCK_SEQ_CONT);
|
||||
gettimeofday(&last, NULL);
|
||||
last.tv_sec--;
|
||||
}
|
||||
@@ -286,7 +290,9 @@ try_again:
|
||||
if ((tv.tv_sec < last.tv_sec) ||
|
||||
((tv.tv_sec == last.tv_sec) &&
|
||||
(tv.tv_usec < last.tv_usec))) {
|
||||
- clock_seq = (clock_seq+1) & 0x3FFF;
|
||||
+ do {
|
||||
+ clock_seq = (clock_seq+1) & 0x3FFF;
|
||||
+ } while (clock_seq == CLOCK_SEQ_CONT);
|
||||
adjustment = 0;
|
||||
last = tv;
|
||||
} else if ((tv.tv_sec == last.tv_sec) &&
|
||||
@@ -331,6 +337,64 @@ try_again:
|
||||
return ret;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Get current time in 100ns ticks.
|
||||
+ */
|
||||
+static uint64_t get_clock_counter(void)
|
||||
+{
|
||||
+ struct timeval tv;
|
||||
+ uint64_t clock_reg;
|
||||
+
|
||||
+ gettimeofday(&tv, NULL);
|
||||
+ clock_reg = tv.tv_usec*10;
|
||||
+ clock_reg += ((uint64_t) tv.tv_sec) * 10000000ULL;
|
||||
+
|
||||
+ return clock_reg;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * Get continuous clock value.
|
||||
+ *
|
||||
+ * Return -1 if there is no further clock counter available,
|
||||
+ * otherwise return 0.
|
||||
+ *
|
||||
+ * This implementation doesn't deliver clock counters based on
|
||||
+ * the current time because last_clock_reg is only incremented
|
||||
+ * by the number of requested UUIDs.
|
||||
+ * max_clock_offset is used to limit the offset of last_clock_reg.
|
||||
+ */
|
||||
+static int get_clock_cont(uint32_t *clock_high,
|
||||
+ uint32_t *clock_low,
|
||||
+ int num,
|
||||
+ uint32_t max_clock_offset)
|
||||
+{
|
||||
+ /* 100ns based time offset according to RFC 4122. 4.1.4. */
|
||||
+ const uint64_t reg_offset = (((uint64_t) 0x01B21DD2) << 32) + 0x13814000;
|
||||
+ static uint64_t last_clock_reg = 0;
|
||||
+ uint64_t clock_reg;
|
||||
+
|
||||
+ if (last_clock_reg == 0)
|
||||
+ last_clock_reg = get_clock_counter();
|
||||
+
|
||||
+ clock_reg = get_clock_counter();
|
||||
+ if (max_clock_offset) {
|
||||
+ uint64_t clock_offset = max_clock_offset * 10000000ULL;
|
||||
+ if (last_clock_reg < (clock_reg - clock_offset))
|
||||
+ last_clock_reg = clock_reg - clock_offset;
|
||||
+ }
|
||||
+
|
||||
+ clock_reg += MAX_ADJUSTMENT;
|
||||
+
|
||||
+ if ((last_clock_reg + num) >= clock_reg)
|
||||
+ return -1;
|
||||
+
|
||||
+ *clock_high = (last_clock_reg + reg_offset) >> 32;
|
||||
+ *clock_low = last_clock_reg + reg_offset;
|
||||
+ last_clock_reg += num;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
#if defined(HAVE_UUIDD) && defined(HAVE_SYS_UN_H)
|
||||
|
||||
/*
|
||||
@@ -403,7 +467,7 @@ static int get_uuid_via_daemon(int op __attribute__((__unused__)),
|
||||
}
|
||||
#endif
|
||||
|
||||
-int __uuid_generate_time(uuid_t out, int *num)
|
||||
+static int __uuid_generate_time_internal(uuid_t out, int *num, uint32_t cont_offset)
|
||||
{
|
||||
static unsigned char node_id[6];
|
||||
static int has_init = 0;
|
||||
@@ -423,7 +487,14 @@ int __uuid_generate_time(uuid_t out, int *num)
|
||||
}
|
||||
has_init = 1;
|
||||
}
|
||||
- ret = get_clock(&clock_mid, &uu.time_low, &uu.clock_seq, num);
|
||||
+ if (cont_offset) {
|
||||
+ ret = get_clock_cont(&clock_mid, &uu.time_low, *num, cont_offset);
|
||||
+ uu.clock_seq = CLOCK_SEQ_CONT;
|
||||
+ if (ret != 0) /* fallback to previous implpementation */
|
||||
+ ret = get_clock(&clock_mid, &uu.time_low, &uu.clock_seq, num);
|
||||
+ } else {
|
||||
+ ret = get_clock(&clock_mid, &uu.time_low, &uu.clock_seq, num);
|
||||
+ }
|
||||
uu.clock_seq |= 0x8000;
|
||||
uu.time_mid = (uint16_t) clock_mid;
|
||||
uu.time_hi_and_version = ((clock_mid >> 16) & 0x0FFF) | 0x1000;
|
||||
@@ -432,6 +503,16 @@ int __uuid_generate_time(uuid_t out, int *num)
|
||||
return ret;
|
||||
}
|
||||
|
||||
+int __uuid_generate_time(uuid_t out, int *num)
|
||||
+{
|
||||
+ return __uuid_generate_time_internal(out, num, 0);
|
||||
+}
|
||||
+
|
||||
+int __uuid_generate_time_cont(uuid_t out, int *num, uint32_t cont_offset)
|
||||
+{
|
||||
+ return __uuid_generate_time_internal(out, num, cont_offset);
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Generate time-based UUID and store it to @out
|
||||
*
|
||||
diff --git a/libuuid/src/libuuid.sym b/libuuid/src/libuuid.sym
|
||||
index 342453368..96372a857 100644
|
||||
--- a/libuuid/src/libuuid.sym
|
||||
+++ b/libuuid/src/libuuid.sym
|
||||
@@ -60,6 +60,7 @@ global:
|
||||
UUIDD_PRIVATE {
|
||||
global:
|
||||
__uuid_generate_time;
|
||||
+ __uuid_generate_time_cont;
|
||||
__uuid_generate_random;
|
||||
local:
|
||||
*;
|
||||
diff --git a/libuuid/src/uuidd.h b/libuuid/src/uuidd.h
|
||||
index fbe821ff3..f76acc8b2 100644
|
||||
--- a/libuuid/src/uuidd.h
|
||||
+++ b/libuuid/src/uuidd.h
|
||||
@@ -49,6 +49,7 @@
|
||||
#define UUIDD_MAX_OP UUIDD_OP_BULK_RANDOM_UUID
|
||||
|
||||
extern int __uuid_generate_time(uuid_t out, int *num);
|
||||
+extern int __uuid_generate_time_cont(uuid_t out, int *num, uint32_t cont);
|
||||
extern int __uuid_generate_random(uuid_t out, int *num);
|
||||
|
||||
#endif /* _UUID_UUID_H */
|
||||
diff --git a/misc-utils/uuidd.8.adoc b/misc-utils/uuidd.8.adoc
|
||||
index 77ee2b3e6..c87125901 100644
|
||||
--- a/misc-utils/uuidd.8.adoc
|
||||
+++ b/misc-utils/uuidd.8.adoc
|
||||
@@ -24,6 +24,9 @@ The *uuidd* daemon is used by the UUID library to generate universally unique id
|
||||
|
||||
== OPTIONS
|
||||
|
||||
+*-C*, *--cont-clock* _opt_arg_::
|
||||
+Activate continuous clock handling for time based UUIDs. *uuidd* could use all possible clock values, beginning with the daemon's start time. The optional argument can be used to set a value for the max_clock_offset. This gurantees, that a clock value of a UUID will always be within the range of the max_clock_offset. '-C' or '--cont-clock' enables the feature with a default max_clock_offset of 2 hours. '-C<NUM>[hd]' or '--cont-clock=<NUM>[hd]' enables the feature with a max_clock_offset of NUM seconds. In case of an appended h or d, the NUM value is read in hours or days. The minimum value is 60 seconds, the maximum value is 365 days.
|
||||
+
|
||||
*-d*, *--debug*::
|
||||
Run uuidd in debugging mode. This prevents uuidd from running as a daemon.
|
||||
|
||||
diff --git a/misc-utils/uuidd.c b/misc-utils/uuidd.c
|
||||
index 78a37d2e8..b859ccb8c 100644
|
||||
--- a/misc-utils/uuidd.c
|
||||
+++ b/misc-utils/uuidd.c
|
||||
@@ -72,6 +72,8 @@ struct uuidd_cxt_t {
|
||||
const char *cleanup_pidfile;
|
||||
const char *cleanup_socket;
|
||||
uint32_t timeout;
|
||||
+ uint32_t cont_clock_offset;
|
||||
+
|
||||
unsigned int debug: 1,
|
||||
quiet: 1,
|
||||
no_fork: 1,
|
||||
@@ -106,6 +108,8 @@ static void __attribute__((__noreturn__)) usage(void)
|
||||
fputs(_(" -P, --no-pid do not create pid file\n"), out);
|
||||
fputs(_(" -F, --no-fork do not daemonize using double-fork\n"), out);
|
||||
fputs(_(" -S, --socket-activation do not create listening socket\n"), out);
|
||||
+ fputs(_(" -C, --cont-clock[=<NUM>[hd]]\n"), out);
|
||||
+ fputs(_(" activate continuous clock handling\n"), out);
|
||||
fputs(_(" -d, --debug run in debugging mode\n"), out);
|
||||
fputs(_(" -q, --quiet turn on quiet mode\n"), out);
|
||||
fputs(USAGE_SEPARATOR, out);
|
||||
@@ -438,6 +442,15 @@ static void server_loop(const char *socket_path, const char *pidfile_path,
|
||||
pfd[POLLFD_SOCKET].fd = s;
|
||||
pfd[POLLFD_SIGNAL].events = pfd[POLLFD_SOCKET].events = POLLIN | POLLERR | POLLHUP;
|
||||
|
||||
+ num = 1;
|
||||
+ if (uuidd_cxt->cont_clock_offset) {
|
||||
+ /* trigger initialization */
|
||||
+ (void) __uuid_generate_time_cont(uu, &num, uuidd_cxt->cont_clock_offset);
|
||||
+ if (uuidd_cxt->debug)
|
||||
+ fprintf(stderr, _("max_clock_offset = %u sec\n"),
|
||||
+ uuidd_cxt->cont_clock_offset);
|
||||
+ }
|
||||
+
|
||||
while (1) {
|
||||
ret = poll(pfd, ARRAY_SIZE(pfd),
|
||||
uuidd_cxt->timeout ?
|
||||
@@ -494,7 +507,8 @@ static void server_loop(const char *socket_path, const char *pidfile_path,
|
||||
break;
|
||||
case UUIDD_OP_TIME_UUID:
|
||||
num = 1;
|
||||
- if (__uuid_generate_time(uu, &num) < 0 && !uuidd_cxt->quiet)
|
||||
+ ret = __uuid_generate_time_cont(uu, &num, uuidd_cxt->cont_clock_offset);
|
||||
+ if (ret < 0 && !uuidd_cxt->quiet)
|
||||
warnx(_("failed to open/lock clock counter"));
|
||||
if (uuidd_cxt->debug) {
|
||||
uuid_unparse(uu, str);
|
||||
@@ -505,7 +519,8 @@ static void server_loop(const char *socket_path, const char *pidfile_path,
|
||||
break;
|
||||
case UUIDD_OP_RANDOM_UUID:
|
||||
num = 1;
|
||||
- if (__uuid_generate_time(uu, &num) < 0 && !uuidd_cxt->quiet)
|
||||
+ ret = __uuid_generate_time_cont(uu, &num, uuidd_cxt->cont_clock_offset);
|
||||
+ if (ret < 0 && !uuidd_cxt->quiet)
|
||||
warnx(_("failed to open/lock clock counter"));
|
||||
if (uuidd_cxt->debug) {
|
||||
uuid_unparse(uu, str);
|
||||
@@ -515,7 +530,8 @@ static void server_loop(const char *socket_path, const char *pidfile_path,
|
||||
reply_len = sizeof(uu);
|
||||
break;
|
||||
case UUIDD_OP_BULK_TIME_UUID:
|
||||
- if (__uuid_generate_time(uu, &num) < 0 && !uuidd_cxt->quiet)
|
||||
+ ret = __uuid_generate_time_cont(uu, &num, uuidd_cxt->cont_clock_offset);
|
||||
+ if (ret < 0 && !uuidd_cxt->quiet)
|
||||
warnx(_("failed to open/lock clock counter"));
|
||||
if (uuidd_cxt->debug) {
|
||||
uuid_unparse(uu, str);
|
||||
@@ -567,6 +583,27 @@ static void __attribute__ ((__noreturn__)) unexpected_size(int size)
|
||||
errx(EXIT_FAILURE, _("Unexpected reply length from server %d"), size);
|
||||
}
|
||||
|
||||
+static uint32_t parse_cont_clock(char *arg)
|
||||
+{
|
||||
+ uint32_t min_val = 60,
|
||||
+ max_val = (3600 * 24 * 365),
|
||||
+ factor = 1;
|
||||
+ char *p = &arg[strlen(arg)-1];
|
||||
+
|
||||
+ if ('h' == *p) {
|
||||
+ *p = '\0';
|
||||
+ factor = 3600;
|
||||
+ min_val = 1;
|
||||
+ }
|
||||
+ if ('d' == *p) {
|
||||
+ *p = '\0';
|
||||
+ factor = 24 * 3600;
|
||||
+ min_val = 1;
|
||||
+ }
|
||||
+ return factor * str2num_or_err(optarg, 10, _("failed to parse --cont-clock/-C"),
|
||||
+ min_val, max_val / factor);
|
||||
+}
|
||||
+
|
||||
static void parse_options(int argc, char **argv, struct uuidd_cxt_t *uuidd_cxt,
|
||||
struct uuidd_options_t *uuidd_opts)
|
||||
{
|
||||
@@ -581,6 +618,7 @@ static void parse_options(int argc, char **argv, struct uuidd_cxt_t *uuidd_cxt,
|
||||
{"no-pid", no_argument, NULL, 'P'},
|
||||
{"no-fork", no_argument, NULL, 'F'},
|
||||
{"socket-activation", no_argument, NULL, 'S'},
|
||||
+ {"cont-clock", optional_argument, NULL, 'C'},
|
||||
{"debug", no_argument, NULL, 'd'},
|
||||
{"quiet", no_argument, NULL, 'q'},
|
||||
{"version", no_argument, NULL, 'V'},
|
||||
@@ -596,9 +634,15 @@ static void parse_options(int argc, char **argv, struct uuidd_cxt_t *uuidd_cxt,
|
||||
int excl_st[ARRAY_SIZE(excl)] = UL_EXCL_STATUS_INIT;
|
||||
int c;
|
||||
|
||||
- while ((c = getopt_long(argc, argv, "p:s:T:krtn:PFSdqVh", longopts, NULL)) != -1) {
|
||||
+ while ((c = getopt_long(argc, argv, "p:s:T:krtn:PFSC::dqVh", longopts, NULL)) != -1) {
|
||||
err_exclusive_options(c, longopts, excl, excl_st);
|
||||
switch (c) {
|
||||
+ case 'C':
|
||||
+ if (optarg != NULL)
|
||||
+ uuidd_cxt->cont_clock_offset = parse_cont_clock(optarg);
|
||||
+ else
|
||||
+ uuidd_cxt->cont_clock_offset = 7200; /* default 2h */
|
||||
+ break;
|
||||
case 'd':
|
||||
uuidd_cxt->debug = 1;
|
||||
break;
|
||||
@@ -673,7 +717,7 @@ int main(int argc, char **argv)
|
||||
char *cp;
|
||||
int ret;
|
||||
|
||||
- struct uuidd_cxt_t uuidd_cxt = { .timeout = 0 };
|
||||
+ struct uuidd_cxt_t uuidd_cxt = { .timeout = 0, .cont_clock_offset = 0 };
|
||||
struct uuidd_options_t uuidd_opts = { .socket_path = UUIDD_SOCKET_PATH };
|
||||
|
||||
setlocale(LC_ALL, "");
|
||||
--
|
||||
2.39.1
|
||||
|
@ -0,0 +1,35 @@
|
||||
From cede4c481ba0f8fa4256341a0acca33f826fca4f Mon Sep 17 00:00:00 2001
|
||||
From: Michael Trapp <michael.trapp@sap.com>
|
||||
Date: Tue, 2 Aug 2022 14:16:43 +0200
|
||||
Subject: libuuid: check clock value from LIBUUID_CLOCK_FILE
|
||||
|
||||
The clock value from the LIBUUID_CLOCK_FILE must be checked in
|
||||
case of an update of libuuid. If clock==CLOCK_SEQ_CONT it must
|
||||
be set to a new value.
|
||||
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/5d1424d85ac9e2a1369ee920038825c154ee5443
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2141970
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
libuuid/src/gen_uuid.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/libuuid/src/gen_uuid.c b/libuuid/src/gen_uuid.c
|
||||
index ac682a1d8..f05db467e 100644
|
||||
--- a/libuuid/src/gen_uuid.c
|
||||
+++ b/libuuid/src/gen_uuid.c
|
||||
@@ -274,6 +274,11 @@ static int get_clock(uint32_t *clock_high, uint32_t *clock_low,
|
||||
last.tv_usec = tv2;
|
||||
adjustment = a;
|
||||
}
|
||||
+ // reset in case of reserved CLOCK_SEQ_CONT
|
||||
+ if (clock_seq == CLOCK_SEQ_CONT) {
|
||||
+ last.tv_sec = 0;
|
||||
+ last.tv_usec = 0;
|
||||
+ }
|
||||
}
|
||||
|
||||
if ((last.tv_sec == 0) && (last.tv_usec == 0)) {
|
||||
--
|
||||
2.39.1
|
||||
|
@ -0,0 +1,34 @@
|
||||
From cae4f3f433e4a308f70103e166c6afad30b59ca7 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Mon, 10 Oct 2022 09:37:51 +0200
|
||||
Subject: uuidd: fix random UUIDs
|
||||
|
||||
Commit f27876f introduces copy & past bug and replaces
|
||||
__uuid_generate_random() with __uuid_generate_time().
|
||||
|
||||
Fixes: https://github.com/util-linux/util-linux/issues/1837
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2133385
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/b408a291d39e9b637f6104eb4e1f8e60816421e2
|
||||
---
|
||||
misc-utils/uuidd.c | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/misc-utils/uuidd.c b/misc-utils/uuidd.c
|
||||
index b859ccb8c..489d6b79a 100644
|
||||
--- a/misc-utils/uuidd.c
|
||||
+++ b/misc-utils/uuidd.c
|
||||
@@ -519,9 +519,7 @@ static void server_loop(const char *socket_path, const char *pidfile_path,
|
||||
break;
|
||||
case UUIDD_OP_RANDOM_UUID:
|
||||
num = 1;
|
||||
- ret = __uuid_generate_time_cont(uu, &num, uuidd_cxt->cont_clock_offset);
|
||||
- if (ret < 0 && !uuidd_cxt->quiet)
|
||||
- warnx(_("failed to open/lock clock counter"));
|
||||
+ __uuid_generate_random(uu, &num);
|
||||
if (uuidd_cxt->debug) {
|
||||
uuid_unparse(uu, str);
|
||||
fprintf(stderr, _("Generated random UUID: %s\n"), str);
|
||||
--
|
||||
2.39.1
|
||||
|
@ -0,0 +1,106 @@
|
||||
From b77ac3951932d2ea8bdba2b800380b3e70f8eca2 Mon Sep 17 00:00:00 2001
|
||||
From: tamz <totemz@protonmail.com>
|
||||
Date: Thu, 6 Jan 2022 11:56:58 +0100
|
||||
Subject: agetty: resolve tty name even if stdin is specified
|
||||
|
||||
[kzak@redhat.com: - use "const" for options->tty (and friends)
|
||||
as expected by get_terminal_name()]
|
||||
|
||||
Addresses: https://github.com/util-linux/util-linux/issues/1546
|
||||
Signed-off-by: tamz <totemz@protonmail.com>
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2156946
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/47831cc02ac0d71c335caecef1753f4c8861277c
|
||||
---
|
||||
term-utils/agetty.c | 26 ++++++++++++++++++--------
|
||||
1 file changed, 18 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/term-utils/agetty.c b/term-utils/agetty.c
|
||||
index 3b3d5101a..e65cbdeaf 100644
|
||||
--- a/term-utils/agetty.c
|
||||
+++ b/term-utils/agetty.c
|
||||
@@ -186,8 +186,8 @@ struct options {
|
||||
char *chroot; /* Chroot before the login */
|
||||
char *login; /* login program */
|
||||
char *logopt; /* options for login program */
|
||||
- char *tty; /* name of tty */
|
||||
- char *vcline; /* line of virtual console */
|
||||
+ const char *tty; /* name of tty */
|
||||
+ const char *vcline; /* line of virtual console */
|
||||
char *term; /* terminal type */
|
||||
char *initstring; /* modem init string */
|
||||
char *issue; /* alternative issue file or directory */
|
||||
@@ -199,6 +199,7 @@ struct options {
|
||||
int numspeed; /* number of baud rates to try */
|
||||
int clocal; /* CLOCAL_MODE_* */
|
||||
int kbmode; /* Keyboard mode if virtual console */
|
||||
+ int tty_is_stdin; /* is the tty the standard input stream */
|
||||
speed_t speeds[MAX_SPEED]; /* baud rates to be tried */
|
||||
};
|
||||
|
||||
@@ -315,7 +316,7 @@ static void init_special_char(char* arg, struct options *op);
|
||||
static void parse_args(int argc, char **argv, struct options *op);
|
||||
static void parse_speeds(struct options *op, char *arg);
|
||||
static void update_utmp(struct options *op);
|
||||
-static void open_tty(char *tty, struct termios *tp, struct options *op);
|
||||
+static void open_tty(const char *tty, struct termios *tp, struct options *op);
|
||||
static void termio_init(struct options *op, struct termios *tp);
|
||||
static void reset_vc(const struct options *op, struct termios *tp, int canon);
|
||||
static void auto_baud(struct termios *tp);
|
||||
@@ -918,6 +919,15 @@ static void parse_args(int argc, char **argv, struct options *op)
|
||||
}
|
||||
}
|
||||
|
||||
+ /* resolve the tty path in case it was provided as stdin */
|
||||
+ if (strcmp(op->tty, "-") == 0) {
|
||||
+ op->tty_is_stdin = 1;
|
||||
+ int fd = get_terminal_name(NULL, &op->tty, NULL);
|
||||
+ if (fd < 0) {
|
||||
+ log_warn(_("could not get terminal name: %d"), fd);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/* On virtual console remember the line which is used for */
|
||||
if (strncmp(op->tty, "tty", 3) == 0 &&
|
||||
strspn(op->tty + 3, "0123456789") == strlen(op->tty+3))
|
||||
@@ -958,8 +968,8 @@ static void update_utmp(struct options *op)
|
||||
time_t t;
|
||||
pid_t pid = getpid();
|
||||
pid_t sid = getsid(0);
|
||||
- char *vcline = op->vcline;
|
||||
- char *line = op->tty;
|
||||
+ const char *vcline = op->vcline;
|
||||
+ const char *line = op->tty;
|
||||
struct utmpx *utp;
|
||||
|
||||
/*
|
||||
@@ -998,7 +1008,7 @@ static void update_utmp(struct options *op)
|
||||
str2memcpy(ut.ut_id, vcline, sizeof(ut.ut_id));
|
||||
else {
|
||||
size_t len = strlen(line);
|
||||
- char * ptr;
|
||||
+ const char * ptr;
|
||||
if (len >= sizeof(ut.ut_id))
|
||||
ptr = line + len - sizeof(ut.ut_id);
|
||||
else
|
||||
@@ -1026,7 +1036,7 @@ static void update_utmp(struct options *op)
|
||||
#endif /* SYSV_STYLE */
|
||||
|
||||
/* Set up tty as stdin, stdout & stderr. */
|
||||
-static void open_tty(char *tty, struct termios *tp, struct options *op)
|
||||
+static void open_tty(const char *tty, struct termios *tp, struct options *op)
|
||||
{
|
||||
const pid_t pid = getpid();
|
||||
int closed = 0;
|
||||
@@ -1036,7 +1046,7 @@ static void open_tty(char *tty, struct termios *tp, struct options *op)
|
||||
|
||||
/* Set up new standard input, unless we are given an already opened port. */
|
||||
|
||||
- if (strcmp(tty, "-") != 0) {
|
||||
+ if (!op->tty_is_stdin) {
|
||||
char buf[PATH_MAX+1];
|
||||
struct group *gr = NULL;
|
||||
struct stat st;
|
||||
--
|
||||
2.39.1
|
||||
|
@ -0,0 +1,112 @@
|
||||
From d4a05cc653c9e251a04afa9bd4f5a75777029445 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Thu, 2 Feb 2023 15:46:43 +0100
|
||||
Subject: last: use snprintf() rather than sprintf()
|
||||
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/79fb7e18f45e84c6f1a030b5df56cb2bdad26df0
|
||||
Upstream: http://github.com/util-linux/util-linux/commit/6cd0043221b31a344db8f5dcb82822a2519a2e74
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2166653
|
||||
---
|
||||
login-utils/last.c | 38 +++++++++++++++++++-------------------
|
||||
1 file changed, 19 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/login-utils/last.c b/login-utils/last.c
|
||||
index f3272caeb..7f4421c89 100644
|
||||
--- a/login-utils/last.c
|
||||
+++ b/login-utils/last.c
|
||||
@@ -463,48 +463,48 @@ static int list(const struct last_control *ctl, struct utmpx *p, time_t logout_t
|
||||
|
||||
if (logout_time == currentdate) {
|
||||
if (ctl->time_fmt > LAST_TIMEFTM_SHORT) {
|
||||
- sprintf(logouttime, " still running");
|
||||
+ snprintf(logouttime, sizeof(logouttime), " still running");
|
||||
length[0] = 0;
|
||||
} else {
|
||||
- sprintf(logouttime, " still");
|
||||
- sprintf(length, "running");
|
||||
+ snprintf(logouttime, sizeof(logouttime), " still");
|
||||
+ snprintf(length, sizeof(length), "running");
|
||||
}
|
||||
} else if (days) {
|
||||
- sprintf(length, "(%d+%02d:%02d)", days, abs(hours), abs(mins)); /* hours and mins always shown as positive (w/o minus sign!) even if secs < 0 */
|
||||
+ snprintf(length, sizeof(length), "(%d+%02d:%02d)", days, abs(hours), abs(mins)); /* hours and mins always shown as positive (w/o minus sign!) even if secs < 0 */
|
||||
} else if (hours) {
|
||||
- sprintf(length, " (%02d:%02d)", hours, abs(mins)); /* mins always shown as positive (w/o minus sign!) even if secs < 0 */
|
||||
+ snprintf(length, sizeof(length), " (%02d:%02d)", hours, abs(mins)); /* mins always shown as positive (w/o minus sign!) even if secs < 0 */
|
||||
} else if (secs >= 0) {
|
||||
- sprintf(length, " (%02d:%02d)", hours, mins);
|
||||
+ snprintf(length, sizeof(length), " (%02d:%02d)", hours, mins);
|
||||
} else {
|
||||
- sprintf(length, " (-00:%02d)", abs(mins)); /* mins always shown as positive (w/o minus sign!) even if secs < 0 */
|
||||
+ snprintf(length, sizeof(length), " (-00:%02d)", abs(mins)); /* mins always shown as positive (w/o minus sign!) even if secs < 0 */
|
||||
}
|
||||
|
||||
switch(what) {
|
||||
case R_CRASH:
|
||||
- sprintf(logouttime, "- crash");
|
||||
+ snprintf(logouttime, sizeof(logouttime), "- crash");
|
||||
break;
|
||||
case R_DOWN:
|
||||
- sprintf(logouttime, "- down ");
|
||||
+ snprintf(logouttime, sizeof(logouttime), "- down ");
|
||||
break;
|
||||
case R_NOW:
|
||||
if (ctl->time_fmt > LAST_TIMEFTM_SHORT) {
|
||||
- sprintf(logouttime, " still logged in");
|
||||
+ snprintf(logouttime, sizeof(logouttime), " still logged in");
|
||||
length[0] = 0;
|
||||
} else {
|
||||
- sprintf(logouttime, " still");
|
||||
- sprintf(length, "logged in");
|
||||
+ snprintf(logouttime, sizeof(logouttime), " still");
|
||||
+ snprintf(length, sizeof(length), "logged in");
|
||||
}
|
||||
break;
|
||||
case R_PHANTOM:
|
||||
if (ctl->time_fmt > LAST_TIMEFTM_SHORT) {
|
||||
- sprintf(logouttime, " gone - no logout");
|
||||
+ snprintf(logouttime, sizeof(logouttime), " gone - no logout");
|
||||
length[0] = 0;
|
||||
} else if (ctl->time_fmt == LAST_TIMEFTM_SHORT) {
|
||||
- sprintf(logouttime, " gone");
|
||||
- sprintf(length, "- no logout");
|
||||
+ snprintf(logouttime, sizeof(logouttime), " gone");
|
||||
+ snprintf(length, sizeof(length), "- no logout");
|
||||
} else {
|
||||
logouttime[0] = 0;
|
||||
- sprintf(length, "no logout");
|
||||
+ snprintf(length, sizeof(length), "no logout");
|
||||
}
|
||||
break;
|
||||
case R_TIMECHANGE:
|
||||
@@ -756,7 +756,7 @@ static void process_wtmp_file(const struct last_control *ctl,
|
||||
else {
|
||||
if (ut.ut_type != DEAD_PROCESS &&
|
||||
ut.ut_user[0] && ut.ut_line[0] &&
|
||||
- strcmp(ut.ut_user, "LOGIN") != 0)
|
||||
+ strncmp(ut.ut_user, "LOGIN", 5) != 0)
|
||||
ut.ut_type = USER_PROCESS;
|
||||
/*
|
||||
* Even worse, applications that write ghost
|
||||
@@ -769,7 +769,7 @@ static void process_wtmp_file(const struct last_control *ctl,
|
||||
/*
|
||||
* Clock changes.
|
||||
*/
|
||||
- if (strcmp(ut.ut_user, "date") == 0) {
|
||||
+ if (strncmp(ut.ut_user, "date", 4) == 0) {
|
||||
if (ut.ut_line[0] == '|')
|
||||
ut.ut_type = OLD_TIME;
|
||||
if (ut.ut_line[0] == '{')
|
||||
@@ -804,7 +804,7 @@ static void process_wtmp_file(const struct last_control *ctl,
|
||||
case RUN_LVL:
|
||||
x = ut.ut_pid & 255;
|
||||
if (ctl->extended) {
|
||||
- sprintf(ut.ut_line, "(to lvl %c)", x);
|
||||
+ snprintf(ut.ut_line, sizeof(ut.ut_line), "(to lvl %c)", x);
|
||||
quit = list(ctl, &ut, lastrch, R_NORMAL);
|
||||
}
|
||||
if (x == '0' || x == '6') {
|
||||
--
|
||||
2.39.1
|
||||
|
@ -0,0 +1,2 @@
|
||||
0.0 0 0.0
|
||||
0
|
@ -0,0 +1,6 @@
|
||||
#%PAM-1.0
|
||||
auth sufficient pam_rootok.so
|
||||
auth include system-auth
|
||||
account include system-auth
|
||||
password include system-auth
|
||||
session include system-auth
|
@ -0,0 +1,16 @@
|
||||
#%PAM-1.0
|
||||
auth substack system-auth
|
||||
auth include postlogin
|
||||
account required pam_nologin.so
|
||||
account include system-auth
|
||||
password include system-auth
|
||||
# pam_selinux.so close should be the first session rule
|
||||
session required pam_selinux.so close
|
||||
session required pam_loginuid.so
|
||||
# pam_selinux.so open should only be followed by sessions to be executed in the user context
|
||||
session required pam_selinux.so open
|
||||
session required pam_namespace.so
|
||||
session optional pam_keyinit.so force revoke
|
||||
session include system-auth
|
||||
session include postlogin
|
||||
-session optional pam_ck_connector.so
|
@ -0,0 +1,15 @@
|
||||
#%PAM-1.0
|
||||
auth substack password-auth
|
||||
auth include postlogin
|
||||
account required pam_nologin.so
|
||||
account include password-auth
|
||||
password include password-auth
|
||||
# pam_selinux.so close should be the first session rule
|
||||
session required pam_selinux.so close
|
||||
session required pam_loginuid.so
|
||||
# pam_selinux.so open should only be followed by sessions to be executed in the user context
|
||||
session required pam_selinux.so open
|
||||
session required pam_namespace.so
|
||||
session optional pam_keyinit.so force revoke
|
||||
session include password-auth
|
||||
session include postlogin
|
@ -0,0 +1,5 @@
|
||||
#%PAM-1.0
|
||||
auth include runuser
|
||||
session optional pam_keyinit.so force revoke
|
||||
-session optional pam_systemd.so
|
||||
session include runuser
|
@ -0,0 +1,5 @@
|
||||
#%PAM-1.0
|
||||
auth sufficient pam_rootok.so
|
||||
session optional pam_keyinit.so revoke
|
||||
session required pam_limits.so
|
||||
session required pam_unix.so
|
@ -0,0 +1,6 @@
|
||||
#%PAM-1.0
|
||||
auth include su
|
||||
account include su
|
||||
password include su
|
||||
session optional pam_keyinit.so force revoke
|
||||
session include su
|
@ -0,0 +1,15 @@
|
||||
#%PAM-1.0
|
||||
auth required pam_env.so
|
||||
auth sufficient pam_rootok.so
|
||||
# Uncomment the following line to implicitly trust users in the "wheel" group.
|
||||
#auth sufficient pam_wheel.so trust use_uid
|
||||
# Uncomment the following line to require a user to be in the "wheel" group.
|
||||
#auth required pam_wheel.so use_uid
|
||||
auth substack system-auth
|
||||
auth include postlogin
|
||||
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
|
||||
account include system-auth
|
||||
password include system-auth
|
||||
session include system-auth
|
||||
session include postlogin
|
||||
session optional pam_xauth.so
|
@ -0,0 +1 @@
|
||||
d /run/uuidd 2775 uuidd uuidd
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue