summaryrefslogtreecommitdiff
path: root/sys-kernel/dracut/files/055-fix-usrmount-do-not-empty-_dev-variable.patch
diff options
context:
space:
mode:
Diffstat (limited to 'sys-kernel/dracut/files/055-fix-usrmount-do-not-empty-_dev-variable.patch')
-rw-r--r--sys-kernel/dracut/files/055-fix-usrmount-do-not-empty-_dev-variable.patch36
1 files changed, 36 insertions, 0 deletions
diff --git a/sys-kernel/dracut/files/055-fix-usrmount-do-not-empty-_dev-variable.patch b/sys-kernel/dracut/files/055-fix-usrmount-do-not-empty-_dev-variable.patch
new file mode 100644
index 000000000000..e46f8bb25db9
--- /dev/null
+++ b/sys-kernel/dracut/files/055-fix-usrmount-do-not-empty-_dev-variable.patch
@@ -0,0 +1,36 @@
+From 4afdcba212793f136aea012b30dd7bdb5b641a5a Mon Sep 17 00:00:00 2001
+From: Alexander Tsoy <alexander@tsoy.me>
+Date: Mon, 16 Aug 2021 18:54:34 +0300
+Subject: [PATCH] fix(usrmount): do not empty _dev variable
+
+Currently $_dev is always overridden with the value returned by
+label_uuid_to_dev(). This results in an empty value if $_dev is a
+device path. Fix this by calling label_uuid_to_dev() conditionally.
+
+Bug: https://bugs.gentoo.org/807971
+Fixes: d3532978de04c78f53664dad7b37705a49a7ee54
+---
+ modules.d/98usrmount/mount-usr.sh | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/98usrmount/mount-usr.sh b/modules.d/98usrmount/mount-usr.sh
+index 23ed06aa..c8e1893b 100755
+--- a/modules.d/98usrmount/mount-usr.sh
++++ b/modules.d/98usrmount/mount-usr.sh
+@@ -55,7 +55,12 @@ mount_usr() {
+ while read -r _dev _mp _fs _opts _freq _passno || [ -n "$_dev" ]; do
+ [ "${_dev%%#*}" != "$_dev" ] && continue
+ if [ "$_mp" = "/usr" ]; then
+- _dev="$(label_uuid_to_dev "$_dev")"
++ case "$_dev" in
++ LABEL=* | UUID=* | PARTUUID=* | PARTLABEL=*)
++ _dev="$(label_uuid_to_dev "$_dev")"
++ ;;
++ *) ;;
++ esac
+
+ if strstr "$_opts" "subvol=" \
+ && [ "${root#block:}" -ef "$_dev" ] \
+--
+2.31.1
+