On Fri, Oct 20, 2023 at 3:43 AM Waiman Long <longman@xxxxxxxxxx> wrote: > > On 10/19/23 15:08, Tejun Heo wrote: > > On Thu, Oct 19, 2023 at 02:38:52PM +0800, Yafang Shao wrote: > >>>> - BUG_ON(!res_cgroup); > >>>> + WARN_ON_ONCE(!res_cgroup && lockdep_is_held(&cgroup_mutex)); > >>> This doesn't work. lockdep_is_held() is always true if !PROVE_LOCKING. > >> will use mutex_is_locked() instead. > > But then, someone else can hold the lock and trigger the condition > > spuriously. The kernel doesn't track who's holding the lock unless lockdep > > is enabled. > > It is actually possible to detect if the current process is the owner of > a mutex since there is a owner field in the mutex structure. However, > the owner field also contains additional information which need to be > masked off before comparing with "current". If such a functionality is > really needed, we will have to add a helper function mutex_is_held(), > for example, to kernel/locking/mutex.c. 、 Agreed. We should first introduce mutex_is_held(). Thanks for your suggestion. -- Regards Yafang