mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
net: Add a flow_cache_flush_deferred function
flow_cach_flush() might sleep but can be called from atomic context via the xfrm garbage collector. So add a flow_cache_flush_deferred() function and use this if the xfrm garbage colector is invoked from within the packet path. Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com> Acked-by: Timo Teräs <timo.teras@iki.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
9f28a2fc0b
commit
c0ed1c14a7
@@ -358,6 +358,18 @@ void flow_cache_flush(void)
|
||||
put_online_cpus();
|
||||
}
|
||||
|
||||
static void flow_cache_flush_task(struct work_struct *work)
|
||||
{
|
||||
flow_cache_flush();
|
||||
}
|
||||
|
||||
static DECLARE_WORK(flow_cache_flush_work, flow_cache_flush_task);
|
||||
|
||||
void flow_cache_flush_deferred(void)
|
||||
{
|
||||
schedule_work(&flow_cache_flush_work);
|
||||
}
|
||||
|
||||
static int __cpuinit flow_cache_cpu_prepare(struct flow_cache *fc, int cpu)
|
||||
{
|
||||
struct flow_cache_percpu *fcp = per_cpu_ptr(fc->percpu, cpu);
|
||||
|
||||
Reference in New Issue
Block a user