Commit 89afe370 authored by Mark Tomlinson's avatar Mark Tomlinson Committed by Sasha Levin

l2tp: Fix error creating L2TP tunnels

[ Upstream commit 853effc5 ]

A previous commit (33f72e6f) added notification via netlink for tunnels
when created/modified/deleted. If the notification returned an error,
this error was returned from the tunnel function. If there were no
listeners, the error code ESRCH was returned, even though having no
listeners is not an error. Other calls to this and other similar
notification functions either ignore the error code, or filter ESRCH.
This patch checks for ESRCH and does not flag this as an error.
Reviewed-by: default avatarHamish Martin <hamish.martin@alliedtelesis.co.nz>
Signed-off-by: default avatarMark Tomlinson <mark.tomlinson@alliedtelesis.co.nz>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
parent 29d526ac
...@@ -124,8 +124,13 @@ static int l2tp_tunnel_notify(struct genl_family *family, ...@@ -124,8 +124,13 @@ static int l2tp_tunnel_notify(struct genl_family *family,
ret = l2tp_nl_tunnel_send(msg, info->snd_portid, info->snd_seq, ret = l2tp_nl_tunnel_send(msg, info->snd_portid, info->snd_seq,
NLM_F_ACK, tunnel, cmd); NLM_F_ACK, tunnel, cmd);
if (ret >= 0) if (ret >= 0) {
return genlmsg_multicast_allns(family, msg, 0, 0, GFP_ATOMIC); ret = genlmsg_multicast_allns(family, msg, 0, 0, GFP_ATOMIC);
/* We don't care if no one is listening */
if (ret == -ESRCH)
ret = 0;
return ret;
}
nlmsg_free(msg); nlmsg_free(msg);
...@@ -147,8 +152,13 @@ static int l2tp_session_notify(struct genl_family *family, ...@@ -147,8 +152,13 @@ static int l2tp_session_notify(struct genl_family *family,
ret = l2tp_nl_session_send(msg, info->snd_portid, info->snd_seq, ret = l2tp_nl_session_send(msg, info->snd_portid, info->snd_seq,
NLM_F_ACK, session, cmd); NLM_F_ACK, session, cmd);
if (ret >= 0) if (ret >= 0) {
return genlmsg_multicast_allns(family, msg, 0, 0, GFP_ATOMIC); ret = genlmsg_multicast_allns(family, msg, 0, 0, GFP_ATOMIC);
/* We don't care if no one is listening */
if (ret == -ESRCH)
ret = 0;
return ret;
}
nlmsg_free(msg); nlmsg_free(msg);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment