tipc: Cleanup tipc_nl_bearer_add() error paths

Consolidate the error paths of tipc_nl_bearer_add() under the common label
if the function holds rtnl_lock.

Signed-off-by: Shigeru Yoshida <syoshida@redhat.com>
Reviewed-by: Tung Nguyen <tung.q.nguyen@dektech.com.au>
Link: https://lore.kernel.org/r/20240213134058.386123-1-syoshida@redhat.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
Shigeru Yoshida 2024-02-13 22:40:58 +09:00 committed by Paolo Abeni
parent 038ba1dc4e
commit 984328c765

View file

@ -1079,30 +1079,27 @@ int tipc_nl_bearer_add(struct sk_buff *skb, struct genl_info *info)
rtnl_lock(); rtnl_lock();
b = tipc_bearer_find(net, name); b = tipc_bearer_find(net, name);
if (!b) { if (!b) {
rtnl_unlock();
NL_SET_ERR_MSG(info->extack, "Bearer not found"); NL_SET_ERR_MSG(info->extack, "Bearer not found");
return -EINVAL; err = -EINVAL;
goto out;
} }
#ifdef CONFIG_TIPC_MEDIA_UDP #ifdef CONFIG_TIPC_MEDIA_UDP
if (attrs[TIPC_NLA_BEARER_UDP_OPTS]) { if (attrs[TIPC_NLA_BEARER_UDP_OPTS]) {
if (b->media->type_id != TIPC_MEDIA_TYPE_UDP) { if (b->media->type_id != TIPC_MEDIA_TYPE_UDP) {
rtnl_unlock();
NL_SET_ERR_MSG(info->extack, "UDP option is unsupported"); NL_SET_ERR_MSG(info->extack, "UDP option is unsupported");
return -EINVAL; err = -EINVAL;
goto out;
} }
err = tipc_udp_nl_bearer_add(b, err = tipc_udp_nl_bearer_add(b,
attrs[TIPC_NLA_BEARER_UDP_OPTS]); attrs[TIPC_NLA_BEARER_UDP_OPTS]);
if (err) {
rtnl_unlock();
return err;
}
} }
#endif #endif
out:
rtnl_unlock(); rtnl_unlock();
return 0; return err;
} }
int __tipc_nl_bearer_set(struct sk_buff *skb, struct genl_info *info) int __tipc_nl_bearer_set(struct sk_buff *skb, struct genl_info *info)