mpt3sas: Fix resume on WarpDrive flash cards
commit
ce7c6c9e1d997a2670aead3a7b87f4df32c11118 upstream.
mpt3sas crashes on resume after suspend with WarpDrive flash cards. The
reply_post_host_index array is not set back up after the resume, and we
deference a stale pointer in _base_interrupt().
[ 47.309711] BUG: unable to handle kernel paging request at
ffffc90001f8006c
[ 47.318289] IP: [<
ffffffffc00863ef>] _base_interrupt+0x49f/0xa30 [mpt3sas]
[ 47.326749] PGD
41ccaa067 PUD
41ccab067 PMD
3466c067 PTE 0
[ 47.333848] Oops: 0002 [#1] SMP
...
[ 47.452708] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.7.0 #6
[ 47.460506] Hardware name: Dell Inc. OptiPlex 990/06D7TR, BIOS A18 09/24/2013
[ 47.469629] task:
ffffffff81c0d500 ti:
ffffffff81c00000 task.ti:
ffffffff81c00000
[ 47.479112] RIP: 0010:[<
ffffffffc00863ef>] [<
ffffffffc00863ef>] _base_interrupt+0x49f/0xa30 [mpt3sas]
[ 47.490466] RSP: 0018:
ffff88041d203e30 EFLAGS:
00010002
[ 47.497801] RAX:
0000000000000001 RBX:
ffff880033f4c000 RCX:
0000000000000001
[ 47.506973] RDX:
ffffc90001f8006c RSI:
0000000000000082 RDI:
0000000000000082
[ 47.516141] RBP:
ffff88041d203eb0 R08:
ffff8804118e2820 R09:
0000000000000001
[ 47.525300] R10:
0000000000000001 R11:
00000000100c0000 R12:
0000000000000000
[ 47.534457] R13:
ffff880412c487e0 R14:
ffff88041a8987d8 R15:
0000000000000001
[ 47.543632] FS:
0000000000000000(0000) GS:
ffff88041d200000(0000) knlGS:
0000000000000000
[ 47.553796] CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033
[ 47.561632] CR2:
ffffc90001f8006c CR3:
0000000001c06000 CR4:
00000000000406f0
[ 47.570883] Stack:
[ 47.575015]
000000001d211228 ffff88041d2100c0 ffff8800c47d8130 0000000000000100
[ 47.584625]
ffff8804100c0000 100c000000000000 ffff88041a8992a0 ffff88041a8987f8
[ 47.594230]
ffff88041d203e00 ffffffff81111e55 000000000000038c ffff880414ad4280
[ 47.603862] Call Trace:
[ 47.608474] <IRQ>
[ 47.610413] [<
ffffffff81111e55>] ? call_timer_fn+0x35/0x120
[ 47.620539] [<
ffffffff81100a1f>] handle_irq_event_percpu+0x7f/0x1c0
[ 47.629061] [<
ffffffff81100b8c>] handle_irq_event+0x2c/0x50
[ 47.636859] [<
ffffffff81103fff>] handle_edge_irq+0x6f/0x130
[ 47.644654] [<
ffffffff8102fbf3>] handle_irq+0x73/0x120
[ 47.652011] [<
ffffffff810c6ada>] ? atomic_notifier_call_chain+0x1a/0x20
[ 47.660854] [<
ffffffff817e374b>] do_IRQ+0x4b/0xd0
[ 47.667777] [<
ffffffff817e160c>] common_interrupt+0x8c/0x8c
[ 47.675635] <EOI>
Move the reply_post_host_index array setup into
mpt3sas_base_map_resources(), which is also in the resume path.
Signed-off-by: Greg Edwards <gedwards@fireweed.org>
Acked-by: Chaitra P B <chaitra.basappa@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>