Page MenuHomeFreeBSD

D59660.1794000791.diff
No OneTemporary

Authored By
Unknown
Size
1002 B
Referenced Files
None
Subscribers
None

D59660.1794000791.diff

diff --git a/sys/compat/linuxkpi/common/include/linux/string.h b/sys/compat/linuxkpi/common/include/linux/string.h
--- a/sys/compat/linuxkpi/common/include/linux/string.h
+++ b/sys/compat/linuxkpi/common/include/linux/string.h
@@ -100,6 +100,33 @@
return (memdup_user(src, len));
}
+static inline void *
+vmemdup_user(const void *ptr, size_t len)
+{
+ void *retval;
+
+ retval = malloc(len, M_KMALLOC, M_WAITOK);
+ if (retval == NULL)
+ return (ERR_PTR(-ENOMEM));
+
+ if (linux_copyin(ptr, retval, len)) {
+ free(retval, M_KMALLOC);
+ return (ERR_PTR(-EFAULT));
+ }
+ return (retval);
+}
+
+static inline void *
+vmemdup_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 (vmemdup_user(src, len));
+}
+
static inline void *
kmemdup(const void *src, size_t len, gfp_t gfp)
{

File Metadata

Mime Type
text/plain
Expires
Fri, Nov 6, 9:33 PM (9 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38956329
Default Alt Text
D59660.1794000791.diff (1002 B)

Event Timeline