[lvc-project] [PATCH 6.1/6.12] gfs2: validate rindex bitmap length before allocation
Fedor Pchelkin
pchelkin at ispras.ru
Sun Aug 9 23:34:02 MSK 2026
Есть ли проблема в апстриме (master ветке ядра)? Если есть, то
исправление сначала готовится и отправляется туда. 6.1/6.12 в теме
письма пока не надо.
On Fri, 07. Aug 14:28, Makar Semyonov wrote:
>
Лишняя пустая строка в начале описания.
> Validate ri_length against ri_bitbytes before allocating rd_bits.
> Fix a WARNING in gfs2_ri_update().
Здесь не вижу постановки проблемы. Точнее, она очень лаконичная, и из
неё ничего непонятно. Что за WARNING? Можно приложить полное сообщение
об ошибке (как в issue на гитлабе).
Из-за чего случается эта проблема? Это важно пояснять, т.к. это
собственно и есть суть анализа ошибки, которая позволит в том числе
оценить корректность её исправления.
>
Нужен тег Fixes.
https://portal.linuxtesting.ru/How-to-send-patches-to-kernel.html#Fixes
> Signed-off-by: Makar Semyonov <m.semenov at tssltd.ru>
> ---
> fs/gfs2/rgrp.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
> index f602fb844951..91b02201bb1d 100644
> --- a/fs/gfs2/rgrp.c
> +++ b/fs/gfs2/rgrp.c
> @@ -763,6 +763,16 @@ static int compute_bitstructs(struct gfs2_rgrpd *rgd)
> if (!length)
> return -EINVAL;
>
> + if (length > 1) {
Зачем нужна эта проверка?
> + u32 bitmap_bytes_per_block = sdp->sd_sb.sb_bsize - sizeof(struct gfs2_meta_header);
> + u32 max_bitmap_blocks = DIV_ROUND_UP(rgd->rd_bitbytes, bitmap_bytes_per_block) + 1;
> + if (length > max_bitmap_blocks) {
> + gfs2_lm(sdp, "invalid rindex: ri_length=%u ri_bitbytes=%u max=%u\n", length,
> + rgd->rd_bitbytes, max_bitmap_blocks);
> + return -EIO;
> + }
> + }
Информации, позволяющей понять читателю патча, почему производимые в патче
расчёты max_bitmap_blocks корректны, в описании патча нет..
На этот блок кода ругается scripts/checkpatch.pl из исходников ядра.
WARNING: Missing a blank line after declarations
#25: FILE: fs/gfs2/rgrp.c:769:
+ u32 max_bitmap_blocks = DIV_ROUND_UP(rgd->rd_bitbytes, bitmap_bytes_per_block) + 1;
+ if (length > max_bitmap_blocks) {
WARNING: line length of 100 exceeds 80 columns
#26: FILE: fs/gfs2/rgrp.c:770:
+ gfs2_lm(sdp, "invalid rindex: ri_length=%u ri_bitbytes=%u max=%u\n", length,
CHECK: Alignment should match open parenthesis
#27: FILE: fs/gfs2/rgrp.c:771:
+ gfs2_lm(sdp, "invalid rindex: ri_length=%u ri_bitbytes=%u max=%u\n", length,
+ rgd->rd_bitbytes, max_bitmap_blocks);
> +
> rgd->rd_bits = kcalloc(length, sizeof(struct gfs2_bitmap), GFP_NOFS);
> if (!rgd->rd_bits)
> return -ENOMEM;
> --
> 2.43.0
More information about the lvc-project
mailing list