From 1e25a392bda9a428ebfa98fe3d6ee11f986983ac Mon Sep 17 00:00:00 2001 From: Tejun Heo Date: Mon, 19 Nov 2012 08:13:37 -0800 Subject: [PATCH] --- yaml --- r: 339343 b: refs/heads/master c: b8a2df6a5b576d04f78f54abf254c283527d8bbc h: refs/heads/master i: 339341: 7bcfd1d7783a7236b5e312c64cf0e424b76c5a6b 339339: 05d943288256fd4e947e53227abd390ad71a50ea 339335: 09f0aa179a503ed0cde20a9eb802f49669646977 339327: 03f752cf0bbd1a86c612368f05a76eb40cb19f87 v: v3 --- [refs] | 2 +- trunk/kernel/cgroup.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 2bc4a42b0194..5dd93790f6dc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d19e19de48aa0b90c56cd93c8a46ebac46273429 +refs/heads/master: b8a2df6a5b576d04f78f54abf254c283527d8bbc diff --git a/trunk/kernel/cgroup.c b/trunk/kernel/cgroup.c index 166b5141f3d4..c53f42e31704 100644 --- a/trunk/kernel/cgroup.c +++ b/trunk/kernel/cgroup.c @@ -2657,9 +2657,15 @@ static int cgroup_create_file(struct dentry *dentry, umode_t mode, inc_nlink(inode); inc_nlink(dentry->d_parent->d_inode); - /* start with the directory inode held, so that we can - * populate it without racing with another mkdir */ - mutex_lock_nested(&inode->i_mutex, I_MUTEX_CHILD); + /* + * Control reaches here with cgroup_mutex held. + * @inode->i_mutex should nest outside cgroup_mutex but we + * want to populate it immediately without releasing + * cgroup_mutex. As @inode isn't visible to anyone else + * yet, trylock will always succeed without affecting + * lockdep checks. + */ + WARN_ON_ONCE(!mutex_trylock(&inode->i_mutex)); } else if (S_ISREG(mode)) { inode->i_size = 0; inode->i_fop = &cgroup_file_operations;