]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/3.6.8/reiserfs-protect-reiserfs_quota_write-with-write-lock.patch
Fixes for 4.19
[thirdparty/kernel/stable-queue.git] / releases / 3.6.8 / reiserfs-protect-reiserfs_quota_write-with-write-lock.patch
CommitLineData
2ef4d74f
GKH
1From 361d94a338a3fd0cee6a4ea32bbc427ba228e628 Mon Sep 17 00:00:00 2001
2From: Jan Kara <jack@suse.cz>
3Date: Tue, 13 Nov 2012 18:25:38 +0100
4Subject: reiserfs: Protect reiserfs_quota_write() with write lock
5
6From: Jan Kara <jack@suse.cz>
7
8commit 361d94a338a3fd0cee6a4ea32bbc427ba228e628 upstream.
9
10Calls into reiserfs journalling code and reiserfs_get_block() need to
11be protected with write lock. We remove write lock around calls to high
12level quota code in the next patch so these paths would suddently become
13unprotected.
14
15Signed-off-by: Jan Kara <jack@suse.cz>
16Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17
18---
19 fs/reiserfs/super.c | 4 ++++
20 1 file changed, 4 insertions(+)
21
22--- a/fs/reiserfs/super.c
23+++ b/fs/reiserfs/super.c
24@@ -2343,7 +2343,9 @@ static ssize_t reiserfs_quota_write(stru
25 tocopy = sb->s_blocksize - offset < towrite ?
26 sb->s_blocksize - offset : towrite;
27 tmp_bh.b_state = 0;
28+ reiserfs_write_lock(sb);
29 err = reiserfs_get_block(inode, blk, &tmp_bh, GET_BLOCK_CREATE);
30+ reiserfs_write_unlock(sb);
31 if (err)
32 goto out;
33 if (offset || tocopy != sb->s_blocksize)
34@@ -2359,10 +2361,12 @@ static ssize_t reiserfs_quota_write(stru
35 flush_dcache_page(bh->b_page);
36 set_buffer_uptodate(bh);
37 unlock_buffer(bh);
38+ reiserfs_write_lock(sb);
39 reiserfs_prepare_for_journal(sb, bh, 1);
40 journal_mark_dirty(current->journal_info, sb, bh);
41 if (!journal_quota)
42 reiserfs_add_ordered_list(inode, bh);
43+ reiserfs_write_unlock(sb);
44 brelse(bh);
45 offset = 0;
46 towrite -= tocopy;