]> git.baikalelectronics.ru Git - kernel.git/commit
ovl: lookup whiteouts outside iterate_dir()
authorMiklos Szeredi <mszeredi@suse.cz>
Mon, 22 Jun 2015 11:53:48 +0000 (13:53 +0200)
committerMiklos Szeredi <mszeredi@suse.cz>
Mon, 22 Jun 2015 11:53:48 +0000 (13:53 +0200)
commitce232a047f8f1701766ca4e23ef59ae9bfe67772
tree83f520fa3fc7ccf117e821e6707c9de25b9e989b
parent0e65fa6500c997727e0171c40c0e7b976c7a8b02
ovl: lookup whiteouts outside iterate_dir()

If jffs2 can deadlock on overlayfs readdir because it takes the same lock
on ->iterate() as in ->lookup().

Fix by moving whiteout checking outside iterate_dir().  Optimized by
collecting potential whiteouts (DT_CHR) in a temporary list and if
non-empty iterating throug these and checking for a 0/0 chardev.

Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Fixes: 4ae6bda9a662 ("ovl: check whiteout while reading directory")
Reported-by: Roman Yeryomin <leroi.lists@gmail.com>
fs/overlayfs/readdir.c