summaryrefslogtreecommitdiff
path: root/sys-kernel/dracut/files/055-fix-usrmount-do-not-empty-_dev-variable.patch
blob: e46f8bb25db9a180ffe865e0de43e93a52938896 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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