Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Aug 2005 18:36:39 +0000 (UTC)
From:      Brooks Davis <brooks@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/net if.c
Message-ID:  <200508181836.j7IIadbw058645@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
brooks      2005-08-18 18:36:39 UTC

  FreeBSD src repository

  Modified files:
    sys/net              if.c 
  Log:
  When we started calling if_findindex() from if_alloc() with an empty
  struct ifnet most of if_findindex() become a complex no-op.  Remove it
  and replace it with a corrected version of the four line for loop it
  devolved to plus some error handling.  This should probably be replaced
  with subr_unit at some point.
  
  Switch from checking ifaddr_byindex to ifnet_byindex when looking for
  empty indexes.  Since we're doing this from if_alloc/if_free, we can
  only be sure that ifnet_byindex will be correct.  This fixes panics when
  loading the ef(4) module.  The panics were caused by the fact that
  if_alloc was called four time before if_attach was called and thus
  ifaddr_byindex was not set and the same unit was allocated again.  This
  in turn caused the first if_attach to fail because the ifp was not the
  one in ifnet_byindex(ifp->if_index).
  
  Reported by:    "Wojciech A. Koszek" <dunstan at freebsd dot czest dot pl>
  PR:             kern/84987
  MFC After:      1 day
  
  Revision  Changes    Path
  1.244     +16 -56    src/sys/net/if.c



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