git.openpandora.org
/
pandora-kernel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
0414855
)
iommu/vt-d: Avoid double free of g_iommus on error recovery path
author
Jiang Liu
<jiang.liu@linux.intel.com>
Wed, 19 Feb 2014 06:07:21 +0000
(14:07 +0800)
committer
Joerg Roedel
<joro@8bytes.org>
Tue, 4 Mar 2014 16:50:59 +0000
(17:50 +0100)
Array 'g_iommus' may be freed twice on error recovery path in function
init_dmars() and free_dmar_iommu(), thus cause random system crash as
below.
[ 6.774301] IOMMU: dmar init failed
[ 6.778310] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[ 6.785615] software IO TLB [mem 0x76bcf000-0x7abcf000] (64MB) mapped at [
ffff880076bcf000
-
ffff88007abcefff
]
[ 6.796887] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC
[ 6.804173] Modules linked in:
[ 6.807731] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.14.0-rc1+ #108
[ 6.815122] Hardware name: Intel Corporation BRICKLAND/BRICKLAND, BIOS BRIVTIN1.86B.0047.R00.
1402050741
02/05/2014
[ 6.836000] task:
ffff880455a80000
ti:
ffff880455a88000
task.ti:
ffff880455a88000
[ 6.844487] RIP: 0010:[<
ffffffff8143eea6
>] [<
ffffffff8143eea6
>] memcpy+0x6/0x110
[ 6.853039] RSP: 0000:
ffff880455a89cc8
EFLAGS:
00010293
[ 6.859064] RAX:
ffff006568636163
RBX:
ffff00656863616a
RCX:
0000000000000005
[ 6.867134] RDX:
0000000000000005
RSI:
ffffffff81cdc439
RDI:
ffff006568636163
[ 6.875205] RBP:
ffff880455a89d30
R08:
000000000001bc3b
R09:
0000000000000000
[ 6.883275] R10:
0000000000000000
R11:
ffffffff81cdc43e
R12:
ffff880455a89da8
[ 6.891338] R13:
ffff006568636163
R14:
0000000000000005
R15:
ffffffff81cdc439
[ 6.899408] FS:
0000000000000000
(0000) GS:
ffff88045b800000
(0000) knlGS:
0000000000000000
[ 6.908575] CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033
[ 6.915088] CR2:
ffff88047e1ff000
CR3:
0000000001e0e000
CR4:
00000000001407f0
[ 6.923160] Stack:
[ 6.925487]
ffffffff8143c904
ffff88045b407e00
ffff006568636163
ffff006568636163
[ 6.934113]
ffffffff8120a1a9
ffffffff81cdc43e
0000000000000007
0000000000000000
[ 6.942747]
ffff880455a89da8
ffff006568636163
0000000000000007
ffffffff81cdc439
[ 6.951382] Call Trace:
[ 6.954197] [<
ffffffff8143c904
>] ? vsnprintf+0x124/0x6f0
[ 6.960323] [<
ffffffff8120a1a9
>] ? __kmalloc_track_caller+0x169/0x360
[ 6.967716] [<
ffffffff81440e1b
>] kvasprintf+0x6b/0x80
[ 6.973552] [<
ffffffff81432bf1
>] kobject_set_name_vargs+0x21/0x70
[ 6.980552] [<
ffffffff8143393d
>] kobject_init_and_add+0x4d/0x90
[ 6.987364] [<
ffffffff812067c9
>] ? __kmalloc+0x169/0x370
[ 6.993492] [<
ffffffff8102dbbc
>] ? cache_add_dev+0x17c/0x4f0
[ 7.000005] [<
ffffffff8102ddfa
>] cache_add_dev+0x3ba/0x4f0
[ 7.006327] [<
ffffffff821a87ca
>] ? i8237A_init_ops+0x14/0x14
[ 7.012842] [<
ffffffff821a87f8
>] cache_sysfs_init+0x2e/0x61
[ 7.019260] [<
ffffffff81002162
>] do_one_initcall+0xf2/0x220
[ 7.025679] [<
ffffffff810a4a29
>] ? parse_args+0x2c9/0x450
[ 7.031903] [<
ffffffff8219d1b1
>] kernel_init_freeable+0x1c9/0x25b
[ 7.038904] [<
ffffffff8219c8d2
>] ? do_early_param+0x8a/0x8a
[ 7.045322] [<
ffffffff8184d5e0
>] ? rest_init+0x150/0x150
[ 7.051447] [<
ffffffff8184d5ee
>] kernel_init+0xe/0x100
[ 7.057380] [<
ffffffff8187b87c
>] ret_from_fork+0x7c/0xb0
[ 7.063503] [<
ffffffff8184d5e0
>] ? rest_init+0x150/0x150
[ 7.069628] Code: 89 e5 53 48 89 fb 75 16 80 7f 3c 00 75 05 e8 d2 f9 ff ff 48 8b 43 58 48 2b 43 50 88 43 4e 5b 5d c3 90 90 90 90 48 89 f8 48 89 d1 <f3> a4 c3 03 83 e2 07 f3 48 a5 89 d1 f3 a4 c3 20 4c 8b 06 4c 8b
[ 7.094960] RIP [<
ffffffff8143eea6
>] memcpy+0x6/0x110
[ 7.100856] RSP <
ffff880455a89cc8
>
[ 7.104864] ---[ end trace
b5d3fdc6c6c28083
]---
[ 7.110142] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[ 7.110142]
[ 7.120540] Kernel Offset: 0x0 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffff9fffffff)
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Signed-off-by: Joerg Roedel <joro@8bytes.org>
drivers/iommu/intel-iommu.c
patch
|
blob
|
history
diff --cc
drivers/iommu/intel-iommu.c
Simple merge