Commit e0954930 authored by Vladimir Oltean's avatar Vladimir Oltean Committed by Jakub Kicinski
Browse files

net: dsa: tag_8021q: avoid leaking ctx on dsa_tag_8021q_register() error path



If dsa_tag_8021q_setup() fails, for example due to the inability of the
device to install a VLAN, the tag_8021q context of the switch will leak.
Make sure it is freed on the error path.

Fixes: 328621f6 ("net: dsa: tag_8021q: absorb dsa_8021q_setup into dsa_tag_8021q_{,un}register")
Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Link: https://lore.kernel.org/r/20221209235242.480344-1-vladimir.oltean@nxp.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 0c87b545
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -398,6 +398,7 @@ static void dsa_tag_8021q_teardown(struct dsa_switch *ds)
int dsa_tag_8021q_register(struct dsa_switch *ds, __be16 proto)
{
	struct dsa_8021q_context *ctx;
	int err;

	ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
	if (!ctx)
@@ -410,7 +411,15 @@ int dsa_tag_8021q_register(struct dsa_switch *ds, __be16 proto)

	ds->tag_8021q_ctx = ctx;

	return dsa_tag_8021q_setup(ds);
	err = dsa_tag_8021q_setup(ds);
	if (err)
		goto err_free;

	return 0;

err_free:
	kfree(ctx);
	return err;
}
EXPORT_SYMBOL_GPL(dsa_tag_8021q_register);