diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2013-05-18 02:38:52 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-05-31 15:17:43 -0400 |
commit | 31abdab9c11bb1694ecd1476a7edbe8e964d94ac (patch) | |
tree | 3aeca5bc6bd3976552077909509e3a7e2be9542b /fs/dcookies.c | |
parent | 1d7095c72d35eee4ebc28e66563e636b9adafeb2 (diff) | |
download | linux-31abdab9c11bb1694ecd1476a7edbe8e964d94ac.tar.gz linux-31abdab9c11bb1694ecd1476a7edbe8e964d94ac.tar.bz2 linux-31abdab9c11bb1694ecd1476a7edbe8e964d94ac.zip |
hpfs: deadlock and race in directory lseek()
For one thing, there's an ABBA deadlock on hpfs fs-wide lock and i_mutex
in hpfs_dir_lseek() - there's a lot of methods that grab the former with
the caller already holding the latter, so it must take i_mutex first.
For another, locking the damn thing, carefully validating the offset,
then dropping locks and assigning the offset is obviously racy.
Moreover, we _must_ do hpfs_add_pos(), or the machinery in dnode.c
won't modify the sucker on B-tree surgeries.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/dcookies.c')
0 files changed, 0 insertions, 0 deletions