On Mon, Apr 17, 2017 at 09:18:54PM +0800, Liping Zhang wrote: > From: Liping Zhang <zlpnobody@xxxxxxxxx> > > This patch set aims to fix some bugs related to ctnetlink_change_conntrack. > > First, we may invoke request_module with rcu_read_lock held, this is wrong, > as the request_module invocation may sleep. Fixed by PATCH #1. > > Second, the unnecessary nf_conntrack_expect_lock will cause dead lock, which > was introduced by commit ca7433df3a67 ("netfilter: conntrack: seperate expect > locking from nf_conntrack_lock"). This is fixed by PATCH #2. > > Third, Pablo pointed out that packets may be updating a conntrack at the > same time that we're mangling via ctnetlink, it's better to fix the > possible race together. So I audited the related source codes as follows: > 1. CTA_HELP: for the userspace cthelper, no problem; for the inkernel > cthelper, there's only one user: nf_ct_ftp_from_nlattr, > but it only sets two flags, so no problem too. > 2. CTA_TIMEOUT: only modify the ct->timeout, so no problem > 3. CTA_STATUS: possible race will happen, fixed by PATCH #3 > 4. CTA_PROTOINFO: protected by ct->lock, no problem > 5. CTA_MARK: only modify the ct->mark, no problem > 6. CTA_SEQ_ADJ_X: should be protectd by ct->lock, fixed by PATCH #4 > 7. CTA_LABELS: use cmpxchg to update labels, so no problem Series applied, thanks. -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html