lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 30 Dec 2020 19:44:17 -0800 From: Jakub Kicinski <kuba@...nel.org> To: davem@...emloft.net Cc: netdev@...r.kernel.org, martin.varghese@...ia.com, willemb@...gle.com, Jakub Kicinski <kuba@...nel.org> Subject: [PATCH net] net: bareudp: add missing error handling for bareudp_link_config() .dellink does not get called after .newlink fails, bareudp_newlink() must undo what bareudp_configure() has done if bareudp_link_config() fails. Fixes: 571912c69f0e ("net: UDP tunnel encapsulation module for tunnelling different protocols like MPLS, IP, NSH etc.") Signed-off-by: Jakub Kicinski <kuba@...nel.org> --- Found by code inspection and compile-tested only. drivers/net/bareudp.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/net/bareudp.c b/drivers/net/bareudp.c index 85ebd2b7e446..7a03a9059ccc 100644 --- a/drivers/net/bareudp.c +++ b/drivers/net/bareudp.c @@ -648,6 +648,7 @@ static int bareudp_newlink(struct net *net, struct net_device *dev, struct nlattr *tb[], struct nlattr *data[], struct netlink_ext_ack *extack) { + struct bareudp_dev *bareudp = netdev_priv(dev); struct bareudp_conf conf; int err; @@ -661,9 +662,14 @@ static int bareudp_newlink(struct net *net, struct net_device *dev, err = bareudp_link_config(dev, tb); if (err) - return err; + goto err_unconfig; return 0; + +err_unconfig: + list_del(&bareudp->next); + unregister_netdevice(dev); + return err; } static void bareudp_dellink(struct net_device *dev, struct list_head *head) -- 2.26.2
Powered by blists - more mailing lists