android_kernel_xiaomi_sm8450/fs/gfs2
Tuo Li 7c5b2649f6 gfs2: Fix possible data races in gfs2_show_options()
[ Upstream commit 6fa0a72cbbe45db4ed967a51f9e6f4e3afe61d20 ]

Some fields such as gt_logd_secs of the struct gfs2_tune are accessed
without holding the lock gt_spin in gfs2_show_options():

  val = sdp->sd_tune.gt_logd_secs;
  if (val != 30)
    seq_printf(s, ",commit=%d", val);

And thus can cause data races when gfs2_show_options() and other functions
such as gfs2_reconfigure() are concurrently executed:

  spin_lock(&gt->gt_spin);
  gt->gt_logd_secs = newargs->ar_commit;

To fix these possible data races, the lock sdp->sd_tune.gt_spin is
acquired before accessing the fields of gfs2_tune and released after these
accesses.

Further changes by Andreas:

- Don't hold the spin lock over the seq_printf operations.

Reported-by: BassCheck <bass@buaa.edu.cn>
Signed-off-by: Tuo Li <islituo@gmail.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-08-26 15:26:45 +02:00
..
acl.c gfs2: Change inode qa_data to allow multiple users 2020-03-27 14:08:04 -05:00
acl.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398 2019-06-05 17:37:12 +02:00
aops.c gfs2: Always check inode size of inline inodes 2023-04-05 11:23:52 +02:00
aops.h gfs2: mark stuffed_readpage static 2019-07-03 14:45:18 +02:00
bmap.c gfs2: Always check inode size of inline inodes 2023-04-05 11:23:52 +02:00
bmap.h gfs2: use iomap for buffered I/O in ordered and writeback mode 2020-10-14 23:54:42 +02:00
dentry.c gfs2: untangle the logic in gfs2_drevalidate 2019-09-03 09:42:41 +02:00
dir.c mm: remove the pgprot argument to __vmalloc 2020-06-02 10:59:11 -07:00
dir.h gfs2: Delete an unnecessary check before brelse() 2019-09-04 20:22:17 +02:00
export.c gfs2: Minor gfs2_lookup_by_inum cleanup 2020-06-05 20:19:21 +02:00
file.c gfs2: Disable page faults during lockless buffered reads 2022-05-25 09:17:53 +02:00
gfs2.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398 2019-06-05 17:37:12 +02:00
glock.c gfs2: Fix glock_hash_walk bugs 2021-11-18 14:04:00 +01:00
glock.h Merge branch 'gfs2-iopen' into for-next 2020-06-05 21:25:36 +02:00
glops.c gfs2: Fix inode height consistency check 2023-05-30 12:57:49 +01:00
glops.h gfs2: Split up gfs2_meta_sync into inode and rgrp versions 2020-10-29 22:16:46 +01:00
incore.h gfs2: set lockdep subclass for iopen glocks 2020-11-24 23:45:58 +01:00
inode.c gfs2: gfs2_setattr_size error path fix 2022-04-13 21:00:54 +02:00
inode.h gfs2: Minor gfs2_lookup_by_inum cleanup 2020-06-05 20:19:21 +02:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
lock_dlm.c gfs2: Don't call dlm after protocol is unmounted 2021-09-18 13:40:30 +02:00
log.c treewide: Change list_sort to use const pointers 2021-09-30 10:11:04 +02:00
log.h gfs2: Wipe jdata and ail1 in gfs2_journal_wipe, formerly gfs2_meta_wipe 2020-10-15 14:29:03 +02:00
lops.c treewide: Change list_sort to use const pointers 2021-09-30 10:11:04 +02:00
lops.h gfs2: Split up gfs2_meta_sync into inode and rgrp versions 2020-10-29 22:16:46 +01:00
main.c gfs2: eliminate GIF_ORDERED in favor of list_empty 2020-07-03 12:05:34 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
meta_io.c gfs2: Wipe jdata and ail1 in gfs2_journal_wipe, formerly gfs2_meta_wipe 2020-10-15 14:29:03 +02:00
meta_io.h gfs2: Wipe jdata and ail1 in gfs2_journal_wipe, formerly gfs2_meta_wipe 2020-10-15 14:29:03 +02:00
ops_fstype.c gfs2: Switch from strlcpy to strscpy 2022-11-25 17:45:56 +01:00
quota.c gfs2: use i_lock spin_lock for inode qadata 2022-06-09 10:20:57 +02:00
quota.h gfs2: move privileged user check to gfs2_quota_lock_check 2020-05-08 18:47:58 +02:00
recovery.c gfs2: Add common helper for holding and releasing the freeze glock 2021-03-25 09:04:14 +01:00
recovery.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398 2019-06-05 17:37:12 +02:00
rgrp.c gfs2: assign rgrp glock before compute_bitstructs 2022-04-27 13:53:46 +02:00
rgrp.h gfs2: gfs2_setattr_size error path fix 2022-04-13 21:00:54 +02:00
super.c gfs2: Fix possible data races in gfs2_show_options() 2023-08-26 15:26:45 +02:00
super.h gfs2: lookup local statfs inodes prior to journal recovery 2020-10-23 15:47:14 +02:00
sys.c gfs2: use-after-free in sysfs deregistration 2020-10-14 23:54:43 +02:00
sys.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398 2019-06-05 17:37:12 +02:00
trace_gfs2.h gfs2: eliminate GLF_QUEUED flag in favor of list_empty(gl_holders) 2020-10-15 17:04:53 +02:00
trans.c gfs2: fix use-after-free in trans_drain 2021-03-30 14:31:49 +02:00
trans.h gfs2: new slab for transactions 2020-06-05 21:24:25 +02:00
util.c gfs2: bypass signal_our_withdraw if no journal 2021-03-25 09:04:14 +01:00
util.h gfs2: Add common helper for holding and releasing the freeze glock 2021-03-25 09:04:14 +01:00
xattr.c gfs2: Change inode qa_data to allow multiple users 2020-03-27 14:08:04 -05:00
xattr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398 2019-06-05 17:37:12 +02:00