From: Jussi Kivilinna <jussi.kivilinna@iki.fi>
To: Julian Wollrath <jwollrath@web.de>,
"linux-crypto@vger.kernel.org" <linux-crypto@vger.kernel.org>
Subject: Re: Oops on 3.10-rc1 related to ssh256_ssse3
Date: Mon, 20 May 2013 23:15:57 +0300 [thread overview]
Message-ID: <519A847D.6050106@iki.fi> (raw)
In-Reply-To: <20130516154135.17e03aca@ilfaris>
[-- Attachment #1: Type: text/plain, Size: 10127 bytes --]
On 16.05.2013 16:41, Julian Wollrath wrote:
> Hello,
>
> I have an encrypted disc (dm-crypt, type LUKS1, ssh256 as hash
> algorithm). I have an Intel Core i5 M450 that supports ssse3. Find
> below the output from netconsole with the oops. The last warning
> appeared when I restart the pc using the magic sysrq key combination
> REISUB. I have the same problem with a different laptop with an AMD
> E-450 APU.
Appears to be stack corruption caused by sha256_transform_ssse3. Does attached patch help?
-Jussi
>
> If you need further information, feel free to ask.
>
>
> Best regards,
> Julian Wollrath
>
> [ 3.647071] device-mapper: uevent: version 1.0.3
> [ 3.647245] device-mapper: ioctl: 4.24.0-ioctl (2013-01-15) initialised: dm-devel@redhat.com
> [ 11.619603] sha256_ssse3: Using SSSE3 optimized SHA-256 implementation
> [ 12.131483] BUG: unable to handle kernel paging request at ffff8800bb593000
> [ 12.131848] IP: [<ffffffffa016b083>] loop0+0x27/0x44 [sha256_ssse3]
> [ 12.132032] PGD 1a32067 PUD 1a35067 PMD 1a36067 PTE 0
> [ 12.132427] Oops: 0000 [#1] SMP
> [ 12.132670] Modules linked in: sha256_ssse3(+) sha256_generic twofish_generic twofish_x86_64_3way xts lrw gf128mul glue_helper twofish_x86_64 twofish_common cbc dm_crypt dm_mod netconsole sg sr_mod sd_mod cdrom crc_t10dif crc32c_intel microcode ahci libahci ehci_pci ehci_hcd libata scsi_mod r8169 mii usbcore usb_common thermal thermal_sys
> [ 12.135396] CPU: 3 PID: 276 Comm: cryptomgr_test Not tainted 3.10.0-rc1+ #2
> [ 12.135559] Hardware name: Dell Inc. Vostro 3500/0NVXFV, BIOS A10 10/25/2010
> [ 12.135720] task: ffff880037572090 ti: ffff8800b66b6000 task.ti: ffff8800b66b6000
> [ 12.135836] RIP: 0010:[<ffffffffa016b083>] [<ffffffffa016b083>] loop0+0x27/0x44 [sha256_ssse3]
> [ 12.136032] RSP: 0018:ffff8800b66b7af0 EFLAGS: 00010287
> [ 12.136130] RAX: 00000000a186fc15 RBX: 00000000704bb939 RCX: 00000000d1b791ec
> [ 12.136232] RDX: 000000001fd2088a RSI: ffff880037a97ee8 RDI: ffff8800bb592fc8
> [ 12.136334] RBP: ffffffffa016f000 R08: 0000000052a5c3c8 R09: 000000005db427ef
> [ 12.136439] R10: 00000000b80a833e R11: 0000000029c53567 R12: ffff8800b66b7b08
> [ 12.136543] R13: 000000003158a213 R14: 00000000c7fc368e R15: 0000000001008012
> [ 12.136647] FS: 0000000000000000(0000) GS:ffff8800bb180000(0000) knlGS:0000000000000000
> [ 12.136763] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 12.136863] CR2: ffff8800bb593000 CR3: 000000000180b000 CR4: 00000000000007e0
> [ 12.136964] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> [ 12.137066] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> [ 12.137167] Stack:
> [ 12.137257] ffff880108c634c8 ffff8800bb592f88 6033fb357b8c96fd c5e119eaebeb38a3
> [ 12.137668] ffff880037a97f08 ffff8800b66b7b80 0000000000000008 0000000000000008
> [ 12.138077] ffff880037a97ed0 ffffffffa016dc4e ffff880001496ae5 ffff880037a97ee0
> [ 12.138484] Call Trace:
> [ 12.138580] [<ffffffffa016dc4e>] ? __sha256_ssse3_update+0x5e/0xe0 [sha256_ssse3]
> [ 12.138701] [<ffffffffa016df15>] ? sha256_ssse3_final+0x145/0x1ec [sha256_ssse3]
> [ 12.138825] [<ffffffff81214362>] ? shash_ahash_finup+0x32/0x80
> [ 12.138931] [<ffffffff81217523>] ? test_hash+0x383/0x6b0
> [ 12.139034] [<ffffffff8120c8a0>] ? crypto_mod_get+0x10/0x30
> [ 12.139141] [<ffffffff811186d6>] ? __kmalloc+0x1c6/0x1f0
> [ 12.139243] [<ffffffff8120cdfc>] ? __crypto_alg_lookup+0xac/0xf0
> [ 12.139344] [<ffffffff8120ca48>] ? crypto_create_tfm+0x48/0xd0
> [ 12.139445] [<ffffffff812146cd>] ? crypto_init_shash_ops_async+0x2d/0xd0
> [ 12.139548] [<ffffffff81217893>] ? alg_test_hash+0x43/0xa0
> [ 12.139650] [<ffffffff81215b9b>] ? alg_test+0x9b/0x230
> [ 12.139753] [<ffffffff81421351>] ? __schedule+0x271/0x650
> [ 12.139856] [<ffffffff81214940>] ? cryptomgr_probe+0xb0/0xb0
> [ 12.139954] [<ffffffff81214978>] ? cryptomgr_test+0x38/0x40
> [ 12.140058] [<ffffffff8105c53f>] ? kthread+0xaf/0xc0
> [ 12.140219] [<ffffffff8105c490>] ? kthread_create_on_node+0x110/0x110
> [ 12.140382] [<ffffffff814237ac>] ? ret_from_fork+0x7c/0xb0
> [ 12.140482] [<ffffffff8105c490>] ? kthread_create_on_node+0x110/0x110
> [ 12.140585] Code: c4 40 00 00 48 8d 2d 9d 3f 00 00 f3 0f 6f 27 66 41 0f 38 00 e4 f3 0f 6f 6f 10 66 41 0f 38 00 ec f3 0f 6f 77 20 66 41 0f 38 00 f4 <f3> 0f 6f 7f 30 66 41 0f 38 00 fc 48 89 7c 24 08 48 c7 c7 03 00
> [ 12.145708] RIP [<ffffffffa016b083>] loop0+0x27/0x44 [sha256_ssse3]
> [ 12.145885] RSP <ffff8800b66b7af0>
> [ 12.145979] CR2: ffff8800bb593000
> [ 12.146075] ---[ end trace 0382cf30f3465fd1 ]---
> [ 12.146173] note: cryptomgr_test[276] exited with preempt_count 1
> [ 12.146347] BUG: scheduling while atomic: cryptomgr_test/276/0x10000001
> [ 12.146485] Modules linked in: sha256_ssse3(+) sha256_generic twofish_generic twofish_x86_64_3way xts lrw gf128mul glue_helper twofish_x86_64 twofish_common cbc dm_crypt dm_mod netconsole sg sr_mod sd_mod cdrom crc_t10dif crc32c_intel microcode ahci libahci ehci_pci ehci_hcd libata scsi_mod r8169 mii usbcore usb_common thermal thermal_sys
> [ 12.150126] CPU: 3 PID: 276 Comm: cryptomgr_test Tainted: G D 3.10.0-rc1+ #2
> [ 12.150282] Hardware name: Dell Inc. Vostro 3500/0NVXFV, BIOS A10 10/25/2010
> [ 12.150428] ffffffff8141eaf7 ffffffff8141bca7 ffffffff8142167a 0000000000000035
> [ 12.151034] 0000000000000046 ffff8800b66b7fd8 ffff8800b66b7fd8 ffff8800b66b7fd8
> [ 12.151610] ffff880037572090 ffff8800b66b6000 ffff8800375725d0 0000000000000046
> [ 12.152215] Call Trace:
> [ 12.152352] [<ffffffff8141eaf7>] ? dump_stack+0xc/0x15
> [ 12.152496] [<ffffffff8141bca7>] ? __schedule_bug+0x3f/0x4c
> [ 12.152637] [<ffffffff8142167a>] ? __schedule+0x59a/0x650
> [ 12.152764] [<ffffffff81067ccd>] ? __cond_resched+0x1d/0x30
> [ 12.152898] [<ffffffff814217a6>] ? _cond_resched+0x26/0x30
> [ 12.153033] [<ffffffff81420405>] ? mutex_lock+0x15/0x40
> [ 12.153169] [<ffffffff810cfba0>] ? perf_event_exit_task+0x20/0x1e0
> [ 12.153277] [<ffffffff8103e24f>] ? do_exit+0x29f/0xa10
> [ 12.153414] [<ffffffff81005ca6>] ? oops_end+0x96/0xe0
> [ 12.153550] [<ffffffff8141afd9>] ? no_context+0x24c/0x275
> [ 12.153692] [<ffffffff8102d51e>] ? __do_page_fault+0x2ee/0x480
> [ 12.153834] [<ffffffff810db066>] ? __alloc_pages_nodemask+0x106/0x8f0
> [ 12.153962] [<ffffffff81423332>] ? page_fault+0x22/0x30
> [ 12.154102] [<ffffffffa016b083>] ? loop0+0x27/0x44 [sha256_ssse3]
> [ 12.154232] [<ffffffffa016dc4e>] ? __sha256_ssse3_update+0x5e/0xe0 [sha256_ssse3]
> [ 12.154380] [<ffffffffa016df15>] ? sha256_ssse3_final+0x145/0x1ec [sha256_ssse3]
> [ 12.154532] [<ffffffff81214362>] ? shash_ahash_finup+0x32/0x80
> [ 12.154660] [<ffffffff81217523>] ? test_hash+0x383/0x6b0
> [ 12.154800] [<ffffffff8120c8a0>] ? crypto_mod_get+0x10/0x30
> [ 12.154940] [<ffffffff811186d6>] ? __kmalloc+0x1c6/0x1f0
> [ 12.155042] [<ffffffff8120cdfc>] ? __crypto_alg_lookup+0xac/0xf0
> [ 12.155183] [<ffffffff8120ca48>] ? crypto_create_tfm+0x48/0xd0
> [ 12.155327] [<ffffffff812146cd>] ? crypto_init_shash_ops_async+0x2d/0xd0
> [ 12.155466] [<ffffffff81217893>] ? alg_test_hash+0x43/0xa0
> [ 12.155609] [<ffffffff81215b9b>] ? alg_test+0x9b/0x230
> [ 12.155746] [<ffffffff81421351>] ? __schedule+0x271/0x650
> [ 12.155886] [<ffffffff81214940>] ? cryptomgr_probe+0xb0/0xb0
> [ 12.156018] [<ffffffff81214978>] ? cryptomgr_test+0x38/0x40
> [ 12.156150] [<ffffffff8105c53f>] ? kthread+0xaf/0xc0
> [ 12.156275] [<ffffffff8105c490>] ? kthread_create_on_node+0x110/0x110
> [ 12.156408] [<ffffffff814237ac>] ? ret_from_fork+0x7c/0xb0
> [ 12.156542] [<ffffffff8105c490>] ? kthread_create_on_node+0x110/0x110
> [ 16.822251] SysRq : Keyboard mode set to system default
> [ 18.165412] SysRq : Terminate All Tasks
> [ 18.165722] ------------[ cut here ]------------
> [ 18.165825] WARNING: at crypto/algapi.c:329 crypto_wait_for_test+0x55/0x70()
> [ 18.165846] Modules linked in: sha256_ssse3(+) sha256_generic twofish_generic twofish_x86_64_3way xts lrw gf128mul glue_helper twofish_x86_64 twofish_common cbc dm_crypt dm_mod netconsole sg sr_mod sd_mod cdrom crc_t10dif crc32c_intel microcode ahci libahci ehci_pci ehci_hcd libata scsi_mod r8169 mii usbcore usb_common thermal thermal_sys
> [ 18.165847] CPU: 3 PID: 273 Comm: modprobe Tainted: G D W 3.10.0-rc1+ #2
> [ 18.165849] Hardware name: Dell Inc. Vostro 3500/0NVXFV, BIOS A10 10/25/2010
> [ 18.165851] ffffffff8141eaf7 ffffffff810390fa ffff8800b669b400 ffff8800b669b400
> [ 18.165853] ffffffffa016f660 ffffffffa016f6b0 0000000000000001 ffffffff8120e4d5
> [ 18.165854] 0000000000000000 ffffffff8120e634 ffffffffa0046000 0000000000000000
> [ 18.165855] Call Trace:
> [ 18.165858] [<ffffffff8141eaf7>] ? dump_stack+0xc/0x15
> [ 18.165861] [<ffffffff810390fa>] ? warn_slowpath_common+0x6a/0xa0
> [ 18.165863] [<ffffffff8120e4d5>] ? crypto_wait_for_test+0x55/0x70
> [ 18.165864] [<ffffffff8120e634>] ? crypto_register_alg+0x64/0x80
> [ 18.165867] [<ffffffffa0046000>] ? 0xffffffffa0045fff
> [ 18.165868] [<ffffffff810002fa>] ? do_one_initcall+0x10a/0x160
> [ 18.165873] [<ffffffff81090a57>] ? load_module+0x1b37/0x2450
> [ 18.165875] [<ffffffff8108ca90>] ? unset_module_init_ro_nx+0x80/0x80
> [ 18.165877] [<ffffffff81091430>] ? SyS_init_module+0xc0/0xf0
> [ 18.165879] [<ffffffff81423852>] ? system_call_fastpath+0x16/0x1b
> [ 18.165880] ---[ end trace 0382cf30f3465fd2 ]---
> [ 18.166140] bio: create slab <bio-1> at 1
> [ 20.123114] SysRq : Kill All Tasks
> [ 20.882858] SysRq : Emergency Sync
> [ 20.883148] Emergency Sync complete
> [ 22.531845] SysRq : Emergency Remount R/O
> [ 22.532141] Emergency Remount complete
> [ 23.386434] SysRq : Resetting
> [ 23.386663] ACPI MEMORY or I/O RESET_REG.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
[-- Attachment #2: 23-sha256-ssse3-fix-stack-corruption.patch --]
[-- Type: text/x-patch, Size: 1308 bytes --]
crypto: sha256_ssse3 - fix stack corruption with SSSE3 and AVX implementations
From: Jussi Kivilinna <jussi.kivilinna@iki.fi>
The _XFER stack element size was set too small, 8 bytes, when it needs to be
16 bytes. As _XFER is the last stack element used by these implementations,
the 16 byte stores with 'movdqa' corrupt the stack where the value of register
%r12 is temporarily stored. As implementations align stack to 16 bytes, this
corruption did not happen every time.
Patch corrects this issue.
---
arch/x86/crypto/sha256-avx-asm.S | 2 +-
arch/x86/crypto/sha256-ssse3-asm.S | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/crypto/sha256-avx-asm.S b/arch/x86/crypto/sha256-avx-asm.S
index 56610c4..642f156 100644
--- a/arch/x86/crypto/sha256-avx-asm.S
+++ b/arch/x86/crypto/sha256-avx-asm.S
@@ -118,7 +118,7 @@ y2 = %r15d
_INP_END_SIZE = 8
_INP_SIZE = 8
-_XFER_SIZE = 8
+_XFER_SIZE = 16
_XMM_SAVE_SIZE = 0
_INP_END = 0
diff --git a/arch/x86/crypto/sha256-ssse3-asm.S b/arch/x86/crypto/sha256-ssse3-asm.S
index 98d3c39..f833b74 100644
--- a/arch/x86/crypto/sha256-ssse3-asm.S
+++ b/arch/x86/crypto/sha256-ssse3-asm.S
@@ -111,7 +111,7 @@ y2 = %r15d
_INP_END_SIZE = 8
_INP_SIZE = 8
-_XFER_SIZE = 8
+_XFER_SIZE = 16
_XMM_SAVE_SIZE = 0
_INP_END = 0
next prev parent reply other threads:[~2013-05-20 20:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-16 13:41 Oops on 3.10-rc1 related to ssh256_ssse3 Julian Wollrath
2013-05-20 20:15 ` Jussi Kivilinna [this message]
-- strict thread matches above, loose matches on Subject: below --
2013-05-26 15:11 Matt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=519A847D.6050106@iki.fi \
--to=jussi.kivilinna@iki.fi \
--cc=jwollrath@web.de \
--cc=linux-crypto@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.