lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-Id: <20090313062316.D04E549045@coco.kroah.org> Date: Thu, 12 Mar 2009 23:20:49 -0700 From: <gregkh@...e.de> To: tytso@....edu, gregkh@...e.de, jack@...e.cz, linux-ext4@...r.kernel.org Cc: <stable@...nel.org>, <stable-commits@...r.kernel.org> Subject: patch ext4-fix-deadlock-in-ext4_write_begin-and-ext4_da_write_begin.patch added to 2.6.28-stable tree This is a note to let you know that we have just queued up the patch titled Subject: ext4: Fix deadlock in ext4_write_begin() and ext4_da_write_begin() to the 2.6.28-stable tree. Its filename is ext4-fix-deadlock-in-ext4_write_begin-and-ext4_da_write_begin.patch A git repo of this tree can be found at http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary >From tytso@....edu Thu Mar 12 22:52:20 2009 From: "Theodore Ts'o" <tytso@....edu> Date: Thu, 5 Mar 2009 02:35:15 -0500 Subject: ext4: Fix deadlock in ext4_write_begin() and ext4_da_write_begin() To: stable@...nel.org Cc: "Theodore Ts'o" <tytso@....edu>, Ext4 Developers List <linux-ext4@...r.kernel.org>, Jan Kara <jack@...e.cz> Message-ID: <1236238515-8479-2-git-send-email-tytso@....edu> From: Jan Kara <jack@...e.cz> (cherry picked from commit ebd3610b110bbb18ea6f9f2aeed1e1068c537227) Functions ext4_write_begin() and ext4_da_write_begin() call grab_cache_page_write_begin() without AOP_FLAG_NOFS. Thus it can happen that page reclaim is triggered in that function and it recurses back into the filesystem (or some other filesystem). But this can lead to various problems as a transaction is already started at that point. Add the necessary flag. http://bugzilla.kernel.org/show_bug.cgi?id=11688 Signed-off-by: Jan Kara <jack@...e.cz> Signed-off-by: "Theodore Ts'o" <tytso@....edu> Signed-off-by: Greg Kroah-Hartman <gregkh@...e.de> --- fs/ext4/inode.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -1347,6 +1347,10 @@ retry: goto out; } + /* We cannot recurse into the filesystem as the transaction is already + * started */ + flags |= AOP_FLAG_NOFS; + page = grab_cache_page_write_begin(mapping, index, flags); if (!page) { ext4_journal_stop(handle); @@ -1356,7 +1360,7 @@ retry: *pagep = page; ret = block_write_begin(file, mapping, pos, len, flags, pagep, fsdata, - ext4_get_block); + ext4_get_block); if (!ret && ext4_should_journal_data(inode)) { ret = walk_page_buffers(handle, page_buffers(page), @@ -2603,6 +2607,9 @@ retry: ret = PTR_ERR(handle); goto out; } + /* We cannot recurse into the filesystem as the transaction is already + * started */ + flags |= AOP_FLAG_NOFS; page = grab_cache_page_write_begin(mapping, index, flags); if (!page) { Patches currently in stable-queue which might be from tytso@....edu are queue-2.6.28/jbd2-fix-return-value-of-jbd2_journal_start_commit.patch queue-2.6.28/revert-ext4-wait-on-all-pending-commits-in-ext4_sync_fs.patch queue-2.6.28/jbd2-avoid-possible-null-dereference-in-jbd2_journal_begin_ordered_truncate.patch queue-2.6.28/ext4-fix-to-read-empty-directory-blocks-correctly-in-64k.patch queue-2.6.28/ext4-fix-lockdep-warning.patch queue-2.6.28/ext4-initialize-preallocation-list_head-s-properly.patch queue-2.6.28/ext4-implement-range_cyclic-in-ext4_da_writepages-instead-of-write_cache_pages.patch queue-2.6.28/ext4-fix-null-dereference-in-ext4_ext_migrate-s-error-handling.patch queue-2.6.28/ext4-add-fallback-for-find_group_flex.patch queue-2.6.28/ext4-fix-deadlock-in-ext4_write_begin-and-ext4_da_write_begin.patch -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists