Page MenuHomeFreeBSD

pf: use hashalloc(9) for key, id, src-node and udp-endpoint hashes
ClosedPublic

Authored by glebius on Mar 27 2026, 7:21 PM.
Tags
None
Referenced Files
F174913838: D56113.id175359.diff
Tue, Oct 6, 10:46 PM
Unknown Object (File)
Sun, Oct 4, 7:23 PM
Unknown Object (File)
Fri, Oct 2, 3:11 PM
Unknown Object (File)
Fri, Sep 25, 5:36 PM
Unknown Object (File)
Thu, Sep 24, 7:08 AM
Unknown Object (File)
Thu, Sep 24, 7:00 AM
Unknown Object (File)
Thu, Sep 24, 6:35 AM
Unknown Object (File)
Fri, Sep 18, 10:06 AM

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

glebius added inline comments.
sys/netpfil/pf/pf.c
1434

.head = HASH_HEAD_LIST is not needed, but I decided to be more explicit.

glebius retitled this revision from pf: use hashalloc(9) for key and id hashes to pf: use hashalloc(9) for key, id, src-node and udp-endpoint hashes.Mar 28 2026, 6:59 PM
  • Extend to src-nodes and udp-endpoints hashes.
sys/netpfil/pf/pf.c
1435–1436

Initialization of .type and .head to the default values. May be omitted.

I'm seeing panics with this patch ("panic: lock "pf_keyhash" 0xfffffe00e8dffff8 already initialized").
I believe the problem is that hashalloc() allocates unzero'd memory, and which leads to incorrect assertions on the lock, if LO_INITIALIZED happens to be set in lo_flags.

In D56113#1284599, @kp wrote:

I'm seeing panics with this patch ("panic: lock "pf_keyhash" 0xfffffe00e8dffff8 already initialized").
I believe the problem is that hashalloc() allocates unzero'd memory, and which leads to incorrect assertions on the lock, if LO_INITIALIZED happens to be set in lo_flags.

That's because you have it on top of older version of D55904. In the updated version MTX_NEW is passed. For me this revision passes all pf tests.

Ah, yes, thanks!

This revision is now accepted and ready to land.Mar 30 2026, 8:03 PM