diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/netfilter/nfnetlink.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/net/netfilter/nfnetlink.c b/net/netfilter/nfnetlink.c index 11d504d0ac72..bf23e489e4cd 100644 --- a/net/netfilter/nfnetlink.c +++ b/net/netfilter/nfnetlink.c | |||
@@ -197,13 +197,12 @@ EXPORT_SYMBOL_GPL(nfnetlink_has_listeners); | |||
197 | 197 | ||
198 | int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, int echo) | 198 | int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, int echo) |
199 | { | 199 | { |
200 | gfp_t allocation = in_interrupt() ? GFP_ATOMIC : GFP_KERNEL; | ||
201 | int err = 0; | 200 | int err = 0; |
202 | 201 | ||
203 | NETLINK_CB(skb).dst_group = group; | 202 | NETLINK_CB(skb).dst_group = group; |
204 | if (echo) | 203 | if (echo) |
205 | atomic_inc(&skb->users); | 204 | atomic_inc(&skb->users); |
206 | netlink_broadcast(nfnl, skb, pid, group, allocation); | 205 | netlink_broadcast(nfnl, skb, pid, group, gfp_any()); |
207 | if (echo) | 206 | if (echo) |
208 | err = netlink_unicast(nfnl, skb, pid, MSG_DONTWAIT); | 207 | err = netlink_unicast(nfnl, skb, pid, MSG_DONTWAIT); |
209 | 208 | ||