Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Aug 2005 19:29:47 +0000 (UTC)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/netinet igmp.c in.c in_var.h ip_input.c ip_output.c src/sys/kern subr_witness.c
Message-ID:  <200508031929.j73JTlCc011223@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
rwatson     2005-08-03 19:29:47 UTC

  FreeBSD src repository

  Modified files:
    sys/netinet          igmp.c in.c in_var.h ip_input.c 
                         ip_output.c 
    sys/kern             subr_witness.c 
  Log:
  Introduce in_multi_mtx, which will protect IPv4-layer multicast address
  lists, as well as accessor macros.  For now, this is a recursive mutex
  due code sequences where IPv4 multicast calls into IGMP calls into
  ip_output(), which then tests for a multicast forwarding case.
  
  For support macros in in_var.h to check multicast address lists, assert
  that in_multi_mtx is held.
  
  Acquire in_multi_mtx around iteration over the IPv4 multicast address
  lists, such as in ip_input() and ip_output().
  
  Acquire in_multi_mtx when manipulating the IPv4 layer multicast addresses,
  as well as over the manipulation of ifnet multicast address lists in order
  to keep the two layers in sync.
  
  Lock down accesses to IPv4 multicast addresses in IGMP, or assert the
  lock when performing IGMP join/leave events.
  
  Eliminate spl's associated with IPv4 multicast addresses, portions of
  IGMP that weren't previously expunged by IGMP locking.
  
  Add in_multi_mtx, igmp_mtx, and if_addr_mtx lock order to hard-coded
  lock order in WITNESS, in that order.
  
  Problem reported by:    Ed Maste <emaste at phaedrus dot sandvine dot ca>
  MFC after:              10 days
  
  Revision  Changes    Path
  1.196     +7 -0      src/sys/kern/subr_witness.c
  1.49      +12 -8     src/sys/netinet/igmp.c
  1.86      +18 -10    src/sys/netinet/in.c
  1.55      +14 -0     src/sys/netinet/in_var.h
  1.303     +2 -0      src/sys/netinet/ip_input.c
  1.243     +3 -0      src/sys/netinet/ip_output.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200508031929.j73JTlCc011223>