summaryrefslogtreecommitdiffstats
path: root/include/asm-generic/setup.h
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2011-04-21 23:47:16 +0200
committerJan Kara <jack@suse.cz>2011-04-29 23:20:03 +0200
commitae54870a1dc978a88377ae8af0780648f2ccd4dc (patch)
tree220268d2087adac3191a54805dd6c0c203d50606 /include/asm-generic/setup.h
parentMerge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/air... (diff)
downloadlinux-ae54870a1dc978a88377ae8af0780648f2ccd4dc.tar.xz
linux-ae54870a1dc978a88377ae8af0780648f2ccd4dc.zip
ext3: Fix lock inversion in ext3_symlink()
ext3_symlink() cannot call __page_symlink() with transaction open. __page_symlink() calls ext3_write_begin() which gets page lock which ranks above transaction start (thus lock ordering is violated) and and also ext3_write_begin() waits for a transaction commit when we run out of space which never happens if we hold transaction open. Fix the problem by stopping a transaction before calling __page_symlink() (we have to be careful and put inode to orphan list so that it gets deleted in case of crash) and starting another one after __page_symlink() returns for addition of symlink into a directory. Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'include/asm-generic/setup.h')
0 files changed, 0 insertions, 0 deletions