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:
		
							parent
							
								
									37aa48368f
								
							
						
					
					
						commit
						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, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user