diff options
author | Tuo Li <islituo@gmail.com> | 2023-06-13 06:06:37 +0300 |
---|---|---|
committer | Andreas Gruenbacher <agruenba@redhat.com> | 2023-06-13 15:34:17 +0300 |
commit | 6fa0a72cbbe45db4ed967a51f9e6f4e3afe61d20 (patch) | |
tree | 7b58645c89238d5b07ebceaca623200069eb198a /scripts/gdb/linux | |
parent | c8ed1b35931245087968fd95b2ec3dfc50f77769 (diff) | |
download | linux-6fa0a72cbbe45db4ed967a51f9e6f4e3afe61d20.tar.xz |
gfs2: Fix possible data races in gfs2_show_options()
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_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>
Diffstat (limited to 'scripts/gdb/linux')
0 files changed, 0 insertions, 0 deletions