Message ID | 20241014111420.29127-1-pablo@netfilter.org (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Netdev Maintainers |
Headers | show |
On Mon, 14 Oct 2024 13:14:11 +0200 Pablo Neira Ayuso wrote: > Hi, > > The following series contains Netfilter updates for net-next: > > 1) Fix sparse warning in nf_tables related to use of percpu counters, > from Uros Bizjak. > > 2) use strscpy_pad in nft_meta_bridge, from Justin Stitt. > > 3) A series from patch #3 to patch #7 to reduce memory footprint of set > element transactions, Florian Westphal says: > > When doing a flush on a set or mass adding/removing elements from a > set, each element needs to allocate 96 bytes to hold the transactional > state. > > In such cases, virtually all the information in struct nft_trans_elem > is the same. > > Change nft_trans_elem to a flex-array, i.e. a single nft_trans_elem > can hold multiple set element pointers. > > The number of elements that can be stored in one nft_trans_elem is limited > by the slab allocator, this series limits the compaction to at most 62 > elements as it caps the reallocation to 2048 bytes of memory. > > 4) Document legacy toggles for xtables packet classifiers, from > Bruno Leitao. > > 5) Use kfree_rcu() instead of call_rcu() + kmem_cache_free(), from Julia Lawall. Hi! Are you seeing any failures in nft_audit? I haven't looked closely but it seems that this PR causes: <snip> # testing for cmd: nft reset quotas t1 ... OK # testing for cmd: nft reset quotas t2 ... OK # testing for cmd: nft reset quotas ... OK # testing for cmd: nft delete rule t1 c1 handle 4 ... OK # testing for cmd: nft delete rule t1 c1 handle 5; delete rule t1 c1 handle 6 ... OK # testing for cmd: nft flush chain t1 c2 ... OK # testing for cmd: nft flush table t2 ... OK # testing for cmd: nft delete chain t2 c2 ... OK # testing for cmd: nft delete element t1 s { 22 } ... OK # testing for cmd: nft delete element t1 s { 80, 443 } ... FAIL # -table=t1 family=2 entries=2 op=nft_unregister_setelem # +table=t1 family=2 entries=1 op=nft_unregister_setelem # testing for cmd: nft flush set t1 s2 ... FAIL # -table=t1 family=2 entries=3 op=nft_unregister_setelem # +table=t1 family=2 entries=1 op=nft_unregister_setelem # testing for cmd: nft delete set t1 s2 ... OK # testing for cmd: nft delete set t1 s3 ... OK not ok 1 selftests: net/netfilter: nft_audit.sh # exit=251 https://netdev-3.bots.linux.dev/vmksft-nf-dbg/results/815301/10-nft-audit-sh/stdout
Jakub Kicinski <kuba@kernel.org> wrote: > > 5) Use kfree_rcu() instead of call_rcu() + kmem_cache_free(), from Julia Lawall. > > Hi! Are you seeing any failures in nft_audit? I haven't looked closely > but it seems that this PR causes: > > <snip> > # testing for cmd: nft reset quotas t1 ... OK > # testing for cmd: nft reset quotas t2 ... OK > # testing for cmd: nft reset quotas ... OK > # testing for cmd: nft delete rule t1 c1 handle 4 ... OK > # testing for cmd: nft delete rule t1 c1 handle 5; delete rule t1 c1 handle 6 ... OK > # testing for cmd: nft flush chain t1 c2 ... OK > # testing for cmd: nft flush table t2 ... OK > # testing for cmd: nft delete chain t2 c2 ... OK > # testing for cmd: nft delete element t1 s { 22 } ... OK > # testing for cmd: nft delete element t1 s { 80, 443 } ... FAIL > # -table=t1 family=2 entries=2 op=nft_unregister_setelem > # +table=t1 family=2 entries=1 op=nft_unregister_setelem > # testing for cmd: nft flush set t1 s2 ... FAIL My fault, Pablo, please toss all of my patches. I do not know when I will resend, so do not wait.
On Mon, Oct 14, 2024 at 11:09:25PM +0200, Florian Westphal wrote: > Jakub Kicinski <kuba@kernel.org> wrote: > > > 5) Use kfree_rcu() instead of call_rcu() + kmem_cache_free(), from Julia Lawall. > > > > Hi! Are you seeing any failures in nft_audit? I haven't looked closely > > but it seems that this PR causes: > > > > <snip> > > # testing for cmd: nft reset quotas t1 ... OK > > # testing for cmd: nft reset quotas t2 ... OK > > # testing for cmd: nft reset quotas ... OK > > # testing for cmd: nft delete rule t1 c1 handle 4 ... OK > > # testing for cmd: nft delete rule t1 c1 handle 5; delete rule t1 c1 handle 6 ... OK > > # testing for cmd: nft flush chain t1 c2 ... OK > > # testing for cmd: nft flush table t2 ... OK > > # testing for cmd: nft delete chain t2 c2 ... OK > > # testing for cmd: nft delete element t1 s { 22 } ... OK > > # testing for cmd: nft delete element t1 s { 80, 443 } ... FAIL > > # -table=t1 family=2 entries=2 op=nft_unregister_setelem > > # +table=t1 family=2 entries=1 op=nft_unregister_setelem > > # testing for cmd: nft flush set t1 s2 ... FAIL > > My fault, Pablo, please toss all of my patches. > > I do not know when I will resend, so do not wait. At quick glance, I can see the audit logic is based in transaction objects, so now it counts one single entry for the two elements in one single transaction. I can look into this to fix this. Florian, are you seing any other issues apart for this miscount? Thanks.
Pablo Neira Ayuso <pablo@netfilter.org> wrote: > At quick glance, I can see the audit logic is based in transaction > objects, so now it counts one single entry for the two elements in one > single transaction. I can look into this to fix this. > > Florian, are you seing any other issues apart for this miscount? Yes, crash when bisecting (its "fixed" by later patch, hunk must be moved to earlier patch), nft_trans_elems_activate must emit notify also for update case. Maybe more. Just remove these patches.
On Tue, Oct 15, 2024 at 12:20:59AM +0200, Florian Westphal wrote: > Pablo Neira Ayuso <pablo@netfilter.org> wrote: > > At quick glance, I can see the audit logic is based in transaction > > objects, so now it counts one single entry for the two elements in one > > single transaction. I can look into this to fix this. > > > > Florian, are you seing any other issues apart for this miscount? > > Yes, crash when bisecting (its "fixed" by later patch, > hunk must be moved to earlier patch), nft_trans_elems_activate > must emit notify also for update case. Correct, event is missed. > Maybe more. Just remove these patches. OK, this needs more work.