[PATCH] md/raid5: fix NULL pointer dereference in raid5_has_ppl

Svyatoslav Nikolenko posted 1 patch 2 days, 1 hour ago
drivers/md/raid5-log.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] md/raid5: fix NULL pointer dereference in raid5_has_ppl
Posted by Svyatoslav Nikolenko 2 days, 1 hour ago
Check if conf->mddev is non-NULL in raid5_has_ppl() before testing flags to
prevent a KASAN null-ptr-deref during free_conf() cleanup paths.

Reported-by: syzbot+270624bb31d478afe62e@syzkaller.appspotmail.com
Tested-by: syzbot+270624bb31d478afe62e@syzkaller.appspotmail.com
Signed-off-by: Svyatoslav Nikolenko <nsvatoslav515@gmail.com>
---
 drivers/md/raid5-log.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/md/raid5-log.h b/drivers/md/raid5-log.h
index c8332502669e..5a144051b142 100644
--- a/drivers/md/raid5-log.h
+++ b/drivers/md/raid5-log.h
@@ -51,7 +51,7 @@ static inline bool raid5_has_log(struct r5conf *conf)
 
 static inline bool raid5_has_ppl(struct r5conf *conf)
 {
-	return test_bit(MD_HAS_PPL, &conf->mddev->flags);
+	return conf->mddev && test_bit(MD_HAS_PPL, &conf->mddev->flags);
 }
 
 static inline int log_stripe(struct stripe_head *sh, struct stripe_head_state *s)
-- 
2.47.3
Re: [PATCH] md/raid5: fix NULL pointer dereference in raid5_has_ppl
Posted by yu kuai 1 day, 3 hours ago
Hi,

在 2026/9/22 20:54, Svyatoslav Nikolenko 写道:
> Check if conf->mddev is non-NULL in raid5_has_ppl() before testing flags to
> prevent a KASAN null-ptr-deref during free_conf() cleanup paths.
>
> Reported-by: syzbot+270624bb31d478afe62e@syzkaller.appspotmail.com
> Tested-by: syzbot+270624bb31d478afe62e@syzkaller.appspotmail.com
> Signed-off-by: Svyatoslav Nikolenko <nsvatoslav515@gmail.com>
> ---
>   drivers/md/raid5-log.h | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)

Looks like this is already fixed by:

https://patch.msgid.link/20260915081731.122933-1-chengzhihao1@huawei.com

>
> diff --git a/drivers/md/raid5-log.h b/drivers/md/raid5-log.h
> index c8332502669e..5a144051b142 100644
> --- a/drivers/md/raid5-log.h
> +++ b/drivers/md/raid5-log.h
> @@ -51,7 +51,7 @@ static inline bool raid5_has_log(struct r5conf *conf)
>   
>   static inline bool raid5_has_ppl(struct r5conf *conf)
>   {
> -	return test_bit(MD_HAS_PPL, &conf->mddev->flags);
> +	return conf->mddev && test_bit(MD_HAS_PPL, &conf->mddev->flags);
>   }
>   
>   static inline int log_stripe(struct stripe_head *sh, struct stripe_head_state *s)

-- 
Thanks,
Kuai