Skip to content

Commit d041b55

Browse files
aryabininherbertx
authored andcommitted
crypto: x86/sha1-mb - fix panic due to unaligned access
struct sha1_ctx_mgr allocated in sha1_mb_mod_init() via kzalloc() and later passed in sha1_mb_flusher_mgr_flush_avx2() function where instructions vmovdqa used to access the struct. vmovdqa requires 16-bytes aligned argument, but nothing guarantees that struct sha1_ctx_mgr will have that alignment. Unaligned vmovdqa will generate GP fault. Fix this by replacing vmovdqa with vmovdqu which doesn't have alignment requirements. Fixes: 2249cbb ("crypto: sha-mb - SHA1 multibuffer submit and flush routines for AVX2") Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com> Cc: <stable@vger.kernel.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
1 parent 5dfeaac commit d041b55

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

arch/x86/crypto/sha1-mb/sha1_mb_mgr_flush_avx2.S

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,8 @@ LABEL skip_ %I
157157
.endr
158158

159159
# Find min length
160-
vmovdqa _lens+0*16(state), %xmm0
161-
vmovdqa _lens+1*16(state), %xmm1
160+
vmovdqu _lens+0*16(state), %xmm0
161+
vmovdqu _lens+1*16(state), %xmm1
162162

163163
vpminud %xmm1, %xmm0, %xmm2 # xmm2 has {D,C,B,A}
164164
vpalignr $8, %xmm2, %xmm3, %xmm3 # xmm3 has {x,x,D,C}
@@ -178,8 +178,8 @@ LABEL skip_ %I
178178
vpsubd %xmm2, %xmm0, %xmm0
179179
vpsubd %xmm2, %xmm1, %xmm1
180180

181-
vmovdqa %xmm0, _lens+0*16(state)
182-
vmovdqa %xmm1, _lens+1*16(state)
181+
vmovdqu %xmm0, _lens+0*16(state)
182+
vmovdqu %xmm1, _lens+1*16(state)
183183

184184
# "state" and "args" are the same address, arg1
185185
# len is arg2
@@ -235,8 +235,8 @@ ENTRY(sha1_mb_mgr_get_comp_job_avx2)
235235
jc .return_null
236236

237237
# Find min length
238-
vmovdqa _lens(state), %xmm0
239-
vmovdqa _lens+1*16(state), %xmm1
238+
vmovdqu _lens(state), %xmm0
239+
vmovdqu _lens+1*16(state), %xmm1
240240

241241
vpminud %xmm1, %xmm0, %xmm2 # xmm2 has {D,C,B,A}
242242
vpalignr $8, %xmm2, %xmm3, %xmm3 # xmm3 has {x,x,D,C}

0 commit comments

Comments
 (0)