diff options
author | Florian Westphal <fw@strlen.de> | 2018-05-27 11:24:34 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2018-05-29 14:50:28 +0200 |
commit | 8a3d4c361224353435fb04b1790f498f500bc7fb (patch) | |
tree | 7e2a445ac099343cd1fab533190f4fbc66f42eb9 /net | |
parent | d6501de8726afb9d7ed502eafc8bfa629482049d (diff) | |
download | linux-8a3d4c361224353435fb04b1790f498f500bc7fb.tar.gz linux-8a3d4c361224353435fb04b1790f498f500bc7fb.tar.bz2 linux-8a3d4c361224353435fb04b1790f498f500bc7fb.zip |
netfilter: nf_tables: fail batch if fatal signal is pending
abort batch processing and return so task can exit faster.
Otherwise even SIGKILL has no immediate effect.
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/netfilter/nfnetlink.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/net/netfilter/nfnetlink.c b/net/netfilter/nfnetlink.c index 88c9e222b670..5a1bd23af1a3 100644 --- a/net/netfilter/nfnetlink.c +++ b/net/netfilter/nfnetlink.c @@ -25,6 +25,7 @@ #include <linux/uaccess.h> #include <net/sock.h> #include <linux/init.h> +#include <linux/sched/signal.h> #include <net/netlink.h> #include <linux/netfilter/nfnetlink.h> @@ -330,6 +331,13 @@ replay: while (skb->len >= nlmsg_total_size(0)) { int msglen, type; + if (fatal_signal_pending(current)) { + nfnl_err_reset(&err_list); + err = -EINTR; + status = NFNL_BATCH_FAILURE; + goto done; + } + memset(&extack, 0, sizeof(extack)); nlh = nlmsg_hdr(skb); err = 0; |