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 |
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! ✅ |
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 --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)
Signed-off-by: Kishen Maloor <kishen.maloor@intel.com> --- net/mptcp/pm_userspace.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-)