projects
/
platform
/
kernel
/
linux-rpi.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
fba2b0d
)
crypto: xor - Fix divide error in do_xor_speed()
author
Kirill Tkhai
<ktkhai@virtuozzo.com>
Wed, 30 Dec 2020 21:33:18 +0000
(
00:33
+0300)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Wed, 27 Jan 2021 10:54:52 +0000
(11:54 +0100)
commit
3c02e04fd4f57130e4fa75fab6f528f7a52db9b5
upstream.
crypto: Fix divide error in do_xor_speed()
From: Kirill Tkhai <ktkhai@virtuozzo.com>
Latest (but not only latest) linux-next panics with divide
error on my QEMU setup.
The patch at the bottom of this message fixes the problem.
xor: measuring software checksum speed
divide error: 0000 [#1] PREEMPT SMP KASAN
PREEMPT SMP KASAN
CPU: 3 PID: 1 Comm: swapper/0 Not tainted 5.10.0-next-
20201223
+ #2177
RIP: 0010:do_xor_speed+0xbb/0xf3
Code: 41 ff cc 75 b5 bf 01 00 00 00 e8 3d 23 8b fe 65 8b 05 f6 49 83 7d 85 c0 75 05 e8
84 70 81 fe b8 00 00 50 c3 31 d2 48 8d 7b 10 <f7> f5 41 89 c4 e8 58 07 a2 fe 44 89 63 10 48 8d 7b 08
e8 cb 07 a2
RSP: 0000:
ffff888100137dc8
EFLAGS:
00010246
RAX:
00000000c3500000
RBX:
ffffffff823f0160
RCX:
0000000000000000
RDX:
0000000000000000
RSI:
0000000000000808
RDI:
ffffffff823f0170
RBP:
0000000000000000
R08:
ffffffff8109c50f
R09:
ffffffff824bb6f7
R10:
fffffbfff04976de
R11:
0000000000000001
R12:
0000000000000000
R13:
ffff888101997000
R14:
ffff888101994000
R15:
ffffffff823f0178
FS:
0000000000000000
(0000) GS:
ffff8881f7780000
(0000) knlGS:
0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033
CR2:
0000000000000000
CR3:
000000000220e000
CR4:
00000000000006a0
Call Trace:
calibrate_xor_blocks+0x13c/0x1c4
? do_xor_speed+0xf3/0xf3
do_one_initcall+0xc1/0x1b7
? start_kernel+0x373/0x373
? unpoison_range+0x3a/0x60
kernel_init_freeable+0x1dd/0x238
? rest_init+0xc6/0xc6
kernel_init+0x8/0x10a
ret_from_fork+0x1f/0x30
---[ end trace
5bd3c1d0b77772da
]---
Fixes:
c055e3eae0f1
("crypto: xor - use ktime for template benchmarking")
Cc: <stable@vger.kernel.org>
Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
crypto/xor.c
patch
|
blob
|
history
diff --git
a/crypto/xor.c
b/crypto/xor.c
index
eacbf4f
..
8f899f8
100644
(file)
--- a/
crypto/xor.c
+++ b/
crypto/xor.c
@@
-107,6
+107,8
@@
do_xor_speed(struct xor_block_template *tmpl, void *b1, void *b2)
preempt_enable();
// bytes/ns == GB/s, multiply by 1000 to get MB/s [not MiB/s]
+ if (!min)
+ min = 1;
speed = (1000 * REPS * BENCH_SIZE) / (unsigned int)ktime_to_ns(min);
tmpl->speed = speed;