]> git.baikalelectronics.ru Git - kernel.git/commit
ext4: don't use kfree() on rcu protected pointer sbi->s_qf_names
authorLukas Czerner <lczerner@redhat.com>
Tue, 4 Jan 2022 14:35:17 +0000 (15:35 +0100)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 10 Jan 2022 18:25:55 +0000 (13:25 -0500)
commit6a65aaf50b8c7c2c7ee7440efd4186e258e94837
tree4fa10dfd4de3113dcbb75cc0732b8885b88500d0
parent89d9514106c85ed135d4a958926b88169968dcde
ext4: don't use kfree() on rcu protected pointer sbi->s_qf_names

During ext4 mount api rework the commit c961fcaac4a4 ("ext4: move quota
configuration out of handle_mount_opt()") introduced a bug where we
would kfree(sbi->s_qf_names[i]) before assigning the new quota name in
ext4_apply_quota_options().

This is wrong because we're using kfree() on rcu prointer that could be
simultaneously accessed from ext4_show_quota_options() during remount.
Fix it by using rcu_replace_pointer() to replace the old qname with the
new one and then kfree_rcu() the old quota name.

Also use get_qf_name() instead of sbi->s_qf_names in strcmp() to silence
the sparse warning.

Fixes: c961fcaac4a4 ("ext4: move quota configuration out of handle_mount_opt()")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Link: https://lore.kernel.org/r/20220104143518.134465-1-lczerner@redhat.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/super.c