Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 960d5848 authored by Sabrina Dubroca's avatar Sabrina Dubroca Committed by David S. Miller
Browse files

macsec: fix memory leaks around rx_handler (un)registration



We leak a struct macsec_rxh_data when we unregister the rx_handler in
macsec_dellink.
We also leak a struct macsec_rxh_data in register_macsec_dev if we fail
to register the rx_handler.

Fixes: c09440f7 ("macsec: introduce IEEE 802.1AE driver")
Signed-off-by: default avatarSabrina Dubroca <sd@queasysnail.net>
Acked-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 96cfc505
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -2931,8 +2931,10 @@ static void macsec_dellink(struct net_device *dev, struct list_head *head)

	unregister_netdevice_queue(dev, head);
	list_del_rcu(&macsec->secys);
	if (list_empty(&rxd->secys))
	if (list_empty(&rxd->secys)) {
		netdev_rx_handler_unregister(real_dev);
		kfree(rxd);
	}

	macsec_del_dev(macsec);
}
@@ -2954,9 +2956,11 @@ static int register_macsec_dev(struct net_device *real_dev,

		err = netdev_rx_handler_register(real_dev, macsec_handle_frame,
						 rxd);
		if (err < 0)
		if (err < 0) {
			kfree(rxd);
			return err;
		}
	}

	list_add_tail_rcu(&macsec->secys, &rxd->secys);
	return 0;