[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230102081021.138648-2-jjhiblot@traphandler.com>
Date: Mon, 2 Jan 2023 09:10:16 +0100
From: Jean-Jacques Hiblot <jjhiblot@...phandler.com>
To: <lee.jones@...aro.org>, <pavel@....cz>, <robh+dt@...nel.org>,
<sven.schwermer@...ruptive-technologies.com>,
<krzysztof.kozlowski+dt@...aro.org>
CC: <johan+linaro@...nel.org>, <marijn.suijten@...ainline.org>,
<andy.shevchenko@...il.com>, <jacek.anaszewski@...il.com>,
<linux-leds@...r.kernel.org>, <devicetree@...r.kernel.org>,
<linux-kernel@...r.kernel.org>,
Jean-Jacques Hiblot <jjhiblot@...phandler.com>
Subject: [PATCH v7 1/6] devres: provide devm_krealloc_array()
Implement the managed variant of krealloc_array().
This internally uses devm_krealloc() and as such is usable with all memory
allocated by devm_kmalloc() (or devres functions using it implicitly like
devm_kmemdup(), devm_kstrdup() etc.).
Managed realloc'ed chunks can be manually released with devm_kfree().
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@...phandler.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@...il.com>
---
include/linux/device.h | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/include/linux/device.h b/include/linux/device.h
index 424b55df0272..3b472df6c6cd 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -223,6 +223,19 @@ static inline void *devm_kcalloc(struct device *dev,
{
return devm_kmalloc_array(dev, n, size, flags | __GFP_ZERO);
}
+static inline void *devm_krealloc_array(struct device *dev,
+ void *p,
+ size_t new_n,
+ size_t new_size,
+ gfp_t flags)
+{
+ size_t bytes;
+
+ if (unlikely(check_mul_overflow(new_n, new_size, &bytes)))
+ return NULL;
+
+ return devm_krealloc(dev, p, bytes, flags);
+}
void devm_kfree(struct device *dev, const void *p);
char *devm_kstrdup(struct device *dev, const char *s, gfp_t gfp) __malloc;
const char *devm_kstrdup_const(struct device *dev, const char *s, gfp_t gfp);
--
2.25.1
Powered by blists - more mailing lists