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>
This commit is contained in:
Родитель
37aa48368f
Коммит
3046365bb4
|
@ -236,6 +236,7 @@ certainly invest a bit more effort into libata core layer).
|
|||
MEM
|
||||
devm_kzalloc()
|
||||
devm_kfree()
|
||||
devm_kmemdup()
|
||||
|
||||
IIO
|
||||
devm_iio_device_alloc()
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -623,6 +623,8 @@ static inline void *devm_kcalloc(struct device *dev,
|
|||
}
|
||||
extern void devm_kfree(struct device *dev, void *p);
|
||||
extern char *devm_kstrdup(struct device *dev, const char *s, gfp_t gfp);
|
||||
extern void *devm_kmemdup(struct device *dev, const void *src, size_t len,
|
||||
gfp_t gfp);
|
||||
|
||||
void __iomem *devm_ioremap_resource(struct device *dev, struct resource *res);
|
||||
void __iomem *devm_request_and_ioremap(struct device *dev,
|
||||
|
|
Загрузка…
Ссылка в новой задаче