diff options
author | Dmitry Monakhov <dmonakhov@openvz.org> | 2013-03-02 17:08:46 -0500 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2013-03-02 17:08:46 -0500 |
commit | df05c1b85a88888b92725ef27ba70086f38fb083 (patch) | |
tree | ba25e9388be51f30fd464eea4c6f4f50eb384080 /fs | |
parent | 1ac6466f253ef7bd063b7877fb056afe1820841c (diff) |
jbd2: fix ERR_PTR dereference in jbd2__journal_start
If start_this_handle() failed handle will be initialized
to ERR_PTR() and can not be dereferenced.
paging request at fffffffffffffff6
IP: [<ffffffff813c073f>] jbd2__journal_start+0x18f/0x290
PGD 200e067 PUD 200f067 PMD 0
Oops: 0000 [#1] SMP
Modules linked in: cpufreq_ondemand acpi_cpufreq freq_table mperf coretemp kvm_intel kvm crc32c_intel ghash_clmulni_intel microcode sg xhci_hcd button sd_mod crc_t10dif aesni_intel ablk_helper cryptd lrw aes_x86_64 xts gf128mul ahci libahci pata_acpi ata_generic dm_mirror dm_region_hash dm_log dm_mod
CPU 0 journal commit I/O error
Pid: 2694, comm: fio Not tainted 3.8.0-rc3+ #79 /DQ67SW
RIP: 0010:[<ffffffff813c073f>] [<ffffffff813c073f>] jbd2__journal_start+0x18f/0x290
RSP: 0018:ffff880233b8ba58 EFLAGS: 00010292
RAX: 00000000ffffffe2 RBX: ffffffffffffffe2 RCX: 0000000000000006
RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffff82128f48
RBP: ffff880233b8ba98 R08: 0000000000000000 R09: ffff88021440a6e0
Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/jbd2/transaction.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c index b7e2385c6e92..d6ee5aed56b1 100644 --- a/fs/jbd2/transaction.c +++ b/fs/jbd2/transaction.c | |||
@@ -382,7 +382,7 @@ handle_t *jbd2__journal_start(journal_t *journal, int nblocks, gfp_t gfp_mask, | |||
382 | if (err < 0) { | 382 | if (err < 0) { |
383 | jbd2_free_handle(handle); | 383 | jbd2_free_handle(handle); |
384 | current->journal_info = NULL; | 384 | current->journal_info = NULL; |
385 | handle = ERR_PTR(err); | 385 | return ERR_PTR(err); |
386 | } | 386 | } |
387 | handle->h_type = type; | 387 | handle->h_type = type; |
388 | handle->h_line_no = line_no; | 388 | handle->h_line_no = line_no; |