Module Name: src Committed By: ozaki-r Date: Thu Sep 19 04:08:30 UTC 2019
Modified Files: src/sys/net: route.c route.h src/sys/netinet: ip_input.c src/sys/netinet6: ip6_forward.c ip6_input.c src/sys/netipsec: ipsec_output.c Log Message: Avoid having a rtcache directly in a percpu storage percpu(9) has a certain memory storage for each CPU and provides it by the piece to users. If the storages went short, percpu(9) enlarges them by allocating new larger memory areas, replacing old ones with them and destroying the old ones. A percpu storage referenced by a pointer gotten via percpu_getref can be destroyed by the mechanism after a running thread sleeps even if percpu_putref has not been called. Using rtcache, i.e., packet processing, typically involves sleepable operations such as rwlock so we must avoid dereferencing a rtcache that is directly stored in a percpu storage during packet processing. Address this situation by having just a pointer to a rtcache in a percpu storage instead. Reviewed by knakahara@ and yamaguchi@ To generate a diff of this commit: cvs rdiff -u -r1.219 -r1.220 src/sys/net/route.c cvs rdiff -u -r1.124 -r1.125 src/sys/net/route.h cvs rdiff -u -r1.390 -r1.391 src/sys/netinet/ip_input.c cvs rdiff -u -r1.96 -r1.97 src/sys/netinet6/ip6_forward.c cvs rdiff -u -r1.209 -r1.210 src/sys/netinet6/ip6_input.c cvs rdiff -u -r1.82 -r1.83 src/sys/netipsec/ipsec_output.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.