[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230616095746.872220-2-jjhiblot@traphandler.com>
Date: Fri, 16 Jun 2023 11:57:42 +0200
From: Jean-Jacques Hiblot <jjhiblot@...phandler.com>
To: <lee@...nel.org>, <pavel@....cz>, <robh+dt@...nel.org>,
<krzysztof.kozlowski+dt@...aro.org>, <conor+dt@...nel.org>
CC: <linux-leds@...r.kernel.org>, <devicetree@...r.kernel.org>,
<linux-kernel@...r.kernel.org>,
Jean-Jacques Hiblot <jjhiblot@...phandler.com>,
Andy Shevchenko <andy.shevchenko@...il.com>
Subject: [PATCH v9 1/5] 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 472dd24d4823..e45dc78068b7 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.34.1
Powered by blists - more mailing lists