Commit aabc92bb authored by Pablo Neira Ayuso's avatar Pablo Neira Ayuso

net: add __netdev_alloc_pcpu_stats() to indicate gfp flags

nf_tables may create percpu counters from the packet path through its
dynamic set instantiation infrastructure, so we need a way to allocate
this through GFP_ATOMIC.
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 74ec4d55
...@@ -2068,20 +2068,23 @@ struct pcpu_sw_netstats { ...@@ -2068,20 +2068,23 @@ struct pcpu_sw_netstats {
struct u64_stats_sync syncp; struct u64_stats_sync syncp;
}; };
#define netdev_alloc_pcpu_stats(type) \ #define __netdev_alloc_pcpu_stats(type, gfp) \
({ \ ({ \
typeof(type) __percpu *pcpu_stats = alloc_percpu(type); \ typeof(type) __percpu *pcpu_stats = alloc_percpu_gfp(type, gfp);\
if (pcpu_stats) { \ if (pcpu_stats) { \
int __cpu; \ int __cpu; \
for_each_possible_cpu(__cpu) { \ for_each_possible_cpu(__cpu) { \
typeof(type) *stat; \ typeof(type) *stat; \
stat = per_cpu_ptr(pcpu_stats, __cpu); \ stat = per_cpu_ptr(pcpu_stats, __cpu); \
u64_stats_init(&stat->syncp); \ u64_stats_init(&stat->syncp); \
} \ } \
} \ } \
pcpu_stats; \ pcpu_stats; \
}) })
#define netdev_alloc_pcpu_stats(type) \
__netdev_alloc_pcpu_stats(type, GFP_KERNEL);
#include <linux/notifier.h> #include <linux/notifier.h>
/* netdevice notifier chain. Please remember to update the rtnetlink /* netdevice notifier chain. Please remember to update the rtnetlink
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment