Darrick J. Wong
b208c2f7ce
btrfs: Fix crash due to not allocating integrity data for a bioset
When btrfs creates a bioset, we must also allocate the integrity data pool.
Otherwise btrfs will crash when it tries to submit a bio to a checksumming
disk:
BUG: unable to handle kernel NULL pointer dereference at 0000000000000018
IP: [<ffffffff8111e28a>] mempool_alloc+0x4a/0x150
PGD 2305e4067 PUD 23063d067 PMD 0
Oops: 0000 [#1] PREEMPT SMP
Modules linked in: btrfs scsi_debug xfs ext4 jbd2 ext3 jbd mbcache
sch_fq_codel eeprom lpc_ich mfd_core nfsd exportfs auth_rpcgss af_packet
raid6_pq xor zlib_deflate libcrc32c [last unloaded: scsi_debug]
CPU: 1 PID: 4486 Comm: mount Not tainted 3.12.0-rc1-mcsum #2
Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
task: ffff8802451c9720 ti: ffff880230698000 task.ti: ffff880230698000
RIP: 0010:[<ffffffff8111e28a>] [<ffffffff8111e28a>] mempool_alloc+0x4a/0x150
RSP: 0018:ffff880230699688 EFLAGS: 00010286
RAX: 0000000000000001 RBX: 0000000000000000 RCX: 00000000005f8445
RDX: 0000000000000001 RSI: 0000000000000010 RDI: 0000000000000000
RBP: ffff8802306996f8 R08: 0000000000011200 R09: 0000000000000008
R10: 0000000000000020 R11: ffff88009d6e8000 R12: 0000000000011210
R13: 0000000000000030 R14: ffff8802306996b8 R15: ffff8802451c9720
FS: 00007f25b8a16800(0000) GS:ffff88024fc80000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000000018 CR3: 0000000230576000 CR4: 00000000000007e0
Stack:
ffff8802451c9720 0000000000000002 ffffffff81a97100 0000000000281250
ffffffff81a96480 ffff88024fc99150 ffff880228d18200 0000000000000000
0000000000000000 0000000000000040 ffff880230e8c2e8 ffff8802459dc900
Call Trace:
[<ffffffff811b2208>] bio_integrity_alloc+0x48/0x1b0
[<ffffffff811b26fc>] bio_integrity_prep+0xac/0x360
[<ffffffff8111e298>] ? mempool_alloc+0x58/0x150
[<ffffffffa03e8041>] ? alloc_extent_state+0x31/0x110 [btrfs]
[<ffffffff81241579>] blk_queue_bio+0x1c9/0x460
[<ffffffff8123e58a>] generic_make_request+0xca/0x100
[<ffffffff8123e639>] submit_bio+0x79/0x160
[<ffffffffa03f865e>] btrfs_map_bio+0x48e/0x5b0 [btrfs]
[<ffffffffa03c821a>] btree_submit_bio_hook+0xda/0x110 [btrfs]
[<ffffffffa03e7eba>] submit_one_bio+0x6a/0xa0 [btrfs]
[<ffffffffa03ef450>] read_extent_buffer_pages+0x250/0x310 [btrfs]
[<ffffffff8125eef6>] ? __radix_tree_preload+0x66/0xf0
[<ffffffff8125f1c5>] ? radix_tree_insert+0x95/0x260
[<ffffffffa03c66f6>] btree_read_extent_buffer_pages.constprop.128+0xb6/0x120
[btrfs]
[<ffffffffa03c8c1a>] read_tree_block+0x3a/0x60 [btrfs]
[<ffffffffa03caefd>] open_ctree+0x139d/0x2030 [btrfs]
[<ffffffffa03a282a>] btrfs_mount+0x53a/0x7d0 [btrfs]
[<ffffffff8113ab0b>] ? pcpu_alloc+0x8eb/0x9f0
[<ffffffff81167305>] ? __kmalloc_track_caller+0x35/0x1e0
[<ffffffff81176ba0>] mount_fs+0x20/0xd0
[<ffffffff81191096>] vfs_kern_mount+0x76/0x120
[<ffffffff81193320>] do_mount+0x200/0xa40
[<ffffffff81135cdb>] ? strndup_user+0x5b/0x80
[<ffffffff81193bf0>] SyS_mount+0x90/0xe0
[<ffffffff8156d31d>] system_call_fastpath+0x1a/0x1f
Code: 4c 8d 75 a8 4c 89 6d e8 45 89 e0 4c 8d 6f 30 48 89 5d d8 41 83 e0 af 48
89 fb 49 83 c6 18 4c 89 7d f8 65 4c 8b 3c 25 c0 b8 00 00 <48> 8b 73 18 44 89 c7
44 89 45 98 ff 53 20 48 85 c0 48 89 c2 74
RIP [<ffffffff8111e28a>] mempool_alloc+0x4a/0x150
RSP <ffff880230699688>
CR2: 0000000000000018
---[ end trace 7a96042017ed21e2 ]---
Signed-off-by: Darrick J. Wong <[email protected]>
Signed-off-by: Josef Bacik <[email protected]>
Signed-off-by: Chris Mason <[email protected]>
|
2013-10-05 10:52:10 -04:00 |
| .. |
|
tests
|
Btrfs: separate out tests into their own directory
|
2013-09-01 08:15:38 -04:00 |
|
acl.c
|
Btrfs: skip adding an acl attribute if we don't have to
|
2012-12-16 20:46:15 -05:00 |
|
async-thread.c
|
Btrfs: eliminate races in worker stopping code
|
2013-10-04 16:02:13 -04:00 |
|
async-thread.h
|
Btrfs: eliminate races in worker stopping code
|
2013-10-04 16:02:13 -04:00 |
|
backref.c
|
Btrfs: allocate prelim_ref with a slab allocater
|
2013-09-01 08:16:27 -04:00 |
|
backref.h
|
Btrfs: allocate prelim_ref with a slab allocater
|
2013-09-01 08:16:27 -04:00 |
|
btrfs_inode.h
|
Btrfs: check roots last log commit when checking if an inode has been logged
|
2013-09-21 11:05:24 -04:00 |
|
check-integrity.c
|
Btrfs: Use %z to format size_t
|
2013-09-01 08:16:19 -04:00 |
|
check-integrity.h
|
|
|
|
compat.h
|
|
|
|
compression.c
|
Btrfs: Remove superfluous casts from u64 to unsigned long long
|
2013-09-01 08:16:08 -04:00 |
|
compression.h
|
btrfs: make static code static & remove dead code
|
2013-05-06 15:55:23 -04:00 |
|
ctree.c
|
Btrfs: fixup error handling in btrfs_reloc_cow
|
2013-09-21 10:58:54 -04:00 |
|
ctree.h
|
Btrfs: remove space_info->reservation_progress
|
2013-09-21 11:05:27 -04:00 |
|
delayed-inode.c
|
Btrfs: fix printing of non NULL terminated string
|
2013-09-01 08:16:20 -04:00 |
|
delayed-inode.h
|
[readdir] convert btrfs
|
2013-06-29 12:57:00 +04:00 |
|
delayed-ref.c
|
Btrfs: get rid of sparse warnings
|
2013-09-01 08:15:50 -04:00 |
|
delayed-ref.h
|
Btrfs: handle running extent ops with skinny metadata
|
2013-05-17 21:40:15 -04:00 |
|
dev-replace.c
|
Merge branch 'for-linus' into for-linus-3.12
|
2013-10-05 10:51:32 -04:00 |
|
dev-replace.h
|
Btrfs: add new sources for device replace code
|
2012-12-12 17:15:41 -05:00 |
|
dir-item.c
|
btrfs: make static code static & remove dead code
|
2013-05-06 15:55:23 -04:00 |
|
disk-io.c
|
Btrfs: add the missing mutex unlock in write_all_supers()
|
2013-09-21 11:05:28 -04:00 |
|
disk-io.h
|
Btrfs: introduce grab/put functions for the root of the fs/file tree
|
2013-06-14 11:29:38 -04:00 |
|
export.c
|
Btrfs: cleanup: don't check the same thing twice
|
2013-06-14 11:29:30 -04:00 |
|
export.h
|
|
|
|
extent-tree.c
|
Btrfs: remove space_info->reservation_progress
|
2013-09-21 11:05:27 -04:00 |
|
extent_io.c
|
btrfs: Fix crash due to not allocating integrity data for a bioset
|
2013-10-05 10:52:10 -04:00 |
|
extent_io.h
|
btrfs: mark some local function as 'static'
|
2013-09-01 08:15:51 -04:00 |
|
extent_map.c
|
btrfs: make static code static & remove dead code
|
2013-05-06 15:55:23 -04:00 |
|
extent_map.h
|
Btrfs: fix bad extent logging
|
2013-05-06 15:54:34 -04:00 |
|
file-item.c
|
Btrfs: Remove superfluous casts from u64 to unsigned long long
|
2013-09-01 08:16:08 -04:00 |
|
file.c
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs
|
2013-09-22 14:58:49 -07:00 |
|
free-space-cache.c
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs
|
2013-09-22 14:58:49 -07:00 |
|
free-space-cache.h
|
Btrfs: allocate the free space by the existed max extent size when ENOSPC
|
2013-09-21 11:05:23 -04:00 |
|
hash.h
|
btrfs: extended inode refs
|
2012-10-09 09:14:45 -04:00 |
|
inode-item.c
|
btrfs: make static code static & remove dead code
|
2013-05-06 15:55:23 -04:00 |
|
inode-map.c
|
Btrfs: don't use global block reservation for inode cache truncation
|
2013-05-17 21:40:22 -04:00 |
|
inode-map.h
|
|
|
|
inode.c
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs
|
2013-09-22 14:58:49 -07:00 |
|
ioctl.c
|
btrfs: change extent-same to copy entire argument struct
|
2013-09-21 11:05:31 -04:00 |
|
Kconfig
|
Btrfs: add support for asserts
|
2013-09-01 08:16:32 -04:00 |
|
locking.c
|
btrfs: make static code static & remove dead code
|
2013-05-06 15:55:23 -04:00 |
|
locking.h
|
Btrfs: remove btrfs_try_spin_lock
|
2013-03-14 14:57:10 -04:00 |
|
lzo.c
|
Btrfs: return -1 when lzo compression makes data bigger
|
2013-09-01 07:57:19 -04:00 |
|
Makefile
|
Btrfs: introduce a tree for items that map UUIDs to something
|
2013-09-01 08:15:52 -04:00 |
|
math.h
|
Btrfs: cleanup duplicated division functions
|
2012-12-11 13:31:30 -05:00 |
|
ordered-data.c
|
Btrfs: kill delay_iput arg to the wait_ordered functions
|
2013-09-21 11:05:27 -04:00 |
|
ordered-data.h
|
Btrfs: kill delay_iput arg to the wait_ordered functions
|
2013-09-21 11:05:27 -04:00 |
|
orphan.c
|
|
|
|
print-tree.c
|
Btrfs: Remove superfluous casts from u64 to unsigned long long
|
2013-09-01 08:16:08 -04:00 |
|
print-tree.h
|
btrfs: make static code static & remove dead code
|
2013-05-06 15:55:23 -04:00 |
|
qgroup.c
|
Btrfs: Remove superfluous casts from u64 to unsigned long long
|
2013-09-01 08:16:08 -04:00 |
|
raid56.c
|
Btrfs, raid56: fix memory leak when allocating pages for p/q stripes failed
|
2013-09-01 08:04:27 -04:00 |
|
raid56.h
|
Btrfs: RAID5 and RAID6
|
2013-02-01 14:24:23 -05:00 |
|
rcu-string.h
|
|
|
|
reada.c
|
Btrfs: fix reada debug code compilation
|
2013-05-06 15:54:55 -04:00 |
|
relocation.c
|
Btrfs: kill delay_iput arg to the wait_ordered functions
|
2013-09-21 11:05:27 -04:00 |
|
root-tree.c
|
Btrfs: Remove superfluous casts from u64 to unsigned long long
|
2013-09-01 08:16:08 -04:00 |
|
scrub.c
|
Btrfs: improve replacing nocow extents
|
2013-09-21 11:05:26 -04:00 |
|
send.c
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs
|
2013-09-12 09:58:51 -07:00 |
|
send.h
|
btrfs: make static code static & remove dead code
|
2013-05-06 15:55:23 -04:00 |
|
struct-funcs.c
|
Btrfs: rewrite BTRFS_SETGET_FUNCS
|
2012-07-23 16:28:06 -04:00 |
|
super.c
|
Btrfs: create the uuid tree on remount rw
|
2013-09-21 11:50:43 -04:00 |
|
sysfs.c
|
btrfs: fixup/remove module.h usage as required
|
2013-03-01 15:01:01 -05:00 |
|
transaction.c
|
Btrfs: fix transid verify errors when recovering log tree
|
2013-10-04 16:02:09 -04:00 |
|
transaction.h
|
btrfs: mark some local function as 'static'
|
2013-09-01 08:15:51 -04:00 |
|
tree-defrag.c
|
btrfs: remove cache only arguments from defrag path
|
2013-02-20 12:59:36 -05:00 |
|
tree-log.c
|
Btrfs: drop dir i_size when adding new names on replay
|
2013-09-21 11:05:25 -04:00 |
|
tree-log.h
|
btrfs: make static code static & remove dead code
|
2013-05-06 15:55:23 -04:00 |
|
ulist.c
|
Btrfs: fix crash regarding to ulist_add_merge
|
2013-07-02 11:50:59 -04:00 |
|
ulist.h
|
Btrfs: add a rb_tree to improve performance of ulist search
|
2013-05-06 15:54:44 -04:00 |
|
uuid-tree.c
|
Btrfs: check UUID tree during mount if required
|
2013-09-01 08:15:58 -04:00 |
|
volumes.c
|
Merge branch 'for-linus' into for-linus-3.12
|
2013-10-05 10:51:32 -04:00 |
|
volumes.h
|
Btrfs: add btrfs_alloc_device and switch to it
|
2013-09-01 08:16:04 -04:00 |
|
xattr.c
|
btrfs: make static code static & remove dead code
|
2013-05-06 15:55:23 -04:00 |
|
xattr.h
|
|
|
|
zlib.c
|
btrfs: fix message printing
|
2012-10-09 09:19:57 -04:00 |