git: 5dfbc6593cda - main - linuxkpi: Add `memdup_array_user()`

From: Jean-Sébastien Pédron <dumbbell_at_FreeBSD.org>
Date: Wed, 22 Apr 2026 20:47:25 UTC
The branch main has been updated by dumbbell:

URL: https://cgit.FreeBSD.org/src/commit/?id=5dfbc6593cdacd5b4e4939e09d595b3a9c8e47da

commit 5dfbc6593cdacd5b4e4939e09d595b3a9c8e47da
Author:     Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
AuthorDate: 2026-04-21 00:01:11 +0000
Commit:     Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
CommitDate: 2026-04-22 20:46:57 +0000

    linuxkpi: Add `memdup_array_user()`
    
    The amdgpu DRM driver started this in Linux 6.12.x.
    
    Reviewed by:    bz
    Sponsored by:   The FreeBSD Foundation
    Differential Revision: https://reviews.freebsd.org/D56574
---
 sys/compat/linuxkpi/common/include/linux/string.h | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/sys/compat/linuxkpi/common/include/linux/string.h b/sys/compat/linuxkpi/common/include/linux/string.h
index ba6549804edc..b195dcc8fe9b 100644
--- a/sys/compat/linuxkpi/common/include/linux/string.h
+++ b/sys/compat/linuxkpi/common/include/linux/string.h
@@ -88,6 +88,17 @@ memdup_user_nul(const void *ptr, size_t len)
 	return (retval);
 }
 
+static inline void *
+memdup_array_user(const void *src, size_t n, size_t size)
+{
+	size_t len;
+
+	if (check_mul_overflow(n, size, &len))
+		return (ERR_PTR(-EOVERFLOW));
+
+	return (memdup_user(src, len));
+}
+
 static inline void *
 kmemdup(const void *src, size_t len, gfp_t gfp)
 {