linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] net: initialize local variables in net/ipv6/mcast.c and net/ipv4/igmp.c
@ 2021-04-02 17:36 Phillip Potter
  2021-04-02 17:49 ` Eric Dumazet
  0 siblings, 1 reply; 6+ messages in thread
From: Phillip Potter @ 2021-04-02 17:36 UTC (permalink / raw)
  To: davem; +Cc: yoshfuji, dsahern, kuba, netdev, linux-kernel

Use memset to initialize two local buffers in net/ipv6/mcast.c,
and another in net/ipv4/igmp.c. Fixes a KMSAN found uninit-value
bug reported by syzbot at:
https://syzkaller.appspot.com/bug?id=0766d38c656abeace60621896d705743aeefed51

Reported-by: syzbot+001516d86dbe88862cec@syzkaller.appspotmail.com
Signed-off-by: Phillip Potter <phil@philpotter.co.uk>
---
 net/ipv4/igmp.c  | 2 ++
 net/ipv6/mcast.c | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index 7b272bbed2b4..bc8e358a9a2a 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -1131,6 +1131,8 @@ static void ip_mc_filter_add(struct in_device *in_dev, __be32 addr)
 	char buf[MAX_ADDR_LEN];
 	struct net_device *dev = in_dev->dev;
 
+	memset(buf, 0, sizeof(buf));
+
 	/* Checking for IFF_MULTICAST here is WRONG-WRONG-WRONG.
 	   We will get multicast token leakage, when IFF_MULTICAST
 	   is changed. This check should be done in ndo_set_rx_mode
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index 6c8604390266..ad90dc28f318 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -658,6 +658,8 @@ static void igmp6_group_added(struct ifmcaddr6 *mc)
 	struct net_device *dev = mc->idev->dev;
 	char buf[MAX_ADDR_LEN];
 
+	memset(buf, 0, sizeof(buf));
+
 	if (IPV6_ADDR_MC_SCOPE(&mc->mca_addr) <
 	    IPV6_ADDR_SCOPE_LINKLOCAL)
 		return;
@@ -694,6 +696,8 @@ static void igmp6_group_dropped(struct ifmcaddr6 *mc)
 	struct net_device *dev = mc->idev->dev;
 	char buf[MAX_ADDR_LEN];
 
+	memset(buf, 0, sizeof(buf));
+
 	if (IPV6_ADDR_MC_SCOPE(&mc->mca_addr) <
 	    IPV6_ADDR_SCOPE_LINKLOCAL)
 		return;
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] net: initialize local variables in net/ipv6/mcast.c and net/ipv4/igmp.c
  2021-04-02 17:36 [PATCH] net: initialize local variables in net/ipv6/mcast.c and net/ipv4/igmp.c Phillip Potter
@ 2021-04-02 17:49 ` Eric Dumazet
  2021-04-02 18:10   ` Phillip Potter
  0 siblings, 1 reply; 6+ messages in thread
From: Eric Dumazet @ 2021-04-02 17:49 UTC (permalink / raw)
  To: Phillip Potter, davem; +Cc: yoshfuji, dsahern, kuba, netdev, linux-kernel



On 4/2/21 7:36 PM, Phillip Potter wrote:
> Use memset to initialize two local buffers in net/ipv6/mcast.c,
> and another in net/ipv4/igmp.c. Fixes a KMSAN found uninit-value
> bug reported by syzbot at:
> https://syzkaller.appspot.com/bug?id=0766d38c656abeace60621896d705743aeefed51


According to this link, the bug no longer triggers.

Please explain why you think it is still there.

> 
> Reported-by: syzbot+001516d86dbe88862cec@syzkaller.appspotmail.com
> Signed-off-by: Phillip Potter <phil@philpotter.co.uk>
> ---
>  net/ipv4/igmp.c  | 2 ++
>  net/ipv6/mcast.c | 4 ++++
>  2 files changed, 6 insertions(+)
> 
> diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
> index 7b272bbed2b4..bc8e358a9a2a 100644
> --- a/net/ipv4/igmp.c
> +++ b/net/ipv4/igmp.c
> @@ -1131,6 +1131,8 @@ static void ip_mc_filter_add(struct in_device *in_dev, __be32 addr)
>  	char buf[MAX_ADDR_LEN];
>  	struct net_device *dev = in_dev->dev;
>  
> +	memset(buf, 0, sizeof(buf));
> +
>  	/* Checking for IFF_MULTICAST here is WRONG-WRONG-WRONG.
>  	   We will get multicast token leakage, when IFF_MULTICAST
>  	   is changed. This check should be done in ndo_set_rx_mode
> diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
> index 6c8604390266..ad90dc28f318 100644
> --- a/net/ipv6/mcast.c
> +++ b/net/ipv6/mcast.c
> @@ -658,6 +658,8 @@ static void igmp6_group_added(struct ifmcaddr6 *mc)
>  	struct net_device *dev = mc->idev->dev;
>  	char buf[MAX_ADDR_LEN];
>  
> +	memset(buf, 0, sizeof(buf));
> +
>  	if (IPV6_ADDR_MC_SCOPE(&mc->mca_addr) <
>  	    IPV6_ADDR_SCOPE_LINKLOCAL)
>  		return;
> @@ -694,6 +696,8 @@ static void igmp6_group_dropped(struct ifmcaddr6 *mc)
>  	struct net_device *dev = mc->idev->dev;
>  	char buf[MAX_ADDR_LEN];
>  
> +	memset(buf, 0, sizeof(buf));
> +
>  	if (IPV6_ADDR_MC_SCOPE(&mc->mca_addr) <
>  	    IPV6_ADDR_SCOPE_LINKLOCAL)
>  		return;
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] net: initialize local variables in net/ipv6/mcast.c and net/ipv4/igmp.c
  2021-04-02 17:49 ` Eric Dumazet
@ 2021-04-02 18:10   ` Phillip Potter
  2021-04-02 20:53     ` Eric Dumazet
  0 siblings, 1 reply; 6+ messages in thread
From: Phillip Potter @ 2021-04-02 18:10 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: davem, yoshfuji, dsahern, kuba, netdev, linux-kernel

On Fri, Apr 02, 2021 at 07:49:44PM +0200, Eric Dumazet wrote:
> 
> 
> On 4/2/21 7:36 PM, Phillip Potter wrote:
> > Use memset to initialize two local buffers in net/ipv6/mcast.c,
> > and another in net/ipv4/igmp.c. Fixes a KMSAN found uninit-value
> > bug reported by syzbot at:
> > https://syzkaller.appspot.com/bug?id=0766d38c656abeace60621896d705743aeefed51
> 
> 
> According to this link, the bug no longer triggers.
> 
> Please explain why you think it is still there.
> 

Dear Eric,

It definitely still triggers, tested it on the master branch of
https://github.com/google/kmsan last night. The patch which fixes the
crash on that page is the same patch I've sent in.

Regards,
Phil

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] net: initialize local variables in net/ipv6/mcast.c and net/ipv4/igmp.c
  2021-04-02 18:10   ` Phillip Potter
@ 2021-04-02 20:53     ` Eric Dumazet
  2021-04-02 21:12       ` Eric Dumazet
  0 siblings, 1 reply; 6+ messages in thread
From: Eric Dumazet @ 2021-04-02 20:53 UTC (permalink / raw)
  To: Phillip Potter, Eric Dumazet
  Cc: davem, yoshfuji, dsahern, kuba, netdev, linux-kernel



On 4/2/21 8:10 PM, Phillip Potter wrote:
> On Fri, Apr 02, 2021 at 07:49:44PM +0200, Eric Dumazet wrote:
>>
>>
>> On 4/2/21 7:36 PM, Phillip Potter wrote:
>>> Use memset to initialize two local buffers in net/ipv6/mcast.c,
>>> and another in net/ipv4/igmp.c. Fixes a KMSAN found uninit-value
>>> bug reported by syzbot at:
>>> https://syzkaller.appspot.com/bug?id=0766d38c656abeace60621896d705743aeefed51
>>
>>
>> According to this link, the bug no longer triggers.
>>
>> Please explain why you think it is still there.
>>
> 
> Dear Eric,
> 
> It definitely still triggers, tested it on the master branch of
> https://github.com/google/kmsan last night. The patch which fixes the
> crash on that page is the same patch I've sent in.

Please send the full report (stack trace)

Thanks.




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] net: initialize local variables in net/ipv6/mcast.c and net/ipv4/igmp.c
  2021-04-02 20:53     ` Eric Dumazet
@ 2021-04-02 21:12       ` Eric Dumazet
  2021-04-03 19:41         ` Phillip Potter
  0 siblings, 1 reply; 6+ messages in thread
From: Eric Dumazet @ 2021-04-02 21:12 UTC (permalink / raw)
  To: Eric Dumazet, Phillip Potter
  Cc: davem, yoshfuji, dsahern, kuba, netdev, linux-kernel



On 4/2/21 10:53 PM, Eric Dumazet wrote:
> 
> 
> On 4/2/21 8:10 PM, Phillip Potter wrote:
>> On Fri, Apr 02, 2021 at 07:49:44PM +0200, Eric Dumazet wrote:
>>>
>>>
>>> On 4/2/21 7:36 PM, Phillip Potter wrote:
>>>> Use memset to initialize two local buffers in net/ipv6/mcast.c,
>>>> and another in net/ipv4/igmp.c. Fixes a KMSAN found uninit-value
>>>> bug reported by syzbot at:
>>>> https://syzkaller.appspot.com/bug?id=0766d38c656abeace60621896d705743aeefed51
>>>
>>>
>>> According to this link, the bug no longer triggers.
>>>
>>> Please explain why you think it is still there.
>>>
>>
>> Dear Eric,
>>
>> It definitely still triggers, tested it on the master branch of
>> https://github.com/google/kmsan last night. The patch which fixes the
>> crash on that page is the same patch I've sent in.
> 
> Please send the full report (stack trace)

I think your patch just silences the real problem.

The issue at hand is that TUNSETLINK changes dev->type without making
any change to dev->addr_len

This is the real issue.

If you care about this, please fix tun driver.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] net: initialize local variables in net/ipv6/mcast.c and net/ipv4/igmp.c
  2021-04-02 21:12       ` Eric Dumazet
@ 2021-04-03 19:41         ` Phillip Potter
  0 siblings, 0 replies; 6+ messages in thread
From: Phillip Potter @ 2021-04-03 19:41 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: davem, yoshfuji, dsahern, kuba, netdev, linux-kernel

On Fri, Apr 02, 2021 at 11:12:36PM +0200, Eric Dumazet wrote:
> 
> 
> On 4/2/21 10:53 PM, Eric Dumazet wrote:
> > 
> > 
> > On 4/2/21 8:10 PM, Phillip Potter wrote:
> >> On Fri, Apr 02, 2021 at 07:49:44PM +0200, Eric Dumazet wrote:
> >>>
> >>>
> >>> On 4/2/21 7:36 PM, Phillip Potter wrote:
> >>>> Use memset to initialize two local buffers in net/ipv6/mcast.c,
> >>>> and another in net/ipv4/igmp.c. Fixes a KMSAN found uninit-value
> >>>> bug reported by syzbot at:
> >>>> https://syzkaller.appspot.com/bug?id=0766d38c656abeace60621896d705743aeefed51
> >>>
> >>>
> >>> According to this link, the bug no longer triggers.
> >>>
> >>> Please explain why you think it is still there.
> >>>
> >>
> >> Dear Eric,
> >>
> >> It definitely still triggers, tested it on the master branch of
> >> https://github.com/google/kmsan last night. The patch which fixes the
> >> crash on that page is the same patch I've sent in.
> > 
> > Please send the full report (stack trace)
> 
> I think your patch just silences the real problem.
> 
> The issue at hand is that TUNSETLINK changes dev->type without making
> any change to dev->addr_len
> 
> This is the real issue.
> 
> If you care about this, please fix tun driver.
> 

Dear Eric,

Thank you for pointing me in the right direction. I will do as you
suggest.

Regards,
Phil

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-04-03 19:41 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-02 17:36 [PATCH] net: initialize local variables in net/ipv6/mcast.c and net/ipv4/igmp.c Phillip Potter
2021-04-02 17:49 ` Eric Dumazet
2021-04-02 18:10   ` Phillip Potter
2021-04-02 20:53     ` Eric Dumazet
2021-04-02 21:12       ` Eric Dumazet
2021-04-03 19:41         ` Phillip Potter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).