Closed wirelessmundi closed 5 years ago
I think is the same issue as in https://github.com/imq/linuximq/issues/70 I apply the following changes: --- linux-4.4.32-imq.orig.diff 2018-10-22 19:21:29.000000000 +0200 +++ linux-4.4.32-imq.diff 2018-10-22 19:09:42.000000000 +0200 @@ -1560,7 +1560,7 @@ const struct nf_queue_handler *qh;
linux-4.4.162-imq.diff.txt / QUEUE == DROP if no one is waiting, to be safe. / -- qh = rcu_dereference(queue_handler); +- qh = rcu_dereference(net->nf.queue_handler); + if (queuetype == NF_IMQ_QUEUE) { +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) + qh = rcu_dereference(queue_imq_handler); @@ -1569,7 +1569,7 @@ + goto err_unlock; +#endif + } else { -+ qh = rcu_dereference(queue_handler); ++ qh = rcu_dereference(net->nf.queue_handler); + } + if (!qh) {
Attach the modified patch for others.
The patch modified by @wirelessmundi worked for the elrepo kernel-lt-4.4.238-1.el7. Thanks for sharing!
Hi, When patching the current linux kernel 4.4.162 it fails to patch, should we use patch 4.4-imq.diff?
Thanks,
Output: linux-4.4.162]# patch -p1 < ../patches/linux-4.4.32-imq.diff patching file drivers/net/imq.c patching file drivers/net/Kconfig patching file drivers/net/Makefile patching file include/linux/imq.h patching file include/linux/netdevice.h Hunk #1 succeeded at 3413 (offset 16 lines). patching file include/linux/netfilter/xt_IMQ.h patching file include/linux/netfilter_ipv4/ipt_IMQ.h patching file include/linux/netfilter_ipv6/ip6t_IMQ.h patching file include/linux/skbuff.h Hunk #2 succeeded at 572 (offset 1 line). Hunk #3 succeeded at 584 (offset 1 line). Hunk #6 succeeded at 3444 (offset 12 lines). patching file include/net/netfilter/nf_queue.h Hunk #1 succeeded at 31 with fuzz 2. patching file include/net/pkt_sched.h patching file include/net/sch_generic.h patching file include/uapi/linux/netfilter.h patching file net/core/dev.c Hunk #2 succeeded at 2776 (offset 63 lines). Hunk #3 succeeded at 2819 (offset 63 lines). patching file net/core/skbuff.c Hunk #4 succeeded at 3456 with fuzz 1 (offset 22 lines). patching file net/ipv6/ip6_output.c patching file net/netfilter/core.c patching file net/netfilter/Kconfig patching file net/netfilter/Makefile patching file net/netfilter/nf_internals.h patching file net/netfilter/nf_queue.c Hunk #1 succeeded at 27 with fuzz 2 (offset -1 lines). Hunk #2 succeeded at 131 (offset -2 lines). Hunk #3 FAILED at 142. Hunk #4 succeeded at 216 (offset -1 lines). 1 out of 4 hunks FAILED -- saving rejects to file net/netfilter/nf_queue.c.rej patching file net/netfilter/xt_IMQ.c patching file net/sched/sch_generic.c
linux-4.4.162]# cat net/netfilter/nf_queue.c.rej --- net/netfilter/nf_queue.c 2016-01-11 05:01:32.000000000 +0600 +++ net/netfilter/nf_queue.c 2016-12-03 20:11:46.566088622 +0700 @@ -142,7 +160,17 @@ int nf_queue(struct sk_buff skb, const struct nf_queue_handler qh;
/ QUEUE == DROP if no one is waiting, to be safe. / - qh = rcu_dereference(queue_handler); + if (queuetype == NF_IMQ_QUEUE) { +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) + qh = rcu_dereference(queue_imq_handler); +#else + BUG(); + goto err_unlock; +#endif + } else { + qh = rcu_dereference(queue_handler); + } + if (!qh) { status = -ESRCH; goto err;