> One of the limitations of using async_schedule() though is we cannot > request_module() synchronously on async calls given that the module > initialization code will call async_synchronize_full() if the module > being initialized happened to have used async work on its > initialization routine, otherwise we'd deadlock. > > So, I either I change back to workqueus or we live happy with either: I really think you should avoid breaking this API and change back. Drivers have been using it, how to avoid the use-after-free with a completion is well known, and there's generally no issue. Making things "easier" while requiring lots of churn everywhere isn't always a good thing. If you end up introducing some new API then perhaps that new API would make sense to use async_schedule(), but I don't really see all that much point in changing all of this now. johannes