diff mbox series

[net] net: netlink: Fix uninit-value in netlink_recvmsg()

Message ID 20191206134923.2771651-1-haakon.bugge@oracle.com
State Changes Requested
Delegated to: David Miller
Headers show
Series [net] net: netlink: Fix uninit-value in netlink_recvmsg() | expand

Commit Message

Haakon Bugge Dec. 6, 2019, 1:49 p.m. UTC
If skb_recv_datagram() returns NULL, netlink_recvmsg() will return an
arbitrarily value.

Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com>
---
 net/netlink/af_netlink.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Sergei Shtylyov Dec. 6, 2019, 6:20 p.m. UTC | #1
Hello!

On 12/06/2019 04:49 PM, Håkon Bugge wrote:

> If skb_recv_datagram() returns NULL, netlink_recvmsg() will return an
> arbitrarily value.

   Arbitrary?

> Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com>
> ---
>  net/netlink/af_netlink.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
> index 90b2ab9dd449..bb7276f9c9f8 100644
> --- a/net/netlink/af_netlink.c
> +++ b/net/netlink/af_netlink.c
> @@ -1936,6 +1936,7 @@ static int netlink_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
>  		return -EOPNOTSUPP;
>  
>  	copied = 0;
> +	err = 0;
>  
>  	skb = skb_recv_datagram(sk, flags, noblock, &err);
>  	if (skb == NULL)

MBR, Sergei
Haakon Bugge Dec. 6, 2019, 6:45 p.m. UTC | #2
> On 6 Dec 2019, at 19:20, Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> wrote:
> 
> Hello!
> 
> On 12/06/2019 04:49 PM, Håkon Bugge wrote:
> 
>> If skb_recv_datagram() returns NULL, netlink_recvmsg() will return an
>> arbitrarily value.
> 
>   Arbitrary?

is an adjective. Since I described the verb *return*, I assumed the adverb, arbitrarily, is correct, But english is not my native language.

Thxs, Håkon

> 
>> Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com>
>> ---
>> net/netlink/af_netlink.c | 1 +
>> 1 file changed, 1 insertion(+)
>> 
>> diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
>> index 90b2ab9dd449..bb7276f9c9f8 100644
>> --- a/net/netlink/af_netlink.c
>> +++ b/net/netlink/af_netlink.c
>> @@ -1936,6 +1936,7 @@ static int netlink_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
>> 		return -EOPNOTSUPP;
>> 
>> 	copied = 0;
>> +	err = 0;
>> 
>> 	skb = skb_recv_datagram(sk, flags, noblock, &err);
>> 	if (skb == NULL)
> 
> MBR, Sergei
Eric Dumazet Dec. 6, 2019, 6:47 p.m. UTC | #3
On 12/6/19 5:49 AM, Håkon Bugge wrote:
> If skb_recv_datagram() returns NULL, netlink_recvmsg() will return an
> arbitrarily value.
> 
> Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com>
> ---
>  net/netlink/af_netlink.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
> index 90b2ab9dd449..bb7276f9c9f8 100644
> --- a/net/netlink/af_netlink.c
> +++ b/net/netlink/af_netlink.c
> @@ -1936,6 +1936,7 @@ static int netlink_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
>  		return -EOPNOTSUPP;
>  
>  	copied = 0;
> +	err = 0;
>  
>  	skb = skb_recv_datagram(sk, flags, noblock, &err);
>  	if (skb == NULL)
> 

Please provide a Fixes: tag

By doing the research, you probably would find there is no bug.

err is set in skb_recv_datagram() when there is no packet to read.
Sergei Shtylyov Dec. 6, 2019, 6:57 p.m. UTC | #4
On 12/06/2019 09:45 PM, Håkon Bugge wrote:

>>> If skb_recv_datagram() returns NULL, netlink_recvmsg() will return an
>>> arbitrarily value.
>>
>>   Arbitrary?
> 
> is an adjective.

   Yes. And it goes with the "value" noun.

> Since I described the verb *return*, I assumed the adverb,
> arbitrarily, is correct,

   In that case, it's misplaced, it should go before the verb.

> But english is not my native language.

   Not mine as well. :-)

> Thxs, Håkon

MBR, Sergei
Haakon Bugge Dec. 6, 2019, 7:07 p.m. UTC | #5
> On 6 Dec 2019, at 19:47, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> 
> 
> 
> On 12/6/19 5:49 AM, Håkon Bugge wrote:
>> If skb_recv_datagram() returns NULL, netlink_recvmsg() will return an
>> arbitrarily value.
>> 
>> Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com>
>> ---
>> net/netlink/af_netlink.c | 1 +
>> 1 file changed, 1 insertion(+)
>> 
>> diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
>> index 90b2ab9dd449..bb7276f9c9f8 100644
>> --- a/net/netlink/af_netlink.c
>> +++ b/net/netlink/af_netlink.c
>> @@ -1936,6 +1936,7 @@ static int netlink_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
>> 		return -EOPNOTSUPP;
>> 
>> 	copied = 0;
>> +	err = 0;
>> 
>> 	skb = skb_recv_datagram(sk, flags, noblock, &err);
>> 	if (skb == NULL)
>> 
> 
> Please provide a Fixes: tag
> 
> By doing the research, you probably would find there is no bug.
> 
> err is set in skb_recv_datagram() when there is no packet to read.

yes, you are right, by bad.


Håkon
diff mbox series

Patch

diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index 90b2ab9dd449..bb7276f9c9f8 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -1936,6 +1936,7 @@  static int netlink_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
 		return -EOPNOTSUPP;
 
 	copied = 0;
+	err = 0;
 
 	skb = skb_recv_datagram(sk, flags, noblock, &err);
 	if (skb == NULL)