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)
Nov 18 2024, 11:25 PM
Unknown Object (File)
Nov 18 2024, 11:25 PM
Unknown Object (File)
Nov 18 2024, 11:24 PM
Unknown Object (File)
Nov 18 2024, 11:11 PM
Unknown Object (File)
Nov 18 2024, 4:58 AM
Unknown Object (File)
Sep 23 2024, 12:28 AM
Unknown Object (File)
Sep 18 2024, 9:42 AM
Unknown Object (File)
Sep 18 2024, 12:36 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.