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)
Wed, May 8, 11:44 AM
Unknown Object (File)
Wed, May 8, 11:43 AM
Unknown Object (File)
Wed, May 8, 9:36 AM
Unknown Object (File)
Mar 29 2024, 10:27 PM
Unknown Object (File)
Mar 17 2024, 8:30 PM
Unknown Object (File)
Feb 29 2024, 3:25 PM
Unknown Object (File)
Feb 19 2024, 10:16 PM
Unknown Object (File)
Jan 18 2024, 1:22 PM

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.