fs/dcache.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/dcache.c b/fs/dcache.c index 42ae01eefc07..663fd04614cc 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -1333,16 +1333,19 @@ int check_submounts_and_drop(struct dentry *dentry) for (;;) { struct select_data data; + static DEFINE_MUTEX(mutex); INIT_LIST_HEAD(&data.dispose); data.start = dentry; data.found = 0; + mutex_lock(&mutex); d_walk(dentry, &data, check_and_collect, check_and_drop); ret = data.found; if (!list_empty(&data.dispose)) shrink_dentry_list(&data.dispose); + mutex_unlock(&mutex); if (ret <= 0) break;