]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
efivarfs: Defer PM notifier registration until .fill_super
authorArd Biesheuvel <ardb@kernel.org>
Sun, 23 Feb 2025 15:48:54 +0000 (16:48 +0100)
committerArd Biesheuvel <ardb@kernel.org>
Sun, 23 Feb 2025 16:30:05 +0000 (17:30 +0100)
syzbot reports an issue that turns out to be caused by the fact that the
efivarfs PM notifier may be invoked before the efivarfs_fs_info::sb
field is populated, resulting in a NULL deference.

So defer the registration until efivarfs_fill_super() is invoked.

Reported-by: syzbot+00d13e505ef530a45100@syzkaller.appspotmail.com
Tested-by: syzbot+00d13e505ef530a45100@syzkaller.appspotmail.com
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
fs/efivarfs/super.c

index 09fcf731e65d6c37a181eebc16a1ad1bd1603c75..6eae8cf655c120eeb58f166e3cc373197e9e58bc 100644 (file)
@@ -367,6 +367,8 @@ static int efivarfs_fill_super(struct super_block *sb, struct fs_context *fc)
        if (err)
                return err;
 
+       register_pm_notifier(&sfi->pm_nb);
+
        return efivar_init(efivarfs_callback, sb, true);
 }
 
@@ -552,7 +554,6 @@ static int efivarfs_init_fs_context(struct fs_context *fc)
 
        sfi->pm_nb.notifier_call = efivarfs_pm_notify;
        sfi->pm_nb.priority = 0;
-       register_pm_notifier(&sfi->pm_nb);
 
        return 0;
 }