Index: kernel/generic/include/lib/memfnc.h
===================================================================
--- kernel/generic/include/lib/memfnc.h	(revision 193d280c34f38846eccfa1ecce71975f9ad92398)
+++ kernel/generic/include/lib/memfnc.h	(revision 7ec3c5638215716bb0cffafe64b4b0bdc6a543b3)
@@ -46,6 +46,8 @@
 
 extern void *memset(void *, int, size_t)
+    __attribute__((nonnull(1)))
     ATTRIBUTE_OPTIMIZE("-fno-tree-loop-distribute-patterns") DO_NOT_DISCARD;
 extern void *memcpy(void *, const void *, size_t)
+    __attribute__((nonnull(1, 2)))
     ATTRIBUTE_OPTIMIZE("-fno-tree-loop-distribute-patterns") DO_NOT_DISCARD;
 
Index: kernel/generic/include/memstr.h
===================================================================
--- kernel/generic/include/memstr.h	(revision 193d280c34f38846eccfa1ecce71975f9ad92398)
+++ kernel/generic/include/memstr.h	(revision 7ec3c5638215716bb0cffafe64b4b0bdc6a543b3)
@@ -48,7 +48,10 @@
 #define memcpy(dst, src, cnt)  __builtin_memcpy((dst), (src), (cnt))
 
-extern void memsetb(void *, size_t, uint8_t);
-extern void memsetw(void *, size_t, uint16_t);
-extern void *memmove(void *, const void *, size_t) DO_NOT_DISCARD;
+extern void memsetb(void *, size_t, uint8_t)
+    __attribute__((nonnull(1)));
+extern void memsetw(void *, size_t, uint16_t)
+    __attribute__((nonnull(1)));
+extern void *memmove(void *, const void *, size_t)
+    __attribute__((nonnull(1, 2))) DO_NOT_DISCARD;
 
 #endif
Index: kernel/generic/include/mm/slab.h
===================================================================
--- kernel/generic/include/mm/slab.h	(revision 193d280c34f38846eccfa1ecce71975f9ad92398)
+++ kernel/generic/include/mm/slab.h	(revision 7ec3c5638215716bb0cffafe64b4b0bdc6a543b3)
@@ -142,5 +142,6 @@
 extern void *malloc(size_t, unsigned int)
     __attribute__((malloc));
-extern void *realloc(void *, size_t, unsigned int);
+extern void *realloc(void *, size_t, unsigned int)
+    __attribute__((warn_unused_result));
 extern void free(void *);
 
