diff mbox series

ipv6: Fix error path to cancel the meseage

Message ID 20201112080950.1476302-1-zhangqilong3@huawei.com
State Superseded
Headers show
Series ipv6: Fix error path to cancel the meseage | expand

Commit Message

Zhang Qilong Nov. 12, 2020, 8:09 a.m. UTC
genlmsg_cancel() needs to be called in the error path of
inet6_fill_ifmcaddr and inet6_fill_ifacaddr to cancel
the message.

Fixes: 203651b665f72 ("ipv6: add inet6_fill_args")
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
---
 net/ipv6/addrconf.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Jakub Kicinski Nov. 14, 2020, 2:22 a.m. UTC | #1
On Thu, 12 Nov 2020 16:09:50 +0800 Zhang Qilong wrote:
> genlmsg_cancel() needs to be called in the error path of
> inet6_fill_ifmcaddr and inet6_fill_ifacaddr to cancel
> the message.
> 
> Fixes: 203651b665f72 ("ipv6: add inet6_fill_args")
> Reported-by: Hulk Robot <hulkci@huawei.com>
> Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>

This is the correct fixes tag:

Fixes: 6ecf4c37eb3e ("ipv6: enable IFA_TARGET_NETNSID for RTM_GETADDR") 

Applied.
Zhang Qilong Nov. 14, 2020, 2:29 a.m. UTC | #2
> 
> On Thu, 12 Nov 2020 16:09:50 +0800 Zhang Qilong wrote:
> > genlmsg_cancel() needs to be called in the error path of
> > inet6_fill_ifmcaddr and inet6_fill_ifacaddr to cancel the message.
> >
> > Fixes: 203651b665f72 ("ipv6: add inet6_fill_args")
> > Reported-by: Hulk Robot <hulkci@huawei.com>
> > Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
> 
> This is the correct fixes tag:
> 
> Fixes: 6ecf4c37eb3e ("ipv6: enable IFA_TARGET_NETNSID for RTM_GETADDR")
> 
> Applied.

Yes, you are right.

Thanks,
Zhang
diff mbox series

Patch

diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 4211e960130c..eff2cacd5209 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -5023,8 +5023,10 @@  static int inet6_fill_ifmcaddr(struct sk_buff *skb, struct ifmcaddr6 *ifmca,
 		return -EMSGSIZE;
 
 	if (args->netnsid >= 0 &&
-	    nla_put_s32(skb, IFA_TARGET_NETNSID, args->netnsid))
+	    nla_put_s32(skb, IFA_TARGET_NETNSID, args->netnsid)) {
+		nlmsg_cancel(skb, nlh);
 		return -EMSGSIZE;
+	}
 
 	put_ifaddrmsg(nlh, 128, IFA_F_PERMANENT, scope, ifindex);
 	if (nla_put_in6_addr(skb, IFA_MULTICAST, &ifmca->mca_addr) < 0 ||
@@ -5055,8 +5057,10 @@  static int inet6_fill_ifacaddr(struct sk_buff *skb, struct ifacaddr6 *ifaca,
 		return -EMSGSIZE;
 
 	if (args->netnsid >= 0 &&
-	    nla_put_s32(skb, IFA_TARGET_NETNSID, args->netnsid))
+	    nla_put_s32(skb, IFA_TARGET_NETNSID, args->netnsid)) {
+		nlmsg_cancel(skb, nlh);
 		return -EMSGSIZE;
+	}
 
 	put_ifaddrmsg(nlh, 128, IFA_F_PERMANENT, scope, ifindex);
 	if (nla_put_in6_addr(skb, IFA_ANYCAST, &ifaca->aca_addr) < 0 ||