Skip to content

Commit b901892

Browse files
a-darwishPeter Zijlstra
authored andcommitted
netfilter: nft_set_rbtree: Use sequence counter with associated rwlock
A sequence counter write side critical section must be protected by some form of locking to serialize writers. A plain seqcount_t does not contain the information of which lock must be held when entering a write side critical section. Use the new seqcount_rwlock_t data type, which allows to associate a rwlock with the sequence counter. This enables lockdep to verify that the rwlock used for writer serialization is held when the write side critical section is entered. If lockdep is disabled this lock association is compiled out and has neither storage size nor runtime overhead. Signed-off-by: Ahmed S. Darwish <[email protected]> Signed-off-by: Peter Zijlstra (Intel) <[email protected]> Link: https://lkml.kernel.org/r/[email protected]
1 parent 8201d92 commit b901892

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

net/netfilter/nft_set_rbtree.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
struct nft_rbtree {
1919
struct rb_root root;
2020
rwlock_t lock;
21-
seqcount_t count;
21+
seqcount_rwlock_t count;
2222
struct delayed_work gc_work;
2323
};
2424

@@ -523,7 +523,7 @@ static int nft_rbtree_init(const struct nft_set *set,
523523
struct nft_rbtree *priv = nft_set_priv(set);
524524

525525
rwlock_init(&priv->lock);
526-
seqcount_init(&priv->count);
526+
seqcount_rwlock_init(&priv->count, &priv->lock);
527527
priv->root = RB_ROOT;
528528

529529
INIT_DEFERRABLE_WORK(&priv->gc_work, nft_rbtree_gc);

0 commit comments

Comments
 (0)