fs/dcache: Fix indefinite wait in d_invalidate()
In the path of task exit, the proc dentries corresponding to this task will be killed by moving it to a shrink list. If those dentries are already claimed by another task for shrinking, the exiting task waits in a tight loop until those dentries are killed. This can potentially result in a deadlock if those dentries are corresponding to an RT task but the task which is shrinking those dentries is a lower priority task. Fix this by not doing tight loop, if our dentries are claimed by other task. Change-Id: If6848521469db7dea2bbba0dbaf8597094716267 Signed-off-by: Sahitya Tummala <stummala@codeaurora.org>
This commit is contained in:
parent
6ee87610ac
commit
cd6afb3e4b
1 changed files with 1 additions and 1 deletions
|
@ -1364,7 +1364,7 @@ static enum d_walk_ret select_collect(void *_data, struct dentry *dentry)
|
|||
goto out;
|
||||
|
||||
if (dentry->d_flags & DCACHE_SHRINK_LIST) {
|
||||
data->found++;
|
||||
goto out;
|
||||
} else {
|
||||
if (dentry->d_flags & DCACHE_LRU_LIST)
|
||||
d_lru_del(dentry);
|
||||
|
|
Loading…
Add table
Reference in a new issue