summaryrefslogtreecommitdiff
path: root/fs/signalfd.c
diff options
context:
space:
mode:
authorBenjamin Marzinski <bmarzins@redhat.com>2012-11-06 10:49:28 +0400
committerSteven Whitehouse <swhiteho@redhat.com>2012-11-07 13:42:49 +0400
commit3d1626889a64bd5a661544d582036a0a02104a60 (patch)
tree7b5d43873e088346175d982fd8e840be586fcb5e /fs/signalfd.c
parent076f0faa764ab3a5a32fc726ae05e2de0e66151d (diff)
downloadlinux-3d1626889a64bd5a661544d582036a0a02104a60.tar.xz
GFS2: Don't call file_accessed() with a shared glock
file_accessed() was being called by gfs2_mmap() with a shared glock. If it needed to update the atime, it was crashing because it dirtied the inode in gfs2_dirty_inode() without holding an exclusive lock. gfs2_dirty_inode() checked if the caller was already holding a glock, but it didn't make sure that the glock was in the exclusive state. Now, instead of calling file_accessed() while holding the shared lock in gfs2_mmap(), file_accessed() is called after grabbing and releasing the glock to update the inode. If file_accessed() needs to update the atime, it will grab an exclusive lock in gfs2_dirty_inode(). gfs2_dirty_inode() now also checks to make sure that if the calling process has already locked the glock, it has an exclusive lock. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/signalfd.c')
0 files changed, 0 insertions, 0 deletions