diff mbox series

[net-next] net: microchip: vcap: use kmemdup() to allocate memory

Message ID 20230119092210.3607634-1-yangyingliang@huawei.com (mailing list archive)
State Accepted
Commit 5e64f59a3cc2c4cfba748b87f0761d865dec7924
Delegated to: Netdev Maintainers
Headers show
Series [net-next] net: microchip: vcap: use kmemdup() to allocate memory | expand

Checks

Context Check Description
netdev/tree_selection success Clearly marked for net-next
netdev/fixes_present success Fixes tag not required for -next series
netdev/subject_prefix success Link
netdev/cover_letter success Single patches do not need cover letters
netdev/patch_count success Link
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 2 this patch: 2
netdev/cc_maintainers warning 1 maintainers not CCed: linux-arm-kernel@lists.infradead.org
netdev/build_clang success Errors and warnings before: 1 this patch: 1
netdev/module_param success Was 0 now: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 2 this patch: 2
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 20 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Yang Yingliang Jan. 19, 2023, 9:22 a.m. UTC
Use kmemdup() helper instead of open-coding to simplify
the code when allocating newckf and newcaf.

Generated by: scripts/coccinelle/api/memdup.cocci

Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
---
 drivers/net/ethernet/microchip/vcap/vcap_api.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

Comments

Jesse Brandeburg Jan. 20, 2023, 2:04 a.m. UTC | #1
On 1/19/2023 1:22 AM, Yang Yingliang wrote:
> Use kmemdup() helper instead of open-coding to simplify
> the code when allocating newckf and newcaf.
> 
> Generated by: scripts/coccinelle/api/memdup.cocci
> 
> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
> ---
>   drivers/net/ethernet/microchip/vcap/vcap_api.c | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)

I don't like kmemdup much as you have to be very careful to make sure 
the original memory is freed in the error case. However this code seems 
like it works correctly since it was already having to free the source 
memory earlier.

Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Steen Hegelund Jan. 20, 2023, 8:05 a.m. UTC | #2
Hi Yang,

Thanks for the correction.

Reviewed-by: Steen Hegelund <Steen.Hegelund@microchip.com>

BR
Steen

On Thu, 2023-01-19 at 17:22 +0800, Yang Yingliang wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the
> content is safe
> 
> Use kmemdup() helper instead of open-coding to simplify
> the code when allocating newckf and newcaf.
> 
> Generated by: scripts/coccinelle/api/memdup.cocci
> 
> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
> ---
>  drivers/net/ethernet/microchip/vcap/vcap_api.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/ethernet/microchip/vcap/vcap_api.c
> b/drivers/net/ethernet/microchip/vcap/vcap_api.c
> index 71f787a78295..d9cf2cd1925a 100644
> --- a/drivers/net/ethernet/microchip/vcap/vcap_api.c
> +++ b/drivers/net/ethernet/microchip/vcap/vcap_api.c
> @@ -1000,18 +1000,16 @@ static struct vcap_rule_internal *vcap_dup_rule(struct
> vcap_rule_internal *ri,
>                 return duprule;
> 
>         list_for_each_entry(ckf, &ri->data.keyfields, ctrl.list) {
> -               newckf = kzalloc(sizeof(*newckf), GFP_KERNEL);
> +               newckf = kmemdup(ckf, sizeof(*newckf), GFP_KERNEL);
>                 if (!newckf)
>                         return ERR_PTR(-ENOMEM);
> -               memcpy(newckf, ckf, sizeof(*newckf));
>                 list_add_tail(&newckf->ctrl.list, &duprule->data.keyfields);
>         }
> 
>         list_for_each_entry(caf, &ri->data.actionfields, ctrl.list) {
> -               newcaf = kzalloc(sizeof(*newcaf), GFP_KERNEL);
> +               newcaf = kmemdup(caf, sizeof(*newcaf), GFP_KERNEL);
>                 if (!newcaf)
>                         return ERR_PTR(-ENOMEM);
> -               memcpy(newcaf, caf, sizeof(*newcaf));
>                 list_add_tail(&newcaf->ctrl.list, &duprule-
> >data.actionfields);
>         }
> 
> --
> 2.25.1
>
patchwork-bot+netdevbpf@kernel.org Jan. 21, 2023, 2:20 a.m. UTC | #3
Hello:

This patch was applied to netdev/net-next.git (master)
by Jakub Kicinski <kuba@kernel.org>:

On Thu, 19 Jan 2023 17:22:10 +0800 you wrote:
> Use kmemdup() helper instead of open-coding to simplify
> the code when allocating newckf and newcaf.
> 
> Generated by: scripts/coccinelle/api/memdup.cocci
> 
> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
> 
> [...]

Here is the summary with links:
  - [net-next] net: microchip: vcap: use kmemdup() to allocate memory
    https://git.kernel.org/netdev/net-next/c/5e64f59a3cc2

You are awesome, thank you!
diff mbox series

Patch

diff --git a/drivers/net/ethernet/microchip/vcap/vcap_api.c b/drivers/net/ethernet/microchip/vcap/vcap_api.c
index 71f787a78295..d9cf2cd1925a 100644
--- a/drivers/net/ethernet/microchip/vcap/vcap_api.c
+++ b/drivers/net/ethernet/microchip/vcap/vcap_api.c
@@ -1000,18 +1000,16 @@  static struct vcap_rule_internal *vcap_dup_rule(struct vcap_rule_internal *ri,
 		return duprule;
 
 	list_for_each_entry(ckf, &ri->data.keyfields, ctrl.list) {
-		newckf = kzalloc(sizeof(*newckf), GFP_KERNEL);
+		newckf = kmemdup(ckf, sizeof(*newckf), GFP_KERNEL);
 		if (!newckf)
 			return ERR_PTR(-ENOMEM);
-		memcpy(newckf, ckf, sizeof(*newckf));
 		list_add_tail(&newckf->ctrl.list, &duprule->data.keyfields);
 	}
 
 	list_for_each_entry(caf, &ri->data.actionfields, ctrl.list) {
-		newcaf = kzalloc(sizeof(*newcaf), GFP_KERNEL);
+		newcaf = kmemdup(caf, sizeof(*newcaf), GFP_KERNEL);
 		if (!newcaf)
 			return ERR_PTR(-ENOMEM);
-		memcpy(newcaf, caf, sizeof(*newcaf));
 		list_add_tail(&newcaf->ctrl.list, &duprule->data.actionfields);
 	}