projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
eff84b3
)
crypto: talitos - fix Kernel Oops on hashing an empty file
author
LEROY Christophe
<christophe.leroy@c-s.fr>
Fri, 26 Jan 2018 16:09:59 +0000
(17:09 +0100)
committer
Herbert Xu
<herbert@gondor.apana.org.au>
Thu, 8 Feb 2018 11:37:06 +0000
(22:37 +1100)
Performing the hash of an empty file leads to a kernel Oops
[ 44.504600] Unable to handle kernel paging request for data at address 0x0000000c
[ 44.512819] Faulting instruction address: 0xc02d2be8
[ 44.524088] Oops: Kernel access of bad area, sig: 11 [#1]
[ 44.529171] BE PREEMPT CMPC885
[ 44.532232] CPU: 0 PID: 491 Comm: md5sum Not tainted
4.15.0-rc8-00211-g3a968610b6ea
#81
[ 44.540814] NIP:
c02d2be8
LR:
c02d2984
CTR:
00000000
[ 44.545812] REGS:
c6813c90
TRAP: 0300 Not tainted (
4.15.0-rc8-00211-g3a968610b6ea
)
[ 44.554223] MSR:
00009032
<EE,ME,IR,DR,RI> CR:
48222822
XER:
20000000
[ 44.560855] DAR:
0000000c
DSISR:
c0000000
[ 44.560855] GPR00:
c02d28fc
c6813d40
c6828000
c646fa40
00000001
00000001
00000001
00000000
[ 44.560855] GPR08:
0000004c
00000000
c000bfcc
00000000
28222822
100280d4
00000000
10020008
[ 44.560855] GPR16:
00000000
00000020
00000000
00000000
10024008
00000000
c646f9f0
c6179a10
[ 44.560855] GPR24:
00000000
00000001
c62f0018
c6179a10
00000000
c6367a30
c62f0000
c646f9c0
[ 44.598542] NIP [
c02d2be8
] ahash_process_req+0x448/0x700
[ 44.603751] LR [
c02d2984
] ahash_process_req+0x1e4/0x700
[ 44.608868] Call Trace:
[ 44.611329] [
c6813d40
] [
c02d28fc
] ahash_process_req+0x15c/0x700 (unreliable)
[ 44.618302] [
c6813d90
] [
c02060c4
] hash_recvmsg+0x11c/0x210
[ 44.623716] [
c6813db0
] [
c0331354
] ___sys_recvmsg+0x98/0x138
[ 44.629226] [
c6813eb0
] [
c03332c0
] __sys_recvmsg+0x40/0x84
[ 44.634562] [
c6813f10
] [
c03336c0
] SyS_socketcall+0xb8/0x1d4
[ 44.640073] [
c6813f40
] [
c000d1ac
] ret_from_syscall+0x0/0x38
[ 44.645530] Instruction dump:
[ 44.648465]
38c00001
7f63db78
4e800421
7c791b78
54690ffe
0f090000
80ff0190
2f870000
[ 44.656122]
40befe50
2f990001
409e0210
813f01bc
<
8129000c
>
b39e003a
7d29c214
913e003c
This patch fixes that Oops by checking if src is NULL.
Fixes:
6a1e8d14156d4
("crypto: talitos - making mapping helpers more generic")
Cc: <stable@vger.kernel.org>
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/talitos.c
patch
|
blob
|
history
diff --git
a/drivers/crypto/talitos.c
b/drivers/crypto/talitos.c
index
9c80e0c
..
6882fa2
100644
(file)
--- a/
drivers/crypto/talitos.c
+++ b/
drivers/crypto/talitos.c
@@
-1138,6
+1138,10
@@
static int talitos_sg_map(struct device *dev, struct scatterlist *src,
struct talitos_private *priv = dev_get_drvdata(dev);
bool is_sec1 = has_ftr_sec1(priv);
+ if (!src) {
+ to_talitos_ptr(ptr, 0, 0, is_sec1);
+ return 1;
+ }
if (sg_count == 1) {
to_talitos_ptr(ptr, sg_dma_address(src) + offset, len, is_sec1);
return sg_count;