Skip to contentSkip to conversation

pmdomain: qcom: cpr: simplify main allocation

PATCH In review Rosen Penev 3 participants 3 messages Mar 15 – Mar 18

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 pmdomain: qcom: cpr: simplify main allocation

Remove kcalloc by using a flexible array member to combine allocations.

---
 drivers/pmdomain/qcom/cpr.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)
drivers/pmdomain/qcom/cpr.c +5 -8
index 3ee8184e4be3..c30690ef6919 100644
@@ -239,7 +239,6 @@ struct cpr_drv {
 	u32			gcnt;
 	unsigned long		flags;
 
-	struct fuse_corner	*fuse_corners;
 	struct corner		*corners;
 
 	const struct cpr_desc *desc;
@@ -247,6 +246,8 @@ struct cpr_drv {
 	const struct cpr_fuse *cpr_fuses;
 
 	struct dentry *debugfs;
+
+	struct fuse_corner	fuse_corners[];
 };
 
 static bool cpr_is_allowed(struct cpr_drv *drv)
@@ -1600,19 +1601,15 @@ static int cpr_probe(struct platform_device *pdev)
 	if (!data || !data->cpr_desc || !data->acc_desc)
 		return -EINVAL;
 
-	drv = devm_kzalloc(dev, sizeof(*drv), GFP_KERNEL);
+	drv = devm_kzalloc(dev,
+			struct_size(drv, fuse_corners, data->cpr_desc->num_fuse_corners),
+			GFP_KERNEL);
 	if (!drv)
 		return -ENOMEM;
 	drv->dev = dev;
 	drv->desc = data->cpr_desc;
 	drv->acc_desc = data->acc_desc;
 
-	drv->fuse_corners = devm_kcalloc(dev, drv->desc->num_fuse_corners,
-					 sizeof(*drv->fuse_corners),
-					 GFP_KERNEL);
-	if (!drv->fuse_corners)
-		return -ENOMEM;
-
 	np = of_parse_phandle(dev->of_node, "acc-syscon", 0);
 	if (!np)
 		return -ENODEV;
Signature · 1 line
2.53.0
#2 lore raw
In reply to Rosen Penev
Quoted 4 lines · Rosen Penev

Remove kcalloc by using a flexible array member to combine allocations.

Applied for next, thanks!

Kind regards
Uffe

Quoted 51 lines
---
 drivers/pmdomain/qcom/cpr.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)
drivers/pmdomain/qcom/cpr.c +5 -9
index 3ee8184e4be3..c30690ef6919 100644
@@ -239,7 +239,6 @@ struct cpr_drv {
        u32                     gcnt;
        unsigned long           flags;
 
-       struct fuse_corner      *fuse_corners;
        struct corner           *corners;
 
        const struct cpr_desc *desc;
@@ -247,6 +246,8 @@ struct cpr_drv {
        const struct cpr_fuse *cpr_fuses;
 
        struct dentry *debugfs;
+
+       struct fuse_corner      fuse_corners[];
 };
 
 static bool cpr_is_allowed(struct cpr_drv *drv)
@@ -1600,19 +1601,15 @@ static int cpr_probe(struct platform_device *pdev)
        if (!data || !data->cpr_desc || !data->acc_desc)
                return -EINVAL;
 
-       drv = devm_kzalloc(dev, sizeof(*drv), GFP_KERNEL);
+       drv = devm_kzalloc(dev,
+                       struct_size(drv, fuse_corners, data->cpr_desc->num_fuse_corners),
+                       GFP_KERNEL);
        if (!drv)
                return -ENOMEM;
        drv->dev = dev;
        drv->desc = data->cpr_desc;
        drv->acc_desc = data->acc_desc;
 
-       drv->fuse_corners = devm_kcalloc(dev, drv->desc->num_fuse_corners,
-                                        sizeof(*drv->fuse_corners),
-                                        GFP_KERNEL);
-       if (!drv->fuse_corners)
-               return -ENOMEM;
-
        np = of_parse_phandle(dev->of_node, "acc-syscon", 0);
        if (!np)
                return -ENODEV;
--

2.53.0