diff --git a/meta/recipes-core/musl/musl/0004-ldso-read-the-.path-file-from-etc-when-the-loader-is.patch b/meta/recipes-core/musl/musl/0004-ldso-read-the-.path-file-from-etc-when-the-loader-is.patch
new file mode 100644
index 0000000000..bcc0c71c3b
--- /dev/null
+++ b/meta/recipes-core/musl/musl/0004-ldso-read-the-.path-file-from-etc-when-the-loader-is.patch
@@ -0,0 +1,35 @@
+From 29727534313c4955d2231344711fddd1e93af1c2 Mon Sep 17 00:00:00 2001
+From: "mark.yang" <mark.yang@lge.com>
+Date: Wed, 21 Oct 2026 18:57:49 +0900
+Subject: [PATCH] ldso: read the .path file from /etc when the loader is in
+ /usr/lib
+
+musl looks for ld-musl-$ARCH.path in the etc directory next to the
+directory of the dynamic linker, as named by PT_INTERP. With usrmerge
+OE puts /usr/lib/ld-musl-$ARCH.so.1 into PT_INTERP, so musl opens
+/usr/etc/ld-musl-$ARCH.path while the file is installed in /etc.
+
+Treat a /usr prefix as the root, so /usr/lib/ld-musl-$ARCH.so.1 reads
+/etc/ld-musl-$ARCH.path like /lib/ld-musl-$ARCH.so.1 does.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: mark.yang <mark.yang@lge.com>
+---
+ ldso/dynlink.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/ldso/dynlink.c b/ldso/dynlink.c
+index 0fdc9e7c..dfc772e3 100644
+--- a/ldso/dynlink.c
++++ b/ldso/dynlink.c
+@@ -1136,6 +1136,10 @@ static struct dso *load_library(const char *name, struct dso *needed_by)
+ 					for (s=t=z=ldso.name; *s; s++)
+ 						if (*s=='/') z=t, t=s;
+ 					prefix_len = z-ldso.name;
++					/* With usrmerge the loader is /usr/lib/ld-musl-*,
++					 * but the .path file stays in /etc. */
++					if (prefix_len == 4 && !memcmp(ldso.name, "/usr", 4))
++						prefix_len = 0;
+ 					if (prefix_len < PATH_MAX)
+ 						prefix = ldso.name;
+ 				}
diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-core/musl/musl_git.bb
index 212bda1f29..f901b6e8da 100644
--- a/meta/recipes-core/musl/musl_git.bb
+++ b/meta/recipes-core/musl/musl_git.bb
@@ -14,6 +14,7 @@ SRC_URI = "git://git.musl-libc.org/musl;branch=master \
            file://0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch \
            file://0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch \
            file://0003-tools-version.sh-fall-back-to-VERSION-when-git-descr.patch \
+           file://0004-ldso-read-the-.path-file-from-etc-when-the-loader-is.patch \
           "
 
 PROVIDES += "virtual/libc virtual/libiconv virtual/libintl virtual/crypt"
