mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-27 04:22:58 +00:00
netfilter: conntrack: Fix data-races around ct mark
nf_conn:mark can be read from and written to in parallel. Use
READ_ONCE()/WRITE_ONCE() for reads and writes to prevent unwanted
compiler optimizations.
Fixes: 1da177e4c3 ("Linux-2.6.12-rc2")
Signed-off-by: Daniel Xu <dxu@dxuuu.xyz>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
committed by
Pablo Neira Ayuso
parent
40b9d1ab63
commit
52d1aa8b82
@@ -435,7 +435,7 @@ clusterip_tg(struct sk_buff *skb, const struct xt_action_param *par)
|
||||
|
||||
switch (ctinfo) {
|
||||
case IP_CT_NEW:
|
||||
ct->mark = hash;
|
||||
WRITE_ONCE(ct->mark, hash);
|
||||
break;
|
||||
case IP_CT_RELATED:
|
||||
case IP_CT_RELATED_REPLY:
|
||||
@@ -452,7 +452,7 @@ clusterip_tg(struct sk_buff *skb, const struct xt_action_param *par)
|
||||
#ifdef DEBUG
|
||||
nf_ct_dump_tuple_ip(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
|
||||
#endif
|
||||
pr_debug("hash=%u ct_hash=%u ", hash, ct->mark);
|
||||
pr_debug("hash=%u ct_hash=%u ", hash, READ_ONCE(ct->mark));
|
||||
if (!clusterip_responsible(cipinfo->config, hash)) {
|
||||
pr_debug("not responsible\n");
|
||||
return NF_DROP;
|
||||
|
||||
Reference in New Issue
Block a user