git: 1ad6b2b1daa8 - main - linuxkpi: Add `krealloc_array()`

From: Jean-Sébastien Pédron <dumbbell_at_FreeBSD.org>
Date: Fri, 11 Nov 2022 17:57:44 UTC
The branch main has been updated by dumbbell (ports committer):

URL: https://cgit.FreeBSD.org/src/commit/?id=1ad6b2b1daa8937b2e1ced43802adba5734ba92b

commit 1ad6b2b1daa8937b2e1ced43802adba5734ba92b
Author:     Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
AuthorDate: 2022-11-11 17:37:34 +0000
Commit:     Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
CommitDate: 2022-11-11 17:37:34 +0000

    linuxkpi: Add `krealloc_array()`
    
    In FreeBSD, this is a wrapper on top of `realloc()`.
    
    V2: Check if `n * size` would overflow and return `NULL` if that's the
        case. Suggested by hselasky@ and emaste@.
    
    Reviewed by:    manu
    Approved by:    manu
    Differential Revision:  https://reviews.freebsd.org/D36959
---
 sys/compat/linuxkpi/common/include/linux/slab.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/sys/compat/linuxkpi/common/include/linux/slab.h b/sys/compat/linuxkpi/common/include/linux/slab.h
index 16b5afcea693..8f1cb433c36b 100644
--- a/sys/compat/linuxkpi/common/include/linux/slab.h
+++ b/sys/compat/linuxkpi/common/include/linux/slab.h
@@ -178,6 +178,16 @@ krealloc(void *ptr, size_t size, gfp_t flags)
 	return (realloc(ptr, size, M_KMALLOC, linux_check_m_flags(flags)));
 }
 
+static inline void *
+krealloc_array(void *ptr, size_t n, size_t size, gfp_t flags)
+{
+	if (WOULD_OVERFLOW(n, size)) {
+		return NULL;
+	}
+
+	return (realloc(ptr, n * size, M_KMALLOC, linux_check_m_flags(flags)));
+}
+
 extern void linux_kfree_async(void *);
 
 static inline void