Filed via internal bugzilla. This will need to be reviewed by someone in net@. diff --git a/sys/netinet/in_mcast.c b/sys/netinet/in_mcast.c index 078f2f24536a..c97e36159d01 100644 --- a/sys/netinet/in_mcast.c +++ b/sys/netinet/in_mcast.c @@ -1058,9 +1058,10 @@ inm_merge(struct in_multi *inm, /*const*/ struct in_mfilter *imf) /* Decrement ASM listener count on transition out of ASM mode. */ if (imf->imf_st[0] == MCAST_EXCLUDE && nsrc0 == 0) { if ((imf->imf_st[1] != MCAST_EXCLUDE) || - (imf->imf_st[1] == MCAST_EXCLUDE && nsrc1 > 0)) + (imf->imf_st[1] == MCAST_EXCLUDE && nsrc1 > 0)) { CTR1(KTR_IGMPV3, "%s: --asm on inm at t1", __func__); --inm->inm_st[1].iss_asm; + } } /* Increment ASM listener count on transition to ASM mode. */ diff --git a/sys/netinet6/in6_mcast.c b/sys/netinet6/in6_mcast.c index 4effb57d0391..b34d02cf35ad 100644 --- a/sys/netinet6/in6_mcast.c +++ b/sys/netinet6/in6_mcast.c @@ -999,9 +999,10 @@ in6m_merge(struct in6_multi *inm, /*const*/ struct in6_mfilter *imf) /* Decrement ASM listener count on transition out of ASM mode. */ if (imf->im6f_st[0] == MCAST_EXCLUDE && nsrc0 == 0) { if ((imf->im6f_st[1] != MCAST_EXCLUDE) || - (imf->im6f_st[1] == MCAST_EXCLUDE && nsrc1 > 0)) + (imf->im6f_st[1] == MCAST_EXCLUDE && nsrc1 > 0)) { CTR1(KTR_MLD, "%s: --asm on inm at t1", __func__); --inm->in6m_st[1].iss_asm; + } } /* Increment ASM listener count on transition to ASM mode. */ Add missing braces around MCAST_EXCLUDE check so .iss_asm (the number of ASM listeners) isn't incorrectly decremented when dealing with MLD-layer source datagrams when inspecting im*s_st[1] (the second state in the structure). Reported by: Coverity Submitted by: Miles Ohlrich <miles.ohlrich@isilon.com> Sponsored by: Dell EMC Isilon
The patch looks correct to me.
(In reply to Andrey V. Elsukov from comment #1) Ok. Is the proposed message accurate, or could it be improved (I wrote it up based on a quick glance at the code -- it might not be accurate). Thanks!
A commit references this bug: Author: ngie Date: Sat May 13 18:41:25 UTC 2017 New revision: 318255 URL: https://svnweb.freebsd.org/changeset/base/318255 Log: Add missing braces around MCAST_EXCLUDE check when KTR support is compiled into the kernel This ensures that .iss_asm (the number of ASM listeners) isn't incorrectly decremented for MLD-layer source datagrams when inspecting im*s_st[1] (the second state in the structure). MFC after: 2 months PR: 217509 [1] Reported by: Coverity (Isilon) Reviewed by: ae ("This patch looks correct to me." [1]) Submitted by: Miles Ohlrich <miles.ohlrich@isilon.com> Sponsored by: Dell EMC Isilon Changes: head/sys/netinet/in_mcast.c head/sys/netinet6/in6_mcast.c
A commit references this bug: Author: ngie Date: Tue Jul 18 16:58:53 UTC 2017 New revision: 321134 URL: https://svnweb.freebsd.org/changeset/base/321134 Log: MFC r318255: Add missing braces around MCAST_EXCLUDE check when KTR support is compiled into the kernel This ensures that .iss_asm (the number of ASM listeners) isn't incorrectly decremented for MLD-layer source datagrams when inspecting im*s_st[1] (the second state in the structure). PR: 217509 [1] Changes: _U stable/10/ stable/10/sys/netinet/in_mcast.c stable/10/sys/netinet6/in6_mcast.c
A commit references this bug: Author: ngie Date: Tue Jul 18 16:58:55 UTC 2017 New revision: 321135 URL: https://svnweb.freebsd.org/changeset/base/321135 Log: MFC r318255: Add missing braces around MCAST_EXCLUDE check when KTR support is compiled into the kernel This ensures that .iss_asm (the number of ASM listeners) isn't incorrectly decremented for MLD-layer source datagrams when inspecting im*s_st[1] (the second state in the structure). PR: 217509 [1] Changes: _U stable/11/ stable/11/sys/netinet/in_mcast.c stable/11/sys/netinet6/in6_mcast.c