On Thu, Apr 04, 2024 at 09:21:10AM +0100, Al Viro wrote: > Similar question applies to ovl_write_iter() - why do you > need to hold the overlayfs inode locked during the call of > backing_file_write_iter()? Consider the scenario when unlink() is called on that sucker during the write() that triggers that pathwalk. We have unlink: blocked on overlayfs inode of file, while holding the parent directory. write: holding the overlayfs inode of file and trying to resolve a pathname that contains .../power/suspend_stats/../../...; blocked on attempt to lock parent so we could do a lookup in it. No llseek involved anywhere, kernfs of->mutex held, but not contended, deadlock purely on ->i_rwsem of overlayfs inodes. Holding overlayfs inode locked during the call of lookup_bdev() is really no-go.