On Fri, Oct 20, 2023 at 05:36:57PM +0800, Yafang Shao wrote: > 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. I'm not sure this is the right occassion to add such thing. It's just a warn_on, we can either pass in the necessary condition from the callers or just drop the warning. Thanks. -- tejun