All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch] pinctrl: samsung: don't truncate the last char of "-grp"
@ 2015-06-11 15:46 ` Dan Carpenter
  0 siblings, 0 replies; 30+ messages in thread
From: Dan Carpenter @ 2015-06-11 15:46 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Thomas Abraham, Linus Walleij, Kukjin Kim, Krzysztof Kozlowski,
	linux-samsung-soc, linux-gpio, kernel-janitors

We allocate sizeof("-grp") which is 5 bytes but then we pass 4 to the
snprintf() so the last 'p' char is truncated away.

The kzalloc() can be made into kmalloc() since we are going to fill
the whole buffer.  But I know that Walter Harms is going to grumble if I
don't use kasprintf().  :P  And also checkpatch.pl these days complains
that the "allocation failed" printks aren't needed so I removed them.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
index f5619fb..f804a61c 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
@@ -215,12 +215,9 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 	 * Allocate memory for pin group name. The pin group name is derived
 	 * from the node name from which these map entries are be created.
 	 */
-	gname = kzalloc(strlen(np->name) + GSUFFIX_LEN, GFP_KERNEL);
-	if (!gname) {
-		dev_err(dev, "failed to alloc memory for group name\n");
+	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
+	if (!gname)
 		goto free_map;
-	}
-	snprintf(gname, strlen(np->name) + 4, "%s%s", np->name, GROUP_SUFFIX);
 
 	/*
 	 * don't have config options? then skip over to creating function
@@ -710,14 +707,10 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
 		}
 
 		/* derive pin group name from the node name */
-		gname = devm_kzalloc(dev, strlen(cfg_np->name) + GSUFFIX_LEN,
-					GFP_KERNEL);
-		if (!gname) {
-			dev_err(dev, "failed to alloc memory for group name\n");
+		gname = devm_kasprintf(dev, GFP_KERNEL,
+				       "%s%s", cfg_np->name, GROUP_SUFFIX);
+		if (!gname)
 			return -ENOMEM;
-		}
-		snprintf(gname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
-			 GROUP_SUFFIX);
 
 		grp->name = gname;
 		grp->pins = pin_list;

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [patch] pinctrl: samsung: don't truncate the last char of "-grp"
@ 2015-06-11 15:46 ` Dan Carpenter
  0 siblings, 0 replies; 30+ messages in thread
From: Dan Carpenter @ 2015-06-11 15:46 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Thomas Abraham, Linus Walleij, Kukjin Kim, Krzysztof Kozlowski,
	linux-samsung-soc, linux-gpio, kernel-janitors

We allocate sizeof("-grp") which is 5 bytes but then we pass 4 to the
snprintf() so the last 'p' char is truncated away.

The kzalloc() can be made into kmalloc() since we are going to fill
the whole buffer.  But I know that Walter Harms is going to grumble if I
don't use kasprintf().  :P  And also checkpatch.pl these days complains
that the "allocation failed" printks aren't needed so I removed them.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
index f5619fb..f804a61c 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
@@ -215,12 +215,9 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 	 * Allocate memory for pin group name. The pin group name is derived
 	 * from the node name from which these map entries are be created.
 	 */
-	gname = kzalloc(strlen(np->name) + GSUFFIX_LEN, GFP_KERNEL);
-	if (!gname) {
-		dev_err(dev, "failed to alloc memory for group name\n");
+	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
+	if (!gname)
 		goto free_map;
-	}
-	snprintf(gname, strlen(np->name) + 4, "%s%s", np->name, GROUP_SUFFIX);
 
 	/*
 	 * don't have config options? then skip over to creating function
@@ -710,14 +707,10 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
 		}
 
 		/* derive pin group name from the node name */
-		gname = devm_kzalloc(dev, strlen(cfg_np->name) + GSUFFIX_LEN,
-					GFP_KERNEL);
-		if (!gname) {
-			dev_err(dev, "failed to alloc memory for group name\n");
+		gname = devm_kasprintf(dev, GFP_KERNEL,
+				       "%s%s", cfg_np->name, GROUP_SUFFIX);
+		if (!gname)
 			return -ENOMEM;
-		}
-		snprintf(gname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
-			 GROUP_SUFFIX);
 
 		grp->name = gname;
 		grp->pins = pin_list;

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* Re: [patch] pinctrl: samsung: don't truncate the last char of "-grp"
  2015-06-11 15:46 ` Dan Carpenter
@ 2015-06-15  4:17   ` Krzysztof Kozlowski
  -1 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Kozlowski @ 2015-06-15  4:17 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: Tomasz Figa, Thomas Abraham, Linus Walleij, Kukjin Kim,
	Krzysztof Kozlowski, linux-samsung-soc, linux-gpio,
	kernel-janitors

2015-06-12 0:46 GMT+09:00 Dan Carpenter <dan.carpenter@oracle.com>:
> We allocate sizeof("-grp") which is 5 bytes but then we pass 4 to the
> snprintf() so the last 'p' char is truncated away.
>
> The kzalloc() can be made into kmalloc() since we are going to fill
> the whole buffer.  But I know that Walter Harms is going to grumble if I
> don't use kasprintf().  :P  And also checkpatch.pl these days complains
> that the "allocation failed" printks aren't needed so I removed them.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> index f5619fb..f804a61c 100644
> --- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> +++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> @@ -215,12 +215,9 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>          * Allocate memory for pin group name. The pin group name is derived
>          * from the node name from which these map entries are be created.
>          */
> -       gname = kzalloc(strlen(np->name) + GSUFFIX_LEN, GFP_KERNEL);
> -       if (!gname) {
> -               dev_err(dev, "failed to alloc memory for group name\n");
> +       gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
> +       if (!gname)
>                 goto free_map;
> -       }
> -       snprintf(gname, strlen(np->name) + 4, "%s%s", np->name, GROUP_SUFFIX);

I would prefer splitting this into two patches: one for fixing
truncated name (by usage of kasprintf) and second for ENOMEM message.
The second patch can get rid of ENOMEM message in other places as
well.

As for the first issue I think that function suffix would also be
truncated in the same way.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [patch] pinctrl: samsung: don't truncate the last char of "-grp"
@ 2015-06-15  4:17   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Kozlowski @ 2015-06-15  4:17 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: Tomasz Figa, Thomas Abraham, Linus Walleij, Kukjin Kim,
	Krzysztof Kozlowski, linux-samsung-soc, linux-gpio,
	kernel-janitors

2015-06-12 0:46 GMT+09:00 Dan Carpenter <dan.carpenter@oracle.com>:
> We allocate sizeof("-grp") which is 5 bytes but then we pass 4 to the
> snprintf() so the last 'p' char is truncated away.
>
> The kzalloc() can be made into kmalloc() since we are going to fill
> the whole buffer.  But I know that Walter Harms is going to grumble if I
> don't use kasprintf().  :P  And also checkpatch.pl these days complains
> that the "allocation failed" printks aren't needed so I removed them.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> index f5619fb..f804a61c 100644
> --- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> +++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> @@ -215,12 +215,9 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>          * Allocate memory for pin group name. The pin group name is derived
>          * from the node name from which these map entries are be created.
>          */
> -       gname = kzalloc(strlen(np->name) + GSUFFIX_LEN, GFP_KERNEL);
> -       if (!gname) {
> -               dev_err(dev, "failed to alloc memory for group name\n");
> +       gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
> +       if (!gname)
>                 goto free_map;
> -       }
> -       snprintf(gname, strlen(np->name) + 4, "%s%s", np->name, GROUP_SUFFIX);

I would prefer splitting this into two patches: one for fixing
truncated name (by usage of kasprintf) and second for ENOMEM message.
The second patch can get rid of ENOMEM message in other places as
well.

As for the first issue I think that function suffix would also be
truncated in the same way.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [patch] pinctrl: samsung: don't truncate the last char of "-grp"
  2015-06-15  4:17   ` Krzysztof Kozlowski
@ 2015-06-19  8:52     ` Dan Carpenter
  -1 siblings, 0 replies; 30+ messages in thread
From: Dan Carpenter @ 2015-06-19  8:52 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Tomasz Figa, Thomas Abraham, Linus Walleij, Kukjin Kim,
	linux-samsung-soc, linux-gpio, kernel-janitors

On Mon, Jun 15, 2015 at 01:17:36PM +0900, Krzysztof Kozlowski wrote:
> I would prefer splitting this into two patches: one for fixing
> truncated name (by usage of kasprintf) and second for ENOMEM message.
> The second patch can get rid of ENOMEM message in other places as
> well.
> 
> As for the first issue I think that function suffix would also be
> truncated in the same way.

Sorry for the delayed response, I've been offline for a few days.

Yeah, you're right.

Let me resend.

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [patch] pinctrl: samsung: don't truncate the last char of "-grp"
@ 2015-06-19  8:52     ` Dan Carpenter
  0 siblings, 0 replies; 30+ messages in thread
From: Dan Carpenter @ 2015-06-19  8:52 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Tomasz Figa, Thomas Abraham, Linus Walleij, Kukjin Kim,
	linux-samsung-soc, linux-gpio, kernel-janitors

On Mon, Jun 15, 2015 at 01:17:36PM +0900, Krzysztof Kozlowski wrote:
> I would prefer splitting this into two patches: one for fixing
> truncated name (by usage of kasprintf) and second for ENOMEM message.
> The second patch can get rid of ENOMEM message in other places as
> well.
> 
> As for the first issue I think that function suffix would also be
> truncated in the same way.

Sorry for the delayed response, I've been offline for a few days.

Yeah, you're right.

Let me resend.

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 30+ messages in thread

* [patch v2 1/2] pinctrl: samsung: don't truncate the last char
  2015-06-19  8:52     ` Dan Carpenter
  (?)
  (?)
@ 2015-06-22 15:12       ` Dan Carpenter
  -1 siblings, 0 replies; 30+ messages in thread
From: Dan Carpenter @ 2015-06-22 15:12 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Thomas Abraham, Linus Walleij, Kukjin Kim, Krzysztof Kozlowski,
	linux-arm-kernel, linux-samsung-soc, linux-gpio, linux-kernel,
	kernel-janitors

We were allocating enough space because sizeof("-grp") and
sizeof("-mux") are both equal to 5 but in the snprintf() we only allowed
for 4 characters so the last 'p' and 'x' characters were truncated.

The allocate and sprintf can be done in one step with the kasprintf().

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
index f5619fb..fa84db6 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
@@ -44,9 +44,7 @@
 #define PIN_NAME_LENGTH		10
 
 #define GROUP_SUFFIX		"-grp"
-#define GSUFFIX_LEN		sizeof(GROUP_SUFFIX)
 #define FUNCTION_SUFFIX		"-mux"
-#define FSUFFIX_LEN		sizeof(FUNCTION_SUFFIX)
 
 /*
  * pin configuration type and its value are packed together into a 16-bits.
@@ -215,12 +213,11 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 	 * Allocate memory for pin group name. The pin group name is derived
 	 * from the node name from which these map entries are be created.
 	 */
-	gname = kzalloc(strlen(np->name) + GSUFFIX_LEN, GFP_KERNEL);
+	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
 	if (!gname) {
 		dev_err(dev, "failed to alloc memory for group name\n");
 		goto free_map;
 	}
-	snprintf(gname, strlen(np->name) + 4, "%s%s", np->name, GROUP_SUFFIX);
 
 	/*
 	 * don't have config options? then skip over to creating function
@@ -254,13 +251,12 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 skip_cfgs:
 	/* create the function map entry */
 	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
-		fname = kzalloc(strlen(np->name) + FSUFFIX_LEN,	GFP_KERNEL);
+		fname = kasprintf(GFP_KERNEL,
+				  "%s%s", np->name, FUNCTION_SUFFIX);
 		if (!fname) {
 			dev_err(dev, "failed to alloc memory for func name\n");
 			goto free_cfg;
 		}
-		snprintf(fname, strlen(np->name) + 4, "%s%s", np->name,
-			 FUNCTION_SUFFIX);
 
 		map[*nmaps].data.mux.group = gname;
 		map[*nmaps].data.mux.function = fname;
@@ -710,14 +706,12 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
 		}
 
 		/* derive pin group name from the node name */
-		gname = devm_kzalloc(dev, strlen(cfg_np->name) + GSUFFIX_LEN,
-					GFP_KERNEL);
+		gname = devm_kasprintf(dev, GFP_KERNEL,
+				       "%s%s", cfg_np->name, GROUP_SUFFIX);
 		if (!gname) {
 			dev_err(dev, "failed to alloc memory for group name\n");
 			return -ENOMEM;
 		}
-		snprintf(gname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
-			 GROUP_SUFFIX);
 
 		grp->name = gname;
 		grp->pins = pin_list;
@@ -731,14 +725,12 @@ skip_to_pin_function:
 			continue;
 
 		/* derive function name from the node name */
-		fname = devm_kzalloc(dev, strlen(cfg_np->name) + FSUFFIX_LEN,
-					GFP_KERNEL);
+		fname = devm_kasprintf(dev, GFP_KERNEL,
+				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
 		if (!fname) {
 			dev_err(dev, "failed to alloc memory for func name\n");
 			return -ENOMEM;
 		}
-		snprintf(fname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
-			 FUNCTION_SUFFIX);
 
 		func->name = fname;
 		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [patch v2 1/2] pinctrl: samsung: don't truncate the last char
@ 2015-06-22 15:12       ` Dan Carpenter
  0 siblings, 0 replies; 30+ messages in thread
From: Dan Carpenter @ 2015-06-22 15:12 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Thomas Abraham, Linus Walleij, Kukjin Kim, Krzysztof Kozlowski,
	linux-arm-kernel, linux-samsung-soc, linux-gpio, linux-kernel,
	kernel-janitors

We were allocating enough space because sizeof("-grp") and
sizeof("-mux") are both equal to 5 but in the snprintf() we only allowed
for 4 characters so the last 'p' and 'x' characters were truncated.

The allocate and sprintf can be done in one step with the kasprintf().

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
index f5619fb..fa84db6 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
@@ -44,9 +44,7 @@
 #define PIN_NAME_LENGTH		10
 
 #define GROUP_SUFFIX		"-grp"
-#define GSUFFIX_LEN		sizeof(GROUP_SUFFIX)
 #define FUNCTION_SUFFIX		"-mux"
-#define FSUFFIX_LEN		sizeof(FUNCTION_SUFFIX)
 
 /*
  * pin configuration type and its value are packed together into a 16-bits.
@@ -215,12 +213,11 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 	 * Allocate memory for pin group name. The pin group name is derived
 	 * from the node name from which these map entries are be created.
 	 */
-	gname = kzalloc(strlen(np->name) + GSUFFIX_LEN, GFP_KERNEL);
+	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
 	if (!gname) {
 		dev_err(dev, "failed to alloc memory for group name\n");
 		goto free_map;
 	}
-	snprintf(gname, strlen(np->name) + 4, "%s%s", np->name, GROUP_SUFFIX);
 
 	/*
 	 * don't have config options? then skip over to creating function
@@ -254,13 +251,12 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 skip_cfgs:
 	/* create the function map entry */
 	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
-		fname = kzalloc(strlen(np->name) + FSUFFIX_LEN,	GFP_KERNEL);
+		fname = kasprintf(GFP_KERNEL,
+				  "%s%s", np->name, FUNCTION_SUFFIX);
 		if (!fname) {
 			dev_err(dev, "failed to alloc memory for func name\n");
 			goto free_cfg;
 		}
-		snprintf(fname, strlen(np->name) + 4, "%s%s", np->name,
-			 FUNCTION_SUFFIX);
 
 		map[*nmaps].data.mux.group = gname;
 		map[*nmaps].data.mux.function = fname;
@@ -710,14 +706,12 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
 		}
 
 		/* derive pin group name from the node name */
-		gname = devm_kzalloc(dev, strlen(cfg_np->name) + GSUFFIX_LEN,
-					GFP_KERNEL);
+		gname = devm_kasprintf(dev, GFP_KERNEL,
+				       "%s%s", cfg_np->name, GROUP_SUFFIX);
 		if (!gname) {
 			dev_err(dev, "failed to alloc memory for group name\n");
 			return -ENOMEM;
 		}
-		snprintf(gname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
-			 GROUP_SUFFIX);
 
 		grp->name = gname;
 		grp->pins = pin_list;
@@ -731,14 +725,12 @@ skip_to_pin_function:
 			continue;
 
 		/* derive function name from the node name */
-		fname = devm_kzalloc(dev, strlen(cfg_np->name) + FSUFFIX_LEN,
-					GFP_KERNEL);
+		fname = devm_kasprintf(dev, GFP_KERNEL,
+				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
 		if (!fname) {
 			dev_err(dev, "failed to alloc memory for func name\n");
 			return -ENOMEM;
 		}
-		snprintf(fname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
-			 FUNCTION_SUFFIX);
 
 		func->name = fname;
 		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [patch v2 1/2] pinctrl: samsung: don't truncate the last char
@ 2015-06-22 15:12       ` Dan Carpenter
  0 siblings, 0 replies; 30+ messages in thread
From: Dan Carpenter @ 2015-06-22 15:12 UTC (permalink / raw)
  To: linux-arm-kernel

We were allocating enough space because sizeof("-grp") and
sizeof("-mux") are both equal to 5 but in the snprintf() we only allowed
for 4 characters so the last 'p' and 'x' characters were truncated.

The allocate and sprintf can be done in one step with the kasprintf().

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
index f5619fb..fa84db6 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
@@ -44,9 +44,7 @@
 #define PIN_NAME_LENGTH		10
 
 #define GROUP_SUFFIX		"-grp"
-#define GSUFFIX_LEN		sizeof(GROUP_SUFFIX)
 #define FUNCTION_SUFFIX		"-mux"
-#define FSUFFIX_LEN		sizeof(FUNCTION_SUFFIX)
 
 /*
  * pin configuration type and its value are packed together into a 16-bits.
@@ -215,12 +213,11 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 	 * Allocate memory for pin group name. The pin group name is derived
 	 * from the node name from which these map entries are be created.
 	 */
-	gname = kzalloc(strlen(np->name) + GSUFFIX_LEN, GFP_KERNEL);
+	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
 	if (!gname) {
 		dev_err(dev, "failed to alloc memory for group name\n");
 		goto free_map;
 	}
-	snprintf(gname, strlen(np->name) + 4, "%s%s", np->name, GROUP_SUFFIX);
 
 	/*
 	 * don't have config options? then skip over to creating function
@@ -254,13 +251,12 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 skip_cfgs:
 	/* create the function map entry */
 	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
-		fname = kzalloc(strlen(np->name) + FSUFFIX_LEN,	GFP_KERNEL);
+		fname = kasprintf(GFP_KERNEL,
+				  "%s%s", np->name, FUNCTION_SUFFIX);
 		if (!fname) {
 			dev_err(dev, "failed to alloc memory for func name\n");
 			goto free_cfg;
 		}
-		snprintf(fname, strlen(np->name) + 4, "%s%s", np->name,
-			 FUNCTION_SUFFIX);
 
 		map[*nmaps].data.mux.group = gname;
 		map[*nmaps].data.mux.function = fname;
@@ -710,14 +706,12 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
 		}
 
 		/* derive pin group name from the node name */
-		gname = devm_kzalloc(dev, strlen(cfg_np->name) + GSUFFIX_LEN,
-					GFP_KERNEL);
+		gname = devm_kasprintf(dev, GFP_KERNEL,
+				       "%s%s", cfg_np->name, GROUP_SUFFIX);
 		if (!gname) {
 			dev_err(dev, "failed to alloc memory for group name\n");
 			return -ENOMEM;
 		}
-		snprintf(gname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
-			 GROUP_SUFFIX);
 
 		grp->name = gname;
 		grp->pins = pin_list;
@@ -731,14 +725,12 @@ skip_to_pin_function:
 			continue;
 
 		/* derive function name from the node name */
-		fname = devm_kzalloc(dev, strlen(cfg_np->name) + FSUFFIX_LEN,
-					GFP_KERNEL);
+		fname = devm_kasprintf(dev, GFP_KERNEL,
+				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
 		if (!fname) {
 			dev_err(dev, "failed to alloc memory for func name\n");
 			return -ENOMEM;
 		}
-		snprintf(fname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
-			 FUNCTION_SUFFIX);
 
 		func->name = fname;
 		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [patch v2 1/2] pinctrl: samsung: don't truncate the last char
@ 2015-06-22 15:12       ` Dan Carpenter
  0 siblings, 0 replies; 30+ messages in thread
From: Dan Carpenter @ 2015-06-22 15:12 UTC (permalink / raw)
  To: linux-arm-kernel

We were allocating enough space because sizeof("-grp") and
sizeof("-mux") are both equal to 5 but in the snprintf() we only allowed
for 4 characters so the last 'p' and 'x' characters were truncated.

The allocate and sprintf can be done in one step with the kasprintf().

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
index f5619fb..fa84db6 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
@@ -44,9 +44,7 @@
 #define PIN_NAME_LENGTH		10
 
 #define GROUP_SUFFIX		"-grp"
-#define GSUFFIX_LEN		sizeof(GROUP_SUFFIX)
 #define FUNCTION_SUFFIX		"-mux"
-#define FSUFFIX_LEN		sizeof(FUNCTION_SUFFIX)
 
 /*
  * pin configuration type and its value are packed together into a 16-bits.
@@ -215,12 +213,11 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 	 * Allocate memory for pin group name. The pin group name is derived
 	 * from the node name from which these map entries are be created.
 	 */
-	gname = kzalloc(strlen(np->name) + GSUFFIX_LEN, GFP_KERNEL);
+	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
 	if (!gname) {
 		dev_err(dev, "failed to alloc memory for group name\n");
 		goto free_map;
 	}
-	snprintf(gname, strlen(np->name) + 4, "%s%s", np->name, GROUP_SUFFIX);
 
 	/*
 	 * don't have config options? then skip over to creating function
@@ -254,13 +251,12 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 skip_cfgs:
 	/* create the function map entry */
 	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
-		fname = kzalloc(strlen(np->name) + FSUFFIX_LEN,	GFP_KERNEL);
+		fname = kasprintf(GFP_KERNEL,
+				  "%s%s", np->name, FUNCTION_SUFFIX);
 		if (!fname) {
 			dev_err(dev, "failed to alloc memory for func name\n");
 			goto free_cfg;
 		}
-		snprintf(fname, strlen(np->name) + 4, "%s%s", np->name,
-			 FUNCTION_SUFFIX);
 
 		map[*nmaps].data.mux.group = gname;
 		map[*nmaps].data.mux.function = fname;
@@ -710,14 +706,12 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
 		}
 
 		/* derive pin group name from the node name */
-		gname = devm_kzalloc(dev, strlen(cfg_np->name) + GSUFFIX_LEN,
-					GFP_KERNEL);
+		gname = devm_kasprintf(dev, GFP_KERNEL,
+				       "%s%s", cfg_np->name, GROUP_SUFFIX);
 		if (!gname) {
 			dev_err(dev, "failed to alloc memory for group name\n");
 			return -ENOMEM;
 		}
-		snprintf(gname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
-			 GROUP_SUFFIX);
 
 		grp->name = gname;
 		grp->pins = pin_list;
@@ -731,14 +725,12 @@ skip_to_pin_function:
 			continue;
 
 		/* derive function name from the node name */
-		fname = devm_kzalloc(dev, strlen(cfg_np->name) + FSUFFIX_LEN,
-					GFP_KERNEL);
+		fname = devm_kasprintf(dev, GFP_KERNEL,
+				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
 		if (!fname) {
 			dev_err(dev, "failed to alloc memory for func name\n");
 			return -ENOMEM;
 		}
-		snprintf(fname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
-			 FUNCTION_SUFFIX);
 
 		func->name = fname;
 		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages
  2015-06-19  8:52     ` Dan Carpenter
  (?)
  (?)
@ 2015-06-22 15:13       ` Dan Carpenter
  -1 siblings, 0 replies; 30+ messages in thread
From: Dan Carpenter @ 2015-06-22 15:13 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Thomas Abraham, Linus Walleij, Kukjin Kim, Krzysztof Kozlowski,
	linux-arm-kernel, linux-samsung-soc, linux-gpio, linux-kernel,
	kernel-janitors

Checkpatch.pl complains about these:

WARNING: Possible unnecessary 'out of memory' message

The messages use a little extra RAM and they add a few extra lines of
code.  We're probably never going to hit these out of memory situations
but if we did then kmalloc() has pretty good error messages built-in.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
index fa84db6..5574b8a 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
@@ -203,10 +203,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 
 	/* Allocate memory for pin-map entries */
 	map = kzalloc(sizeof(*map) * map_cnt, GFP_KERNEL);
-	if (!map) {
-		dev_err(dev, "could not alloc memory for pin-maps\n");
+	if (!map)
 		return -ENOMEM;
-	}
 	*nmaps = 0;
 
 	/*
@@ -214,10 +212,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 	 * from the node name from which these map entries are be created.
 	 */
 	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
-	if (!gname) {
-		dev_err(dev, "failed to alloc memory for group name\n");
+	if (!gname)
 		goto free_map;
-	}
 
 	/*
 	 * don't have config options? then skip over to creating function
@@ -228,10 +224,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 
 	/* Allocate memory for config entries */
 	cfg = kzalloc(sizeof(*cfg) * cfg_cnt, GFP_KERNEL);
-	if (!cfg) {
-		dev_err(dev, "failed to alloc memory for configs\n");
+	if (!cfg)
 		goto free_gname;
-	}
 
 	/* Prepare a list of config settings */
 	for (idx = 0, cfg_cnt = 0; idx < ARRAY_SIZE(pcfgs); idx++) {
@@ -253,10 +247,8 @@ skip_cfgs:
 	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
 		fname = kasprintf(GFP_KERNEL,
 				  "%s%s", np->name, FUNCTION_SUFFIX);
-		if (!fname) {
-			dev_err(dev, "failed to alloc memory for func name\n");
+		if (!fname)
 			goto free_cfg;
-		}
 
 		map[*nmaps].data.mux.group = gname;
 		map[*nmaps].data.mux.function = fname;
@@ -647,10 +639,8 @@ static int exynos5440_pinctrl_parse_dt_pins(struct platform_device *pdev,
 	}
 
 	*pin_list = devm_kzalloc(dev, *npins * sizeof(**pin_list), GFP_KERNEL);
-	if (!*pin_list) {
-		dev_err(dev, "failed to allocate memory for pin list\n");
+	if (!*pin_list)
 		return -ENOMEM;
-	}
 
 	return of_property_read_u32_array(cfg_np, "samsung,exynos5440-pins",
 			*pin_list, *npins);
@@ -678,17 +668,15 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
 		return -EINVAL;
 
 	groups = devm_kzalloc(dev, grp_cnt * sizeof(*groups), GFP_KERNEL);
-	if (!groups) {
-		dev_err(dev, "failed allocate memory for ping group list\n");
+	if (!groups)
 		return -EINVAL;
-	}
+
 	grp = groups;
 
 	functions = devm_kzalloc(dev, grp_cnt * sizeof(*functions), GFP_KERNEL);
-	if (!functions) {
-		dev_err(dev, "failed to allocate memory for function list\n");
+	if (!functions)
 		return -EINVAL;
-	}
+
 	func = functions;
 
 	/*
@@ -708,10 +696,8 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
 		/* derive pin group name from the node name */
 		gname = devm_kasprintf(dev, GFP_KERNEL,
 				       "%s%s", cfg_np->name, GROUP_SUFFIX);
-		if (!gname) {
-			dev_err(dev, "failed to alloc memory for group name\n");
+		if (!gname)
 			return -ENOMEM;
-		}
 
 		grp->name = gname;
 		grp->pins = pin_list;
@@ -727,18 +713,13 @@ skip_to_pin_function:
 		/* derive function name from the node name */
 		fname = devm_kasprintf(dev, GFP_KERNEL,
 				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
-		if (!fname) {
-			dev_err(dev, "failed to alloc memory for func name\n");
+		if (!fname)
 			return -ENOMEM;
-		}
 
 		func->name = fname;
 		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
-		if (!func->groups) {
-			dev_err(dev, "failed to alloc memory for group list "
-					"in pin function");
+		if (!func->groups)
 			return -ENOMEM;
-		}
 		func->groups[0] = gname;
 		func->num_groups = gname ? 1 : 0;
 		func->function = function;
@@ -766,10 +747,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
 	int pin, ret;
 
 	ctrldesc = devm_kzalloc(dev, sizeof(*ctrldesc), GFP_KERNEL);
-	if (!ctrldesc) {
-		dev_err(dev, "could not allocate memory for pinctrl desc\n");
+	if (!ctrldesc)
 		return -ENOMEM;
-	}
 
 	ctrldesc->name = "exynos5440-pinctrl";
 	ctrldesc->owner = THIS_MODULE;
@@ -779,10 +758,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
 
 	pindesc = devm_kzalloc(&pdev->dev, sizeof(*pindesc) *
 				EXYNOS5440_MAX_PINS, GFP_KERNEL);
-	if (!pindesc) {
-		dev_err(&pdev->dev, "mem alloc for pin descriptors failed\n");
+	if (!pindesc)
 		return -ENOMEM;
-	}
 	ctrldesc->pins = pindesc;
 	ctrldesc->npins = EXYNOS5440_MAX_PINS;
 
@@ -796,10 +773,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
 	 */
 	pin_names = devm_kzalloc(&pdev->dev, sizeof(char) * PIN_NAME_LENGTH *
 					ctrldesc->npins, GFP_KERNEL);
-	if (!pin_names) {
-		dev_err(&pdev->dev, "mem alloc for pin names failed\n");
+	if (!pin_names)
 		return -ENOMEM;
-	}
 
 	/* for each pin, set the name of the pin */
 	for (pin = 0; pin < ctrldesc->npins; pin++) {
@@ -836,10 +811,8 @@ static int exynos5440_gpiolib_register(struct platform_device *pdev,
 	int ret;
 
 	gc = devm_kzalloc(&pdev->dev, sizeof(*gc), GFP_KERNEL);
-	if (!gc) {
-		dev_err(&pdev->dev, "mem alloc for gpio_chip failed\n");
+	if (!gc)
 		return -ENOMEM;
-	}
 
 	priv->gc = gc;
 	gc->base = 0;
@@ -941,10 +914,8 @@ static int exynos5440_gpio_irq_init(struct platform_device *pdev,
 
 	intd = devm_kzalloc(dev, sizeof(*intd) * EXYNOS5440_MAX_GPIO_INT,
 					GFP_KERNEL);
-	if (!intd) {
-		dev_err(dev, "failed to allocate memory for gpio intr data\n");
+	if (!intd)
 		return -ENOMEM;
-	}
 
 	for (i = 0; i < EXYNOS5440_MAX_GPIO_INT; i++) {
 		irq = irq_of_parse_and_map(dev->of_node, i);
@@ -987,10 +958,8 @@ static int exynos5440_pinctrl_probe(struct platform_device *pdev)
 	}
 
 	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
-	if (!priv) {
-		dev_err(dev, "could not allocate memory for private data\n");
+	if (!priv)
 		return -ENOMEM;
-	}
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	priv->reg_base = devm_ioremap_resource(&pdev->dev, res);
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages
@ 2015-06-22 15:13       ` Dan Carpenter
  0 siblings, 0 replies; 30+ messages in thread
From: Dan Carpenter @ 2015-06-22 15:13 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Thomas Abraham, Linus Walleij, Kukjin Kim, Krzysztof Kozlowski,
	linux-arm-kernel, linux-samsung-soc, linux-gpio, linux-kernel,
	kernel-janitors

Checkpatch.pl complains about these:

WARNING: Possible unnecessary 'out of memory' message

The messages use a little extra RAM and they add a few extra lines of
code.  We're probably never going to hit these out of memory situations
but if we did then kmalloc() has pretty good error messages built-in.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
index fa84db6..5574b8a 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
@@ -203,10 +203,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 
 	/* Allocate memory for pin-map entries */
 	map = kzalloc(sizeof(*map) * map_cnt, GFP_KERNEL);
-	if (!map) {
-		dev_err(dev, "could not alloc memory for pin-maps\n");
+	if (!map)
 		return -ENOMEM;
-	}
 	*nmaps = 0;
 
 	/*
@@ -214,10 +212,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 	 * from the node name from which these map entries are be created.
 	 */
 	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
-	if (!gname) {
-		dev_err(dev, "failed to alloc memory for group name\n");
+	if (!gname)
 		goto free_map;
-	}
 
 	/*
 	 * don't have config options? then skip over to creating function
@@ -228,10 +224,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 
 	/* Allocate memory for config entries */
 	cfg = kzalloc(sizeof(*cfg) * cfg_cnt, GFP_KERNEL);
-	if (!cfg) {
-		dev_err(dev, "failed to alloc memory for configs\n");
+	if (!cfg)
 		goto free_gname;
-	}
 
 	/* Prepare a list of config settings */
 	for (idx = 0, cfg_cnt = 0; idx < ARRAY_SIZE(pcfgs); idx++) {
@@ -253,10 +247,8 @@ skip_cfgs:
 	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
 		fname = kasprintf(GFP_KERNEL,
 				  "%s%s", np->name, FUNCTION_SUFFIX);
-		if (!fname) {
-			dev_err(dev, "failed to alloc memory for func name\n");
+		if (!fname)
 			goto free_cfg;
-		}
 
 		map[*nmaps].data.mux.group = gname;
 		map[*nmaps].data.mux.function = fname;
@@ -647,10 +639,8 @@ static int exynos5440_pinctrl_parse_dt_pins(struct platform_device *pdev,
 	}
 
 	*pin_list = devm_kzalloc(dev, *npins * sizeof(**pin_list), GFP_KERNEL);
-	if (!*pin_list) {
-		dev_err(dev, "failed to allocate memory for pin list\n");
+	if (!*pin_list)
 		return -ENOMEM;
-	}
 
 	return of_property_read_u32_array(cfg_np, "samsung,exynos5440-pins",
 			*pin_list, *npins);
@@ -678,17 +668,15 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
 		return -EINVAL;
 
 	groups = devm_kzalloc(dev, grp_cnt * sizeof(*groups), GFP_KERNEL);
-	if (!groups) {
-		dev_err(dev, "failed allocate memory for ping group list\n");
+	if (!groups)
 		return -EINVAL;
-	}
+
 	grp = groups;
 
 	functions = devm_kzalloc(dev, grp_cnt * sizeof(*functions), GFP_KERNEL);
-	if (!functions) {
-		dev_err(dev, "failed to allocate memory for function list\n");
+	if (!functions)
 		return -EINVAL;
-	}
+
 	func = functions;
 
 	/*
@@ -708,10 +696,8 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
 		/* derive pin group name from the node name */
 		gname = devm_kasprintf(dev, GFP_KERNEL,
 				       "%s%s", cfg_np->name, GROUP_SUFFIX);
-		if (!gname) {
-			dev_err(dev, "failed to alloc memory for group name\n");
+		if (!gname)
 			return -ENOMEM;
-		}
 
 		grp->name = gname;
 		grp->pins = pin_list;
@@ -727,18 +713,13 @@ skip_to_pin_function:
 		/* derive function name from the node name */
 		fname = devm_kasprintf(dev, GFP_KERNEL,
 				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
-		if (!fname) {
-			dev_err(dev, "failed to alloc memory for func name\n");
+		if (!fname)
 			return -ENOMEM;
-		}
 
 		func->name = fname;
 		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
-		if (!func->groups) {
-			dev_err(dev, "failed to alloc memory for group list "
-					"in pin function");
+		if (!func->groups)
 			return -ENOMEM;
-		}
 		func->groups[0] = gname;
 		func->num_groups = gname ? 1 : 0;
 		func->function = function;
@@ -766,10 +747,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
 	int pin, ret;
 
 	ctrldesc = devm_kzalloc(dev, sizeof(*ctrldesc), GFP_KERNEL);
-	if (!ctrldesc) {
-		dev_err(dev, "could not allocate memory for pinctrl desc\n");
+	if (!ctrldesc)
 		return -ENOMEM;
-	}
 
 	ctrldesc->name = "exynos5440-pinctrl";
 	ctrldesc->owner = THIS_MODULE;
@@ -779,10 +758,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
 
 	pindesc = devm_kzalloc(&pdev->dev, sizeof(*pindesc) *
 				EXYNOS5440_MAX_PINS, GFP_KERNEL);
-	if (!pindesc) {
-		dev_err(&pdev->dev, "mem alloc for pin descriptors failed\n");
+	if (!pindesc)
 		return -ENOMEM;
-	}
 	ctrldesc->pins = pindesc;
 	ctrldesc->npins = EXYNOS5440_MAX_PINS;
 
@@ -796,10 +773,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
 	 */
 	pin_names = devm_kzalloc(&pdev->dev, sizeof(char) * PIN_NAME_LENGTH *
 					ctrldesc->npins, GFP_KERNEL);
-	if (!pin_names) {
-		dev_err(&pdev->dev, "mem alloc for pin names failed\n");
+	if (!pin_names)
 		return -ENOMEM;
-	}
 
 	/* for each pin, set the name of the pin */
 	for (pin = 0; pin < ctrldesc->npins; pin++) {
@@ -836,10 +811,8 @@ static int exynos5440_gpiolib_register(struct platform_device *pdev,
 	int ret;
 
 	gc = devm_kzalloc(&pdev->dev, sizeof(*gc), GFP_KERNEL);
-	if (!gc) {
-		dev_err(&pdev->dev, "mem alloc for gpio_chip failed\n");
+	if (!gc)
 		return -ENOMEM;
-	}
 
 	priv->gc = gc;
 	gc->base = 0;
@@ -941,10 +914,8 @@ static int exynos5440_gpio_irq_init(struct platform_device *pdev,
 
 	intd = devm_kzalloc(dev, sizeof(*intd) * EXYNOS5440_MAX_GPIO_INT,
 					GFP_KERNEL);
-	if (!intd) {
-		dev_err(dev, "failed to allocate memory for gpio intr data\n");
+	if (!intd)
 		return -ENOMEM;
-	}
 
 	for (i = 0; i < EXYNOS5440_MAX_GPIO_INT; i++) {
 		irq = irq_of_parse_and_map(dev->of_node, i);
@@ -987,10 +958,8 @@ static int exynos5440_pinctrl_probe(struct platform_device *pdev)
 	}
 
 	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
-	if (!priv) {
-		dev_err(dev, "could not allocate memory for private data\n");
+	if (!priv)
 		return -ENOMEM;
-	}
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	priv->reg_base = devm_ioremap_resource(&pdev->dev, res);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages
@ 2015-06-22 15:13       ` Dan Carpenter
  0 siblings, 0 replies; 30+ messages in thread
From: Dan Carpenter @ 2015-06-22 15:13 UTC (permalink / raw)
  To: linux-arm-kernel

Checkpatch.pl complains about these:

WARNING: Possible unnecessary 'out of memory' message

The messages use a little extra RAM and they add a few extra lines of
code.  We're probably never going to hit these out of memory situations
but if we did then kmalloc() has pretty good error messages built-in.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
index fa84db6..5574b8a 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
@@ -203,10 +203,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 
 	/* Allocate memory for pin-map entries */
 	map = kzalloc(sizeof(*map) * map_cnt, GFP_KERNEL);
-	if (!map) {
-		dev_err(dev, "could not alloc memory for pin-maps\n");
+	if (!map)
 		return -ENOMEM;
-	}
 	*nmaps = 0;
 
 	/*
@@ -214,10 +212,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 	 * from the node name from which these map entries are be created.
 	 */
 	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
-	if (!gname) {
-		dev_err(dev, "failed to alloc memory for group name\n");
+	if (!gname)
 		goto free_map;
-	}
 
 	/*
 	 * don't have config options? then skip over to creating function
@@ -228,10 +224,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 
 	/* Allocate memory for config entries */
 	cfg = kzalloc(sizeof(*cfg) * cfg_cnt, GFP_KERNEL);
-	if (!cfg) {
-		dev_err(dev, "failed to alloc memory for configs\n");
+	if (!cfg)
 		goto free_gname;
-	}
 
 	/* Prepare a list of config settings */
 	for (idx = 0, cfg_cnt = 0; idx < ARRAY_SIZE(pcfgs); idx++) {
@@ -253,10 +247,8 @@ skip_cfgs:
 	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
 		fname = kasprintf(GFP_KERNEL,
 				  "%s%s", np->name, FUNCTION_SUFFIX);
-		if (!fname) {
-			dev_err(dev, "failed to alloc memory for func name\n");
+		if (!fname)
 			goto free_cfg;
-		}
 
 		map[*nmaps].data.mux.group = gname;
 		map[*nmaps].data.mux.function = fname;
@@ -647,10 +639,8 @@ static int exynos5440_pinctrl_parse_dt_pins(struct platform_device *pdev,
 	}
 
 	*pin_list = devm_kzalloc(dev, *npins * sizeof(**pin_list), GFP_KERNEL);
-	if (!*pin_list) {
-		dev_err(dev, "failed to allocate memory for pin list\n");
+	if (!*pin_list)
 		return -ENOMEM;
-	}
 
 	return of_property_read_u32_array(cfg_np, "samsung,exynos5440-pins",
 			*pin_list, *npins);
@@ -678,17 +668,15 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
 		return -EINVAL;
 
 	groups = devm_kzalloc(dev, grp_cnt * sizeof(*groups), GFP_KERNEL);
-	if (!groups) {
-		dev_err(dev, "failed allocate memory for ping group list\n");
+	if (!groups)
 		return -EINVAL;
-	}
+
 	grp = groups;
 
 	functions = devm_kzalloc(dev, grp_cnt * sizeof(*functions), GFP_KERNEL);
-	if (!functions) {
-		dev_err(dev, "failed to allocate memory for function list\n");
+	if (!functions)
 		return -EINVAL;
-	}
+
 	func = functions;
 
 	/*
@@ -708,10 +696,8 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
 		/* derive pin group name from the node name */
 		gname = devm_kasprintf(dev, GFP_KERNEL,
 				       "%s%s", cfg_np->name, GROUP_SUFFIX);
-		if (!gname) {
-			dev_err(dev, "failed to alloc memory for group name\n");
+		if (!gname)
 			return -ENOMEM;
-		}
 
 		grp->name = gname;
 		grp->pins = pin_list;
@@ -727,18 +713,13 @@ skip_to_pin_function:
 		/* derive function name from the node name */
 		fname = devm_kasprintf(dev, GFP_KERNEL,
 				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
-		if (!fname) {
-			dev_err(dev, "failed to alloc memory for func name\n");
+		if (!fname)
 			return -ENOMEM;
-		}
 
 		func->name = fname;
 		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
-		if (!func->groups) {
-			dev_err(dev, "failed to alloc memory for group list "
-					"in pin function");
+		if (!func->groups)
 			return -ENOMEM;
-		}
 		func->groups[0] = gname;
 		func->num_groups = gname ? 1 : 0;
 		func->function = function;
@@ -766,10 +747,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
 	int pin, ret;
 
 	ctrldesc = devm_kzalloc(dev, sizeof(*ctrldesc), GFP_KERNEL);
-	if (!ctrldesc) {
-		dev_err(dev, "could not allocate memory for pinctrl desc\n");
+	if (!ctrldesc)
 		return -ENOMEM;
-	}
 
 	ctrldesc->name = "exynos5440-pinctrl";
 	ctrldesc->owner = THIS_MODULE;
@@ -779,10 +758,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
 
 	pindesc = devm_kzalloc(&pdev->dev, sizeof(*pindesc) *
 				EXYNOS5440_MAX_PINS, GFP_KERNEL);
-	if (!pindesc) {
-		dev_err(&pdev->dev, "mem alloc for pin descriptors failed\n");
+	if (!pindesc)
 		return -ENOMEM;
-	}
 	ctrldesc->pins = pindesc;
 	ctrldesc->npins = EXYNOS5440_MAX_PINS;
 
@@ -796,10 +773,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
 	 */
 	pin_names = devm_kzalloc(&pdev->dev, sizeof(char) * PIN_NAME_LENGTH *
 					ctrldesc->npins, GFP_KERNEL);
-	if (!pin_names) {
-		dev_err(&pdev->dev, "mem alloc for pin names failed\n");
+	if (!pin_names)
 		return -ENOMEM;
-	}
 
 	/* for each pin, set the name of the pin */
 	for (pin = 0; pin < ctrldesc->npins; pin++) {
@@ -836,10 +811,8 @@ static int exynos5440_gpiolib_register(struct platform_device *pdev,
 	int ret;
 
 	gc = devm_kzalloc(&pdev->dev, sizeof(*gc), GFP_KERNEL);
-	if (!gc) {
-		dev_err(&pdev->dev, "mem alloc for gpio_chip failed\n");
+	if (!gc)
 		return -ENOMEM;
-	}
 
 	priv->gc = gc;
 	gc->base = 0;
@@ -941,10 +914,8 @@ static int exynos5440_gpio_irq_init(struct platform_device *pdev,
 
 	intd = devm_kzalloc(dev, sizeof(*intd) * EXYNOS5440_MAX_GPIO_INT,
 					GFP_KERNEL);
-	if (!intd) {
-		dev_err(dev, "failed to allocate memory for gpio intr data\n");
+	if (!intd)
 		return -ENOMEM;
-	}
 
 	for (i = 0; i < EXYNOS5440_MAX_GPIO_INT; i++) {
 		irq = irq_of_parse_and_map(dev->of_node, i);
@@ -987,10 +958,8 @@ static int exynos5440_pinctrl_probe(struct platform_device *pdev)
 	}
 
 	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
-	if (!priv) {
-		dev_err(dev, "could not allocate memory for private data\n");
+	if (!priv)
 		return -ENOMEM;
-	}
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	priv->reg_base = devm_ioremap_resource(&pdev->dev, res);
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages
@ 2015-06-22 15:13       ` Dan Carpenter
  0 siblings, 0 replies; 30+ messages in thread
From: Dan Carpenter @ 2015-06-22 15:13 UTC (permalink / raw)
  To: linux-arm-kernel

Checkpatch.pl complains about these:

WARNING: Possible unnecessary 'out of memory' message

The messages use a little extra RAM and they add a few extra lines of
code.  We're probably never going to hit these out of memory situations
but if we did then kmalloc() has pretty good error messages built-in.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
index fa84db6..5574b8a 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
@@ -203,10 +203,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 
 	/* Allocate memory for pin-map entries */
 	map = kzalloc(sizeof(*map) * map_cnt, GFP_KERNEL);
-	if (!map) {
-		dev_err(dev, "could not alloc memory for pin-maps\n");
+	if (!map)
 		return -ENOMEM;
-	}
 	*nmaps = 0;
 
 	/*
@@ -214,10 +212,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 	 * from the node name from which these map entries are be created.
 	 */
 	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
-	if (!gname) {
-		dev_err(dev, "failed to alloc memory for group name\n");
+	if (!gname)
 		goto free_map;
-	}
 
 	/*
 	 * don't have config options? then skip over to creating function
@@ -228,10 +224,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
 
 	/* Allocate memory for config entries */
 	cfg = kzalloc(sizeof(*cfg) * cfg_cnt, GFP_KERNEL);
-	if (!cfg) {
-		dev_err(dev, "failed to alloc memory for configs\n");
+	if (!cfg)
 		goto free_gname;
-	}
 
 	/* Prepare a list of config settings */
 	for (idx = 0, cfg_cnt = 0; idx < ARRAY_SIZE(pcfgs); idx++) {
@@ -253,10 +247,8 @@ skip_cfgs:
 	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
 		fname = kasprintf(GFP_KERNEL,
 				  "%s%s", np->name, FUNCTION_SUFFIX);
-		if (!fname) {
-			dev_err(dev, "failed to alloc memory for func name\n");
+		if (!fname)
 			goto free_cfg;
-		}
 
 		map[*nmaps].data.mux.group = gname;
 		map[*nmaps].data.mux.function = fname;
@@ -647,10 +639,8 @@ static int exynos5440_pinctrl_parse_dt_pins(struct platform_device *pdev,
 	}
 
 	*pin_list = devm_kzalloc(dev, *npins * sizeof(**pin_list), GFP_KERNEL);
-	if (!*pin_list) {
-		dev_err(dev, "failed to allocate memory for pin list\n");
+	if (!*pin_list)
 		return -ENOMEM;
-	}
 
 	return of_property_read_u32_array(cfg_np, "samsung,exynos5440-pins",
 			*pin_list, *npins);
@@ -678,17 +668,15 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
 		return -EINVAL;
 
 	groups = devm_kzalloc(dev, grp_cnt * sizeof(*groups), GFP_KERNEL);
-	if (!groups) {
-		dev_err(dev, "failed allocate memory for ping group list\n");
+	if (!groups)
 		return -EINVAL;
-	}
+
 	grp = groups;
 
 	functions = devm_kzalloc(dev, grp_cnt * sizeof(*functions), GFP_KERNEL);
-	if (!functions) {
-		dev_err(dev, "failed to allocate memory for function list\n");
+	if (!functions)
 		return -EINVAL;
-	}
+
 	func = functions;
 
 	/*
@@ -708,10 +696,8 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
 		/* derive pin group name from the node name */
 		gname = devm_kasprintf(dev, GFP_KERNEL,
 				       "%s%s", cfg_np->name, GROUP_SUFFIX);
-		if (!gname) {
-			dev_err(dev, "failed to alloc memory for group name\n");
+		if (!gname)
 			return -ENOMEM;
-		}
 
 		grp->name = gname;
 		grp->pins = pin_list;
@@ -727,18 +713,13 @@ skip_to_pin_function:
 		/* derive function name from the node name */
 		fname = devm_kasprintf(dev, GFP_KERNEL,
 				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
-		if (!fname) {
-			dev_err(dev, "failed to alloc memory for func name\n");
+		if (!fname)
 			return -ENOMEM;
-		}
 
 		func->name = fname;
 		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
-		if (!func->groups) {
-			dev_err(dev, "failed to alloc memory for group list "
-					"in pin function");
+		if (!func->groups)
 			return -ENOMEM;
-		}
 		func->groups[0] = gname;
 		func->num_groups = gname ? 1 : 0;
 		func->function = function;
@@ -766,10 +747,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
 	int pin, ret;
 
 	ctrldesc = devm_kzalloc(dev, sizeof(*ctrldesc), GFP_KERNEL);
-	if (!ctrldesc) {
-		dev_err(dev, "could not allocate memory for pinctrl desc\n");
+	if (!ctrldesc)
 		return -ENOMEM;
-	}
 
 	ctrldesc->name = "exynos5440-pinctrl";
 	ctrldesc->owner = THIS_MODULE;
@@ -779,10 +758,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
 
 	pindesc = devm_kzalloc(&pdev->dev, sizeof(*pindesc) *
 				EXYNOS5440_MAX_PINS, GFP_KERNEL);
-	if (!pindesc) {
-		dev_err(&pdev->dev, "mem alloc for pin descriptors failed\n");
+	if (!pindesc)
 		return -ENOMEM;
-	}
 	ctrldesc->pins = pindesc;
 	ctrldesc->npins = EXYNOS5440_MAX_PINS;
 
@@ -796,10 +773,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
 	 */
 	pin_names = devm_kzalloc(&pdev->dev, sizeof(char) * PIN_NAME_LENGTH *
 					ctrldesc->npins, GFP_KERNEL);
-	if (!pin_names) {
-		dev_err(&pdev->dev, "mem alloc for pin names failed\n");
+	if (!pin_names)
 		return -ENOMEM;
-	}
 
 	/* for each pin, set the name of the pin */
 	for (pin = 0; pin < ctrldesc->npins; pin++) {
@@ -836,10 +811,8 @@ static int exynos5440_gpiolib_register(struct platform_device *pdev,
 	int ret;
 
 	gc = devm_kzalloc(&pdev->dev, sizeof(*gc), GFP_KERNEL);
-	if (!gc) {
-		dev_err(&pdev->dev, "mem alloc for gpio_chip failed\n");
+	if (!gc)
 		return -ENOMEM;
-	}
 
 	priv->gc = gc;
 	gc->base = 0;
@@ -941,10 +914,8 @@ static int exynos5440_gpio_irq_init(struct platform_device *pdev,
 
 	intd = devm_kzalloc(dev, sizeof(*intd) * EXYNOS5440_MAX_GPIO_INT,
 					GFP_KERNEL);
-	if (!intd) {
-		dev_err(dev, "failed to allocate memory for gpio intr data\n");
+	if (!intd)
 		return -ENOMEM;
-	}
 
 	for (i = 0; i < EXYNOS5440_MAX_GPIO_INT; i++) {
 		irq = irq_of_parse_and_map(dev->of_node, i);
@@ -987,10 +958,8 @@ static int exynos5440_pinctrl_probe(struct platform_device *pdev)
 	}
 
 	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
-	if (!priv) {
-		dev_err(dev, "could not allocate memory for private data\n");
+	if (!priv)
 		return -ENOMEM;
-	}
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	priv->reg_base = devm_ioremap_resource(&pdev->dev, res);

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* Re: [patch v2 1/2] pinctrl: samsung: don't truncate the last char
  2015-06-22 15:12       ` Dan Carpenter
  (?)
  (?)
@ 2015-06-22 23:51         ` Krzysztof Kozlowski
  -1 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Kozlowski @ 2015-06-22 23:51 UTC (permalink / raw)
  To: Dan Carpenter, Tomasz Figa
  Cc: Thomas Abraham, Linus Walleij, Kukjin Kim, linux-arm-kernel,
	linux-samsung-soc, linux-gpio, linux-kernel, kernel-janitors

On 23.06.2015 00:12, Dan Carpenter wrote:
> We were allocating enough space because sizeof("-grp") and
> sizeof("-mux") are both equal to 5 but in the snprintf() we only allowed
> for 4 characters so the last 'p' and 'x' characters were truncated.
> 
> The allocate and sprintf can be done in one step with the kasprintf().
> 
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Looks good:
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>

Best regards,
Krzysztof


> 
> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> index f5619fb..fa84db6 100644
> --- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> +++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> @@ -44,9 +44,7 @@
>  #define PIN_NAME_LENGTH		10
>  
>  #define GROUP_SUFFIX		"-grp"
> -#define GSUFFIX_LEN		sizeof(GROUP_SUFFIX)
>  #define FUNCTION_SUFFIX		"-mux"
> -#define FSUFFIX_LEN		sizeof(FUNCTION_SUFFIX)
>  
>  /*
>   * pin configuration type and its value are packed together into a 16-bits.
> @@ -215,12 +213,11 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  	 * Allocate memory for pin group name. The pin group name is derived
>  	 * from the node name from which these map entries are be created.
>  	 */
> -	gname = kzalloc(strlen(np->name) + GSUFFIX_LEN, GFP_KERNEL);
> +	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
>  	if (!gname) {
>  		dev_err(dev, "failed to alloc memory for group name\n");
>  		goto free_map;
>  	}
> -	snprintf(gname, strlen(np->name) + 4, "%s%s", np->name, GROUP_SUFFIX);
>  
>  	/*
>  	 * don't have config options? then skip over to creating function
> @@ -254,13 +251,12 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  skip_cfgs:
>  	/* create the function map entry */
>  	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
> -		fname = kzalloc(strlen(np->name) + FSUFFIX_LEN,	GFP_KERNEL);
> +		fname = kasprintf(GFP_KERNEL,
> +				  "%s%s", np->name, FUNCTION_SUFFIX);
>  		if (!fname) {
>  			dev_err(dev, "failed to alloc memory for func name\n");
>  			goto free_cfg;
>  		}
> -		snprintf(fname, strlen(np->name) + 4, "%s%s", np->name,
> -			 FUNCTION_SUFFIX);
>  
>  		map[*nmaps].data.mux.group = gname;
>  		map[*nmaps].data.mux.function = fname;
> @@ -710,14 +706,12 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
>  		}
>  
>  		/* derive pin group name from the node name */
> -		gname = devm_kzalloc(dev, strlen(cfg_np->name) + GSUFFIX_LEN,
> -					GFP_KERNEL);
> +		gname = devm_kasprintf(dev, GFP_KERNEL,
> +				       "%s%s", cfg_np->name, GROUP_SUFFIX);
>  		if (!gname) {
>  			dev_err(dev, "failed to alloc memory for group name\n");
>  			return -ENOMEM;
>  		}
> -		snprintf(gname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
> -			 GROUP_SUFFIX);
>  
>  		grp->name = gname;
>  		grp->pins = pin_list;
> @@ -731,14 +725,12 @@ skip_to_pin_function:
>  			continue;
>  
>  		/* derive function name from the node name */
> -		fname = devm_kzalloc(dev, strlen(cfg_np->name) + FSUFFIX_LEN,
> -					GFP_KERNEL);
> +		fname = devm_kasprintf(dev, GFP_KERNEL,
> +				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
>  		if (!fname) {
>  			dev_err(dev, "failed to alloc memory for func name\n");
>  			return -ENOMEM;
>  		}
> -		snprintf(fname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
> -			 FUNCTION_SUFFIX);
>  
>  		func->name = fname;
>  		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
> 

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [patch v2 1/2] pinctrl: samsung: don't truncate the last char
@ 2015-06-22 23:51         ` Krzysztof Kozlowski
  0 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Kozlowski @ 2015-06-22 23:51 UTC (permalink / raw)
  To: Dan Carpenter, Tomasz Figa
  Cc: Thomas Abraham, Linus Walleij, Kukjin Kim, linux-arm-kernel,
	linux-samsung-soc, linux-gpio, linux-kernel, kernel-janitors

On 23.06.2015 00:12, Dan Carpenter wrote:
> We were allocating enough space because sizeof("-grp") and
> sizeof("-mux") are both equal to 5 but in the snprintf() we only allowed
> for 4 characters so the last 'p' and 'x' characters were truncated.
> 
> The allocate and sprintf can be done in one step with the kasprintf().
> 
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Looks good:
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>

Best regards,
Krzysztof


> 
> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> index f5619fb..fa84db6 100644
> --- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> +++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> @@ -44,9 +44,7 @@
>  #define PIN_NAME_LENGTH		10
>  
>  #define GROUP_SUFFIX		"-grp"
> -#define GSUFFIX_LEN		sizeof(GROUP_SUFFIX)
>  #define FUNCTION_SUFFIX		"-mux"
> -#define FSUFFIX_LEN		sizeof(FUNCTION_SUFFIX)
>  
>  /*
>   * pin configuration type and its value are packed together into a 16-bits.
> @@ -215,12 +213,11 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  	 * Allocate memory for pin group name. The pin group name is derived
>  	 * from the node name from which these map entries are be created.
>  	 */
> -	gname = kzalloc(strlen(np->name) + GSUFFIX_LEN, GFP_KERNEL);
> +	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
>  	if (!gname) {
>  		dev_err(dev, "failed to alloc memory for group name\n");
>  		goto free_map;
>  	}
> -	snprintf(gname, strlen(np->name) + 4, "%s%s", np->name, GROUP_SUFFIX);
>  
>  	/*
>  	 * don't have config options? then skip over to creating function
> @@ -254,13 +251,12 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  skip_cfgs:
>  	/* create the function map entry */
>  	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
> -		fname = kzalloc(strlen(np->name) + FSUFFIX_LEN,	GFP_KERNEL);
> +		fname = kasprintf(GFP_KERNEL,
> +				  "%s%s", np->name, FUNCTION_SUFFIX);
>  		if (!fname) {
>  			dev_err(dev, "failed to alloc memory for func name\n");
>  			goto free_cfg;
>  		}
> -		snprintf(fname, strlen(np->name) + 4, "%s%s", np->name,
> -			 FUNCTION_SUFFIX);
>  
>  		map[*nmaps].data.mux.group = gname;
>  		map[*nmaps].data.mux.function = fname;
> @@ -710,14 +706,12 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
>  		}
>  
>  		/* derive pin group name from the node name */
> -		gname = devm_kzalloc(dev, strlen(cfg_np->name) + GSUFFIX_LEN,
> -					GFP_KERNEL);
> +		gname = devm_kasprintf(dev, GFP_KERNEL,
> +				       "%s%s", cfg_np->name, GROUP_SUFFIX);
>  		if (!gname) {
>  			dev_err(dev, "failed to alloc memory for group name\n");
>  			return -ENOMEM;
>  		}
> -		snprintf(gname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
> -			 GROUP_SUFFIX);
>  
>  		grp->name = gname;
>  		grp->pins = pin_list;
> @@ -731,14 +725,12 @@ skip_to_pin_function:
>  			continue;
>  
>  		/* derive function name from the node name */
> -		fname = devm_kzalloc(dev, strlen(cfg_np->name) + FSUFFIX_LEN,
> -					GFP_KERNEL);
> +		fname = devm_kasprintf(dev, GFP_KERNEL,
> +				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
>  		if (!fname) {
>  			dev_err(dev, "failed to alloc memory for func name\n");
>  			return -ENOMEM;
>  		}
> -		snprintf(fname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
> -			 FUNCTION_SUFFIX);
>  
>  		func->name = fname;
>  		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [patch v2 1/2] pinctrl: samsung: don't truncate the last char
@ 2015-06-22 23:51         ` Krzysztof Kozlowski
  0 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Kozlowski @ 2015-06-22 23:51 UTC (permalink / raw)
  To: linux-arm-kernel

On 23.06.2015 00:12, Dan Carpenter wrote:
> We were allocating enough space because sizeof("-grp") and
> sizeof("-mux") are both equal to 5 but in the snprintf() we only allowed
> for 4 characters so the last 'p' and 'x' characters were truncated.
> 
> The allocate and sprintf can be done in one step with the kasprintf().
> 
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Looks good:
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>

Best regards,
Krzysztof


> 
> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> index f5619fb..fa84db6 100644
> --- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> +++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> @@ -44,9 +44,7 @@
>  #define PIN_NAME_LENGTH		10
>  
>  #define GROUP_SUFFIX		"-grp"
> -#define GSUFFIX_LEN		sizeof(GROUP_SUFFIX)
>  #define FUNCTION_SUFFIX		"-mux"
> -#define FSUFFIX_LEN		sizeof(FUNCTION_SUFFIX)
>  
>  /*
>   * pin configuration type and its value are packed together into a 16-bits.
> @@ -215,12 +213,11 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  	 * Allocate memory for pin group name. The pin group name is derived
>  	 * from the node name from which these map entries are be created.
>  	 */
> -	gname = kzalloc(strlen(np->name) + GSUFFIX_LEN, GFP_KERNEL);
> +	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
>  	if (!gname) {
>  		dev_err(dev, "failed to alloc memory for group name\n");
>  		goto free_map;
>  	}
> -	snprintf(gname, strlen(np->name) + 4, "%s%s", np->name, GROUP_SUFFIX);
>  
>  	/*
>  	 * don't have config options? then skip over to creating function
> @@ -254,13 +251,12 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  skip_cfgs:
>  	/* create the function map entry */
>  	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
> -		fname = kzalloc(strlen(np->name) + FSUFFIX_LEN,	GFP_KERNEL);
> +		fname = kasprintf(GFP_KERNEL,
> +				  "%s%s", np->name, FUNCTION_SUFFIX);
>  		if (!fname) {
>  			dev_err(dev, "failed to alloc memory for func name\n");
>  			goto free_cfg;
>  		}
> -		snprintf(fname, strlen(np->name) + 4, "%s%s", np->name,
> -			 FUNCTION_SUFFIX);
>  
>  		map[*nmaps].data.mux.group = gname;
>  		map[*nmaps].data.mux.function = fname;
> @@ -710,14 +706,12 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
>  		}
>  
>  		/* derive pin group name from the node name */
> -		gname = devm_kzalloc(dev, strlen(cfg_np->name) + GSUFFIX_LEN,
> -					GFP_KERNEL);
> +		gname = devm_kasprintf(dev, GFP_KERNEL,
> +				       "%s%s", cfg_np->name, GROUP_SUFFIX);
>  		if (!gname) {
>  			dev_err(dev, "failed to alloc memory for group name\n");
>  			return -ENOMEM;
>  		}
> -		snprintf(gname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
> -			 GROUP_SUFFIX);
>  
>  		grp->name = gname;
>  		grp->pins = pin_list;
> @@ -731,14 +725,12 @@ skip_to_pin_function:
>  			continue;
>  
>  		/* derive function name from the node name */
> -		fname = devm_kzalloc(dev, strlen(cfg_np->name) + FSUFFIX_LEN,
> -					GFP_KERNEL);
> +		fname = devm_kasprintf(dev, GFP_KERNEL,
> +				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
>  		if (!fname) {
>  			dev_err(dev, "failed to alloc memory for func name\n");
>  			return -ENOMEM;
>  		}
> -		snprintf(fname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
> -			 FUNCTION_SUFFIX);
>  
>  		func->name = fname;
>  		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
> 

--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [patch v2 1/2] pinctrl: samsung: don't truncate the last char
@ 2015-06-22 23:51         ` Krzysztof Kozlowski
  0 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Kozlowski @ 2015-06-22 23:51 UTC (permalink / raw)
  To: linux-arm-kernel

On 23.06.2015 00:12, Dan Carpenter wrote:
> We were allocating enough space because sizeof("-grp") and
> sizeof("-mux") are both equal to 5 but in the snprintf() we only allowed
> for 4 characters so the last 'p' and 'x' characters were truncated.
> 
> The allocate and sprintf can be done in one step with the kasprintf().
> 
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Looks good:
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>

Best regards,
Krzysztof


> 
> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> index f5619fb..fa84db6 100644
> --- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> +++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> @@ -44,9 +44,7 @@
>  #define PIN_NAME_LENGTH		10
>  
>  #define GROUP_SUFFIX		"-grp"
> -#define GSUFFIX_LEN		sizeof(GROUP_SUFFIX)
>  #define FUNCTION_SUFFIX		"-mux"
> -#define FSUFFIX_LEN		sizeof(FUNCTION_SUFFIX)
>  
>  /*
>   * pin configuration type and its value are packed together into a 16-bits.
> @@ -215,12 +213,11 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  	 * Allocate memory for pin group name. The pin group name is derived
>  	 * from the node name from which these map entries are be created.
>  	 */
> -	gname = kzalloc(strlen(np->name) + GSUFFIX_LEN, GFP_KERNEL);
> +	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
>  	if (!gname) {
>  		dev_err(dev, "failed to alloc memory for group name\n");
>  		goto free_map;
>  	}
> -	snprintf(gname, strlen(np->name) + 4, "%s%s", np->name, GROUP_SUFFIX);
>  
>  	/*
>  	 * don't have config options? then skip over to creating function
> @@ -254,13 +251,12 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  skip_cfgs:
>  	/* create the function map entry */
>  	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
> -		fname = kzalloc(strlen(np->name) + FSUFFIX_LEN,	GFP_KERNEL);
> +		fname = kasprintf(GFP_KERNEL,
> +				  "%s%s", np->name, FUNCTION_SUFFIX);
>  		if (!fname) {
>  			dev_err(dev, "failed to alloc memory for func name\n");
>  			goto free_cfg;
>  		}
> -		snprintf(fname, strlen(np->name) + 4, "%s%s", np->name,
> -			 FUNCTION_SUFFIX);
>  
>  		map[*nmaps].data.mux.group = gname;
>  		map[*nmaps].data.mux.function = fname;
> @@ -710,14 +706,12 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
>  		}
>  
>  		/* derive pin group name from the node name */
> -		gname = devm_kzalloc(dev, strlen(cfg_np->name) + GSUFFIX_LEN,
> -					GFP_KERNEL);
> +		gname = devm_kasprintf(dev, GFP_KERNEL,
> +				       "%s%s", cfg_np->name, GROUP_SUFFIX);
>  		if (!gname) {
>  			dev_err(dev, "failed to alloc memory for group name\n");
>  			return -ENOMEM;
>  		}
> -		snprintf(gname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
> -			 GROUP_SUFFIX);
>  
>  		grp->name = gname;
>  		grp->pins = pin_list;
> @@ -731,14 +725,12 @@ skip_to_pin_function:
>  			continue;
>  
>  		/* derive function name from the node name */
> -		fname = devm_kzalloc(dev, strlen(cfg_np->name) + FSUFFIX_LEN,
> -					GFP_KERNEL);
> +		fname = devm_kasprintf(dev, GFP_KERNEL,
> +				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
>  		if (!fname) {
>  			dev_err(dev, "failed to alloc memory for func name\n");
>  			return -ENOMEM;
>  		}
> -		snprintf(fname, strlen(cfg_np->name) + 4, "%s%s", cfg_np->name,
> -			 FUNCTION_SUFFIX);
>  
>  		func->name = fname;
>  		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
> 

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages
  2015-06-22 15:13       ` Dan Carpenter
  (?)
  (?)
@ 2015-06-22 23:53         ` Krzysztof Kozlowski
  -1 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Kozlowski @ 2015-06-22 23:53 UTC (permalink / raw)
  To: Dan Carpenter, Tomasz Figa
  Cc: Thomas Abraham, Linus Walleij, Kukjin Kim, linux-arm-kernel,
	linux-samsung-soc, linux-gpio, linux-kernel, kernel-janitors

On 23.06.2015 00:13, Dan Carpenter wrote:
> Checkpatch.pl complains about these:
> 
> WARNING: Possible unnecessary 'out of memory' message
> 
> The messages use a little extra RAM and they add a few extra lines of
> code.  We're probably never going to hit these out of memory situations
> but if we did then kmalloc() has pretty good error messages built-in.
> 
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>


Looks good:
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>

Best regards,
Krzysztof


> 
> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> index fa84db6..5574b8a 100644
> --- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> +++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> @@ -203,10 +203,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  
>  	/* Allocate memory for pin-map entries */
>  	map = kzalloc(sizeof(*map) * map_cnt, GFP_KERNEL);
> -	if (!map) {
> -		dev_err(dev, "could not alloc memory for pin-maps\n");
> +	if (!map)
>  		return -ENOMEM;
> -	}
>  	*nmaps = 0;
>  
>  	/*
> @@ -214,10 +212,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  	 * from the node name from which these map entries are be created.
>  	 */
>  	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
> -	if (!gname) {
> -		dev_err(dev, "failed to alloc memory for group name\n");
> +	if (!gname)
>  		goto free_map;
> -	}
>  
>  	/*
>  	 * don't have config options? then skip over to creating function
> @@ -228,10 +224,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  
>  	/* Allocate memory for config entries */
>  	cfg = kzalloc(sizeof(*cfg) * cfg_cnt, GFP_KERNEL);
> -	if (!cfg) {
> -		dev_err(dev, "failed to alloc memory for configs\n");
> +	if (!cfg)
>  		goto free_gname;
> -	}
>  
>  	/* Prepare a list of config settings */
>  	for (idx = 0, cfg_cnt = 0; idx < ARRAY_SIZE(pcfgs); idx++) {
> @@ -253,10 +247,8 @@ skip_cfgs:
>  	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
>  		fname = kasprintf(GFP_KERNEL,
>  				  "%s%s", np->name, FUNCTION_SUFFIX);
> -		if (!fname) {
> -			dev_err(dev, "failed to alloc memory for func name\n");
> +		if (!fname)
>  			goto free_cfg;
> -		}
>  
>  		map[*nmaps].data.mux.group = gname;
>  		map[*nmaps].data.mux.function = fname;
> @@ -647,10 +639,8 @@ static int exynos5440_pinctrl_parse_dt_pins(struct platform_device *pdev,
>  	}
>  
>  	*pin_list = devm_kzalloc(dev, *npins * sizeof(**pin_list), GFP_KERNEL);
> -	if (!*pin_list) {
> -		dev_err(dev, "failed to allocate memory for pin list\n");
> +	if (!*pin_list)
>  		return -ENOMEM;
> -	}
>  
>  	return of_property_read_u32_array(cfg_np, "samsung,exynos5440-pins",
>  			*pin_list, *npins);
> @@ -678,17 +668,15 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
>  		return -EINVAL;
>  
>  	groups = devm_kzalloc(dev, grp_cnt * sizeof(*groups), GFP_KERNEL);
> -	if (!groups) {
> -		dev_err(dev, "failed allocate memory for ping group list\n");
> +	if (!groups)
>  		return -EINVAL;
> -	}
> +
>  	grp = groups;
>  
>  	functions = devm_kzalloc(dev, grp_cnt * sizeof(*functions), GFP_KERNEL);
> -	if (!functions) {
> -		dev_err(dev, "failed to allocate memory for function list\n");
> +	if (!functions)
>  		return -EINVAL;
> -	}
> +
>  	func = functions;
>  
>  	/*
> @@ -708,10 +696,8 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
>  		/* derive pin group name from the node name */
>  		gname = devm_kasprintf(dev, GFP_KERNEL,
>  				       "%s%s", cfg_np->name, GROUP_SUFFIX);
> -		if (!gname) {
> -			dev_err(dev, "failed to alloc memory for group name\n");
> +		if (!gname)
>  			return -ENOMEM;
> -		}
>  
>  		grp->name = gname;
>  		grp->pins = pin_list;
> @@ -727,18 +713,13 @@ skip_to_pin_function:
>  		/* derive function name from the node name */
>  		fname = devm_kasprintf(dev, GFP_KERNEL,
>  				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
> -		if (!fname) {
> -			dev_err(dev, "failed to alloc memory for func name\n");
> +		if (!fname)
>  			return -ENOMEM;
> -		}
>  
>  		func->name = fname;
>  		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
> -		if (!func->groups) {
> -			dev_err(dev, "failed to alloc memory for group list "
> -					"in pin function");
> +		if (!func->groups)
>  			return -ENOMEM;
> -		}
>  		func->groups[0] = gname;
>  		func->num_groups = gname ? 1 : 0;
>  		func->function = function;
> @@ -766,10 +747,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
>  	int pin, ret;
>  
>  	ctrldesc = devm_kzalloc(dev, sizeof(*ctrldesc), GFP_KERNEL);
> -	if (!ctrldesc) {
> -		dev_err(dev, "could not allocate memory for pinctrl desc\n");
> +	if (!ctrldesc)
>  		return -ENOMEM;
> -	}
>  
>  	ctrldesc->name = "exynos5440-pinctrl";
>  	ctrldesc->owner = THIS_MODULE;
> @@ -779,10 +758,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
>  
>  	pindesc = devm_kzalloc(&pdev->dev, sizeof(*pindesc) *
>  				EXYNOS5440_MAX_PINS, GFP_KERNEL);
> -	if (!pindesc) {
> -		dev_err(&pdev->dev, "mem alloc for pin descriptors failed\n");
> +	if (!pindesc)
>  		return -ENOMEM;
> -	}
>  	ctrldesc->pins = pindesc;
>  	ctrldesc->npins = EXYNOS5440_MAX_PINS;
>  
> @@ -796,10 +773,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
>  	 */
>  	pin_names = devm_kzalloc(&pdev->dev, sizeof(char) * PIN_NAME_LENGTH *
>  					ctrldesc->npins, GFP_KERNEL);
> -	if (!pin_names) {
> -		dev_err(&pdev->dev, "mem alloc for pin names failed\n");
> +	if (!pin_names)
>  		return -ENOMEM;
> -	}
>  
>  	/* for each pin, set the name of the pin */
>  	for (pin = 0; pin < ctrldesc->npins; pin++) {
> @@ -836,10 +811,8 @@ static int exynos5440_gpiolib_register(struct platform_device *pdev,
>  	int ret;
>  
>  	gc = devm_kzalloc(&pdev->dev, sizeof(*gc), GFP_KERNEL);
> -	if (!gc) {
> -		dev_err(&pdev->dev, "mem alloc for gpio_chip failed\n");
> +	if (!gc)
>  		return -ENOMEM;
> -	}
>  
>  	priv->gc = gc;
>  	gc->base = 0;
> @@ -941,10 +914,8 @@ static int exynos5440_gpio_irq_init(struct platform_device *pdev,
>  
>  	intd = devm_kzalloc(dev, sizeof(*intd) * EXYNOS5440_MAX_GPIO_INT,
>  					GFP_KERNEL);
> -	if (!intd) {
> -		dev_err(dev, "failed to allocate memory for gpio intr data\n");
> +	if (!intd)
>  		return -ENOMEM;
> -	}
>  
>  	for (i = 0; i < EXYNOS5440_MAX_GPIO_INT; i++) {
>  		irq = irq_of_parse_and_map(dev->of_node, i);
> @@ -987,10 +958,8 @@ static int exynos5440_pinctrl_probe(struct platform_device *pdev)
>  	}
>  
>  	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
> -	if (!priv) {
> -		dev_err(dev, "could not allocate memory for private data\n");
> +	if (!priv)
>  		return -ENOMEM;
> -	}
>  
>  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	priv->reg_base = devm_ioremap_resource(&pdev->dev, res);
> 

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages
@ 2015-06-22 23:53         ` Krzysztof Kozlowski
  0 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Kozlowski @ 2015-06-22 23:53 UTC (permalink / raw)
  To: Dan Carpenter, Tomasz Figa
  Cc: Thomas Abraham, Linus Walleij, Kukjin Kim, linux-arm-kernel,
	linux-samsung-soc, linux-gpio, linux-kernel, kernel-janitors

On 23.06.2015 00:13, Dan Carpenter wrote:
> Checkpatch.pl complains about these:
> 
> WARNING: Possible unnecessary 'out of memory' message
> 
> The messages use a little extra RAM and they add a few extra lines of
> code.  We're probably never going to hit these out of memory situations
> but if we did then kmalloc() has pretty good error messages built-in.
> 
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>


Looks good:
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>

Best regards,
Krzysztof


> 
> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> index fa84db6..5574b8a 100644
> --- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> +++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> @@ -203,10 +203,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  
>  	/* Allocate memory for pin-map entries */
>  	map = kzalloc(sizeof(*map) * map_cnt, GFP_KERNEL);
> -	if (!map) {
> -		dev_err(dev, "could not alloc memory for pin-maps\n");
> +	if (!map)
>  		return -ENOMEM;
> -	}
>  	*nmaps = 0;
>  
>  	/*
> @@ -214,10 +212,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  	 * from the node name from which these map entries are be created.
>  	 */
>  	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
> -	if (!gname) {
> -		dev_err(dev, "failed to alloc memory for group name\n");
> +	if (!gname)
>  		goto free_map;
> -	}
>  
>  	/*
>  	 * don't have config options? then skip over to creating function
> @@ -228,10 +224,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  
>  	/* Allocate memory for config entries */
>  	cfg = kzalloc(sizeof(*cfg) * cfg_cnt, GFP_KERNEL);
> -	if (!cfg) {
> -		dev_err(dev, "failed to alloc memory for configs\n");
> +	if (!cfg)
>  		goto free_gname;
> -	}
>  
>  	/* Prepare a list of config settings */
>  	for (idx = 0, cfg_cnt = 0; idx < ARRAY_SIZE(pcfgs); idx++) {
> @@ -253,10 +247,8 @@ skip_cfgs:
>  	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
>  		fname = kasprintf(GFP_KERNEL,
>  				  "%s%s", np->name, FUNCTION_SUFFIX);
> -		if (!fname) {
> -			dev_err(dev, "failed to alloc memory for func name\n");
> +		if (!fname)
>  			goto free_cfg;
> -		}
>  
>  		map[*nmaps].data.mux.group = gname;
>  		map[*nmaps].data.mux.function = fname;
> @@ -647,10 +639,8 @@ static int exynos5440_pinctrl_parse_dt_pins(struct platform_device *pdev,
>  	}
>  
>  	*pin_list = devm_kzalloc(dev, *npins * sizeof(**pin_list), GFP_KERNEL);
> -	if (!*pin_list) {
> -		dev_err(dev, "failed to allocate memory for pin list\n");
> +	if (!*pin_list)
>  		return -ENOMEM;
> -	}
>  
>  	return of_property_read_u32_array(cfg_np, "samsung,exynos5440-pins",
>  			*pin_list, *npins);
> @@ -678,17 +668,15 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
>  		return -EINVAL;
>  
>  	groups = devm_kzalloc(dev, grp_cnt * sizeof(*groups), GFP_KERNEL);
> -	if (!groups) {
> -		dev_err(dev, "failed allocate memory for ping group list\n");
> +	if (!groups)
>  		return -EINVAL;
> -	}
> +
>  	grp = groups;
>  
>  	functions = devm_kzalloc(dev, grp_cnt * sizeof(*functions), GFP_KERNEL);
> -	if (!functions) {
> -		dev_err(dev, "failed to allocate memory for function list\n");
> +	if (!functions)
>  		return -EINVAL;
> -	}
> +
>  	func = functions;
>  
>  	/*
> @@ -708,10 +696,8 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
>  		/* derive pin group name from the node name */
>  		gname = devm_kasprintf(dev, GFP_KERNEL,
>  				       "%s%s", cfg_np->name, GROUP_SUFFIX);
> -		if (!gname) {
> -			dev_err(dev, "failed to alloc memory for group name\n");
> +		if (!gname)
>  			return -ENOMEM;
> -		}
>  
>  		grp->name = gname;
>  		grp->pins = pin_list;
> @@ -727,18 +713,13 @@ skip_to_pin_function:
>  		/* derive function name from the node name */
>  		fname = devm_kasprintf(dev, GFP_KERNEL,
>  				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
> -		if (!fname) {
> -			dev_err(dev, "failed to alloc memory for func name\n");
> +		if (!fname)
>  			return -ENOMEM;
> -		}
>  
>  		func->name = fname;
>  		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
> -		if (!func->groups) {
> -			dev_err(dev, "failed to alloc memory for group list "
> -					"in pin function");
> +		if (!func->groups)
>  			return -ENOMEM;
> -		}
>  		func->groups[0] = gname;
>  		func->num_groups = gname ? 1 : 0;
>  		func->function = function;
> @@ -766,10 +747,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
>  	int pin, ret;
>  
>  	ctrldesc = devm_kzalloc(dev, sizeof(*ctrldesc), GFP_KERNEL);
> -	if (!ctrldesc) {
> -		dev_err(dev, "could not allocate memory for pinctrl desc\n");
> +	if (!ctrldesc)
>  		return -ENOMEM;
> -	}
>  
>  	ctrldesc->name = "exynos5440-pinctrl";
>  	ctrldesc->owner = THIS_MODULE;
> @@ -779,10 +758,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
>  
>  	pindesc = devm_kzalloc(&pdev->dev, sizeof(*pindesc) *
>  				EXYNOS5440_MAX_PINS, GFP_KERNEL);
> -	if (!pindesc) {
> -		dev_err(&pdev->dev, "mem alloc for pin descriptors failed\n");
> +	if (!pindesc)
>  		return -ENOMEM;
> -	}
>  	ctrldesc->pins = pindesc;
>  	ctrldesc->npins = EXYNOS5440_MAX_PINS;
>  
> @@ -796,10 +773,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
>  	 */
>  	pin_names = devm_kzalloc(&pdev->dev, sizeof(char) * PIN_NAME_LENGTH *
>  					ctrldesc->npins, GFP_KERNEL);
> -	if (!pin_names) {
> -		dev_err(&pdev->dev, "mem alloc for pin names failed\n");
> +	if (!pin_names)
>  		return -ENOMEM;
> -	}
>  
>  	/* for each pin, set the name of the pin */
>  	for (pin = 0; pin < ctrldesc->npins; pin++) {
> @@ -836,10 +811,8 @@ static int exynos5440_gpiolib_register(struct platform_device *pdev,
>  	int ret;
>  
>  	gc = devm_kzalloc(&pdev->dev, sizeof(*gc), GFP_KERNEL);
> -	if (!gc) {
> -		dev_err(&pdev->dev, "mem alloc for gpio_chip failed\n");
> +	if (!gc)
>  		return -ENOMEM;
> -	}
>  
>  	priv->gc = gc;
>  	gc->base = 0;
> @@ -941,10 +914,8 @@ static int exynos5440_gpio_irq_init(struct platform_device *pdev,
>  
>  	intd = devm_kzalloc(dev, sizeof(*intd) * EXYNOS5440_MAX_GPIO_INT,
>  					GFP_KERNEL);
> -	if (!intd) {
> -		dev_err(dev, "failed to allocate memory for gpio intr data\n");
> +	if (!intd)
>  		return -ENOMEM;
> -	}
>  
>  	for (i = 0; i < EXYNOS5440_MAX_GPIO_INT; i++) {
>  		irq = irq_of_parse_and_map(dev->of_node, i);
> @@ -987,10 +958,8 @@ static int exynos5440_pinctrl_probe(struct platform_device *pdev)
>  	}
>  
>  	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
> -	if (!priv) {
> -		dev_err(dev, "could not allocate memory for private data\n");
> +	if (!priv)
>  		return -ENOMEM;
> -	}
>  
>  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	priv->reg_base = devm_ioremap_resource(&pdev->dev, res);
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages
@ 2015-06-22 23:53         ` Krzysztof Kozlowski
  0 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Kozlowski @ 2015-06-22 23:53 UTC (permalink / raw)
  To: linux-arm-kernel

On 23.06.2015 00:13, Dan Carpenter wrote:
> Checkpatch.pl complains about these:
> 
> WARNING: Possible unnecessary 'out of memory' message
> 
> The messages use a little extra RAM and they add a few extra lines of
> code.  We're probably never going to hit these out of memory situations
> but if we did then kmalloc() has pretty good error messages built-in.
> 
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>


Looks good:
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>

Best regards,
Krzysztof


> 
> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> index fa84db6..5574b8a 100644
> --- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> +++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> @@ -203,10 +203,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  
>  	/* Allocate memory for pin-map entries */
>  	map = kzalloc(sizeof(*map) * map_cnt, GFP_KERNEL);
> -	if (!map) {
> -		dev_err(dev, "could not alloc memory for pin-maps\n");
> +	if (!map)
>  		return -ENOMEM;
> -	}
>  	*nmaps = 0;
>  
>  	/*
> @@ -214,10 +212,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  	 * from the node name from which these map entries are be created.
>  	 */
>  	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
> -	if (!gname) {
> -		dev_err(dev, "failed to alloc memory for group name\n");
> +	if (!gname)
>  		goto free_map;
> -	}
>  
>  	/*
>  	 * don't have config options? then skip over to creating function
> @@ -228,10 +224,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  
>  	/* Allocate memory for config entries */
>  	cfg = kzalloc(sizeof(*cfg) * cfg_cnt, GFP_KERNEL);
> -	if (!cfg) {
> -		dev_err(dev, "failed to alloc memory for configs\n");
> +	if (!cfg)
>  		goto free_gname;
> -	}
>  
>  	/* Prepare a list of config settings */
>  	for (idx = 0, cfg_cnt = 0; idx < ARRAY_SIZE(pcfgs); idx++) {
> @@ -253,10 +247,8 @@ skip_cfgs:
>  	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
>  		fname = kasprintf(GFP_KERNEL,
>  				  "%s%s", np->name, FUNCTION_SUFFIX);
> -		if (!fname) {
> -			dev_err(dev, "failed to alloc memory for func name\n");
> +		if (!fname)
>  			goto free_cfg;
> -		}
>  
>  		map[*nmaps].data.mux.group = gname;
>  		map[*nmaps].data.mux.function = fname;
> @@ -647,10 +639,8 @@ static int exynos5440_pinctrl_parse_dt_pins(struct platform_device *pdev,
>  	}
>  
>  	*pin_list = devm_kzalloc(dev, *npins * sizeof(**pin_list), GFP_KERNEL);
> -	if (!*pin_list) {
> -		dev_err(dev, "failed to allocate memory for pin list\n");
> +	if (!*pin_list)
>  		return -ENOMEM;
> -	}
>  
>  	return of_property_read_u32_array(cfg_np, "samsung,exynos5440-pins",
>  			*pin_list, *npins);
> @@ -678,17 +668,15 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
>  		return -EINVAL;
>  
>  	groups = devm_kzalloc(dev, grp_cnt * sizeof(*groups), GFP_KERNEL);
> -	if (!groups) {
> -		dev_err(dev, "failed allocate memory for ping group list\n");
> +	if (!groups)
>  		return -EINVAL;
> -	}
> +
>  	grp = groups;
>  
>  	functions = devm_kzalloc(dev, grp_cnt * sizeof(*functions), GFP_KERNEL);
> -	if (!functions) {
> -		dev_err(dev, "failed to allocate memory for function list\n");
> +	if (!functions)
>  		return -EINVAL;
> -	}
> +
>  	func = functions;
>  
>  	/*
> @@ -708,10 +696,8 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
>  		/* derive pin group name from the node name */
>  		gname = devm_kasprintf(dev, GFP_KERNEL,
>  				       "%s%s", cfg_np->name, GROUP_SUFFIX);
> -		if (!gname) {
> -			dev_err(dev, "failed to alloc memory for group name\n");
> +		if (!gname)
>  			return -ENOMEM;
> -		}
>  
>  		grp->name = gname;
>  		grp->pins = pin_list;
> @@ -727,18 +713,13 @@ skip_to_pin_function:
>  		/* derive function name from the node name */
>  		fname = devm_kasprintf(dev, GFP_KERNEL,
>  				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
> -		if (!fname) {
> -			dev_err(dev, "failed to alloc memory for func name\n");
> +		if (!fname)
>  			return -ENOMEM;
> -		}
>  
>  		func->name = fname;
>  		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
> -		if (!func->groups) {
> -			dev_err(dev, "failed to alloc memory for group list "
> -					"in pin function");
> +		if (!func->groups)
>  			return -ENOMEM;
> -		}
>  		func->groups[0] = gname;
>  		func->num_groups = gname ? 1 : 0;
>  		func->function = function;
> @@ -766,10 +747,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
>  	int pin, ret;
>  
>  	ctrldesc = devm_kzalloc(dev, sizeof(*ctrldesc), GFP_KERNEL);
> -	if (!ctrldesc) {
> -		dev_err(dev, "could not allocate memory for pinctrl desc\n");
> +	if (!ctrldesc)
>  		return -ENOMEM;
> -	}
>  
>  	ctrldesc->name = "exynos5440-pinctrl";
>  	ctrldesc->owner = THIS_MODULE;
> @@ -779,10 +758,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
>  
>  	pindesc = devm_kzalloc(&pdev->dev, sizeof(*pindesc) *
>  				EXYNOS5440_MAX_PINS, GFP_KERNEL);
> -	if (!pindesc) {
> -		dev_err(&pdev->dev, "mem alloc for pin descriptors failed\n");
> +	if (!pindesc)
>  		return -ENOMEM;
> -	}
>  	ctrldesc->pins = pindesc;
>  	ctrldesc->npins = EXYNOS5440_MAX_PINS;
>  
> @@ -796,10 +773,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
>  	 */
>  	pin_names = devm_kzalloc(&pdev->dev, sizeof(char) * PIN_NAME_LENGTH *
>  					ctrldesc->npins, GFP_KERNEL);
> -	if (!pin_names) {
> -		dev_err(&pdev->dev, "mem alloc for pin names failed\n");
> +	if (!pin_names)
>  		return -ENOMEM;
> -	}
>  
>  	/* for each pin, set the name of the pin */
>  	for (pin = 0; pin < ctrldesc->npins; pin++) {
> @@ -836,10 +811,8 @@ static int exynos5440_gpiolib_register(struct platform_device *pdev,
>  	int ret;
>  
>  	gc = devm_kzalloc(&pdev->dev, sizeof(*gc), GFP_KERNEL);
> -	if (!gc) {
> -		dev_err(&pdev->dev, "mem alloc for gpio_chip failed\n");
> +	if (!gc)
>  		return -ENOMEM;
> -	}
>  
>  	priv->gc = gc;
>  	gc->base = 0;
> @@ -941,10 +914,8 @@ static int exynos5440_gpio_irq_init(struct platform_device *pdev,
>  
>  	intd = devm_kzalloc(dev, sizeof(*intd) * EXYNOS5440_MAX_GPIO_INT,
>  					GFP_KERNEL);
> -	if (!intd) {
> -		dev_err(dev, "failed to allocate memory for gpio intr data\n");
> +	if (!intd)
>  		return -ENOMEM;
> -	}
>  
>  	for (i = 0; i < EXYNOS5440_MAX_GPIO_INT; i++) {
>  		irq = irq_of_parse_and_map(dev->of_node, i);
> @@ -987,10 +958,8 @@ static int exynos5440_pinctrl_probe(struct platform_device *pdev)
>  	}
>  
>  	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
> -	if (!priv) {
> -		dev_err(dev, "could not allocate memory for private data\n");
> +	if (!priv)
>  		return -ENOMEM;
> -	}
>  
>  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	priv->reg_base = devm_ioremap_resource(&pdev->dev, res);
> 

--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages
@ 2015-06-22 23:53         ` Krzysztof Kozlowski
  0 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Kozlowski @ 2015-06-22 23:53 UTC (permalink / raw)
  To: linux-arm-kernel

On 23.06.2015 00:13, Dan Carpenter wrote:
> Checkpatch.pl complains about these:
> 
> WARNING: Possible unnecessary 'out of memory' message
> 
> The messages use a little extra RAM and they add a few extra lines of
> code.  We're probably never going to hit these out of memory situations
> but if we did then kmalloc() has pretty good error messages built-in.
> 
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>


Looks good:
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>

Best regards,
Krzysztof


> 
> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> index fa84db6..5574b8a 100644
> --- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> +++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
> @@ -203,10 +203,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  
>  	/* Allocate memory for pin-map entries */
>  	map = kzalloc(sizeof(*map) * map_cnt, GFP_KERNEL);
> -	if (!map) {
> -		dev_err(dev, "could not alloc memory for pin-maps\n");
> +	if (!map)
>  		return -ENOMEM;
> -	}
>  	*nmaps = 0;
>  
>  	/*
> @@ -214,10 +212,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  	 * from the node name from which these map entries are be created.
>  	 */
>  	gname = kasprintf(GFP_KERNEL, "%s%s", np->name, GROUP_SUFFIX);
> -	if (!gname) {
> -		dev_err(dev, "failed to alloc memory for group name\n");
> +	if (!gname)
>  		goto free_map;
> -	}
>  
>  	/*
>  	 * don't have config options? then skip over to creating function
> @@ -228,10 +224,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,
>  
>  	/* Allocate memory for config entries */
>  	cfg = kzalloc(sizeof(*cfg) * cfg_cnt, GFP_KERNEL);
> -	if (!cfg) {
> -		dev_err(dev, "failed to alloc memory for configs\n");
> +	if (!cfg)
>  		goto free_gname;
> -	}
>  
>  	/* Prepare a list of config settings */
>  	for (idx = 0, cfg_cnt = 0; idx < ARRAY_SIZE(pcfgs); idx++) {
> @@ -253,10 +247,8 @@ skip_cfgs:
>  	if (of_find_property(np, "samsung,exynos5440-pin-function", NULL)) {
>  		fname = kasprintf(GFP_KERNEL,
>  				  "%s%s", np->name, FUNCTION_SUFFIX);
> -		if (!fname) {
> -			dev_err(dev, "failed to alloc memory for func name\n");
> +		if (!fname)
>  			goto free_cfg;
> -		}
>  
>  		map[*nmaps].data.mux.group = gname;
>  		map[*nmaps].data.mux.function = fname;
> @@ -647,10 +639,8 @@ static int exynos5440_pinctrl_parse_dt_pins(struct platform_device *pdev,
>  	}
>  
>  	*pin_list = devm_kzalloc(dev, *npins * sizeof(**pin_list), GFP_KERNEL);
> -	if (!*pin_list) {
> -		dev_err(dev, "failed to allocate memory for pin list\n");
> +	if (!*pin_list)
>  		return -ENOMEM;
> -	}
>  
>  	return of_property_read_u32_array(cfg_np, "samsung,exynos5440-pins",
>  			*pin_list, *npins);
> @@ -678,17 +668,15 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
>  		return -EINVAL;
>  
>  	groups = devm_kzalloc(dev, grp_cnt * sizeof(*groups), GFP_KERNEL);
> -	if (!groups) {
> -		dev_err(dev, "failed allocate memory for ping group list\n");
> +	if (!groups)
>  		return -EINVAL;
> -	}
> +
>  	grp = groups;
>  
>  	functions = devm_kzalloc(dev, grp_cnt * sizeof(*functions), GFP_KERNEL);
> -	if (!functions) {
> -		dev_err(dev, "failed to allocate memory for function list\n");
> +	if (!functions)
>  		return -EINVAL;
> -	}
> +
>  	func = functions;
>  
>  	/*
> @@ -708,10 +696,8 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,
>  		/* derive pin group name from the node name */
>  		gname = devm_kasprintf(dev, GFP_KERNEL,
>  				       "%s%s", cfg_np->name, GROUP_SUFFIX);
> -		if (!gname) {
> -			dev_err(dev, "failed to alloc memory for group name\n");
> +		if (!gname)
>  			return -ENOMEM;
> -		}
>  
>  		grp->name = gname;
>  		grp->pins = pin_list;
> @@ -727,18 +713,13 @@ skip_to_pin_function:
>  		/* derive function name from the node name */
>  		fname = devm_kasprintf(dev, GFP_KERNEL,
>  				       "%s%s", cfg_np->name, FUNCTION_SUFFIX);
> -		if (!fname) {
> -			dev_err(dev, "failed to alloc memory for func name\n");
> +		if (!fname)
>  			return -ENOMEM;
> -		}
>  
>  		func->name = fname;
>  		func->groups = devm_kzalloc(dev, sizeof(char *), GFP_KERNEL);
> -		if (!func->groups) {
> -			dev_err(dev, "failed to alloc memory for group list "
> -					"in pin function");
> +		if (!func->groups)
>  			return -ENOMEM;
> -		}
>  		func->groups[0] = gname;
>  		func->num_groups = gname ? 1 : 0;
>  		func->function = function;
> @@ -766,10 +747,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
>  	int pin, ret;
>  
>  	ctrldesc = devm_kzalloc(dev, sizeof(*ctrldesc), GFP_KERNEL);
> -	if (!ctrldesc) {
> -		dev_err(dev, "could not allocate memory for pinctrl desc\n");
> +	if (!ctrldesc)
>  		return -ENOMEM;
> -	}
>  
>  	ctrldesc->name = "exynos5440-pinctrl";
>  	ctrldesc->owner = THIS_MODULE;
> @@ -779,10 +758,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
>  
>  	pindesc = devm_kzalloc(&pdev->dev, sizeof(*pindesc) *
>  				EXYNOS5440_MAX_PINS, GFP_KERNEL);
> -	if (!pindesc) {
> -		dev_err(&pdev->dev, "mem alloc for pin descriptors failed\n");
> +	if (!pindesc)
>  		return -ENOMEM;
> -	}
>  	ctrldesc->pins = pindesc;
>  	ctrldesc->npins = EXYNOS5440_MAX_PINS;
>  
> @@ -796,10 +773,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,
>  	 */
>  	pin_names = devm_kzalloc(&pdev->dev, sizeof(char) * PIN_NAME_LENGTH *
>  					ctrldesc->npins, GFP_KERNEL);
> -	if (!pin_names) {
> -		dev_err(&pdev->dev, "mem alloc for pin names failed\n");
> +	if (!pin_names)
>  		return -ENOMEM;
> -	}
>  
>  	/* for each pin, set the name of the pin */
>  	for (pin = 0; pin < ctrldesc->npins; pin++) {
> @@ -836,10 +811,8 @@ static int exynos5440_gpiolib_register(struct platform_device *pdev,
>  	int ret;
>  
>  	gc = devm_kzalloc(&pdev->dev, sizeof(*gc), GFP_KERNEL);
> -	if (!gc) {
> -		dev_err(&pdev->dev, "mem alloc for gpio_chip failed\n");
> +	if (!gc)
>  		return -ENOMEM;
> -	}
>  
>  	priv->gc = gc;
>  	gc->base = 0;
> @@ -941,10 +914,8 @@ static int exynos5440_gpio_irq_init(struct platform_device *pdev,
>  
>  	intd = devm_kzalloc(dev, sizeof(*intd) * EXYNOS5440_MAX_GPIO_INT,
>  					GFP_KERNEL);
> -	if (!intd) {
> -		dev_err(dev, "failed to allocate memory for gpio intr data\n");
> +	if (!intd)
>  		return -ENOMEM;
> -	}
>  
>  	for (i = 0; i < EXYNOS5440_MAX_GPIO_INT; i++) {
>  		irq = irq_of_parse_and_map(dev->of_node, i);
> @@ -987,10 +958,8 @@ static int exynos5440_pinctrl_probe(struct platform_device *pdev)
>  	}
>  
>  	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
> -	if (!priv) {
> -		dev_err(dev, "could not allocate memory for private data\n");
> +	if (!priv)
>  		return -ENOMEM;
> -	}
>  
>  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	priv->reg_base = devm_ioremap_resource(&pdev->dev, res);
> 

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [patch v2 1/2] pinctrl: samsung: don't truncate the last char
  2015-06-22 15:12       ` Dan Carpenter
  (?)
  (?)
@ 2015-07-16  8:21         ` Linus Walleij
  -1 siblings, 0 replies; 30+ messages in thread
From: Linus Walleij @ 2015-07-16  8:21 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: Tomasz Figa, Thomas Abraham, Kukjin Kim, Krzysztof Kozlowski,
	linux-arm-kernel, linux-samsung-soc, linux-gpio, linux-kernel,
	kernel-janitors

On Mon, Jun 22, 2015 at 5:12 PM, Dan Carpenter <dan.carpenter@oracle.com> wrote:

> We were allocating enough space because sizeof("-grp") and
> sizeof("-mux") are both equal to 5 but in the snprintf() we only allowed
> for 4 characters so the last 'p' and 'x' characters were truncated.
>
> The allocate and sprintf can be done in one step with the kasprintf().
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Patch applied with Krzysztof's review tag.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [patch v2 1/2] pinctrl: samsung: don't truncate the last char
@ 2015-07-16  8:21         ` Linus Walleij
  0 siblings, 0 replies; 30+ messages in thread
From: Linus Walleij @ 2015-07-16  8:21 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: Tomasz Figa, Thomas Abraham, Kukjin Kim, Krzysztof Kozlowski,
	linux-arm-kernel, linux-samsung-soc, linux-gpio, linux-kernel,
	kernel-janitors

On Mon, Jun 22, 2015 at 5:12 PM, Dan Carpenter <dan.carpenter@oracle.com> wrote:

> We were allocating enough space because sizeof("-grp") and
> sizeof("-mux") are both equal to 5 but in the snprintf() we only allowed
> for 4 characters so the last 'p' and 'x' characters were truncated.
>
> The allocate and sprintf can be done in one step with the kasprintf().
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Patch applied with Krzysztof's review tag.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [patch v2 1/2] pinctrl: samsung: don't truncate the last char
@ 2015-07-16  8:21         ` Linus Walleij
  0 siblings, 0 replies; 30+ messages in thread
From: Linus Walleij @ 2015-07-16  8:21 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Jun 22, 2015 at 5:12 PM, Dan Carpenter <dan.carpenter@oracle.com> wrote:

> We were allocating enough space because sizeof("-grp") and
> sizeof("-mux") are both equal to 5 but in the snprintf() we only allowed
> for 4 characters so the last 'p' and 'x' characters were truncated.
>
> The allocate and sprintf can be done in one step with the kasprintf().
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Patch applied with Krzysztof's review tag.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [patch v2 1/2] pinctrl: samsung: don't truncate the last char
@ 2015-07-16  8:21         ` Linus Walleij
  0 siblings, 0 replies; 30+ messages in thread
From: Linus Walleij @ 2015-07-16  8:21 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Jun 22, 2015 at 5:12 PM, Dan Carpenter <dan.carpenter@oracle.com> wrote:

> We were allocating enough space because sizeof("-grp") and
> sizeof("-mux") are both equal to 5 but in the snprintf() we only allowed
> for 4 characters so the last 'p' and 'x' characters were truncated.
>
> The allocate and sprintf can be done in one step with the kasprintf().
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Patch applied with Krzysztof's review tag.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages
  2015-06-22 15:13       ` Dan Carpenter
  (?)
  (?)
@ 2015-07-16  8:22         ` Linus Walleij
  -1 siblings, 0 replies; 30+ messages in thread
From: Linus Walleij @ 2015-07-16  8:22 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: Tomasz Figa, Thomas Abraham, Kukjin Kim, Krzysztof Kozlowski,
	linux-arm-kernel, linux-samsung-soc, linux-gpio, linux-kernel,
	kernel-janitors

On Mon, Jun 22, 2015 at 5:13 PM, Dan Carpenter <dan.carpenter@oracle.com> wrote:

> Checkpatch.pl complains about these:
>
> WARNING: Possible unnecessary 'out of memory' message
>
> The messages use a little extra RAM and they add a few extra lines of
> code.  We're probably never going to hit these out of memory situations
> but if we did then kmalloc() has pretty good error messages built-in.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Patch applied with Krzysztof's review tag.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages
@ 2015-07-16  8:22         ` Linus Walleij
  0 siblings, 0 replies; 30+ messages in thread
From: Linus Walleij @ 2015-07-16  8:22 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: Tomasz Figa, Thomas Abraham, Kukjin Kim, Krzysztof Kozlowski,
	linux-arm-kernel, linux-samsung-soc, linux-gpio, linux-kernel,
	kernel-janitors

On Mon, Jun 22, 2015 at 5:13 PM, Dan Carpenter <dan.carpenter@oracle.com> wrote:

> Checkpatch.pl complains about these:
>
> WARNING: Possible unnecessary 'out of memory' message
>
> The messages use a little extra RAM and they add a few extra lines of
> code.  We're probably never going to hit these out of memory situations
> but if we did then kmalloc() has pretty good error messages built-in.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Patch applied with Krzysztof's review tag.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages
@ 2015-07-16  8:22         ` Linus Walleij
  0 siblings, 0 replies; 30+ messages in thread
From: Linus Walleij @ 2015-07-16  8:22 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Jun 22, 2015 at 5:13 PM, Dan Carpenter <dan.carpenter@oracle.com> wrote:

> Checkpatch.pl complains about these:
>
> WARNING: Possible unnecessary 'out of memory' message
>
> The messages use a little extra RAM and they add a few extra lines of
> code.  We're probably never going to hit these out of memory situations
> but if we did then kmalloc() has pretty good error messages built-in.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Patch applied with Krzysztof's review tag.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages
@ 2015-07-16  8:22         ` Linus Walleij
  0 siblings, 0 replies; 30+ messages in thread
From: Linus Walleij @ 2015-07-16  8:22 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Jun 22, 2015 at 5:13 PM, Dan Carpenter <dan.carpenter@oracle.com> wrote:

> Checkpatch.pl complains about these:
>
> WARNING: Possible unnecessary 'out of memory' message
>
> The messages use a little extra RAM and they add a few extra lines of
> code.  We're probably never going to hit these out of memory situations
> but if we did then kmalloc() has pretty good error messages built-in.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Patch applied with Krzysztof's review tag.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2015-07-16  8:22 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-11 15:46 [patch] pinctrl: samsung: don't truncate the last char of "-grp" Dan Carpenter
2015-06-11 15:46 ` Dan Carpenter
2015-06-15  4:17 ` Krzysztof Kozlowski
2015-06-15  4:17   ` Krzysztof Kozlowski
2015-06-19  8:52   ` Dan Carpenter
2015-06-19  8:52     ` Dan Carpenter
2015-06-22 15:12     ` [patch v2 1/2] pinctrl: samsung: don't truncate the last char Dan Carpenter
2015-06-22 15:12       ` Dan Carpenter
2015-06-22 15:12       ` Dan Carpenter
2015-06-22 15:12       ` Dan Carpenter
2015-06-22 23:51       ` Krzysztof Kozlowski
2015-06-22 23:51         ` Krzysztof Kozlowski
2015-06-22 23:51         ` Krzysztof Kozlowski
2015-06-22 23:51         ` Krzysztof Kozlowski
2015-07-16  8:21       ` Linus Walleij
2015-07-16  8:21         ` Linus Walleij
2015-07-16  8:21         ` Linus Walleij
2015-07-16  8:21         ` Linus Walleij
2015-06-22 15:13     ` [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages Dan Carpenter
2015-06-22 15:13       ` Dan Carpenter
2015-06-22 15:13       ` Dan Carpenter
2015-06-22 15:13       ` Dan Carpenter
2015-06-22 23:53       ` Krzysztof Kozlowski
2015-06-22 23:53         ` Krzysztof Kozlowski
2015-06-22 23:53         ` Krzysztof Kozlowski
2015-06-22 23:53         ` Krzysztof Kozlowski
2015-07-16  8:22       ` Linus Walleij
2015-07-16  8:22         ` Linus Walleij
2015-07-16  8:22         ` Linus Walleij
2015-07-16  8:22         ` Linus Walleij

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.