Page MenuHomeFreeBSD

ipsec offload: use private taskqueue thread
ClosedPublic

Authored by kib on Aug 30 2024, 5:22 PM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Nov 6, 6:03 PM
Unknown Object (File)
Oct 18 2024, 12:34 AM
Unknown Object (File)
Oct 17 2024, 11:41 PM
Unknown Object (File)
Oct 17 2024, 11:41 PM
Unknown Object (File)
Oct 17 2024, 11:41 PM
Unknown Object (File)
Oct 17 2024, 11:10 PM
Unknown Object (File)
Oct 7 2024, 11:10 PM
Unknown Object (File)
Oct 3 2024, 3:01 PM

Details

Summary
Using global taskqueue_thread XXX with the vnet tasks scheduled during
VNET destruction.  VNET shutdown needs to wait for all vnet-scoped
SAs/SPs to be handled, and doing that from taskqueue_thread task
deadlocks because the same thread proceeds the removals.

Diff Detail

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

Event Timeline

kib requested review of this revision.Aug 30 2024, 5:22 PM
This revision is now accepted and ready to land.Aug 30 2024, 5:35 PM

Thank you.

I will commit this after NV verification runs it internally.

sys/netipsec/ipsec_offload.c
171

It's not permitted to use NULL as the last parameter, it should be &ipsec_accel_tq. taskqueue_thread_enqueue() dereferences it.

kib marked an inline comment as done.

Fix NULL deref

This revision now requires review to proceed.Sep 1 2024, 1:10 AM
This revision was not accepted when it landed; it landed in state Needs Review.Sep 4 2024, 8:50 AM
This revision was automatically updated to reflect the committed changes.