Skip to contentSkip to conversation

net: dsa: sja1105: Use struct_size() in kzalloc()

PATCH Applied Gustavo A. R. Silva 3 participants 3 messages Jun 19, 2020

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 net: dsa: sja1105: Use struct_size() in kzalloc()

Make use of the struct_size() helper instead of an open-coded version in order to avoid any potential type mistakes.

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

Addresses-KSPP-ID: https://github.com/KSPP/linux/issues/83

---
 drivers/net/dsa/sja1105/sja1105_tas.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/net/dsa/sja1105/sja1105_tas.c +1 -2
index 3aa1a8b5f766..31d8acff1f01 100644
@@ -475,8 +475,7 @@ bool sja1105_gating_check_conflicts(struct sja1105_private *priv, int port,
 	if (list_empty(&gating_cfg->entries))
 		return false;
 
-	dummy = kzalloc(sizeof(struct tc_taprio_sched_entry) * num_entries +
-			sizeof(struct tc_taprio_qopt_offload), GFP_KERNEL);
+	dummy = kzalloc(struct_size(dummy, entries, num_entries), GFP_KERNEL);
 	if (!dummy) {
 		NL_SET_ERR_MSG_MOD(extack, "Failed to allocate memory");
 		return true;
Signature · 1 line
2.27.0
maintainer Acked-by on v1 1/1
#1 lore raw

Hi Gustavo,

Quoted 18 lines · Gustavo A. R. Silva

Make use of the struct_size() helper instead of an open-coded version in order to avoid any potential type mistakes.

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

Addresses-KSPP-ID: https://github.com/KSPP/linux/issues/83

---
 drivers/net/dsa/sja1105/sja1105_tas.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/net/dsa/sja1105/sja1105_tas.c +0 -0
index 3aa1a8b5f766..31d8acff1f01 100644

drivers/net/dsa/sja1105/sja1105_tas.c bool sja1105_gating_check_conflicts(struct sja1105_private *priv, int port, · line 478

Quoted 6 lines
drivers/net/dsa/sja1105/sja1105_tas.c +1 -2
@@ -475,8 +475,7 @@ bool sja1105_gating_check_conflicts(struct sja1105_private *priv, int port,
        if (list_empty(&gating_cfg->entries))
                return false;
 
-       dummy = kzalloc(sizeof(struct tc_taprio_sched_entry) * num_entries +
-                       sizeof(struct tc_taprio_qopt_offload), GFP_KERNEL);
+       dummy = kzalloc(struct_size(dummy, entries, num_entries), GFP_KERNEL);

Before, I could read this line and I knew what it did. Now, I have to look it up.
But if it's in the interest of kernel coding style, what can I say.

Quoted 6 lines
drivers/net/dsa/sja1105/sja1105_tas.c +0 -1
        if (!dummy) {
                NL_SET_ERR_MSG_MOD(extack, "Failed to allocate memory");
                return true;
--

2.27.0

maintainer Applied
#2 lore raw
In reply to Gustavo A. R. Silva

From: "Gustavo A. R. Silva" <[email protected]>
Date: Fri, 19 Jun 2020 13:10:07 -0500

Quoted 8 lines

Make use of the struct_size() helper instead of an open-coded version in order to avoid any potential type mistakes.

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

Addresses-KSPP-ID: https://github.com/KSPP/linux/issues/83

Applied.