freebsd-nq/sys/net
Qing Li 1a41f91052 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
2006-06-05 21:20:21 +00:00
..
bpf_compat.h
bpf_filter.c Avoid unwanted sign extension of indexed byte load in bpf code. 2006-05-28 20:00:02 +00:00
bpf_jitter.c Add BPF Just-In-Time compiler support for ng_bpf(4). 2005-12-07 21:30:47 +00:00
bpf_jitter.h Add BPF Just-In-Time compiler support for ng_bpf(4). 2005-12-07 21:30:47 +00:00
bpf.c Fix the following bpf(4) race condition which can result in a panic: 2006-06-02 19:59:33 +00:00
bpf.h Back out previous two commits, this caused some problems in the namespace 2006-06-03 18:48:14 +00:00
bpfdesc.h Fix the following bpf(4) race condition which can result in a panic: 2006-06-02 19:59:33 +00:00
bridgestp.c If we miss the LINK_UP event from the network interface then the bridge port 2006-03-06 02:28:41 +00:00
bsd_comp.c Eliminate MAC entry point mac_create_mbuf_from_mbuf(), which is 2005-07-05 23:39:51 +00:00
ethernet.h add ETHERTYPE_PAE for EAPOL/802.1x 2004-10-05 19:28:52 +00:00
fddi.h - Make IFP2ENADDR() a pointer to IF_LLADDR() rather than another 2005-11-11 07:36:14 +00:00
firewire.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_arc.h Use ANSI C function protypes and declarations for if_arcsubr. 2006-04-12 07:44:31 +00:00
if_arcsubr.c Use ANSI C function protypes and declarations for if_arcsubr. 2006-04-12 07:44:31 +00:00
if_arp.h - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
if_atm.h Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 2005-08-09 10:20:02 +00:00
if_atmsubr.c o Make rt_check() function more strict: 2005-08-11 08:14:53 +00:00
if_bridge.c Fix style(9) nits, whitespace and parentheses. 2006-05-16 22:50:41 +00:00
if_bridgevar.h If we miss the LINK_UP event from the network interface then the bridge port 2006-03-06 02:28:41 +00:00
if_clone.c Fix the following bugs: 2005-11-24 18:56:14 +00:00
if_clone.h Move the cloned interface list management in to if_clone. For some drivers the 2005-11-08 20:08:34 +00:00
if_disc.c Fix the following bpf(4) race condition which can result in a panic: 2006-06-02 19:59:33 +00:00
if_dl.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_ef.c Return mbuf pointer or NULL from ip_fastforward() as the mbuf pointer 2006-01-18 14:24:39 +00:00
if_ethersubr.c Unbreak byte counters when network interfaces are in monitor mode by 2006-03-03 17:21:08 +00:00
if_faith.c add missed calls to bpf_peers_present 2006-06-02 23:14:40 +00:00
if_fddisubr.c Return mbuf pointer or NULL from ip_fastforward() as the mbuf pointer 2006-01-18 14:24:39 +00:00
if_fwsubr.c add missed calls to bpf_peers_present 2006-06-02 23:14:40 +00:00
if_gif.c Fix the following bpf(4) race condition which can result in a panic: 2006-06-02 19:59:33 +00:00
if_gif.h Add some initial locking to gif(4). It doesn't covers the whole driver, 2006-01-30 08:39:09 +00:00
if_gre.c Fix the following bpf(4) race condition which can result in a panic: 2006-06-02 19:59:33 +00:00
if_gre.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_iso88025subr.c Return mbuf pointer or NULL from ip_fastforward() as the mbuf pointer 2006-01-18 14:24:39 +00:00
if_llc.h Add hooks into the networking layer to support if_bridge. This changes struct 2005-06-05 03:13:13 +00:00
if_loop.c Fix the following bpf(4) race condition which can result in a panic: 2006-06-02 19:59:33 +00:00
if_media.c - Introduce ifmedia_baudrate(), which returns correct baudrate of the 2006-02-14 12:10:03 +00:00
if_media.h - Add definition for IFM_10G_CX4. 2006-06-02 07:50:58 +00:00
if_mib.c Add a new leaf to the net.link.generic.ifdata.%d sysctl to retrieve 2006-01-04 12:57:09 +00:00
if_mib.h Add a new leaf to the net.link.generic.ifdata.%d sysctl to retrieve 2006-01-04 12:57:09 +00:00
if_ppp.c Add IFF_NEEDSGIANT to kernel PPP support. I have no idea why this wasn't 2006-03-30 08:18:27 +00:00
if_ppp.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_pppvar.h Axe ppp_for_tty(). Use tty->t_lsc pointer to store sc. This 2005-08-12 08:27:15 +00:00
if_sl.c Fix the following bpf(4) race condition which can result in a panic: 2006-06-02 19:59:33 +00:00
if_slvar.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_sppp.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_spppfr.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_spppsubr.c Fix -Wundef from compiling the amd64 LINT. 2005-12-04 10:06:06 +00:00
if_stf.c Fix the following bpf(4) race condition which can result in a panic: 2006-06-02 19:59:33 +00:00
if_stf.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_tap.c Revert the (int *) -> (intptr_t *) conversion done as part of rev. 1.59 2006-05-30 20:08:12 +00:00
if_tap.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_tapvar.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_tun.c Fix the following bpf(4) race condition which can result in a panic: 2006-06-02 19:59:33 +00:00
if_tun.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_types.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_var.h Merge the //depot/user/yar/vlan branch into CVS. It contains some collective 2006-01-30 13:45:15 +00:00
if_vlan_var.h Merge the //depot/user/yar/vlan branch into CVS. It contains some collective 2006-01-30 13:45:15 +00:00
if_vlan.c Don't acquire a lock before calling vlan_unconfig(). 2006-03-09 14:42:51 +00:00
if.c Announce all interfaces to devd on attach/detach. This adds a new devctl 2006-06-01 00:41:07 +00:00
if.h Remove various bits of conditional Alpha code and fixup a few comments. 2006-05-12 05:04:46 +00:00
iso88025.h - Make IFP2ENADDR() a pointer to IF_LLADDR() rather than another 2005-11-11 07:36:14 +00:00
net_osdep.h Remove ip6fw. Since ipfw has full functional IPv6 support now and - in 2006-05-12 20:39:23 +00:00
netisr.c - Don't pollute opt_global.h with DEVICE_POLLING and introduce 2005-10-05 10:09:17 +00:00
netisr.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
pfil.c Somewhat re-factor the read/write locking mechanism associated with the packet 2006-02-02 03:13:16 +00:00
pfil.h define lock.h before rwlock.h for DEBUG_LOCKS 2006-02-02 20:33:10 +00:00
pfkeyv2.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ppp_comp.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ppp_deflate.c This patch fixes a problem, which exists if you have IPSEC in your kernel 2006-02-27 16:56:22 +00:00
ppp_defs.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ppp_tty.c Use new (inline) functions for calls into driver. 2005-10-16 20:44:18 +00:00
radix.c The code in rn_walktree_from() that checks if we backed up too far 2006-02-07 20:25:39 +00:00
radix.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
raw_cb.c raw_disconnect() now disconnects but does not detach the raw pcb. As a 2006-06-02 08:27:15 +00:00
raw_cb.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
raw_usrreq.c raw_disconnect() now disconnects but does not detach the raw pcb. As a 2006-06-02 08:27:15 +00:00
route.c Assuming the interface has an address of x.x.x.195, a mask of 2006-06-05 21:20:21 +00:00
route.h - Fill in the correct rtm_index for RTM_ADD and RTM_CHANGE messages. 2006-03-15 19:39:09 +00:00
rtsock.c Chance protocol switch method pru_detach() so that it returns void 2006-04-01 15:42:02 +00:00
slcompress.c
slcompress.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
slip.h
zlib.c Forward declare z_errmsg with static linkage since it is defined 2005-09-11 16:13:02 +00:00
zlib.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00