mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-27 22:51:31 +00:00
f2e9535589
udf_setsize() called truncate_setsize() with i_data_sem held. Thus
truncate_pagecache() called from truncate_setsize() could lock a page
under i_data_sem which can deadlock as page lock ranks below
i_data_sem - e. g. writeback can hold page lock and try to acquire
i_data_sem to map a block.
Fix the problem by moving truncate_setsize() calls from under
i_data_sem. It is safe for us to change i_size without holding
i_data_sem as all the places that depend on i_size being stable already
hold inode_lock.
CC: stable@vger.kernel.org
Fixes:
|
||
---|---|---|
.. | ||
balloc.c | ||
dir.c | ||
directory.c | ||
ecma_167.h | ||
file.c | ||
ialloc.c | ||
inode.c | ||
Kconfig | ||
lowlevel.c | ||
Makefile | ||
misc.c | ||
namei.c | ||
osta_udf.h | ||
partition.c | ||
super.c | ||
symlink.c | ||
truncate.c | ||
udf_i.h | ||
udf_sb.h | ||
udfdecl.h | ||
udfend.h | ||
udftime.c | ||
unicode.c |