Re: [PATCH v3] pinctrl: berlin: fix 'pctrl->functions' allocation in berlin_pinctrl_build_state

2018-08-03 Thread Linus Walleij
On Wed, Aug 1, 2018 at 7:11 AM YueHaibing  wrote:

> fixes following Smatch static check warning:
>
>  drivers/pinctrl/berlin/berlin.c:237 berlin_pinctrl_build_state()
>  warn: passing devm_ allocated variable to kfree. 'pctrl->functions'
>
> As we will be calling krealloc() on pointer 'pctrl->functions', which means
> kfree() will be called in there, devm_kzalloc() shouldn't be used with
> the allocation in the first place.  Fix the warning by calling kcalloc()
> and managing the free procedure in error path on our own.
>
> Fixes: 3de68d331c24 ("pinctrl: berlin: add the core pinctrl driver for 
> Marvell Berlin SoCs")
> Signed-off-by: YueHaibing 
> ---
> v2: free pctrl->functions instead of function as Jisheng Zhang suggested
> v3: v2 I send a wrong patch,this is the correct patch.

Patch applied with Jisheng's ACK!

Yours,
Linus Walleij


Re: [PATCH v3] pinctrl: berlin: fix 'pctrl->functions' allocation in berlin_pinctrl_build_state

2018-08-03 Thread Linus Walleij
On Wed, Aug 1, 2018 at 7:11 AM YueHaibing  wrote:

> fixes following Smatch static check warning:
>
>  drivers/pinctrl/berlin/berlin.c:237 berlin_pinctrl_build_state()
>  warn: passing devm_ allocated variable to kfree. 'pctrl->functions'
>
> As we will be calling krealloc() on pointer 'pctrl->functions', which means
> kfree() will be called in there, devm_kzalloc() shouldn't be used with
> the allocation in the first place.  Fix the warning by calling kcalloc()
> and managing the free procedure in error path on our own.
>
> Fixes: 3de68d331c24 ("pinctrl: berlin: add the core pinctrl driver for 
> Marvell Berlin SoCs")
> Signed-off-by: YueHaibing 
> ---
> v2: free pctrl->functions instead of function as Jisheng Zhang suggested
> v3: v2 I send a wrong patch,this is the correct patch.

Patch applied with Jisheng's ACK!

Yours,
Linus Walleij


Re: [PATCH v3] pinctrl: berlin: fix 'pctrl->functions' allocation in berlin_pinctrl_build_state

2018-07-31 Thread Jisheng Zhang
On Wed, 1 Aug 2018 13:10:49 +0800 YueHaibing wrote:

> fixes following Smatch static check warning:
> 
>  drivers/pinctrl/berlin/berlin.c:237 berlin_pinctrl_build_state()
>  warn: passing devm_ allocated variable to kfree. 'pctrl->functions'
> 
> As we will be calling krealloc() on pointer 'pctrl->functions', which means
> kfree() will be called in there, devm_kzalloc() shouldn't be used with
> the allocation in the first place.  Fix the warning by calling kcalloc()
> and managing the free procedure in error path on our own.
> 
> Fixes: 3de68d331c24 ("pinctrl: berlin: add the core pinctrl driver for 
> Marvell Berlin SoCs")
> Signed-off-by: YueHaibing 

Reviewed-by: Jisheng Zhang 

> ---
> v2: free pctrl->functions instead of function as Jisheng Zhang suggested
> v3: v2 I send a wrong patch,this is the correct patch.
> ---
>  drivers/pinctrl/berlin/berlin.c | 14 --
>  1 file changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/pinctrl/berlin/berlin.c b/drivers/pinctrl/berlin/berlin.c
> index d6d183e..b5903ff 100644
> --- a/drivers/pinctrl/berlin/berlin.c
> +++ b/drivers/pinctrl/berlin/berlin.c
> @@ -216,10 +216,8 @@ static int berlin_pinctrl_build_state(struct 
> platform_device *pdev)
>   }
>  
>   /* we will reallocate later */
> - pctrl->functions = devm_kcalloc(>dev,
> - max_functions,
> - sizeof(*pctrl->functions),
> - GFP_KERNEL);
> + pctrl->functions = kcalloc(max_functions,
> +sizeof(*pctrl->functions), GFP_KERNEL);
>   if (!pctrl->functions)
>   return -ENOMEM;
>  
> @@ -257,8 +255,10 @@ static int berlin_pinctrl_build_state(struct 
> platform_device *pdev)
>   function++;
>   }
>  
> - if (!found)
> + if (!found) {
> + kfree(pctrl->functions);
>   return -EINVAL;
> + }
>  
>   if (!function->groups) {
>   function->groups =
> @@ -267,8 +267,10 @@ static int berlin_pinctrl_build_state(struct 
> platform_device *pdev)
>sizeof(char *),
>GFP_KERNEL);
>  
> - if (!function->groups)
> + if (!function->groups) {
> + kfree(pctrl->functions);
>   return -ENOMEM;
> + }
>   }
>  
>   groups = function->groups;



Re: [PATCH v3] pinctrl: berlin: fix 'pctrl->functions' allocation in berlin_pinctrl_build_state

2018-07-31 Thread Jisheng Zhang
On Wed, 1 Aug 2018 13:10:49 +0800 YueHaibing wrote:

> fixes following Smatch static check warning:
> 
>  drivers/pinctrl/berlin/berlin.c:237 berlin_pinctrl_build_state()
>  warn: passing devm_ allocated variable to kfree. 'pctrl->functions'
> 
> As we will be calling krealloc() on pointer 'pctrl->functions', which means
> kfree() will be called in there, devm_kzalloc() shouldn't be used with
> the allocation in the first place.  Fix the warning by calling kcalloc()
> and managing the free procedure in error path on our own.
> 
> Fixes: 3de68d331c24 ("pinctrl: berlin: add the core pinctrl driver for 
> Marvell Berlin SoCs")
> Signed-off-by: YueHaibing 

Reviewed-by: Jisheng Zhang 

> ---
> v2: free pctrl->functions instead of function as Jisheng Zhang suggested
> v3: v2 I send a wrong patch,this is the correct patch.
> ---
>  drivers/pinctrl/berlin/berlin.c | 14 --
>  1 file changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/pinctrl/berlin/berlin.c b/drivers/pinctrl/berlin/berlin.c
> index d6d183e..b5903ff 100644
> --- a/drivers/pinctrl/berlin/berlin.c
> +++ b/drivers/pinctrl/berlin/berlin.c
> @@ -216,10 +216,8 @@ static int berlin_pinctrl_build_state(struct 
> platform_device *pdev)
>   }
>  
>   /* we will reallocate later */
> - pctrl->functions = devm_kcalloc(>dev,
> - max_functions,
> - sizeof(*pctrl->functions),
> - GFP_KERNEL);
> + pctrl->functions = kcalloc(max_functions,
> +sizeof(*pctrl->functions), GFP_KERNEL);
>   if (!pctrl->functions)
>   return -ENOMEM;
>  
> @@ -257,8 +255,10 @@ static int berlin_pinctrl_build_state(struct 
> platform_device *pdev)
>   function++;
>   }
>  
> - if (!found)
> + if (!found) {
> + kfree(pctrl->functions);
>   return -EINVAL;
> + }
>  
>   if (!function->groups) {
>   function->groups =
> @@ -267,8 +267,10 @@ static int berlin_pinctrl_build_state(struct 
> platform_device *pdev)
>sizeof(char *),
>GFP_KERNEL);
>  
> - if (!function->groups)
> + if (!function->groups) {
> + kfree(pctrl->functions);
>   return -ENOMEM;
> + }
>   }
>  
>   groups = function->groups;



[PATCH v3] pinctrl: berlin: fix 'pctrl->functions' allocation in berlin_pinctrl_build_state

2018-07-31 Thread YueHaibing
fixes following Smatch static check warning:

 drivers/pinctrl/berlin/berlin.c:237 berlin_pinctrl_build_state()
 warn: passing devm_ allocated variable to kfree. 'pctrl->functions'

As we will be calling krealloc() on pointer 'pctrl->functions', which means
kfree() will be called in there, devm_kzalloc() shouldn't be used with
the allocation in the first place.  Fix the warning by calling kcalloc()
and managing the free procedure in error path on our own.

Fixes: 3de68d331c24 ("pinctrl: berlin: add the core pinctrl driver for Marvell 
Berlin SoCs")
Signed-off-by: YueHaibing 
---
v2: free pctrl->functions instead of function as Jisheng Zhang suggested
v3: v2 I send a wrong patch,this is the correct patch.
---
 drivers/pinctrl/berlin/berlin.c | 14 --
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/pinctrl/berlin/berlin.c b/drivers/pinctrl/berlin/berlin.c
index d6d183e..b5903ff 100644
--- a/drivers/pinctrl/berlin/berlin.c
+++ b/drivers/pinctrl/berlin/berlin.c
@@ -216,10 +216,8 @@ static int berlin_pinctrl_build_state(struct 
platform_device *pdev)
}
 
/* we will reallocate later */
-   pctrl->functions = devm_kcalloc(>dev,
-   max_functions,
-   sizeof(*pctrl->functions),
-   GFP_KERNEL);
+   pctrl->functions = kcalloc(max_functions,
+  sizeof(*pctrl->functions), GFP_KERNEL);
if (!pctrl->functions)
return -ENOMEM;
 
@@ -257,8 +255,10 @@ static int berlin_pinctrl_build_state(struct 
platform_device *pdev)
function++;
}
 
-   if (!found)
+   if (!found) {
+   kfree(pctrl->functions);
return -EINVAL;
+   }
 
if (!function->groups) {
function->groups =
@@ -267,8 +267,10 @@ static int berlin_pinctrl_build_state(struct 
platform_device *pdev)
 sizeof(char *),
 GFP_KERNEL);
 
-   if (!function->groups)
+   if (!function->groups) {
+   kfree(pctrl->functions);
return -ENOMEM;
+   }
}
 
groups = function->groups;
-- 
2.7.0




[PATCH v3] pinctrl: berlin: fix 'pctrl->functions' allocation in berlin_pinctrl_build_state

2018-07-31 Thread YueHaibing
fixes following Smatch static check warning:

 drivers/pinctrl/berlin/berlin.c:237 berlin_pinctrl_build_state()
 warn: passing devm_ allocated variable to kfree. 'pctrl->functions'

As we will be calling krealloc() on pointer 'pctrl->functions', which means
kfree() will be called in there, devm_kzalloc() shouldn't be used with
the allocation in the first place.  Fix the warning by calling kcalloc()
and managing the free procedure in error path on our own.

Fixes: 3de68d331c24 ("pinctrl: berlin: add the core pinctrl driver for Marvell 
Berlin SoCs")
Signed-off-by: YueHaibing 
---
v2: free pctrl->functions instead of function as Jisheng Zhang suggested
v3: v2 I send a wrong patch,this is the correct patch.
---
 drivers/pinctrl/berlin/berlin.c | 14 --
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/pinctrl/berlin/berlin.c b/drivers/pinctrl/berlin/berlin.c
index d6d183e..b5903ff 100644
--- a/drivers/pinctrl/berlin/berlin.c
+++ b/drivers/pinctrl/berlin/berlin.c
@@ -216,10 +216,8 @@ static int berlin_pinctrl_build_state(struct 
platform_device *pdev)
}
 
/* we will reallocate later */
-   pctrl->functions = devm_kcalloc(>dev,
-   max_functions,
-   sizeof(*pctrl->functions),
-   GFP_KERNEL);
+   pctrl->functions = kcalloc(max_functions,
+  sizeof(*pctrl->functions), GFP_KERNEL);
if (!pctrl->functions)
return -ENOMEM;
 
@@ -257,8 +255,10 @@ static int berlin_pinctrl_build_state(struct 
platform_device *pdev)
function++;
}
 
-   if (!found)
+   if (!found) {
+   kfree(pctrl->functions);
return -EINVAL;
+   }
 
if (!function->groups) {
function->groups =
@@ -267,8 +267,10 @@ static int berlin_pinctrl_build_state(struct 
platform_device *pdev)
 sizeof(char *),
 GFP_KERNEL);
 
-   if (!function->groups)
+   if (!function->groups) {
+   kfree(pctrl->functions);
return -ENOMEM;
+   }
}
 
groups = function->groups;
-- 
2.7.0