@@ -79,4 +79,13 @@ static inline void kfree_rcu_mightsleep(const void *ptr)
__attribute__((format(printf,2,3)))
char *kasprintf(gfp_t gfp, const char *fmt, ...);
+static inline void *kmemdup(const void *src, size_t len, gfp_t gfp)
+{
+ void *p = kmalloc(len, gfp);
+
+ if (p)
+ memcpy(p, src, len);
+ return p;
+}
+
#endif
@@ -378,12 +378,11 @@ xfs_dir_cilookup_result(
!(args->op_flags & XFS_DA_OP_CILOOKUP))
return -EEXIST;
- args->value = kmalloc(len,
+ args->value = kmemdup(name, len,
GFP_KERNEL | __GFP_NOLOCKDEP | __GFP_RETRY_MAYFAIL);
if (!args->value)
return -ENOMEM;
- memcpy(args->value, name, len);
args->valuelen = len;
return -EEXIST;
}