netfilter: nf_queue: relax NFQA_CT attribute check
Allow modifying attributes of the conntrack associated with a packet without first requesting ct data via CFG_F_CONNTRACK or extra nfnetlink_conntrack socket. Also remove unneded rcu_read_lock; the entire function is already protected by rcu. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
Родитель
5813a8eb47
Коммит
957bec3685
|
@ -987,8 +987,7 @@ nfqnl_recv_verdict(struct sock *ctnl, struct sk_buff *skb,
|
|||
if (entry == NULL)
|
||||
return -ENOENT;
|
||||
|
||||
rcu_read_lock();
|
||||
if (nfqa[NFQA_CT] && (queue->flags & NFQA_CFG_F_CONNTRACK))
|
||||
if (nfqa[NFQA_CT])
|
||||
ct = nfqnl_ct_parse(entry->skb, nfqa[NFQA_CT], &ctinfo);
|
||||
|
||||
if (nfqa[NFQA_PAYLOAD]) {
|
||||
|
@ -1002,7 +1001,6 @@ nfqnl_recv_verdict(struct sock *ctnl, struct sk_buff *skb,
|
|||
if (ct)
|
||||
nfqnl_ct_seq_adjust(skb, ct, ctinfo, diff);
|
||||
}
|
||||
rcu_read_unlock();
|
||||
|
||||
if (nfqa[NFQA_MARK])
|
||||
entry->skb->mark = ntohl(nla_get_be32(nfqa[NFQA_MARK]));
|
||||
|
|
Загрузка…
Ссылка в новой задаче