Neil Horman
73e42897e8
ipv4: fix NULL pointer + success return in route lookup path
...
Don't drop route if we're not caching
I recently got a report of an oops on a route lookup. Maxime was
testing what would happen if route caching was turned off (doing so by setting
making rt_caching always return 0), and found that it triggered an oops. I
looked at it and found that the problem stemmed from the fact that the route
lookup routines were returning success from their lookup paths (which is good),
but never set the **rp pointer to anything (which is bad). This happens because
in rt_intern_hash, if rt_caching returns false, we call rt_drop and return 0.
This almost emulates slient success. What we should be doing is assigning *rp =
rt and _not_ dropping the route. This way, during slow path lookups, when we
create a new route cache entry, we don't immediately discard it, rather we just
don't add it into the cache hash table, but we let this one lookup use it for
the purpose of this route request. Maxime has tested and reports it prevents
the oops. There is still a subsequent routing issue that I'm looking into
further, but I'm confident that, even if its related to this same path, this
patch makes sense to take.
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-06-20 01:15:16 -07:00
..
9p
virtio: find_vqs/del_vqs virtio operations
2009-06-12 22:16:36 +09:30
802
net: remove COMPAT_NET_DEV_OPS
2009-05-25 01:53:53 -07:00
8021q
8021q: Vlan driver should use rcu_barrier() on unload instead of syncronize_net()
2009-06-10 01:11:22 -07:00
appletalk
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
atm
atm: sk_wmem_alloc initial value is one
2009-06-18 00:29:12 -07:00
ax25
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
bluetooth
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
bridge
bridge: Simplify interface for ATM LANE
2009-06-11 21:03:21 -07:00
can
can: af_can.c use rcu_barrier() on module unload.
2009-06-10 01:11:24 -07:00
core
net: group address list and its count
2009-06-18 00:29:08 -07:00
dcb
dccp
net: skb->dst accessors
2009-06-03 02:51:04 -07:00
decnet
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
dsa
net: convert unicast addr list
2009-05-29 22:12:32 -07:00
econet
net: sk_wmem_alloc has initial value of one, not zero
2009-06-17 04:31:25 -07:00
ethernet
net: remove COMPAT_NET_DEV_OPS
2009-05-25 01:53:53 -07:00
ieee802154
ieee802154: use standard routine for printing dumps
2009-06-19 00:18:43 -07:00
ipv4
ipv4: fix NULL pointer + success return in route lookup path
2009-06-20 01:15:16 -07:00
ipv6
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
ipx
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
irda
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
iucv
af_iucv: Return -EAGAIN if iucv msg limit is exceeded
2009-06-19 00:10:40 -07:00
key
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
lapb
llc
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
mac80211
mac80211: fix wext bssid/ssid setting
2009-06-15 15:05:59 -04:00
netfilter
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
2009-06-15 03:02:23 -07:00
netlabel
netlabel: Use genl_register_family_with_ops()
2009-05-21 16:50:24 -07:00
netlink
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
netrom
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
packet
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
phonet
phonet: Use frag list abstraction interfaces.
2009-06-09 00:24:06 -07:00
rds
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
2009-05-18 21:08:20 -07:00
rfkill
rfkill: don't impose global states on resume (just restore the previous states)
2009-06-10 13:28:37 -04:00
rose
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
rxrpc
RxRPC: Error handling for rxrpc_alloc_connection()
2009-05-21 15:22:02 -07:00
sched
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
sctp
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
sunrpc
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
2009-06-15 03:02:23 -07:00
tipc
tipc: Use genl_register_family_with_ops()
2009-05-21 16:50:23 -07:00
unix
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
wanrouter
wimax
wimax: fix warning caused by not checking retval of rfkill_set_hw_state()
2009-06-11 11:12:48 -07:00
wireless
cfg80211: fix rfkill locking problem
2009-06-10 13:28:41 -04:00
x25
net: correct off-by-one write allocations reports
2009-06-18 00:29:12 -07:00
xfrm
xfrm: Use frag list abstraction interfaces.
2009-06-09 00:24:07 -07:00
compat.c
Kconfig
net: add IEEE 802.15.4 socket family implementation
2009-06-09 05:25:32 -07:00
Makefile
net: add IEEE 802.15.4 socket family implementation
2009-06-09 05:25:32 -07:00
nonet.c
socket.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
2009-04-06 18:05:43 -07:00
sysctl_net.c
net: sysctl_net - use net_eq to compare nets
2009-03-16 16:23:30 +01:00
TUNABLE