Page MenuHomeFreeBSD

LinuxKPI: Add cancel_work() function.
ClosedPublic

Authored by wulf on Nov 28 2023, 9:12 PM.
Tags
None
Referenced Files
Unknown Object (File)
Mon, Jun 30, 9:56 AM
Unknown Object (File)
Sat, Jun 21, 4:32 PM
Unknown Object (File)
Sat, Jun 21, 2:16 PM
Unknown Object (File)
Tue, Jun 17, 8:12 PM
Unknown Object (File)
Sun, Jun 15, 7:36 AM
Unknown Object (File)
May 17 2025, 12:49 PM
Unknown Object (File)
May 17 2025, 3:24 AM
Unknown Object (File)
May 12 2025, 2:32 AM

Details

Summary

Cancel a work not waiting for it to finish.

Sponsored by: Serenity Cyber Security, LLC
MFC after: 1 week

Diff Detail

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

Event Timeline

wulf requested review of this revision.Nov 28 2023, 9:12 PM
This revision is now accepted and ready to land.Nov 29 2023, 6:14 AM
kib added inline comments.
sys/compat/linuxkpi/common/src/linux_work.c
374

Should this case be asserted?

sys/compat/linuxkpi/common/src/linux_work.c
374

Yes please. I see this is copied from other functions, perhaps the to-state should be WORK_ST_INVALID, and linux_update_state() can assert that pstate[c] is never invalid.

384

We do this non-atomically after the state has transitioned to idle. What if some other thread tries to queue work, so the state goes back from ST_IDLE to ST_TASK, but then queues work before the taskqueue_cancel() call? The state will be left at ST_TASK even though all work is cancelled.

This revision was automatically updated to reflect the committed changes.