2022-11-26 10:14:49

by Yuan Can

[permalink] [raw]
Subject: [PATCH 0/2] Add check for nla_nest_start()

This series contains two patches about checking the return value of
nla_nest_start().

Yuan Can (2):
udp_tunnel: Add checks for nla_nest_start() in
__udp_tunnel_nic_dump_write()
wifi: nl80211: Add checks for nla_nest_start() in nl80211_send_iface()

net/ipv4/udp_tunnel_nic.c | 2 ++
net/wireless/nl80211.c | 3 +++
2 files changed, 5 insertions(+)

--
2.17.1


2022-11-26 10:21:57

by Yuan Can

[permalink] [raw]
Subject: [PATCH 1/2] udp_tunnel: Add checks for nla_nest_start() in __udp_tunnel_nic_dump_write()

As the nla_nest_start() may fail with NULL returned, the return value needs
to be checked.

Fixes: c7d759eb7b12 ("ethtool: add tunnel info interface")
Signed-off-by: Yuan Can <[email protected]>
---
net/ipv4/udp_tunnel_nic.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/net/ipv4/udp_tunnel_nic.c b/net/ipv4/udp_tunnel_nic.c
index bc3a043a5d5c..75a0caa4aebe 100644
--- a/net/ipv4/udp_tunnel_nic.c
+++ b/net/ipv4/udp_tunnel_nic.c
@@ -624,6 +624,8 @@ __udp_tunnel_nic_dump_write(struct net_device *dev, unsigned int table,
continue;

nest = nla_nest_start(skb, ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY);
+ if (!nest)
+ goto err_cancel;

if (nla_put_be16(skb, ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT,
utn->entries[table][j].port) ||
--
2.17.1

2022-11-26 10:22:24

by Yuan Can

[permalink] [raw]
Subject: [PATCH 2/2] wifi: nl80211: Add checks for nla_nest_start() in nl80211_send_iface()

As the nla_nest_start() may fail with NULL returned, the return value needs
to be checked.

Fixes: ce08cd344a00 ("wifi: nl80211: expose link information for interfaces")
Signed-off-by: Yuan Can <[email protected]>
---
net/wireless/nl80211.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 597c52236514..d2321c683398 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -3868,6 +3868,9 @@ static int nl80211_send_iface(struct sk_buff *msg, u32 portid, u32 seq, int flag
struct cfg80211_chan_def chandef = {};
int ret;

+ if (!link)
+ goto nla_put_failure;
+
if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id))
goto nla_put_failure;
if (nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN,
--
2.17.1

2022-11-27 19:52:36

by David Ahern

[permalink] [raw]
Subject: Re: [PATCH 1/2] udp_tunnel: Add checks for nla_nest_start() in __udp_tunnel_nic_dump_write()

On 11/26/22 3:06 AM, Yuan Can wrote:
> As the nla_nest_start() may fail with NULL returned, the return value needs
> to be checked.
>
> Fixes: c7d759eb7b12 ("ethtool: add tunnel info interface")
> Signed-off-by: Yuan Can <[email protected]>
> ---
> net/ipv4/udp_tunnel_nic.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/net/ipv4/udp_tunnel_nic.c b/net/ipv4/udp_tunnel_nic.c
> index bc3a043a5d5c..75a0caa4aebe 100644
> --- a/net/ipv4/udp_tunnel_nic.c
> +++ b/net/ipv4/udp_tunnel_nic.c
> @@ -624,6 +624,8 @@ __udp_tunnel_nic_dump_write(struct net_device *dev, unsigned int table,
> continue;
>
> nest = nla_nest_start(skb, ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY);
> + if (!nest)
> + goto err_cancel;

no need to call nla_nest_cancel if nest_start fails.

>
> if (nla_put_be16(skb, ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT,
> utn->entries[table][j].port) ||

2022-11-28 22:27:48

by Jakub Kicinski

[permalink] [raw]
Subject: Re: [PATCH 0/2] Add check for nla_nest_start()

On Sat, 26 Nov 2022 10:06:32 +0000 Yuan Can wrote:
> udp_tunnel: Add checks for nla_nest_start() in
> __udp_tunnel_nic_dump_write()
> wifi: nl80211: Add checks for nla_nest_start() in nl80211_send_iface()

Please post these separately (with David's feedback addressed)
they need to go to different trees so making them as series is
counter-productive.

2022-11-29 01:30:45

by Yuan Can

[permalink] [raw]
Subject: Re: [PATCH 1/2] udp_tunnel: Add checks for nla_nest_start() in __udp_tunnel_nic_dump_write()


在 2022/11/28 3:39, David Ahern 写道:
> On 11/26/22 3:06 AM, Yuan Can wrote:
>> As the nla_nest_start() may fail with NULL returned, the return value needs
>> to be checked.
>>
>> Fixes: c7d759eb7b12 ("ethtool: add tunnel info interface")
>> Signed-off-by: Yuan Can <[email protected]>
>> ---
>> net/ipv4/udp_tunnel_nic.c | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/net/ipv4/udp_tunnel_nic.c b/net/ipv4/udp_tunnel_nic.c
>> index bc3a043a5d5c..75a0caa4aebe 100644
>> --- a/net/ipv4/udp_tunnel_nic.c
>> +++ b/net/ipv4/udp_tunnel_nic.c
>> @@ -624,6 +624,8 @@ __udp_tunnel_nic_dump_write(struct net_device *dev, unsigned int table,
>> continue;
>>
>> nest = nla_nest_start(skb, ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY);
>> + if (!nest)
>> + goto err_cancel;
> no need to call nla_nest_cancel if nest_start fails.
Ok, thanks for the suggestion, it will be fixed in the next version.

--
Best regards,
Yuan Can

2022-11-29 01:31:49

by Yuan Can

[permalink] [raw]
Subject: Re: [PATCH 0/2] Add check for nla_nest_start()


在 2022/11/29 6:18, Jakub Kicinski 写道:
> On Sat, 26 Nov 2022 10:06:32 +0000 Yuan Can wrote:
>> udp_tunnel: Add checks for nla_nest_start() in
>> __udp_tunnel_nic_dump_write()
>> wifi: nl80211: Add checks for nla_nest_start() in nl80211_send_iface()
> Please post these separately (with David's feedback addressed)
> they need to go to different trees so making them as series is
> counter-productive.
Ok, thanks for the suggestion!

--
Best regards,
Yuan Can