diff options
Diffstat (limited to 'drivers/base/devres.c')
-rw-r--r-- | drivers/base/devres.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/base/devres.c b/drivers/base/devres.c index db4e264eecb6..d0914cba2413 100644 --- a/drivers/base/devres.c +++ b/drivers/base/devres.c | |||
@@ -831,3 +831,24 @@ void devm_kfree(struct device *dev, void *p) | |||
831 | WARN_ON(rc); | 831 | WARN_ON(rc); |
832 | } | 832 | } |
833 | EXPORT_SYMBOL_GPL(devm_kfree); | 833 | EXPORT_SYMBOL_GPL(devm_kfree); |
834 | |||
835 | /** | ||
836 | * devm_kmemdup - Resource-managed kmemdup | ||
837 | * @dev: Device this memory belongs to | ||
838 | * @src: Memory region to duplicate | ||
839 | * @len: Memory region length | ||
840 | * @gfp: GFP mask to use | ||
841 | * | ||
842 | * Duplicate region of a memory using resource managed kmalloc | ||
843 | */ | ||
844 | void *devm_kmemdup(struct device *dev, const void *src, size_t len, gfp_t gfp) | ||
845 | { | ||
846 | void *p; | ||
847 | |||
848 | p = devm_kmalloc(dev, len, gfp); | ||
849 | if (p) | ||
850 | memcpy(p, src, len); | ||
851 | |||
852 | return p; | ||
853 | } | ||
854 | EXPORT_SYMBOL_GPL(devm_kmemdup); | ||