NetBSD/src 4ZeY93gsys/net if_l2tp.c

   l2tp(4): avoid having struct ifqueue 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.

   Tx processing of l2tp(4) uses normally involves sleepable operations so we
   must avoid dereferencing a percpu data (struct ifqueue) after executing Tx
   processing.  Address this situation by having just a pointer to the data in
   a percpu storage instead.

   Reviewed by ozaki-r@ and yamaguchi@
VersionDeltaFile
1.39+37-13sys/net/if_l2tp.c
+37-131 files

UnifiedSplitRaw