]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Separate list manipulation locking from state change in multicast
authorshurd <shurd@FreeBSD.org>
Wed, 2 May 2018 19:36:29 +0000 (19:36 +0000)
committershurd <shurd@FreeBSD.org>
Wed, 2 May 2018 19:36:29 +0000 (19:36 +0000)
commit7d4b8facc71c1322df5656f7d007a39939d5d013
tree605fb041714cffab9218069efe9ade83faf4843d
parentd0b707de44bc19a4a8980e7eeb9f6e94ffa48dbd
Separate list manipulation locking from state change in multicast

Multicast incorrectly calls in to drivers with a mutex held causing drivers
to have to go through all manner of contortions to use a non sleepable lock.
Serialize multicast updates instead.

Submitted by: mmacy <mmacy@mattmacy.io>
Reviewed by: shurd, sbruno
Sponsored by: Limelight Networks
Differential Revision: https://reviews.freebsd.org/D14969
18 files changed:
sys/kern/subr_gtaskqueue.c
sys/kern/subr_witness.c
sys/net/if.c
sys/netinet/igmp.c
sys/netinet/igmp_var.h
sys/netinet/in.c
sys/netinet/in_mcast.c
sys/netinet/in_pcb.c
sys/netinet/in_var.h
sys/netinet/ip_carp.c
sys/netinet6/in6.c
sys/netinet6/in6_ifattach.c
sys/netinet6/in6_mcast.c
sys/netinet6/in6_pcb.c
sys/netinet6/in6_var.h
sys/netinet6/mld6.c
sys/netinet6/mld6_var.h
sys/sys/gtaskqueue.h