HomeFreeBSD

Merge if.c:1.240, if.c:1.241, if.c:1.242 from HEAD to RELENG_6, which
rS149407Unpublished

Unpublished Commit ยท Learn More

No further details are available.

Description

Merge if.c:1.240, if.c:1.241, if.c:1.242 from HEAD to RELENG_6, which
correct nits in the addition of if_addr_mtx:

if.c:1.240:

Initialize the if_addr mutex in if_alloc() rather than waiting until
if_attach().  This allows ethernet drivers to use it in their routines
to program their MAC filters before ether_ifattach() is called (de(4) is
one such driver).  Also, the if_addr mutex is destroyed in if_free()
rather than if_detach(), so there was another potential bug in that a
driver that failed during attach and called if_free() without having
called ether_ifattach() would have tried to destroy an uninitialized
mutex.

Reported by:    Holm Tiffe holm at freibergnet dot de
Discussed with: rwatson

if.c:1.241:

destroy lock _before_ free'ing the structure it resides in

if.c:1.242:

  • Move IF_ADDR_LOCK_DESTROY(ifp) from if_free to if_free_type.
  • Add a note that additions should be made to if_free_type and not if_free to help avoid this in the future.

    This apparently fixes a use after free in if_bridge and may fix bugs in other direct if_free_type consumers.

    Reported by: thompsa

Approved by: re (hrs)

Details

Provenance
rwatsonAuthored on
Parents
rS149406: Merge if.c:1.239, if_var.h:1.101 from HEAD to RELENG_6:
Branches
Unknown
Tags
Unknown

Event Timeline