25 Feb
2021
25 Feb
'21
1:08 p.m.
On Thu, 25 Feb 2021 12:51:36 +0100, Anton Yakovlev wrote:
Now I'm wondering whether it's safe to do that from this place. Basically device_reprobe() unbinds the device that releases the full resources once including the devm_* stuff. And this work itself is in a part of devm allocated resource, so it'll be released there. That said, we might hit use-after-free... This needs to be verified.
It's safe. Suicide kernel workers are funny but possible things. Since the kernel itself (AFAIU) assumes such a situation and does not access the worker structure after the callback function call.
Indeed, process_one_work() in workqueue.c assures no access to the work object after the callback. Then this must be fine. Good to know!
thanks,
Takashi