On Mon, Mar 14, 2022 at 10:07:31AM -0700, Hao Luo wrote: > Hello Al, > > In which contexts can those be called? > > > > In a sleepable context. The plan is to introduce a certain tracepoints > as sleepable, a program that attaches to sleepable tracepoints is > allowed to call these functions. In particular, the first sleepable > tracepoint introduced in this patchset is one at the end of > cgroup_mkdir(). Do you have any advices? Yes - don't do it, unless you really want a lot of user-triggerable deadlocks. Pathname resolution is not locking-agnostic. In particular, you can't do it if you are under any ->i_rwsem, whether it's shared or exclusive. That includes cgroup_mkdir() callchains. And if the pathname passed to these functions will have you walk through the parent directory, you would get screwed (e.g. if the next component happens to be inexistent, triggering a lookup, which takes ->i_rwsem shared).