Tuo Li b4a7ab57ef 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-30 16:27:10 +02:00
..
2023-06-21 15:44:12 +02:00
2023-08-11 11:53:59 +02:00
2021-09-22 12:26:25 +02:00
2022-06-14 18:11:36 +02:00
2023-07-27 08:37:06 +02:00
2023-08-30 16:27:09 +02:00
2023-02-22 12:50:35 +01:00
2022-06-14 18:11:41 +02:00
2020-10-01 13:17:19 +02:00
2019-12-17 19:55:30 +01:00
2023-07-27 08:37:26 +02:00
2023-01-18 11:41:44 +01:00