<div dir="ltr">Hello,<br><br>Our static analysis tool finds some possible data races in the OCFS2 file<br>system in Linux 6.4.0-rc6.<br><br>In most calling contexts, the variables  such as res-><a href="http://lockname.name/" target="_blank">lockname.name</a> and<br>res->owner are accessed with holding the lock res->spinlock. Here is an<br>example:<br><br>  lockres_seq_start() --> Line 539 in dlmdebug.c<br>    spin_lock(&res->spinlock); --> Line 574 in dlmdebug.c (Lock res->spinlock)<br>    dump_lockres(res, ...); --> Line 575 in fs/ocfs2/dlm/dlmdebug.c<br>      stringify_lockname(res-><a href="http://lockname.name/" target="_blank">lockname.name</a>, ...);  --> Line 493 in dlmdebug.c (Access res-><a href="http://lockname.name/" target="_blank">lockname.name</a>)<br>      scnprintf(..., res->owner, ...);  -->Line 498 in dlmdebug.c (Access res->owner)<br><br>However, in the following calling contexts:<br><br>  dlm_deref_lockres_worker() --> Line 2439 in dlmmaster.c<br>    dlm_drop_lockres_ref_done() --> Line 2459 in dlmmaster.c<br>      lockname = res-><a href="http://lockname.name/" target="_blank">lockname.name</a>; --> Line 2416 in dlmmaster.c (Access res-><a href="http://lockname.name/" target="_blank">lockname.name</a>)<br><br>  dlm_get_lock_resource() --> Line 701 in dlmmaster.c<br>    if (res->owner != dlm->node_num) --> Line 1023 in dlmmaster.c (Access res->owner)<br><br>The variables res-><a href="http://lockname.name/" target="_blank">lockname.name</a> and res->owner are accessed respectively<br>without holding the lock res->spinlock, and thus data races can occur.<br><br>I am not quite sure whether these possible data races are real and how to fix<br>them if they are real.<br><br>Any feedback would be appreciated, thanks!<br><br>Reported-by: BassCheck <a href="mailto:bass@buaa.edu.cn" target="_blank"><bass@buaa.edu.cn></a><br><br>Best wishes,<br>Tuo Li<br></div>