On Sat, Oct 21, 2023 at 1:51 AM Tejun Heo <tj@xxxxxxxxxx> wrote: > > 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. OK. will just drop the warning. -- Regards Yafang