diff --git a/main/mdadm/APKBUILD b/main/mdadm/APKBUILD
index 269301fc170861acff64a73f5f5cb8dd1fb61057..72ac12916695211e9bcb08541312483b5f2f91f6 100644
--- a/main/mdadm/APKBUILD
+++ b/main/mdadm/APKBUILD
@@ -3,7 +3,7 @@
 # Maintainer: Natanael Copa <ncopa@alpinelinux.org>
 pkgname=mdadm
 pkgver=4.1
-pkgrel=2
+pkgrel=3
 pkgdesc="a tool for managing Linux Software RAID arrays"
 url="https://neil.brown.name/blog/mdadm"
 arch="all"
@@ -18,6 +18,7 @@ source="https://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-$pkgver.tar.gz
 	$pkgname-raid.initd
 	no-werror.patch
 	mdadm-include-sysmacros.patch
+	fix-use-after-free.patch
 	"
 options="!check"
 
@@ -68,4 +69,5 @@ ca5f4e3ff5b284102b44e818d11622e1889066e3d18edce2d62c1a44ee8f4cfdc0979121c0462a91
 7d45bf489ef93a4f217ffcf72311eb661b8de7fbf63a5344697252c0d3a684b0123ff60efa5f218da4eb4cda7c88d91c2ef3625d5e44a588e3e1210cb60b0ab9  mdadm.confd
 10d2456ca82c353c9b8540ca996de48575a60b83ede5b0bb7e960b4dd28aac2aa73eaeff4bdb99d03ce9630f986c2023b38fe332c5be74e0234985af6273a934  mdadm-raid.initd
 794d6c31fbc0a9ef2f56d7b0afdb94490f0b677414d4f2b1b5104a51c4f39948491fc21aaa30ca75c90c9f056369317f48ea2f78e04ee740327114bee5d959b4  no-werror.patch
-e711c15fada5fc98984f43f90a8ab3b6a2a20e9b91c56b5672fdb0ea127b61934b2f0c6ca986bd91c96c56b66f46326cb616101a62e4bfebe3a2b0d33ed2465c  mdadm-include-sysmacros.patch"
+e711c15fada5fc98984f43f90a8ab3b6a2a20e9b91c56b5672fdb0ea127b61934b2f0c6ca986bd91c96c56b66f46326cb616101a62e4bfebe3a2b0d33ed2465c  mdadm-include-sysmacros.patch
+5f3544af7a6e16d78581ed468766203991118a43f131538b39c52f5d38d4458e2e57f2ec32d3558b5fdec4952cad3d969955d0efc1392b785e8345d352ab5b7b  fix-use-after-free.patch"
diff --git a/main/mdadm/fix-use-after-free.patch b/main/mdadm/fix-use-after-free.patch
new file mode 100644
index 0000000000000000000000000000000000000000..464a3eec7c8d2029dea8205f37410c833d057d91
--- /dev/null
+++ b/main/mdadm/fix-use-after-free.patch
@@ -0,0 +1,20 @@
+From Rich Felker.
+
+Fixed upstream in:
+https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/policy.c?id=cd72f9d114da206baa01fd56ff2d8ffcc08f3239
+
+diff --git a/policy.c b/policy.c
+index c0d18a7e..78ad34cd 100644
+--- a/policy.c
++++ b/policy.c
+@@ -214,8 +214,9 @@ static char *disk_path(struct mdinfo *disk)
+ 				continue;
+ 			if (stb.st_rdev != makedev(disk->disk.major, disk->disk.minor))
+ 				continue;
++			char *result = xstrdup(ent->d_name);
+ 			closedir(by_path);
+-			return xstrdup(ent->d_name);
++			return result;
+ 		}
+ 		closedir(by_path);
+ 	}