]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/6.8.6/block-prevent-division-by-zero-in-blk_rq_stat_sum.patch
Linux 6.6.27
[thirdparty/kernel/stable-queue.git] / releases / 6.8.6 / block-prevent-division-by-zero-in-blk_rq_stat_sum.patch
1 From 06c0345a5dbdc0181c0c00c008c983f4d3173be4 Mon Sep 17 00:00:00 2001
2 From: Sasha Levin <sashal@kernel.org>
3 Date: Tue, 5 Mar 2024 16:45:09 +0300
4 Subject: block: prevent division by zero in blk_rq_stat_sum()
5
6 From: Roman Smirnov <r.smirnov@omp.ru>
7
8 [ Upstream commit 93f52fbeaf4b676b21acfe42a5152620e6770d02 ]
9
10 The expression dst->nr_samples + src->nr_samples may
11 have zero value on overflow. It is necessary to add
12 a check to avoid division by zero.
13
14 Found by Linux Verification Center (linuxtesting.org) with Svace.
15
16 Signed-off-by: Roman Smirnov <r.smirnov@omp.ru>
17 Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
18 Link: https://lore.kernel.org/r/20240305134509.23108-1-r.smirnov@omp.ru
19 Signed-off-by: Jens Axboe <axboe@kernel.dk>
20 Signed-off-by: Sasha Levin <sashal@kernel.org>
21 ---
22 block/blk-stat.c | 2 +-
23 1 file changed, 1 insertion(+), 1 deletion(-)
24
25 diff --git a/block/blk-stat.c b/block/blk-stat.c
26 index 7ff76ae6c76a9..e42c263e53fb9 100644
27 --- a/block/blk-stat.c
28 +++ b/block/blk-stat.c
29 @@ -27,7 +27,7 @@ void blk_rq_stat_init(struct blk_rq_stat *stat)
30 /* src is a per-cpu stat, mean isn't initialized */
31 void blk_rq_stat_sum(struct blk_rq_stat *dst, struct blk_rq_stat *src)
32 {
33 - if (!src->nr_samples)
34 + if (dst->nr_samples + src->nr_samples <= dst->nr_samples)
35 return;
36
37 dst->min = min(dst->min, src->min);
38 --
39 2.43.0
40