diff options
author | Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> | 2014-04-29 01:51:00 +0200 |
---|---|---|
committer | Jonathan Cameron <jic23@kernel.org> | 2014-04-29 22:58:15 +0200 |
commit | 3046365bb470f0ec2f7cf5cb07a8ee7e4b490103 (patch) | |
tree | 66fbbb9b115c71814ff5a6e36566a47c492f0a6a /drivers/base/devres.c | |
parent | Merge 3.15-rc3 into staging-next (diff) | |
download | linux-3046365bb470f0ec2f7cf5cb07a8ee7e4b490103.tar.xz linux-3046365bb470f0ec2f7cf5cb07a8ee7e4b490103.zip |
devres: introduce API "devm_kmemdup
Introduce devm_kmemdup, which uses resource managed kmalloc.
There are several request from maintainers to add this instead
of using kmemdup.
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
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) 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); |