summaryrefslogtreecommitdiff
path: root/drivers/net/dsa
diff options
context:
space:
mode:
authorKees Cook <kees@kernel.org>2026-02-20 23:49:23 -0800
committerKees Cook <kees@kernel.org>2026-02-21 01:02:28 -0800
commit69050f8d6d075dc01af7a5f2f550a8067510366f (patch)
treebb265f94d9dfa7876c06a5d9f88673d496a15341 /drivers/net/dsa
parentd39a1d7486d98668dd34aaa6732aad7977c45f5a (diff)
downloadlwn-69050f8d6d075dc01af7a5f2f550a8067510366f.tar.gz
lwn-69050f8d6d075dc01af7a5f2f550a8067510366f.zip
treewide: Replace kmalloc with kmalloc_obj for non-scalar types
This is the result of running the Coccinelle script from scripts/coccinelle/api/kmalloc_objs.cocci. The script is designed to avoid scalar types (which need careful case-by-case checking), and instead replace kmalloc-family calls that allocate struct or union object instances: Single allocations: kmalloc(sizeof(TYPE), ...) are replaced with: kmalloc_obj(TYPE, ...) Array allocations: kmalloc_array(COUNT, sizeof(TYPE), ...) are replaced with: kmalloc_objs(TYPE, COUNT, ...) Flex array allocations: kmalloc(struct_size(PTR, FAM, COUNT), ...) are replaced with: kmalloc_flex(*PTR, FAM, COUNT, ...) (where TYPE may also be *VAR) The resulting allocations no longer return "void *", instead returning "TYPE *". Signed-off-by: Kees Cook <kees@kernel.org>
Diffstat (limited to 'drivers/net/dsa')
-rw-r--r--drivers/net/dsa/bcm_sf2_cfp.c2
-rw-r--r--drivers/net/dsa/hirschmann/hellcreek.c4
-rw-r--r--drivers/net/dsa/microchip/ksz9477_acl.c2
-rw-r--r--drivers/net/dsa/microchip/ksz_common.c2
-rw-r--r--drivers/net/dsa/mv88e6xxx/chip.c2
-rw-r--r--drivers/net/dsa/mv88e6xxx/devlink.c15
-rw-r--r--drivers/net/dsa/mv88e6xxx/pcs-6185.c2
-rw-r--r--drivers/net/dsa/mv88e6xxx/pcs-6352.c2
-rw-r--r--drivers/net/dsa/mv88e6xxx/pcs-639x.c2
-rw-r--r--drivers/net/dsa/ocelot/felix.c11
-rw-r--r--drivers/net/dsa/ocelot/felix_vsc9959.c2
-rw-r--r--drivers/net/dsa/sja1105/sja1105_devlink.c4
-rw-r--r--drivers/net/dsa/sja1105/sja1105_flower.c4
-rw-r--r--drivers/net/dsa/sja1105/sja1105_tas.c2
-rw-r--r--drivers/net/dsa/sja1105/sja1105_vl.c11
-rw-r--r--drivers/net/dsa/vitesse-vsc73xx-core.c2
16 files changed, 32 insertions, 37 deletions
diff --git a/drivers/net/dsa/bcm_sf2_cfp.c b/drivers/net/dsa/bcm_sf2_cfp.c
index e22362e6f0cd..8df91e4c1237 100644
--- a/drivers/net/dsa/bcm_sf2_cfp.c
+++ b/drivers/net/dsa/bcm_sf2_cfp.c
@@ -950,7 +950,7 @@ static int bcm_sf2_cfp_rule_set(struct dsa_switch *ds, int port,
if (ret == 0)
return -EEXIST;
- rule = kzalloc(sizeof(*rule), GFP_KERNEL);
+ rule = kzalloc_obj(*rule, GFP_KERNEL);
if (!rule)
return -ENOMEM;
diff --git a/drivers/net/dsa/hirschmann/hellcreek.c b/drivers/net/dsa/hirschmann/hellcreek.c
index dd5f263ab984..1e1917eafd7a 100644
--- a/drivers/net/dsa/hirschmann/hellcreek.c
+++ b/drivers/net/dsa/hirschmann/hellcreek.c
@@ -1265,7 +1265,7 @@ static int hellcreek_devlink_region_vlan_snapshot(struct devlink *dl,
struct hellcreek *hellcreek = ds->priv;
int i;
- table = kcalloc(VLAN_N_VID, sizeof(*entry), GFP_KERNEL);
+ table = kzalloc_objs(*entry, VLAN_N_VID, GFP_KERNEL);
if (!table)
return -ENOMEM;
@@ -1293,7 +1293,7 @@ static int hellcreek_devlink_region_fdb_snapshot(struct devlink *dl,
struct hellcreek *hellcreek = ds->priv;
size_t i;
- table = kcalloc(hellcreek->fdb_entries, sizeof(*entry), GFP_KERNEL);
+ table = kzalloc_objs(*entry, hellcreek->fdb_entries, GFP_KERNEL);
if (!table)
return -ENOMEM;
diff --git a/drivers/net/dsa/microchip/ksz9477_acl.c b/drivers/net/dsa/microchip/ksz9477_acl.c
index 7ba778df63ac..efd1da08bb45 100644
--- a/drivers/net/dsa/microchip/ksz9477_acl.c
+++ b/drivers/net/dsa/microchip/ksz9477_acl.c
@@ -1060,7 +1060,7 @@ int ksz9477_port_acl_init(struct ksz_device *dev, int port)
struct ksz9477_acl_priv *acl;
int ret, i;
- acl = kzalloc(sizeof(*acl), GFP_KERNEL);
+ acl = kzalloc_obj(*acl, GFP_KERNEL);
if (!acl)
return -ENOMEM;
diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c
index e5fa1f5fc09b..ddcbb1be4818 100644
--- a/drivers/net/dsa/microchip/ksz_common.c
+++ b/drivers/net/dsa/microchip/ksz_common.c
@@ -4835,7 +4835,7 @@ int ksz_switch_macaddr_get(struct dsa_switch *ds, int port,
return 0;
}
- switch_macaddr = kzalloc(sizeof(*switch_macaddr), GFP_KERNEL);
+ switch_macaddr = kzalloc_obj(*switch_macaddr, GFP_KERNEL);
if (!switch_macaddr)
return -ENOMEM;
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 09002c853b78..7a43110e74b7 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -2024,7 +2024,7 @@ static int mv88e6xxx_mst_get(struct mv88e6xxx_chip *chip, struct net_device *br,
if (err)
goto err;
- mst = kzalloc(sizeof(*mst), GFP_KERNEL);
+ mst = kzalloc_obj(*mst, GFP_KERNEL);
if (!mst) {
err = -ENOMEM;
goto err;
diff --git a/drivers/net/dsa/mv88e6xxx/devlink.c b/drivers/net/dsa/mv88e6xxx/devlink.c
index da69e0b85879..f241e7df6eb5 100644
--- a/drivers/net/dsa/mv88e6xxx/devlink.c
+++ b/drivers/net/dsa/mv88e6xxx/devlink.c
@@ -378,9 +378,8 @@ static int mv88e6xxx_region_atu_snapshot(struct devlink *dl,
struct mv88e6xxx_chip *chip = ds->priv;
int fid = -1, err = 0, count = 0;
- table = kcalloc(mv88e6xxx_num_databases(chip),
- sizeof(struct mv88e6xxx_devlink_atu_entry),
- GFP_KERNEL);
+ table = kzalloc_objs(struct mv88e6xxx_devlink_atu_entry,
+ mv88e6xxx_num_databases(chip), GFP_KERNEL);
if (!table)
return -ENOMEM;
@@ -440,9 +439,8 @@ static int mv88e6xxx_region_vtu_snapshot(struct devlink *dl,
struct mv88e6xxx_vtu_entry vlan;
int err;
- table = kcalloc(mv88e6xxx_max_vid(chip) + 1,
- sizeof(struct mv88e6xxx_devlink_vtu_entry),
- GFP_KERNEL);
+ table = kzalloc_objs(struct mv88e6xxx_devlink_vtu_entry,
+ mv88e6xxx_max_vid(chip) + 1, GFP_KERNEL);
if (!table)
return -ENOMEM;
@@ -523,9 +521,8 @@ static int mv88e6xxx_region_stu_snapshot(struct devlink *dl,
struct mv88e6xxx_stu_entry stu;
int err;
- table = kcalloc(mv88e6xxx_max_sid(chip) + 1,
- sizeof(struct mv88e6xxx_devlink_stu_entry),
- GFP_KERNEL);
+ table = kzalloc_objs(struct mv88e6xxx_devlink_stu_entry,
+ mv88e6xxx_max_sid(chip) + 1, GFP_KERNEL);
if (!table)
return -ENOMEM;
diff --git a/drivers/net/dsa/mv88e6xxx/pcs-6185.c b/drivers/net/dsa/mv88e6xxx/pcs-6185.c
index af7e06d265f7..176480cdee5a 100644
--- a/drivers/net/dsa/mv88e6xxx/pcs-6185.c
+++ b/drivers/net/dsa/mv88e6xxx/pcs-6185.c
@@ -131,7 +131,7 @@ static int mv88e6185_pcs_init(struct mv88e6xxx_chip *chip, int port)
dev = chip->dev;
- mpcs = kzalloc(sizeof(*mpcs), GFP_KERNEL);
+ mpcs = kzalloc_obj(*mpcs, GFP_KERNEL);
if (!mpcs)
return -ENOMEM;
diff --git a/drivers/net/dsa/mv88e6xxx/pcs-6352.c b/drivers/net/dsa/mv88e6xxx/pcs-6352.c
index 36993400837e..ecd8b5efccf6 100644
--- a/drivers/net/dsa/mv88e6xxx/pcs-6352.c
+++ b/drivers/net/dsa/mv88e6xxx/pcs-6352.c
@@ -267,7 +267,7 @@ static struct marvell_c22_pcs *marvell_c22_pcs_alloc(struct device *dev,
{
struct marvell_c22_pcs *mpcs;
- mpcs = kzalloc(sizeof(*mpcs), GFP_KERNEL);
+ mpcs = kzalloc_obj(*mpcs, GFP_KERNEL);
if (!mpcs)
return NULL;
diff --git a/drivers/net/dsa/mv88e6xxx/pcs-639x.c b/drivers/net/dsa/mv88e6xxx/pcs-639x.c
index 5db17c0b77f5..c7728b00297d 100644
--- a/drivers/net/dsa/mv88e6xxx/pcs-639x.c
+++ b/drivers/net/dsa/mv88e6xxx/pcs-639x.c
@@ -67,7 +67,7 @@ mv88e639x_pcs_alloc(struct device *dev, struct mii_bus *bus, unsigned int addr,
{
struct mv88e639x_pcs *mpcs;
- mpcs = kzalloc(sizeof(*mpcs), GFP_KERNEL);
+ mpcs = kzalloc_obj(*mpcs, GFP_KERNEL);
if (!mpcs)
return NULL;
diff --git a/drivers/net/dsa/ocelot/felix.c b/drivers/net/dsa/ocelot/felix.c
index 5d34eb82e639..1587dd33a557 100644
--- a/drivers/net/dsa/ocelot/felix.c
+++ b/drivers/net/dsa/ocelot/felix.c
@@ -109,8 +109,7 @@ static int felix_tag_8021q_vlan_add_rx(struct dsa_switch *ds, int port,
key_length = ocelot->vcap[VCAP_ES0].keys[VCAP_ES0_IGR_PORT].length;
- outer_tagging_rule = kzalloc(sizeof(struct ocelot_vcap_filter),
- GFP_KERNEL);
+ outer_tagging_rule = kzalloc_obj(struct ocelot_vcap_filter, GFP_KERNEL);
if (!outer_tagging_rule)
return -ENOMEM;
@@ -178,11 +177,11 @@ static int felix_tag_8021q_vlan_add_tx(struct dsa_switch *ds, int port,
unsigned long cookie;
int err;
- untagging_rule = kzalloc(sizeof(struct ocelot_vcap_filter), GFP_KERNEL);
+ untagging_rule = kzalloc_obj(struct ocelot_vcap_filter, GFP_KERNEL);
if (!untagging_rule)
return -ENOMEM;
- redirect_rule = kzalloc(sizeof(struct ocelot_vcap_filter), GFP_KERNEL);
+ redirect_rule = kzalloc_obj(struct ocelot_vcap_filter, GFP_KERNEL);
if (!redirect_rule) {
kfree(untagging_rule);
return -ENOMEM;
@@ -1540,8 +1539,8 @@ static int felix_init_structs(struct felix *felix, int num_phys_ports)
ocelot->npi_xtr_prefix = OCELOT_TAG_PREFIX_SHORT;
ocelot->devlink = felix->ds->devlink;
- port_phy_modes = kcalloc(num_phys_ports, sizeof(phy_interface_t),
- GFP_KERNEL);
+ port_phy_modes = kzalloc_objs(phy_interface_t, num_phys_ports,
+ GFP_KERNEL);
if (!port_phy_modes)
return -ENOMEM;
diff --git a/drivers/net/dsa/ocelot/felix_vsc9959.c b/drivers/net/dsa/ocelot/felix_vsc9959.c
index 8cf4c8986587..86b9a24d3e33 100644
--- a/drivers/net/dsa/ocelot/felix_vsc9959.c
+++ b/drivers/net/dsa/ocelot/felix_vsc9959.c
@@ -2201,7 +2201,7 @@ static int vsc9959_psfp_sgi_table_add(struct ocelot *ocelot,
return 0;
}
- tmp = kzalloc(sizeof(*tmp), GFP_KERNEL);
+ tmp = kzalloc_obj(*tmp, GFP_KERNEL);
if (!tmp)
return -ENOMEM;
diff --git a/drivers/net/dsa/sja1105/sja1105_devlink.c b/drivers/net/dsa/sja1105/sja1105_devlink.c
index 30b1f1ba762f..c1dd9ccc32d0 100644
--- a/drivers/net/dsa/sja1105/sja1105_devlink.c
+++ b/drivers/net/dsa/sja1105/sja1105_devlink.c
@@ -82,8 +82,8 @@ static int sja1105_setup_devlink_regions(struct dsa_switch *ds)
struct devlink_region *region;
u64 size;
- priv->regions = kcalloc(num_regions, sizeof(struct devlink_region *),
- GFP_KERNEL);
+ priv->regions = kzalloc_objs(struct devlink_region *, num_regions,
+ GFP_KERNEL);
if (!priv->regions)
return -ENOMEM;
diff --git a/drivers/net/dsa/sja1105/sja1105_flower.c b/drivers/net/dsa/sja1105/sja1105_flower.c
index 05d8ed3121e7..c91f7371471c 100644
--- a/drivers/net/dsa/sja1105/sja1105_flower.c
+++ b/drivers/net/dsa/sja1105/sja1105_flower.c
@@ -41,7 +41,7 @@ static int sja1105_setup_bcast_policer(struct sja1105_private *priv,
int rc;
if (!rule) {
- rule = kzalloc(sizeof(*rule), GFP_KERNEL);
+ rule = kzalloc_obj(*rule, GFP_KERNEL);
if (!rule)
return -ENOMEM;
@@ -112,7 +112,7 @@ static int sja1105_setup_tc_policer(struct sja1105_private *priv,
int rc;
if (!rule) {
- rule = kzalloc(sizeof(*rule), GFP_KERNEL);
+ rule = kzalloc_obj(*rule, GFP_KERNEL);
if (!rule)
return -ENOMEM;
diff --git a/drivers/net/dsa/sja1105/sja1105_tas.c b/drivers/net/dsa/sja1105/sja1105_tas.c
index d5949d2c3e71..a3090c70b428 100644
--- a/drivers/net/dsa/sja1105/sja1105_tas.c
+++ b/drivers/net/dsa/sja1105/sja1105_tas.c
@@ -477,7 +477,7 @@ bool sja1105_gating_check_conflicts(struct sja1105_private *priv, int port,
if (list_empty(&gating_cfg->entries))
return false;
- dummy = kzalloc(struct_size(dummy, entries, num_entries), GFP_KERNEL);
+ dummy = kzalloc_flex(*dummy, entries, num_entries, GFP_KERNEL);
if (!dummy) {
NL_SET_ERR_MSG_MOD(extack, "Failed to allocate memory");
return true;
diff --git a/drivers/net/dsa/sja1105/sja1105_vl.c b/drivers/net/dsa/sja1105/sja1105_vl.c
index b7e95d60a6e4..7ec1ce5edf07 100644
--- a/drivers/net/dsa/sja1105/sja1105_vl.c
+++ b/drivers/net/dsa/sja1105/sja1105_vl.c
@@ -16,7 +16,7 @@ static int sja1105_insert_gate_entry(struct sja1105_gating_config *gating_cfg,
struct sja1105_gate_entry *e;
int rc;
- e = kzalloc(sizeof(*e), GFP_KERNEL);
+ e = kzalloc_obj(*e, GFP_KERNEL);
if (!e)
return -ENOMEM;
@@ -524,7 +524,7 @@ int sja1105_vl_redirect(struct sja1105_private *priv, int port,
}
if (!rule) {
- rule = kzalloc(sizeof(*rule), GFP_KERNEL);
+ rule = kzalloc_obj(*rule, GFP_KERNEL);
if (!rule)
return -ENOMEM;
@@ -622,7 +622,7 @@ int sja1105_vl_gate(struct sja1105_private *priv, int port,
}
if (!rule) {
- rule = kzalloc(sizeof(*rule), GFP_KERNEL);
+ rule = kzalloc_obj(*rule, GFP_KERNEL);
if (!rule)
return -ENOMEM;
@@ -635,9 +635,8 @@ int sja1105_vl_gate(struct sja1105_private *priv, int port,
rule->vl.base_time = base_time;
rule->vl.cycle_time = cycle_time;
rule->vl.num_entries = num_entries;
- rule->vl.entries = kcalloc(num_entries,
- sizeof(struct action_gate_entry),
- GFP_KERNEL);
+ rule->vl.entries = kzalloc_objs(struct action_gate_entry,
+ num_entries, GFP_KERNEL);
if (!rule->vl.entries) {
rc = -ENOMEM;
goto out;
diff --git a/drivers/net/dsa/vitesse-vsc73xx-core.c b/drivers/net/dsa/vitesse-vsc73xx-core.c
index 9d31b8258268..a2feb30843b6 100644
--- a/drivers/net/dsa/vitesse-vsc73xx-core.c
+++ b/drivers/net/dsa/vitesse-vsc73xx-core.c
@@ -1664,7 +1664,7 @@ static int vsc73xx_port_vlan_add(struct dsa_switch *ds, int port,
vsc73xx_vlan = vsc73xx_bridge_vlan_find(vsc, vlan->vid);
if (!vsc73xx_vlan) {
- vsc73xx_vlan = kzalloc(sizeof(*vsc73xx_vlan), GFP_KERNEL);
+ vsc73xx_vlan = kzalloc_obj(*vsc73xx_vlan, GFP_KERNEL);
if (!vsc73xx_vlan)
return -ENOMEM;