On 2/28/25 13:13, Uladzislau Rezki (Sony) wrote: > Add a test_kfree_rcu_wq_destroy test to verify a kmem_cache_destroy() > from a workqueue context. The problem is that, before destroying any > cache the kvfree_rcu_barrier() is invoked to guarantee that in-flight > freed objects are flushed. > > The _barrier() function queues and flushes its own internal workers > which might conflict with a workqueue type a kmem-cache gets destroyed > from. > > One example is when a WQ_MEM_RECLAIM workqueue is flushing !WQ_MEM_RECLAIM > events which leads to a kernel splat. See the check_flush_dependency() in > the workqueue.c file. > > If this test does not emits any kernel warning, it is passed. Well the workqueue warning doesn't seem to make the test fail. But someone will notice the warning, so that should be enough. We can't instrument warnings in other subsystem's code for slub kunit context anyway. It would have to be a generic kunit's hook for all warns. > Reviewed-by: Keith Busch <kbusch@xxxxxxxxxx> > Co-developed-by: Vlastimil Babka <vbabka@xxxxxxx> > Signed-off-by: Uladzislau Rezki (Sony) <urezki@xxxxxxxxx> Pushed to slab/for-next, thanks.