|
@@ -790,6 +790,32 @@ void * devm_kmalloc(struct device *dev, size_t size, gfp_t gfp)
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(devm_kmalloc);
|
|
|
|
|
|
+/**
|
|
|
+ * devm_kstrdup - Allocate resource managed space and
|
|
|
+ * copy an existing string into that.
|
|
|
+ * @dev: Device to allocate memory for
|
|
|
+ * @s: the string to duplicate
|
|
|
+ * @gfp: the GFP mask used in the devm_kmalloc() call when
|
|
|
+ * allocating memory
|
|
|
+ * RETURNS:
|
|
|
+ * Pointer to allocated string on success, NULL on failure.
|
|
|
+ */
|
|
|
+char *devm_kstrdup(struct device *dev, const char *s, gfp_t gfp)
|
|
|
+{
|
|
|
+ size_t size;
|
|
|
+ char *buf;
|
|
|
+
|
|
|
+ if (!s)
|
|
|
+ return NULL;
|
|
|
+
|
|
|
+ size = strlen(s) + 1;
|
|
|
+ buf = devm_kmalloc(dev, size, gfp);
|
|
|
+ if (buf)
|
|
|
+ memcpy(buf, s, size);
|
|
|
+ return buf;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(devm_kstrdup);
|
|
|
+
|
|
|
/**
|
|
|
* devm_kfree - Resource-managed kfree
|
|
|
* @dev: Device this memory belongs to
|