dracut/backport-fix-network-don-t-use-same-ifname-multiple-times.patch
hongjinghao 2663ebded8 backport patchs from upstream
(cherry picked from commit e37aecb42764d47b923dd3280385bd5438f466b6)
2024-02-22 14:56:32 +08:00

43 lines
1.5 KiB
Diff

From f4e9ea879f38bea92069e9397028caa5d81e5aee Mon Sep 17 00:00:00 2001
From: Martin Wilck <mwilck@suse.com>
Date: Sat, 17 Sep 2022 23:05:39 +0200
Subject: [PATCH] fix(network): don't use same ifname multiple times
If multiple ibft interfaces exist, set_ifname() may reuse the same
name (usually "ibft0"), because it's usually called cmdline time,
when no interfaces exist in sysfs yet. Remember the number used
set and don't use it again.
Conflict:require adaption
Reference:https://github.com/dracutdevs/dracut/commit/f4e9ea879f38bea92069e9397028caa5d81e5aee
---
modules.d/40network/net-lib.sh | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
index 2c4a0e8..fa4aac0 100755
--- a/modules.d/40network/net-lib.sh
+++ b/modules.d/40network/net-lib.sh
@@ -207,9 +207,10 @@ set_ifname() {
for n in $(getargs ifname=); do
strstr "$n" "$mac" && echo ${n%%:*} && return
done
+ [ ! -f "/tmp/set_ifname_$name" ] || read -r num < "/tmp/set_ifname_$name"
# otherwise, pick a new name and use that
while :; do
- num=$(($num+1));
+ num=$((num+1));
[ -e /sys/class/net/$name$num ] && continue
for n in $(getargs ifname=); do
[ "$name$num" = "${n%%:*}" ] && continue 2
@@ -217,6 +218,7 @@ set_ifname() {
break
done
echo "ifname=$name$num:$mac" >> /etc/cmdline.d/45-ifname.conf
+ echo "$num" > "/tmp/set_ifname_$name"
echo "$name$num"
}
--
2.23.0