From d2c3a4ba25fbfb6b2c7b5fe423be1b287954cd4c Mon Sep 17 00:00:00 2001 From: Xin Long Date: Tue, 2 Jul 2019 00:57:19 +0800 Subject: tipc: remove ub->ubsock checks Both tipc_udp_enable and tipc_udp_disable are called under rtnl_lock, ub->ubsock could never be NULL in tipc_udp_disable and cleanup_bearer, so remove the check. Also remove the one in tipc_udp_enable by adding "free" label. Signed-off-by: Xin Long Signed-off-by: David S. Miller --- net/tipc/udp_media.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/net/tipc/udp_media.c b/net/tipc/udp_media.c index b8962df07d36..c0f694ae57ab 100644 --- a/net/tipc/udp_media.c +++ b/net/tipc/udp_media.c @@ -759,7 +759,7 @@ static int tipc_udp_enable(struct net *net, struct tipc_bearer *b, err = dst_cache_init(&ub->rcast.dst_cache, GFP_ATOMIC); if (err) - goto err; + goto free; /** * The bcast media address port is used for all peers and the ip @@ -771,13 +771,14 @@ static int tipc_udp_enable(struct net *net, struct tipc_bearer *b, else err = tipc_udp_rcast_add(b, &remote); if (err) - goto err; + goto free; return 0; -err: + +free: dst_cache_destroy(&ub->rcast.dst_cache); - if (ub->ubsock) - udp_tunnel_sock_release(ub->ubsock); + udp_tunnel_sock_release(ub->ubsock); +err: kfree(ub); return err; } @@ -795,8 +796,7 @@ static void cleanup_bearer(struct work_struct *work) } dst_cache_destroy(&ub->rcast.dst_cache); - if (ub->ubsock) - udp_tunnel_sock_release(ub->ubsock); + udp_tunnel_sock_release(ub->ubsock); synchronize_net(); kfree(ub); } @@ -811,8 +811,7 @@ static void tipc_udp_disable(struct tipc_bearer *b) pr_err("UDP bearer instance not found\n"); return; } - if (ub->ubsock) - sock_set_flag(ub->ubsock->sk, SOCK_DEAD); + sock_set_flag(ub->ubsock->sk, SOCK_DEAD); RCU_INIT_POINTER(ub->bearer, NULL); /* sock_release need to be done outside of rtnl lock */ -- cgit v1.2.3-59-g8ed1b