ethernet: ti: am65-cpsw-qos: Use struct_size() in devm_kzalloc()
authorGustavo A. R. Silva <gustavoars@kernel.org>
Fri, 19 Jun 2020 17:37:15 +0000 (12:37 -0500)
committerDavid S. Miller <davem@davemloft.net>
Fri, 19 Jun 2020 20:42:08 +0000 (13:42 -0700)
Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes. Also, remove unnecessary
variable _size_.

This code was detected with the help of Coccinelle and, audited and
fixed manually.

Addresses-KSPP-ID: https://github.com/KSPP/linux/issues/83
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ti/am65-cpsw-qos.c

index 32eac04..3bdd4db 100644 (file)
@@ -505,7 +505,6 @@ static int am65_cpsw_set_taprio(struct net_device *ndev, void *type_data)
        struct am65_cpsw_port *port = am65_ndev_to_port(ndev);
        struct tc_taprio_qopt_offload *taprio = type_data;
        struct am65_cpsw_est *est_new;
-       size_t size;
        int ret = 0;
 
        if (taprio->cycle_time_extension) {
@@ -513,10 +512,9 @@ static int am65_cpsw_set_taprio(struct net_device *ndev, void *type_data)
                return -EOPNOTSUPP;
        }
 
-       size = sizeof(struct tc_taprio_sched_entry) * taprio->num_entries +
-              sizeof(struct am65_cpsw_est);
-
-       est_new = devm_kzalloc(&ndev->dev, size, GFP_KERNEL);
+       est_new = devm_kzalloc(&ndev->dev,
+                              struct_size(est_new, taprio.entries, taprio->num_entries),
+                              GFP_KERNEL);
        if (!est_new)
                return -ENOMEM;