summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/ethernet/microchip/vcap/vcap_api.c6
1 files 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);
}