On Fri, Oct 30, 2020 at 06:16:31PM -0700, Jakub Kicinski wrote: > On Thu, 29 Oct 2020 04:27:37 +0200 Vladimir Oltean wrote: > > + mc = devm_kzalloc(ocelot->dev, sizeof(*mc), GFP_KERNEL); > > + if (!mc) > > + return -ENOMEM; > > + > > + mc->entry_type = ocelot_classify_mdb(mdb->addr); > > + ether_addr_copy(mc->addr, mdb->addr); > > + mc->vid = vid; > > + > > + pgid = ocelot_mdb_get_pgid(ocelot, mc); > > > > if (pgid < 0) { > > dev_err(ocelot->dev, > > @@ -1038,24 +1044,19 @@ int ocelot_port_mdb_add(struct ocelot *ocelot, int > > port, > > return -ENOSPC; > > } > > Transitionally leaking mc here on pgid < 0
Is it a real leakage if it's allocated with devm though? At some point it's still going to be freed. Nonetheless I agree there's still a lot of work to do. Maybe I didn't choose the best moment to concentrate on a new feature, should have focused on cleanup more beforehand, including a change from devm to plain allocation/free of resources.