Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 Jun 2006 21:20:21 +0000 (UTC)
From:      Qing Li <qingli@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/net route.c
Message-ID:  <200606052120.k55LKLrh056253@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
qingli      2006-06-05 21:20:21 UTC

  FreeBSD src repository

  Modified files:
    sys/net              route.c 
  Log:
  Assuming the interface has an address of x.x.x.195, a mask of
  255.255.255.0, and a default route with gateway x.x.x.1. Now if
  the address mask is changed to something more specific, e.g.,
  255.255.255.128, then after the mask change the default gateway
  is no longer reachable.
  
  Since the default route is still present in the routing table,
  when the output code tries to resolve the address of the default
  gateway in function rt_check(), again, the default route will be
  returned by rtalloc1(). Because the lock is currently held on the
  rtentry structure, one more attempt to hold the lock will trigger
  a crash due to "lock recursed on non-recursive mutex ..."
  
  This is a general problem. The fix checks for the above condition
  so that an existing route entry is not mistaken for a new cloned
  route. Approriately, an ENETUNREACH error is returned back to the
  caller
  
  Approved by:    andre
  
  Revision  Changes    Path
  1.117     +6 -0      src/sys/net/route.c



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