|
@@ -831,3 +831,24 @@ void devm_kfree(struct device *dev, void *p)
|
|
|
WARN_ON(rc);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(devm_kfree);
|
|
|
+
|
|
|
+/**
|
|
|
+ * devm_kmemdup - Resource-managed kmemdup
|
|
|
+ * @dev: Device this memory belongs to
|
|
|
+ * @src: Memory region to duplicate
|
|
|
+ * @len: Memory region length
|
|
|
+ * @gfp: GFP mask to use
|
|
|
+ *
|
|
|
+ * Duplicate region of a memory using resource managed kmalloc
|
|
|
+ */
|
|
|
+void *devm_kmemdup(struct device *dev, const void *src, size_t len, gfp_t gfp)
|
|
|
+{
|
|
|
+ void *p;
|
|
|
+
|
|
|
+ p = devm_kmalloc(dev, len, gfp);
|
|
|
+ if (p)
|
|
|
+ memcpy(p, src, len);
|
|
|
+
|
|
|
+ return p;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(devm_kmemdup);
|