diff mbox series

[mptcp-next,1/3] Squash-to: mptcp: netlink: Add MPTCP_PM_CMD_ANNOUNCE

Message ID 20220419230340.2263545-2-kishen.maloor@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Matthieu Baerts
Headers show
Series mptcp: fix bug in userspace PM APIs | expand

Checks

Context Check Description
matttbe/build success Build and static analysis OK
matttbe/checkpatch warning total: 0 errors, 1 warnings, 0 checks, 58 lines checked
matttbe/KVM_Validation__normal success Success! ✅

Commit Message

Kishen Maloor April 19, 2022, 11:03 p.m. UTC
Signed-off-by: Kishen Maloor <kishen.maloor@intel.com>
---
 net/mptcp/pm_userspace.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

Comments

Geliang Tang April 20, 2022, 1:04 a.m. UTC | #1
Hi Kishen,

Kishen Maloor <kishen.maloor@intel.com> 于2022年4月20日周三 07:03写道:
>
> Signed-off-by: Kishen Maloor <kishen.maloor@intel.com>
> ---
>  net/mptcp/pm_userspace.c | 19 +++++++++++--------
>  1 file changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
> index fce61530fe9e..fca3e4bdf5d4 100644
> --- a/net/mptcp/pm_userspace.c
> +++ b/net/mptcp/pm_userspace.c
> @@ -127,11 +127,11 @@ int mptcp_nl_cmd_announce(struct sk_buff *skb, struct genl_info *info)
>         struct mptcp_pm_addr_entry addr_val;
>         struct mptcp_sock *msk;
>         u32 token_val;
> -       int err;
> +       int err = -EINVAL;

This breaks the "reversed XMas tree" order.

Thanks,
-Geliang

>
>         if (!addr || !token) {
>                 GENL_SET_ERR_MSG(info, "missing required inputs");
> -               return -EINVAL;
> +               return err;
>         }
>
>         token_val = nla_get_u32(token);
> @@ -139,29 +139,29 @@ int mptcp_nl_cmd_announce(struct sk_buff *skb, struct genl_info *info)
>         msk = mptcp_token_get_sock(sock_net(skb->sk), token_val);
>         if (!msk) {
>                 NL_SET_ERR_MSG_ATTR(info->extack, token, "invalid token");
> -               return -EINVAL;
> +               return err;
>         }
>
>         if (!mptcp_pm_is_userspace(msk)) {
>                 GENL_SET_ERR_MSG(info, "invalid request; userspace PM not selected");
> -               return -EINVAL;
> +               goto announce_err;
>         }
>
>         err = mptcp_pm_parse_entry(addr, info, true, &addr_val);
>         if (err < 0) {
>                 GENL_SET_ERR_MSG(info, "error parsing local address");
> -               return err;
> +               goto announce_err;
>         }
>
>         if (addr_val.addr.id == 0 || !(addr_val.flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) {
>                 GENL_SET_ERR_MSG(info, "invalid addr id or flags");
> -               return -EINVAL;
> +               goto announce_err;
>         }
>
>         err = mptcp_userspace_pm_append_new_local_addr(msk, &addr_val);
>         if (err < 0) {
>                 GENL_SET_ERR_MSG(info, "did not match address and id");
> -               return err;
> +               goto announce_err;
>         }
>
>         lock_sock((struct sock *)msk);
> @@ -175,7 +175,10 @@ int mptcp_nl_cmd_announce(struct sk_buff *skb, struct genl_info *info)
>         spin_unlock_bh(&msk->pm.lock);
>         release_sock((struct sock *)msk);
>
> -       return 0;
> +       err = 0;
> + announce_err:
> +       sock_put((struct sock *)msk);
> +       return err;
>  }
>
>  int mptcp_nl_cmd_remove(struct sk_buff *skb, struct genl_info *info)
> --
> 2.31.1
>
>
diff mbox series

Patch

diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index fce61530fe9e..fca3e4bdf5d4 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -127,11 +127,11 @@  int mptcp_nl_cmd_announce(struct sk_buff *skb, struct genl_info *info)
 	struct mptcp_pm_addr_entry addr_val;
 	struct mptcp_sock *msk;
 	u32 token_val;
-	int err;
+	int err = -EINVAL;
 
 	if (!addr || !token) {
 		GENL_SET_ERR_MSG(info, "missing required inputs");
-		return -EINVAL;
+		return err;
 	}
 
 	token_val = nla_get_u32(token);
@@ -139,29 +139,29 @@  int mptcp_nl_cmd_announce(struct sk_buff *skb, struct genl_info *info)
 	msk = mptcp_token_get_sock(sock_net(skb->sk), token_val);
 	if (!msk) {
 		NL_SET_ERR_MSG_ATTR(info->extack, token, "invalid token");
-		return -EINVAL;
+		return err;
 	}
 
 	if (!mptcp_pm_is_userspace(msk)) {
 		GENL_SET_ERR_MSG(info, "invalid request; userspace PM not selected");
-		return -EINVAL;
+		goto announce_err;
 	}
 
 	err = mptcp_pm_parse_entry(addr, info, true, &addr_val);
 	if (err < 0) {
 		GENL_SET_ERR_MSG(info, "error parsing local address");
-		return err;
+		goto announce_err;
 	}
 
 	if (addr_val.addr.id == 0 || !(addr_val.flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) {
 		GENL_SET_ERR_MSG(info, "invalid addr id or flags");
-		return -EINVAL;
+		goto announce_err;
 	}
 
 	err = mptcp_userspace_pm_append_new_local_addr(msk, &addr_val);
 	if (err < 0) {
 		GENL_SET_ERR_MSG(info, "did not match address and id");
-		return err;
+		goto announce_err;
 	}
 
 	lock_sock((struct sock *)msk);
@@ -175,7 +175,10 @@  int mptcp_nl_cmd_announce(struct sk_buff *skb, struct genl_info *info)
 	spin_unlock_bh(&msk->pm.lock);
 	release_sock((struct sock *)msk);
 
-	return 0;
+	err = 0;
+ announce_err:
+	sock_put((struct sock *)msk);
+	return err;
 }
 
 int mptcp_nl_cmd_remove(struct sk_buff *skb, struct genl_info *info)