mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf
Pablo Neira Ayuso says: ==================== Netfilter fixes for net The following patchset contains Netfilter fixes for your net tree, they are: 1) Fix use after free of struct proc_dir_entry in ipt_CLUSTERIP, patch from Sabrina Dubroca. 2) Fix spurious EINVAL errors from iptables over nft compatibility layer. 3) Reload pointer to ip header only if there is non-terminal verdict, ie. XT_CONTINUE, otherwise invalid memory access may happen, patch from Taehee Yoo. 4) Fix interaction between SYNPROXY and NAT, SYNPROXY adds sequence adjustment already, however from nf_nat_setup() assumes there's not. Patch from Xin Long. 5) Fix burst arithmetics in nft_limit as Joe Stringer mentioned during NFWS in Faro. Patch from Andy Zhou. ==================== Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
commit
af57d2b720
6 changed files with 30 additions and 24 deletions
|
|
@ -268,14 +268,14 @@ unsigned int arpt_do_table(struct sk_buff *skb,
|
|||
acpar.targinfo = t->data;
|
||||
verdict = t->u.kernel.target->target(skb, &acpar);
|
||||
|
||||
/* Target might have changed stuff. */
|
||||
arp = arp_hdr(skb);
|
||||
|
||||
if (verdict == XT_CONTINUE)
|
||||
if (verdict == XT_CONTINUE) {
|
||||
/* Target might have changed stuff. */
|
||||
arp = arp_hdr(skb);
|
||||
e = arpt_next_entry(e);
|
||||
else
|
||||
} else {
|
||||
/* Verdict */
|
||||
break;
|
||||
}
|
||||
} while (!acpar.hotdrop);
|
||||
xt_write_recseq_end(addend);
|
||||
local_bh_enable();
|
||||
|
|
|
|||
|
|
@ -352,13 +352,14 @@ ipt_do_table(struct sk_buff *skb,
|
|||
acpar.targinfo = t->data;
|
||||
|
||||
verdict = t->u.kernel.target->target(skb, &acpar);
|
||||
/* Target might have changed stuff. */
|
||||
ip = ip_hdr(skb);
|
||||
if (verdict == XT_CONTINUE)
|
||||
if (verdict == XT_CONTINUE) {
|
||||
/* Target might have changed stuff. */
|
||||
ip = ip_hdr(skb);
|
||||
e = ipt_next_entry(e);
|
||||
else
|
||||
} else {
|
||||
/* Verdict */
|
||||
break;
|
||||
}
|
||||
} while (!acpar.hotdrop);
|
||||
|
||||
xt_write_recseq_end(addend);
|
||||
|
|
|
|||
|
|
@ -117,7 +117,8 @@ clusterip_config_entry_put(struct net *net, struct clusterip_config *c)
|
|||
* functions are also incrementing the refcount on their own,
|
||||
* so it's safe to remove the entry even if it's in use. */
|
||||
#ifdef CONFIG_PROC_FS
|
||||
proc_remove(c->pde);
|
||||
if (cn->procdir)
|
||||
proc_remove(c->pde);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
|
@ -815,6 +816,7 @@ static void clusterip_net_exit(struct net *net)
|
|||
#ifdef CONFIG_PROC_FS
|
||||
struct clusterip_net *cn = net_generic(net, clusterip_net_id);
|
||||
proc_remove(cn->procdir);
|
||||
cn->procdir = NULL;
|
||||
#endif
|
||||
nf_unregister_net_hook(net, &cip_arp_ops);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue