[lvc-project] [PATCH v2] ocfs2: add chain list sanity check to ocfs2_block_group_alloc()

Fedor Pchelkin pchelkin at ispras.ru
Thu Oct 23 23:12:35 MSK 2025


On Thu, 16. Oct 11:46, Dmitry Antipov wrote:
> In 'ocfs2_block_group_alloc()', add an extra check whether the maximum
> amount of chain records in 'struct ocfs2_chain_list' matches the value
> calculated based on the filesystem block size.
> 
> Reported-by: syzbot+77026564530dbc29b854 at syzkaller.appspotmail.com
> Closes: https://syzkaller.appspot.com/bug?extid=77026564530dbc29b854
> Signed-off-by: Dmitry Antipov <dmantipov at yandex.ru>

Дмитрий, добрый вечер!

Спасибо за множественные фиксы для репортов Сизколлера в OCFS2.

Есть пара вопросов:

* открывать задачи в проекте на gitlab, насколько понимаю, не
  планируете?  Учитывая высокие показатели по этому направлению, мы
  полагаем, что наверно оно и не нужно?

* теги Fixes в патчах прям очень сильно бы оказались полезными - на
  некоторые из этих патчей в сообществе могут завести CVE, облегчило бы
  жизнь тем, кто их будет устранять.  Также сейчас вот этот патч, нужно
  ли нам его добавлять в LVC-ветки, и если да, то в какие?

  в Closes: https://syzkaller.appspot.com/bug?extid=77026564530dbc29b854
  стоит UBSAN: array-index-out-of-bounds in ocfs2_block_group_fill

  Cause bisection: introduced by (bisect log) :
  commit aa545adbe491402cf1e664f6be0a799ed69d9946
  Author: Dmitry Antipov <dmantipov at yandex.ru>
  Date: Tue Oct 7 12:35:26 2025 +0000

  ocfs2: annotate flexible array members with __counted_by_le()


  не очень ясно, какое это имеет отношение к текущему патчу.  Ну т.е.
  текущий патч судя по всему правит какую-то давнюю ошибку, но бисекция
  указывает на свежий патч с flexible-array аннотациями, который не
  предназначен для портирования..

> ---
> v2: remove redundant call to mlog_errno() and comment (Heming Zhao)
> ---
>  fs/ocfs2/suballoc.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c
> index 6ac4dcd54588..e6d4f5015f84 100644
> --- a/fs/ocfs2/suballoc.c
> +++ b/fs/ocfs2/suballoc.c
> @@ -671,6 +671,11 @@ static int ocfs2_block_group_alloc(struct ocfs2_super *osb,
>  	BUG_ON(ocfs2_is_cluster_bitmap(alloc_inode));
>  
>  	cl = &fe->id2.i_chain;
> +	if (le16_to_cpu(cl->cl_count) != ocfs2_chain_recs_per_inode(osb->sb)) {
> +		status = -EINVAL;
> +		goto bail;
> +	}
> +
>  	status = ocfs2_reserve_clusters_with_limit(osb,
>  						   le16_to_cpu(cl->cl_cpg),
>  						   max_block, flags, &ac);
> -- 
> 2.51.0



More information about the lvc-project mailing list