%3Ch1%3ELinux%E5%86%85%E6%A0%B8KCSAN%E5%B9%B6%E5%8F%91%E6%B6%88%E6%AF%92%E5%99%A8%E6%B7%B1%E5%BA%A6%E5%AE%9E%E6%88%98%EF%BC%9A%E5%86%85%E6%A0%B8%E6%95%B0%E6%8D%AE%E7%AB%9E%E4%BA%89%E6%A3%80%E6%B5%8B%E4%B8%8E%E4%BF%AE%E5%A4%8D%E6%8C%87%E5%8D%97%3C/h1%3E%0A%0A%3Cp%3E%E5%9C%A8Linux%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91%E4%B8%AD%EF%BC%8C%E6%95%B0%E6%8D%AE%E7%AB%9E%E4%BA%89%EF%BC%88Data%20Race%EF%BC%89%E6%98%AF%E6%9C%80%E6%A3%98%E6%89%8B%E7%9A%84%E4%B8%80%E7%B1%BB%E5%B9%B6%E5%8F%91%E7%BC%BA%E9%99%B7%E3%80%82%E4%B8%8E%E7%94%A8%E6%88%B7%E6%80%81%E7%A8%8B%E5%BA%8F%E4%B8%8D%E5%90%8C%EF%BC%8C%E5%86%85%E6%A0%B8%E6%80%81%E7%9A%84%E6%95%B0%E6%8D%AE%E7%AB%9E%E4%BA%89%E5%8F%AF%E8%83%BD%E5%AF%BC%E8%87%B4%E7%B3%BB%E7%BB%9F%E5%B4%A9%E6%BA%83%E3%80%81%E5%AE%89%E5%85%A8%E6%BC%8F%E6%B4%9E%E6%88%96%E6%95%B0%E6%8D%AE%E6%8D%9F%E5%9D%8F%EF%BC%8C%E4%B8%94%E5%BE%80%E5%BE%80%E5%9C%A8%E7%89%B9%E5%AE%9A%E7%A1%AC%E4%BB%B6%E6%9D%A1%E4%BB%B6%E5%92%8C%E8%B4%9F%E8%BD%BD%E6%A8%A1%E5%BC%8F%E4%B8%8B%E6%89%8D%E8%A7%A6%E5%8F%91%EF%BC%8C%E9%9A%BE%E4%BB%A5%E5%A4%8D%E7%8E%B0%E5%92%8C%E8%B0%83%E8%AF%95%E3%80%82KCSAN%EF%BC%88Concurrency%20Sanitizer%EF%BC%89%E6%98%AFLinux%E5%86%85%E6%A0%B8%E8%BF%91%E5%B9%B4%E6%9D%A5%E5%BC%95%E5%85%A5%E7%9A%84%E5%BA%95%E5%B1%82%E6%95%B0%E6%8D%AE%E7%AB%9E%E4%BA%89%E6%A3%80%E6%B5%8B%E5%B7%A5%E5%85%B7%EF%BC%8C%E6%9C%AC%E6%96%87%E5%B0%86%E6%B7%B1%E5%85%A5%E5%85%B6%E5%8E%9F%E7%90%86%EF%BC%8C%E5%B9%B6%E6%8F%90%E4%BE%9B%E7%94%9F%E4%BA%A7%E7%BA%A7%E5%AE%9E%E6%88%98%E6%8C%87%E5%8D%97%E3%80%82%3C/p%3E%0A%0A%3Ch2%3E%E4%B8%80%E3%80%81%E5%86%85%E6%A0%B8%E6%95%B0%E6%8D%AE%E7%AB%9E%E4%BA%89%E7%9A%84%E7%89%B9%E6%AE%8A%E6%80%A7%3C/h2%3E%0A%0A%3Cp%3E%E6%95%B0%E6%8D%AE%E7%AB%9E%E4%BA%89%E6%98%AF%E6%8C%87%E4%B8%A4%E4%B8%AA%E6%88%96%E5%A4%9A%E4%B8%AA%E6%89%A7%E8%A1%8C%E6%B5%81%E5%B9%B6%E5%8F%91%E8%AE%BF%E9%97%AE%E5%90%8C%E4%B8%80%E5%86%85%E5%AD%98%E4%BD%8D%E7%BD%AE%EF%BC%8C%E8%87%B3%E5%B0%91%E4%B8%80%E4%B8%AA%E5%86%99%E6%93%8D%E4%BD%9C%EF%BC%8C%E4%B8%94%E6%B2%A1%E6%9C%89%E9%80%82%E5%BD%93%E7%9A%84%E5%90%8C%E6%AD%A5%E6%9C%BA%E5%88%B6%E6%9D%A5%E6%8E%92%E5%BA%8F%E8%BF%99%E4%BA%9B%E8%AE%BF%E9%97%AE%E3%80%82%E5%9C%A8%E5%86%85%E6%A0%B8%E6%80%81%EF%BC%8C%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%E6%9B%B4%E5%8A%A0%E4%B8%A5%E5%B3%BB%EF%BC%9A%3C/p%3E%0A%0A%3Cul%3E%0A%3Cli%3E%3Cstrong%3E%E6%89%A7%E8%A1%8C%E6%B5%81%E5%A4%9A%E6%A0%B7%3C/strong%3E%EF%BC%9A%E8%BF%9B%E7%A8%8B%E4%B8%8A%E4%B8%8B%E6%96%87%E3%80%81%E8%BD%AF%E4%B8%AD%E6%96%AD%E3%80%81%E7%A1%AC%E4%B8%AD%E6%96%AD%E3%80%81NMI%E3%80%81%E5%86%85%E6%A0%B8%E7%BA%BF%E7%A8%8B%E7%AD%89%E4%BA%A4%E7%BB%87%E6%89%A7%E8%A1%8C%3C/li%3E%0A%3Cli%3E%3Cstrong%3E%E5%90%8C%E6%AD%A5%E5%8E%9F%E8%AF%AD%E5%A4%8D%E6%9D%82%3C/strong%3E%EF%BC%9A%E9%99%A4%E4%BA%86%E5%B8%B8%E8%A7%84%E9%94%81%EF%BC%8C%E8%BF%98%E6%9C%89%20RCU%E3%80%81per-CPU%20%E5%8F%98%E9%87%8F%E3%80%81%E5%86%85%E5%AD%98%E5%B1%8F%E9%9A%9C%E3%80%81%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C%E7%AD%89%3C/li%3E%0A%3Cli%3E%3Cstrong%3E%E6%80%A7%E8%83%BD%E8%A6%81%E6%B1%82%E8%8B%9B%E5%88%BB%3C/strong%3E%EF%BC%9A%E7%9B%91%E6%8E%A7%E5%B7%A5%E5%85%B7%E6%9C%AC%E8%BA%AB%E7%9A%84%E5%BC%80%E9%94%80%E4%B8%8D%E8%83%BD%E5%BD%B1%E5%93%8D%E7%B3%BB%E7%BB%9F%E8%A1%8C%E4%B8%BA%EF%BC%88%E5%90%A6%E5%88%99%E6%B5%B7%E6%A3%AE%E5%A0%A1bug%E6%B6%88%E5%A4%B1%EF%BC%89%3C/li%3E%0A%3C/ul%3E%0A%0A%3Cp%3E%E4%BC%A0%E7%BB%9F%E5%B7%A5%E5%85%B7%E5%A6%82%20LOCKDEP%20%E5%85%B3%E6%B3%A8%E6%AD%BB%E9%94%81%EF%BC%8C%E4%BD%86%E5%AE%8C%E5%85%A8%E6%97%A0%E6%B3%95%E6%A3%80%E6%B5%8B%E6%95%B0%E6%8D%AE%E7%AB%9E%E4%BA%89%E3%80%82KCSAN%20%E5%A1%AB%E8%A1%A5%E4%BA%86%E8%BF%99%E4%B8%80%E7%A9%BA%E7%99%BD%E3%80%82%3C/p%3E%0A%0A%3Ch2%3E%E4%BA%8C%E3%80%81Happens-Before%20%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80%3C/h2%3E%0A%0A%3Cp%3EKCSAN%20%E7%9A%84%E6%A0%B8%E5%BF%83%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80%E6%98%AF%20%3Cstrong%3EHappens-Before%EF%BC%88HB%EF%BC%89%E5%85%B3%E7%B3%BB%3C/strong%3E%EF%BC%8C%E8%BF%99%E6%98%AF%20C11/C%2B%2B11%20%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B%E7%9A%84%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5%E3%80%82%E5%A6%82%E6%9E%9C%E4%B8%A4%E4%B8%AA%E6%93%8D%E4%BD%9C%E4%B9%8B%E9%97%B4%E4%B8%8D%E5%AD%98%E5%9C%A8%20Happens-Before%20%E5%85%B3%E7%B3%BB%EF%BC%8C%E4%B8%94%E8%87%B3%E5%B0%91%E4%B8%80%E4%B8%AA%E6%98%AF%E5%86%99%E6%93%8D%E4%BD%9C%EF%BC%8C%E5%B0%B1%E6%9E%84%E6%88%90%E6%95%B0%E6%8D%AE%E7%AB%9E%E4%BA%89%E3%80%82%3C/p%3E%0A%0A%3Cp%3EHappens-Before%20%E5%85%B3%E7%B3%BB%E7%9A%84%E5%BB%BA%E7%AB%8B%E6%96%B9%E5%BC%8F%EF%BC%9A%3C/p%3E%0A%0A%3Ctable%20class%3D%22table%20table-bordered%22%3E%0A%3Cthead%3E%3Ctr%3E%0A%3Cth%3E%E5%90%8C%E6%AD%A5%E6%9C%BA%E5%88%B6%3C/th%3E%0A%3Cth%3E%E6%96%B9%E5%90%91%3C/th%3E%0A%3Cth%3E%E5%BC%80%E9%94%80%3C/th%3E%0A%3C/tr%3E%3C/thead%3E%0A%3Ctbody%3E%0A%3Ctr%3E%0A%3Ctd%3E%E4%BA%92%E6%96%A5%E9%94%81%EF%BC%88mutex/spinlock%EF%BC%89%3C/td%3E%0A%3Ctd%3Eunlock%20%E2%86%92%20%E5%90%8E%E7%BB%ADlock%3C/td%3E%0A%3Ctd%3E%E4%BD%8E%3C/td%3E%0A%3C/tr%3E%0A%3Ctr%3E%0A%3Ctd%3E%E9%A1%BA%E5%BA%8F%E9%94%81%EF%BC%88seqlock%EF%BC%89%3C/td%3E%0A%3Ctd%3E%E5%86%99%E7%AB%AFunlock%20%E2%86%92%20%E8%AF%BB%E7%AB%AFLock%3C/td%3E%0A%3Ctd%3E%E4%B8%AD%3C/td%3E%0A%3C/tr%3E%0A%3Ctr%3E%0A%3Ctd%3E%E4%BF%A1%E5%8F%B7%E9%87%8F%EF%BC%88semaphore%EF%BC%89%3C/td%3E%0A%3Ctd%3Eup%20%E2%86%92%20%E5%90%8E%E7%BB%ADdown%3C/td%3E%0A%3Ctd%3E%E4%BD%8E%3C/td%3E%0A%3C/tr%3E%0A%3Ctr%3E%0A%3Ctd%3ERCU%20%E5%AE%BD%E9%99%90%E6%9C%9F%3C/td%3E%0A%3Ctd%3Esynchronize_rcu%E7%BB%93%E6%9D%9F%20%E2%86%92%20%E5%9B%9E%E8%B0%83%E6%89%A7%E8%A1%8C%3C/td%3E%0A%3Ctd%3E%E9%AB%98%3C/td%3E%0A%3C/tr%3E%0A%3Ctr%3E%0A%3Ctd%3E%E5%86%85%E5%AD%98%E5%B1%8F%E9%9A%9C%EF%BC%88mb/rmb/wmb%EF%BC%89%3C/td%3E%0A%3Ctd%3E%E5%89%8D%E5%90%8E%E6%8C%87%E4%BB%A4%E6%8E%92%E5%BA%8F%3C/td%3E%0A%3Ctd%3E%E4%BD%8E%3C/td%3E%0A%3C/tr%3E%0A%3Ctr%3E%0A%3Ctd%3E%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C%20with%20ordering%3C/td%3E%0A%3Ctd%3E%E5%BB%BA%E7%AB%8B%20HB%3C/td%3E%0A%3Ctd%3E%E4%BD%8E%3C/td%3E%0A%3C/tr%3E%0A%3Ctr%3E%0A%3Ctd%3E%E4%B8%AD%E6%96%AD%E4%BD%BF%E8%83%BD/%E7%A6%81%E7%94%A8%3C/td%3E%0A%3Ctd%3E%E5%BB%BA%E7%AB%8B%E6%89%A7%E8%A1%8C%E9%A1%BA%E5%BA%8F%3C/td%3E%0A%3Ctd%3E%E4%BD%8E%3C/td%3E%0A%3C/tr%3E%0A%3Ctr%3E%0A%3Ctd%3E%E8%B0%83%E5%BA%A6%E4%B8%8A%E4%B8%8B%E6%96%87%E5%88%87%E6%8D%A2%3C/td%3E%0A%3Ctd%3Econtext_switch%20%E4%B8%AD%E5%BB%BA%E7%AB%8B%3C/td%3E%0A%3Ctd%3E%E4%B8%AD%3C/td%3E%0A%3C/tr%3E%0A%3C/tbody%3E%3C/table%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0A/%2A%0A%20%2A%20Happens-Before%20%E7%A4%BA%E4%BE%8B%EF%BC%9A%E9%94%81%E4%BF%9D%E6%8A%A4%E7%9A%84%E6%95%B0%E6%8D%AE%E5%85%B1%E4%BA%AB%0A%20%2A%20CPU%200%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CPU%201%3A%0A%20%2A%20%20%20data%20%3D%2042%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20spin_lock%28%26amp%3Block%29%3B%0A%20%2A%20%20%20spin_lock%28%26amp%3Block%29%3B%20%20%20%20%20%20%20%20%20%20if%20%28flag%29%20%E2%86%92%20%E8%AF%BB%E5%88%B0%20flag%20%3D%20true%0A%20%2A%20%20%20flag%20%3D%20true%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20print%28data%29%3B%20%20%E2%86%92%20%E8%AF%BB%E5%88%B0%20data%20%3D%2042%20%E2%9C%93%0A%20%2A%20%20%20data%20%3D%2043%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20spin_unlock%28%26amp%3Block%29%3B%0A%20%2A%20%20%20spin_unlock%28%26amp%3Block%29%3B%0A%20%2A%0A%20%2A%20lock%20%E9%87%8A%E6%94%BE%20%E2%86%92%20%E4%B8%8B%E6%AC%A1lock%E8%8E%B7%E5%8F%96%20%E5%BB%BA%E7%AB%8B%E4%BA%86%20HB%20%E5%85%B3%E7%B3%BB%0A%20%2A%20%E4%BF%9D%E8%AF%81%20CPU0%20%E7%9A%84%E5%86%99%E5%85%A5%E5%AF%B9%20CPU1%20%E5%8F%AF%E8%A7%81%0A%20%2A/%0A%3C/code%3E%3C/pre%3E%0A%0A%3Ch2%3E%E4%B8%89%E3%80%81KCSAN%20%E6%9E%B6%E6%9E%84%E4%B8%8E%E5%AE%9E%E7%8E%B0%3C/h2%3E%0A%0A%3Cp%3EKCSAN%20%E9%87%87%E7%94%A8%E5%9F%BA%E4%BA%8E%E8%A7%82%E5%AF%9F%E7%82%B9%EF%BC%88watchpoint%EF%BC%89%E7%9A%84%E6%A3%80%E6%B5%8B%E7%AD%96%E7%95%A5%EF%BC%8C%E5%9C%A8%E7%BC%96%E8%AF%91%E6%97%B6%E9%80%9A%E8%BF%87%20GCC/Clang%20%E7%9A%84%20%3Ccode%3E-fsanitize%3Dthread%3C/code%3E%20%E6%8F%92%E6%A1%A9%E5%92%8C%E8%BF%90%E8%A1%8C%E6%97%B6%E5%8D%8F%E4%BD%9C%E5%85%B1%E5%90%8C%E5%AE%8C%E6%88%90%E6%A3%80%E6%B5%8B%E3%80%82%3C/p%3E%0A%0A%3Ch3%3E3.1%20%E7%BC%96%E8%AF%91%E6%97%B6%E6%8F%92%E6%A1%A9%3C/h3%3E%0A%0A%3Cp%3EKCSAN%20%E4%BD%BF%E7%94%A8%E7%BC%96%E8%AF%91%E5%99%A8%20sanitizer%20%E6%A1%86%E6%9E%B6%EF%BC%8C%E5%9C%A8%E6%AF%8F%E6%AC%A1%E5%86%85%E5%AD%98%E8%AE%BF%E9%97%AE%EF%BC%88load/store%EF%BC%89%E5%89%8D%E6%8F%92%E5%85%A5%E5%9B%9E%E8%B0%83%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0A//%20%E5%8E%9F%E5%A7%8B%E4%BB%A3%E7%A0%81%0Avoid%20update_counter%28struct%20counter%20%2Ac%29%20%7B%0A%20%20%20%20c-%26gt%3Bvalue%2B%2B%3B%0A%7D%0A%0A//%20KCSAN%20%E6%8F%92%E6%A1%A9%E5%90%8E%EF%BC%88%E4%BC%AA%E4%BB%A3%E7%A0%81%E7%A4%BA%E6%84%8F%EF%BC%89%0Avoid%20update_counter%28struct%20counter%20%2Ac%29%20%7B%0A%20%20%20%20__kcsan_check_access%28%26amp%3Bc-%26gt%3Bvalue%2C%201%2C%20KT_WRITE%29%3B%20%20//%20%E6%8F%92%E5%85%A5%E7%82%B9%0A%20%20%20%20c-%26gt%3Bvalue%2B%2B%3B%0A%7D%0A%3C/code%3E%3C/pre%3E%0A%0A%3Ch3%3E3.2%20Watchpoint%20%E6%9C%BA%E5%88%B6%3C/h3%3E%0A%0A%3Cp%3E%E8%BF%90%E8%A1%8C%E6%97%B6%EF%BC%8CKCSAN%20%E7%BB%B4%E6%8A%A4%E4%B8%80%E4%B8%AA%E5%85%A8%E5%B1%80%E7%9A%84%20watchpoint%20%E6%B1%A0%EF%BC%8C%E8%BF%BD%E8%B8%AA%E6%AF%8F%E4%B8%AA%E8%A2%AB%E8%A7%82%E5%AF%9F%E7%9A%84%E5%86%85%E5%AD%98%E8%AE%BF%E9%97%AE%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0Astruct%20kcsan_ctx%20%7B%0A%20%20%20%20struct%20kcsan_watchpoint%20%2Awatchpoint%3B%20%20//%20%E5%BD%93%E5%89%8DCPU%E7%9A%84watchpoint%0A%20%20%20%20int%20disable_count%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%E5%B5%8C%E5%A5%97%E7%A6%81%E7%94%A8%E6%B7%B1%E5%BA%A6%0A%20%20%20%20u64%20incremental_compound_state%3B%20%20%20%20%20%20%20//%20%E4%BC%98%E5%8C%96%E7%8A%B6%E6%80%81%0A%7D%3B%0A%3C/code%3E%3C/pre%3E%0A%0A%3Cp%3EWatchpoint%20%E6%B1%A0%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%98%AF%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E5%93%88%E5%B8%8C%E8%A1%A8%EF%BC%8C%E6%8C%89%E5%9C%B0%E5%9D%80%E5%88%86%E6%A1%B6%E3%80%82%E4%B8%80%E6%AC%A1%E6%A3%80%E6%B5%8B%E6%B5%81%E7%A8%8B%EF%BC%9A%3C/p%3E%0A%0A%3Col%3E%0A%3Cli%3E%3Cstrong%3E%E8%AE%BE%E7%BD%AE%20Watchpoint%3C/strong%3E%EF%BC%9A%E5%9C%A8%E5%86%85%E5%AD%98%E8%AE%BF%E9%97%AE%E5%89%8D%E5%AF%B9%E8%AF%A5%E5%9C%B0%E5%9D%80%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%20watchpoint%3C/li%3E%0A%3Cli%3E%3Cstrong%3E%E7%AD%89%E5%BE%85%E8%A7%82%E5%AF%9F%E7%AA%97%E5%8F%A3%3C/strong%3E%EF%BC%9A%E7%9F%AD%E6%9A%82%E5%BB%B6%E8%BF%9F%EF%BC%88%E5%8F%AF%E9%85%8D%E7%BD%AE%EF%BC%89%EF%BC%8C%E5%85%81%E8%AE%B8%E5%85%B6%E4%BB%96%20CPU%20%E4%B9%9F%E8%AE%BF%E9%97%AE%E8%AF%A5%E5%9C%B0%E5%9D%80%3C/li%3E%0A%3Cli%3E%3Cstrong%3E%E6%A3%80%E6%9F%A5%E7%AB%9E%E4%BA%89%3C/strong%3E%EF%BC%9A%E9%AA%8C%E8%AF%81%E6%98%AF%E5%90%A6%E6%9C%89%E5%85%B6%E4%BB%96%20CPU%20%E5%9C%A8%E6%B2%A1%E6%9C%89%20HB%20%E5%85%B3%E7%B3%BB%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E8%AE%BF%E9%97%AE%E5%90%8C%E4%B8%80%E5%9C%B0%E5%9D%80%3C/li%3E%0A%3C/ol%3E%0A%0A%3Ch3%3E3.3%20Slow%20Path%20%E6%A3%80%E6%B5%8B%3C/h3%3E%0A%0A%3Cp%3E%E5%BD%93%20watchpoint%20%E6%9C%AA%E8%A2%AB%E7%AB%8B%E5%8D%B3%E6%B6%88%E8%B4%B9%E6%97%B6%EF%BC%8CKCSAN%20%E5%90%AF%E5%8A%A8%20slow%20path%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%3E%0Afast%20path%20%28watchpoint%20%E5%91%BD%E4%B8%AD%29%0A%20%20%20%20%E2%94%82%0A%20%20%20%20%E2%94%9C%E2%94%80%E2%94%80%E2%94%80%20%E7%AB%8B%E5%8D%B3%E6%B6%88%E8%B4%B9%20%E2%86%92%20%E5%BF%AB%E9%80%9F%E5%AE%8C%E6%88%90%0A%20%20%20%20%E2%94%82%0A%20%20%20%20%E2%94%94%E2%94%80%E2%94%80%E2%94%80%20%E8%B6%85%E6%97%B6%E6%9C%AA%E6%B6%88%E8%B4%B9%20%E2%86%92%20slow%20path%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%E2%94%82%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%E2%94%9C%E2%94%80%E2%94%80%20%E9%81%8D%E5%8E%86%E6%89%80%E6%9C%89%20CPU%20%E7%9A%84%E4%B8%8A%E4%B8%8B%E6%96%87%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%E2%94%9C%E2%94%80%E2%94%80%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E6%9C%89%E5%AF%B9%E5%90%8C%E4%B8%80%E5%9C%B0%E5%9D%80%E7%9A%84%E8%AE%BF%E9%97%AE%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%E2%94%94%E2%94%80%E2%94%80%20%E6%8A%A5%E5%91%8A%E6%95%B0%E6%8D%AE%E7%AB%9E%E4%BA%89%0A%3C/code%3E%3C/pre%3E%0A%0A%3Ch2%3E%E5%9B%9B%E3%80%81%E7%BC%96%E8%AF%91%E9%85%8D%E7%BD%AE%E4%B8%8E%E9%83%A8%E7%BD%B2%3C/h2%3E%0A%0A%3Ch3%3E4.1%20%E5%86%85%E6%A0%B8%E9%85%8D%E7%BD%AE%3C/h3%3E%0A%0A%3Cp%3E%E5%90%AF%E7%94%A8%20KCSAN%20%E9%9C%80%E8%A6%81%E5%9C%A8%20menuconfig%20%E6%88%96%20%3Ccode%3E.config%3C/code%3E%20%E4%B8%AD%E8%AE%BE%E7%BD%AE%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-bash%22%3E%0ACONFIG_KCSAN%3Dy%0A%23%20%E5%8F%AF%E9%80%89%E9%80%89%E9%A1%B9%0ACONFIG_KCSAN_SELFTEST%3Dy%20%20%20%20%20%20%20%20%20%20%23%20%E5%90%AF%E5%8A%A8%E6%97%B6%E8%87%AA%E6%A3%80%0ACONFIG_KCSAN_EARLY_ENABLE%3Dy%20%20%20%20%20%20%23%20%E6%97%A9%E6%9C%9F%E5%90%AF%E5%8A%A8%E5%90%AF%E7%94%A8%0ACONFIG_KCSAN_IGNORE_ATOMICS%3Dy%20%20%20%20%23%20%E8%B7%B3%E8%BF%87%E6%A0%87%E8%AE%B0%E4%B8%BA%20KERNEL_ATOMIC%20%E7%9A%84%E8%AE%BF%E9%97%AE%0A%3C/code%3E%3C/pre%3E%0A%0A%3Cp%3E%E5%AE%8C%E6%95%B4%E9%85%8D%E7%BD%AE%E7%89%87%E6%AE%B5%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-bash%22%3E%0A%23%20/boot/config-%24%28uname-r%29%20%E4%B8%AD%E5%BA%94%E5%8C%85%E5%90%AB%0ACONFIG_KCSAN%3Dy%0ACONFIG_KCSAN_STACKTRACE%3Dy%0ACONFIG_KCSAN_REPORT_ONCE_IN_MS%3D3000%0ACONFIG_KCSAN_REPORT_RACE_UNKNOWN_ORIGIN%3Dy%0A%3C/code%3E%3C/pre%3E%0A%0A%3Ch3%3E4.2%20%E7%BC%96%E8%AF%91%E5%86%85%E6%A0%B8%3C/h3%3E%0A%0A%3Cp%3EKCSAN%20%E9%9C%80%E8%A6%81%20GCC%20%3E%3D%2011%20%E6%88%96%20Clang%20%3E%3D%2013%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-bash%22%3E%0Amake%20menuconfig%20%20%20%20%20%20%20%23%20%E5%90%AF%E7%94%A8%20KCSAN%0Amake%20-j%24%28nproc%29%0Amake%20modules_install%0Amake%20install%0A%3C/code%3E%3C/pre%3E%0A%0A%3Ch3%3E4.3%20%E8%BF%90%E8%A1%8C%E6%97%B6%E5%8F%82%E6%95%B0%3C/h3%3E%0A%0A%3Cp%3E%E9%80%9A%E8%BF%87%E5%86%85%E6%A0%B8%E5%90%AF%E5%8A%A8%E5%8F%82%E6%95%B0%E6%88%96%20sysctl%20%E8%B0%83%E6%95%B4%E8%A1%8C%E4%B8%BA%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-bash%22%3E%0A%23%20%E5%90%AF%E5%8A%A8%E5%8F%82%E6%95%B0%0Akcsan.enabled%3D1%0Akcsan.permissive%3D1%20%20%20%20%20%20%20%20%23%20%E5%AE%BD%E6%A8%A1%E5%BC%8F%EF%BC%9A%E6%8A%A5%E5%91%8A%E6%9B%B4%E5%A4%9A%E6%BD%9C%E5%9C%A8%E7%AB%9E%E4%BA%89%0Akcsan.watchpoint_pool_sz%3D65536%0A%0A%23%20%E6%88%96%E8%BF%90%E8%A1%8C%E6%97%B6%E5%88%87%E6%8D%A2%EF%BC%88debugfs%EF%BC%89%0Aecho%201%20%26gt%3B%20/sys/kernel/debug/kcsan/enable%0A%3C/code%3E%3C/pre%3E%0A%0A%3Ch2%3E%E4%BA%94%E3%80%81%E5%AE%9E%E6%88%98%E6%A1%88%E4%BE%8B%EF%BC%9A%E4%BF%AE%E5%A4%8D%E4%B8%80%E4%B8%AA%E5%86%85%E6%A0%B8%E6%A8%A1%E5%9D%97%E7%9A%84%E6%95%B0%E6%8D%AE%E7%AB%9E%E4%BA%89%3C/h2%3E%0A%0A%3Ch3%3E5.1%20%E9%97%AE%E9%A2%98%E5%9C%BA%E6%99%AF%3C/h3%3E%0A%0A%3Cp%3E%E5%81%87%E8%AE%BE%E6%88%91%E4%BB%AC%E6%9C%89%E4%B8%80%E4%B8%AA%E9%AB%98%E6%80%A7%E8%83%BD%E7%BD%91%E7%BB%9C%E9%A9%B1%E5%8A%A8%EF%BC%8C%E4%BD%BF%E7%94%A8%E6%97%A0%E9%94%81%E7%8E%AF%E5%BD%A2%E7%BC%93%E5%86%B2%E5%8C%BA%EF%BC%88ring%20buffer%EF%BC%89%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0Astruct%20ring_buffer%20%7B%0A%20%20%20%20u32%20head%3B%20%20%20%20%20%20//%20%E7%94%9F%E4%BA%A7%E8%80%85%E5%86%99%E5%85%A5%0A%20%20%20%20u32%20tail%3B%20%20%20%20%20%20//%20%E6%B6%88%E8%B4%B9%E8%80%85%E8%AF%BB%E5%8F%96%0A%20%20%20%20u64%20entries%5B%5D%3B%20//%20%E7%8E%AF%E5%BD%A2%E6%95%B0%E6%8D%AE%E5%8C%BA%0A%7D%3B%0A%3C/code%3E%3C/pre%3E%0A%0A%3Ch3%3E5.2%20KCSAN%20%E6%A3%80%E6%B5%8B%E6%8A%A5%E5%91%8A%3C/h3%3E%0A%0A%3Cp%3E%E6%95%B0%E6%8D%AE%E7%AB%9E%E4%BA%89%E6%A3%80%E6%B5%8B%E5%90%8E%EF%BC%8CKCSAN%20%E7%94%9F%E6%88%90%E7%9A%84%E6%8A%A5%E5%91%8A%E5%A6%82%E4%B8%8B%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%3E%0A%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0ABUG%3A%20KCSAN%3A%20data%20race%0A%0Awrite%20to%200xffff888123456780%20of%204%20bytes%20by%20task%2012345%20on%20cpu%203%3A%0A%20ring_buffer_provide%2B0x48/0xb0%20%5Bmy_driver%5D%0A%20...%0A%20net_rx_action%2B0x189/0x380%0A%20__softirq_entry%2B0x45/0x60%0A%20do_softirq%2B0x23/0xc0%0A%0Aread%20to%200xffff888123456780%20of%204%20bytes%20by%20task%2012346%20on%20cpu%205%3A%0A%20ring_buffer_consume%2B0x55/0xd0%20%5Bmy_driver%5D%0A%20...%0A%20napi_poll%2B0x34/0xa0%0A%20net_rx_action%2B0x156/0x380%0A%20__do_softirq%2B0x23/0xc0%0A%0AReporting%20task%3A%2012345%0A%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%3C/code%3E%3C/pre%3E%0A%0A%3Ch3%3E5.3%20%E6%A0%B9%E5%9B%A0%E5%88%86%E6%9E%90%3C/h3%3E%0A%0A%3Cp%3E%E6%9C%AC%E4%BE%8B%E4%B8%AD%20%3Ccode%3Ehead%3C/code%3E%20%E7%B4%A2%E5%BC%95%E7%9A%84%E8%AF%BB%E5%86%99%E5%8F%91%E7%94%9F%E5%9C%A8%EF%BC%9A%3C/p%3E%0A%3Cul%3E%0A%3Cli%3E%E5%8F%91%E9%80%81%E8%B7%AF%E5%BE%84%EF%BC%88softirq%20BH%20%E4%B8%8A%E4%B8%8B%E6%96%87%EF%BC%89%E5%86%99%20%3Ccode%3Ehead%3C/code%3E%3C/li%3E%0A%3Cli%3E%E6%8E%A5%E6%94%B6%E8%B7%AF%E5%BE%84%EF%BC%88NATHI%20poll%20in%20softirq%EF%BC%89%E8%AF%BB%20%3Ccode%3Ehead%3C/code%3E%3C/li%3E%0A%3C/ul%3E%0A%0A%3Cp%3E%E7%9C%8B%E8%B5%B7%E6%9D%A5%E4%B8%A4%E4%B8%AA%E9%83%BD%E5%9C%A8%E8%BD%AF%E4%B8%AD%E6%96%AD%E4%B8%8A%E4%B8%8B%E6%96%87%EF%BC%8C%E4%BC%BC%E4%B9%8E%E6%B2%A1%E6%9C%89%E7%9C%9F%E6%AD%A3%E7%9A%84%E7%AB%9E%E4%BA%89%EF%BC%9F%E5%AE%9E%E9%99%85%E4%B8%8A%EF%BC%8C%E5%90%8C%E4%B8%80%E7%B1%BB%E5%9E%8B%20softirq%20%E5%8F%AF%E4%BB%A5%E5%9C%A8%E4%B8%8D%E5%90%8C%20CPU%20%E4%B8%8A%E5%B9%B6%E5%8F%91%E6%89%A7%E8%A1%8C%EF%BC%81%3C/p%3E%0A%0A%3Ch3%3E5.4%20%E4%BF%AE%E5%A4%8D%E7%AD%96%E7%95%A5%3C/h3%3E%0A%0A%3Cp%3E%E4%BF%AE%E5%A4%8D%E9%9C%80%E8%A6%81%E6%A0%B9%E6%8D%AE%E8%AF%AD%E4%B9%89%E9%80%89%E6%8B%A9%E5%90%88%E9%80%82%E7%9A%84%E5%90%8C%E6%AD%A5%E6%9C%BA%E5%88%B6%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0A//%20%E4%BF%AE%E5%A4%8D%E6%96%B9%E6%A1%88%EF%BC%9A%E4%BD%BF%E7%94%A8%20WRITE_ONCE/READ_ONCE%20%2B%20smp_wmb/smp_rmb%0Astruct%20ring_buffer%20%7B%0A%20%20%20%20volatile%20u32%20head%3B%0A%20%20%20%20volatile%20u32%20tail%3B%0A%20%20%20%20u64%20entries%5B%5D%3B%0A%7D%3B%0A%0Astatic%20void%20ring_buffer_provide%28struct%20ring_buffer%20%2Arb%2C%20u64%20value%29%0A%7B%0A%20%20%20%20u32%20head%20%3D%20READ_ONCE%28rb-%26gt%3Bhead%29%3B%0A%20%20%20%20u32%20next%20%3D%20%28head%20%2B%201%29%20%26amp%3B%20rb-%26gt%3Bmask%3B%0A%0A%20%20%20%20/%2A%20%E7%AD%89%E5%BE%85%E6%B6%88%E8%B4%B9%E8%80%85%E8%BF%BD%E4%B8%8A%EF%BC%88%E8%83%8C%E5%8E%8B%E6%8E%A7%E5%88%B6%EF%BC%89%20%2A/%0A%20%20%20%20while%20%28next%20%3D%3D%20READ_ONCE%28rb-%26gt%3Btail%29%29%0A%20%20%20%20%20%20%20%20cpu_relax%28%29%3B%0A%0A%20%20%20%20rb-%26gt%3Bentries%5Bhead%5D%20%3D%20value%3B%0A%20%20%20%20smp_wmb%28%29%3B%20%20//%20%E4%BF%9D%E8%AF%81%E6%95%B0%E6%8D%AE%E5%86%99%E5%85%A5%E5%AF%B9%20head%20%E6%9B%B4%E6%96%B0%E5%8F%AF%E8%A7%81%0A%20%20%20%20WRITE_ONCE%28rb-%26gt%3Bhead%2C%20next%29%3B%0A%7D%0A%0Astatic%20bool%20ring_buffer_consume%28struct%20ring_buffer%20%2Arb%2C%20u64%20%2Avalue%29%0A%7B%0A%20%20%20%20u32%20tail%20%3D%20READ_ONCE%28rb-%26gt%3Btail%29%3B%0A%0A%20%20%20%20if%20%28tail%20%3D%3D%20READ_ONCE%28rb-%26gt%3Bhead%29%29%0A%20%20%20%20%20%20%20%20return%20false%3B%20%20//%20%E7%A9%BA%0A%0A%20%20%20%20smp_rmb%28%29%3B%20%20//%20%E4%BF%9D%E8%AF%81%E8%AF%BB%E5%88%B0%20tail%20%E6%97%B6%EF%BC%8C%E4%B9%8B%E5%89%8D%E7%9A%84%E6%95%B0%E6%8D%AE%E5%B7%B2%E5%8F%AF%E8%A7%81%0A%20%20%20%20%2Avalue%20%3D%20rb-%26gt%3Bentries%5Btail%5D%3B%0A%20%20%20%20smp_wmb%28%29%3B%0A%20%20%20%20WRITE_ONCE%28rb-%26gt%3Btail%2C%20%28tail%20%2B%201%29%20%26amp%3B%20rb-%26gt%3Bmask%29%3B%0A%20%20%20%20return%20true%3B%0A%7D%0A%3C/code%3E%3C/pre%3E%0A%0A%3Ch2%3E%E5%85%AD%E3%80%81%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98%E4%B8%8E%E6%9D%83%E8%A1%A1%3C/h2%3E%0A%0A%3Cp%3EKCSAN%20%E7%9A%84%E8%BF%90%E8%A1%8C%E6%97%B6%E5%BC%80%E9%94%80%E9%80%9A%E5%B8%B8%E4%B8%BA%205x-15x%EF%BC%8C%E4%B8%8D%E9%80%82%E5%90%88%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E9%95%BF%E6%9C%9F%E5%BC%80%E5%90%AF%E3%80%82%E5%BB%BA%E8%AE%AE%E5%B7%A5%E4%BD%9C%E6%B5%81%EF%BC%9A%3C/p%3E%0A%0A%3Ch3%3E6.1%20%E5%B7%A5%E4%BD%9C%E7%8E%AF%E5%A2%83%E5%88%86%E7%BA%A7%3C/h3%3E%0A%0A%3Ctable%20class%3D%22table%20table-bordered%22%3E%0A%3Cthead%3E%3Ctr%3E%0A%3Cth%3E%E7%8E%AF%E5%A2%83%3C/th%3E%0A%3Cth%3E%E9%85%8D%E7%BD%AE%E5%BB%BA%E8%AE%AE%3C/th%3E%0A%3Cth%3E%E5%BC%80%E9%94%80%3C/th%3E%0A%3C/tr%3E%3C/thead%3E%0A%3Ctbody%3E%0A%3Ctr%3E%0A%3Ctd%3E%E5%BC%80%E5%8F%91/%E8%B0%83%E8%AF%95%E7%8E%AF%E5%A2%83%3C/td%3E%0A%3Ctd%3E%E5%85%A8%E9%87%8F%E5%BC%80%E5%90%AF%EF%BC%8Cpermissive%E6%A8%A1%E5%BC%8F%3C/td%3E%0A%3Ctd%3E%E4%B8%AD%E7%AD%89%3C/td%3E%0A%3C/tr%3E%0A%3Ctr%3E%0A%3Ctd%3ECI%20gates%3C/td%3E%0A%3Ctd%3Ewatchpoint_pool_sz%3D8192%3C/td%3E%0A%3Ctd%3E%E4%B8%AD%E7%AD%89%3C/td%3E%0A%3C/tr%3E%0A%3Ctr%3E%0A%3Ctd%3E%E7%81%B0%E5%BA%A6%E7%8E%AF%E5%A2%83%3C/td%3E%0A%3Ctd%3Eselective%20enable%20via%20kcsan.enable%3C/td%3E%0A%3Ctd%3E%E5%8F%AF%E6%8E%A7%3C/td%3E%0A%3C/tr%3E%0A%3Ctr%3E%0A%3Ctd%3E%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%3C/td%3E%0A%3Ctd%3E%E4%B8%8D%E5%BC%80%E5%90%AF%3C/td%3E%0A%3Ctd%3E%E9%9B%B6%3C/td%3E%0A%3C/tr%3E%0A%3C/tbody%3E%3C/table%3E%0A%0A%3Ch3%3E6.2%20%E9%80%89%E6%8B%A9%E6%80%A7%E6%8A%91%E5%88%B6%E4%BB%A3%E7%A0%81%3C/h3%3E%0A%0A%3Cp%3E%E5%AF%B9%E6%80%A7%E8%83%BD%E6%95%8F%E6%84%9F%E8%B7%AF%E5%BE%84%EF%BC%8C%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E5%87%BD%E6%95%B0%E7%BA%A7%E5%88%AB%E7%99%BD%E5%90%8D%E5%8D%95%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0A/%2A%20%E5%91%8A%E8%AF%89%20KCSAN%20%E8%BF%99%E5%A4%84%E8%AE%BF%E9%97%AE%E5%BF%BD%E7%95%A5%20%2A/%0Avoid%20hotpath_handler%28struct%20data%20%2Ad%29%0A%7B%0A%20%20%20%20/%2A%20cycle%20counting%20-%20%E5%B7%B2%E7%9F%A5%E6%97%A0%E5%AE%B3%E7%9A%84%E7%AB%9E%E4%BA%89%20%2A/%0A%20%20%20%20unsigned%20long%20flags%3B%0A%20%20%20%20local_irq_save%28flags%29%3B%0A%20%20%20%20d-%26gt%3Bcounter%2B%2B%3B%20%20/%2A%20%E8%BF%99%E9%87%8C%E7%90%86%E8%AE%BA%E4%B8%8A%E6%98%AF%20race%EF%BC%8C%E4%BD%86%E7%BB%9F%E8%AE%A1%E7%94%A8%20%2A/%0A%20%20%20%20local_irq_restore%28flags%29%3B%0A%7D%0A%0A/%2A%20%E6%88%96%E8%80%85%E4%BD%BF%E7%94%A8%E7%BC%96%E8%AF%91%E5%99%A8%E5%B1%9E%E6%80%A7%E6%A0%87%E8%AE%B0%20%2A/%0A__no_sanitize_or_trace%20static%20void%20fast_handler%28struct%20data%20%2Ad%29%0A%7B%0A%20%20%20%20d-%26gt%3Bvalue%20%3D%20compute_result%28%29%3B%0A%7D%0A%3C/code%3E%3C/pre%3E%0A%0A%3Ch3%3E6.3%20watchpoint_pool_size%20%E8%B0%83%E4%BC%98%3C/h3%3E%0A%0A%3Cp%3Epool%20size%20%E5%86%B3%E5%AE%9A%E5%90%8C%E6%97%B6%E5%8F%AF%E8%BF%BD%E8%B8%AA%E7%9A%84%E5%86%85%E5%AD%98%E8%AE%BF%E9%97%AE%E6%95%B0%E3%80%82%E8%AE%BE%E7%BD%AE%E8%BF%87%E5%B0%8F%E4%BC%9A%E5%AF%BC%E8%87%B4%E6%BC%8F%E6%8A%A5%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-bash%22%3E%0A%23%20%E6%9F%A5%E7%9C%8B%E5%BD%93%E5%89%8D%E7%BB%9F%E8%AE%A1%0Acat%20/sys/kernel/debug/kcsan/stats%0A%23%20%E7%A4%BA%E4%BE%8B%E8%BE%93%E5%87%BA%EF%BC%9Atotal%3A%2012456%2C%20used%3A%203421%2C%20pool_size%3A%208192%0A%0A%23%20%E5%A6%82%E6%9E%9C%20used%20%E6%8C%81%E7%BB%AD%E6%8E%A5%E8%BF%91%20pool_size%EF%BC%8C%E9%9C%80%E8%A6%81%E5%A2%9E%E5%A4%A7%0A%23%20pool%20%E5%A4%A7%E5%B0%8F%E4%BB%A5%202%20%E7%9A%84%E5%B9%82%E4%B8%BA%E6%9C%80%E4%BD%B3%EF%BC%88%E5%86%85%E9%83%A8%E5%93%88%E5%B8%8C%E8%A1%A8%E5%AF%B9%E9%BD%90%E8%A6%81%E6%B1%82%EF%BC%89%0Aecho%2065536%20%26gt%3B%20/sys/kernel/debug/kcsan/watchpoint_pool_sz%0A%3C/code%3E%3C/pre%3E%0A%0A%3Ch2%3E%E4%B8%83%E3%80%81%E9%AB%98%E7%BA%A7%E6%8A%80%E5%B7%A7%E4%B8%8E%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5%3C/h2%3E%0A%0A%3Ch3%3E7.1%20%E7%BB%93%E5%90%88%20ftrace%20%E5%A2%9E%E5%BC%BA%E5%88%86%E6%9E%90%3C/h3%3E%0A%0A%3Cp%3E%E6%95%B0%E6%8D%AE%E7%AB%9E%E4%BB%B2%E5%8F%91%E7%94%9F%E6%97%B6%E7%9A%84%E8%B0%83%E7%94%A8%E6%A0%88%E5%BE%80%E5%BE%80%E4%B8%8D%E5%A4%9F%E3%80%82%E7%94%A8%20ftrace%20%E7%9A%84%E4%BA%8B%E4%BB%B6%E8%BF%BD%E8%B8%AA%E5%81%9A%E8%A1%A5%E5%85%85%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-bash%22%3E%0A%23%20%E5%BC%80%E5%90%AF%20KCSAN%20%E4%B8%8E%20ftrace%20%E5%8D%8F%E4%BD%9C%0Aecho%201%20%26gt%3B%20/sys/kernel/events/kcsan/enable%0Aecho%20%26%23x27%3Bkcsan%3A%2A%26%23x27%3B%20%26gt%3B%20/sys/kernel/events/set_event%0A%0A%23%20%E5%8A%A8%E6%80%81%E7%9B%91%E6%8E%A7%0Atrace-cmd%20record%20-p%20function_graph%20-g%20kcsan_check_access%0A%0A%23%20%E7%94%9F%E6%88%90%E5%88%86%E6%9E%90%E6%8A%A5%E5%91%8A%0Atrace-cmd%20report%20%7C%20head%20-n%2050%0A%3C/code%3E%3C/pre%3E%0A%0A%3Ch3%3E7.2%20%E4%BD%BF%E7%94%A8%20KCSAN%20%E8%BF%9B%E8%A1%8C%E5%9B%9E%E5%BD%92%E6%B5%8B%E8%AF%95%3C/h3%3E%0A%0A%3Cp%3E%E5%9C%A8%20QEMU%20%E4%B8%AD%E8%BF%90%E8%A1%8C%20KCSAN%20self-test%20%E7%9A%84%E6%95%88%E6%9E%9C%E6%9C%80%E5%A5%BD%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-bash%22%3E%0A%23%20%E5%90%AF%E5%8A%A8%E5%B8%A6%20KCSAN%20%E7%9A%84%E6%B5%8B%E8%AF%95%E5%86%85%E6%A0%B8%0Aqemu-system-x86_64%20%5C%0A%20%20-kernel%20arch/x86/boot/bzImage%20%5C%0A%20%20-console%20%26%23x27%3Bstdio%26%23x27%3B%20%5C%0A%20%20-append%20%26%23x27%3Bkcsan.self_test%3D1%20console%3DttyS0%26%23x27%3B%20%5C%0A%20%20-nographic%0A%0A%23%20%E8%87%AA%E6%A3%80%E5%AE%8C%E6%88%90%E5%90%8E%E4%BC%9A%E6%89%93%E5%8D%B0%E6%AF%8F%E4%B8%AA%20test%20case%20%E7%9A%84%E9%80%9A%E8%BF%87%E6%83%85%E5%86%B5%0A%3C/code%3E%3C/pre%3E%0A%0A%3Ch3%3E7.3%20%E4%B8%8E%20LOCKDEP%20%E8%81%94%E5%8A%A8%3C/h3%3E%0A%0A%3Cp%3E%E5%BD%93%20LOCKDEP%20%E6%8A%A5%E5%91%8A%E6%BD%9C%E5%9C%A8%E6%AD%BB%E9%94%81%E6%97%B6%EF%BC%8CKCSAN%20%E5%8F%AF%E8%83%BD%E5%B7%B2%E6%8F%90%E5%89%8D%E5%8F%91%E7%8E%B0%E7%9B%B8%E5%85%B3%E7%AB%9E%E4%BA%89%EF%BC%9A%3C/p%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0A/%2A%0A%20%2A%20KCSAN%20%E5%85%88%E6%8A%A5%E5%91%8A%EF%BC%9A%0A%20%2A%20%26quot%3BBUG%3A%20KCSAN%3A%20data%20race%0A%20%2A%20%20write%20to%20...%20by%20task%20A%0A%20%2A%20%20read%20%20to%20...%20by%20task%20B%26quot%3B%0A%20%2A%0A%20%2A%20LOCKDEP%20%E5%90%8E%E7%BB%AD%E6%8A%A5%E5%91%8A%EF%BC%9A%0A%20%2A%20%26quot%3BINFO%3A%20possible%20irq%20lock%20inversion%20dependency%20detected%26quot%3B%0A%20%2A%20%26quot%3Birq%20lock%20...%20at%20...%20acquired%20at%3A%26quot%3B%0A%20%2A%20%26quot%3B%20...%20lock%20...%20already%20held%20by%20...%26quot%3B%0A%20%2A%0A%20%2A%20%E4%B8%A4%E8%80%85%E7%BB%93%E5%90%88%E6%8F%90%E4%BE%9B%E6%9B%B4%E5%AE%8C%E6%95%B4%E7%9A%84%E5%B9%B6%E5%8F%91%E9%97%AE%E9%A2%98%E5%88%86%E6%9E%90%E3%80%82%0A%20%2A/%0A%3C/code%3E%3C/pre%3E%0A%0A%3Ch2%3E%E5%85%AB%E3%80%81%E5%B1%80%E9%99%90%E6%80%A7%E4%B8%8E%E5%8F%91%E5%B1%95%E6%96%B9%E5%90%91%3C/h2%3E%0A%0A%3Ch3%3E8.1%20%E5%BD%93%E5%89%8D%E5%B1%80%E9%99%90%3C/h3%3E%0A%0A%3Cul%3E%0A%3Cli%3E%3Cstrong%3Efalse%20negatives%3C/strong%3E%EF%BC%9AHB%20%E8%B7%9F%E8%B8%AA%E5%9F%BA%E4%BA%8E%E9%9D%99%E6%80%81%E5%88%86%E6%9E%90%EF%BC%8C%E6%97%A0%E6%B3%95%E8%A6%86%E7%9B%96%E5%8A%A8%E6%80%81%E8%A1%8C%E4%B8%BA%3C/li%3E%0A%3Cli%3E%3Cstrong%3E%E8%BF%90%E8%A1%8C%E6%97%B6%E5%BC%80%E9%94%80%3C/strong%3E%EF%BC%9A5x-15x%20overhead%20%E4%BD%BF%E5%BE%97%E4%BA%91%E5%8E%9F%E7%94%9F%E5%9C%BA%E6%99%AF%E9%9A%BE%E4%BB%A5%E7%9B%B4%E6%8E%A5%E4%BD%BF%E7%94%A8%3C/li%3E%0A%3Cli%3E%3Cstrong%3E%E4%B8%8D%E6%94%AF%E6%8C%81%20NMI%3C/strong%3E%EF%BC%9ANMI%20%E4%B8%8A%E4%B8%8B%E6%96%87%E6%9A%82%E6%97%B6%E6%97%A0%E6%B3%95%E8%A2%AB%20KCSAN%20%E8%BF%BD%E8%B8%AA%3C/li%3E%0A%3Cli%3E%3Cstrong%3Ewatchpoint%20%E6%9C%89%E9%99%90%3C/strong%3E%EF%BC%9A%E5%A4%A7%E8%A7%84%E6%A8%A1%E5%B9%B6%E5%8F%91%E6%97%B6%20pool%20%E6%BA%A2%E5%87%BA%E5%AF%BC%E8%87%B4%E6%BC%8F%E6%8A%A5%3C/li%3E%0A%3C/ul%3E%0A%0A%3Ch3%3E8.2%20%E6%9C%AA%E6%9D%A5%E6%BC%94%E8%BF%9B%3C/h3%3E%0A%0A%3Cp%3E%E6%A0%B9%E6%8D%AE%20Linux%20Kernel%20Mailing%20List%20%E7%9A%84%E8%AE%A8%E8%AE%BA%EF%BC%8CKCSAN%20%E7%9A%84%E6%9C%AA%E6%9D%A5%E5%8F%91%E5%B1%95%E6%96%B9%E5%90%91%E5%8C%85%E6%8B%AC%EF%BC%9A%3C/p%3E%0A%0A%3Cul%3E%0A%3Cli%3E%3Cstrong%3Eper-vm%20KCSAN%3C/strong%3E%EF%BC%9A%E4%B8%BA%20KVM%20%E8%99%9A%E6%8B%9F%E6%9C%BA%E6%8F%90%E4%BE%9B%E7%8B%AC%E7%AB%8B%E7%9A%84%E6%95%B0%E6%8D%AE%E7%AB%9E%E4%BA%89%E8%BF%BD%E8%B8%AA%3C/li%3E%0A%3Cli%3E%3Cstrong%3Erecorder%20%E6%A8%A1%E5%BC%8F%3C/strong%3E%EF%BC%9A%E8%AE%B0%E5%BD%95%E6%89%80%E6%9C%89%E5%86%85%E5%AD%98%E8%AE%BF%E9%97%AE%E6%A8%A1%E5%BC%8F%EF%BC%8C%E4%BA%8B%E5%90%8E%E7%A6%BB%E7%BA%BF%E5%88%86%E6%9E%90%3C/li%3E%0A%3Cli%3E%3Cstrong%3EeBPF%20%E9%9B%86%E6%88%90%3C/strong%3E%EF%BC%9A%E9%80%9A%E8%BF%87%20eBPF%20%E7%A8%8B%E5%BA%8F%E5%8A%A8%E6%80%81%E6%8E%A7%E5%88%B6%20KCSAN%20%E8%A1%8C%E4%B8%BA%3C/li%3E%0A%3Cli%3E%3Cstrong%3E%E7%A1%AC%E4%BB%B6%E5%8D%8F%E4%BD%9C%3C/strong%3E%EF%BC%9A%E5%88%A9%E7%94%A8%20Intel%20TDT%20%E6%88%96%20ARM%20CCA%20%E7%9A%84%E5%86%85%E5%AD%98%E6%A0%87%E8%AE%B0%E7%89%B9%E6%80%A7%E5%8A%A0%E9%80%9F%E6%A3%80%E6%B5%8B%3C/li%3E%0A%3C/ul%3E%0A%0A%3Ch2%3E%E4%B9%9D%E3%80%81%E6%80%BB%E7%BB%93%3C/h2%3E%0A%0A%3Cp%3EKCSAN%20%E6%98%AF%E5%BD%93%E5%89%8D%20Linux%20%E5%86%85%E6%A0%B8%E6%9C%80%E5%BC%BA%E5%A4%A7%E7%9A%84%E6%95%B0%E6%8D%AE%E7%AB%9E%E4%BA%89%E6%A3%80%E6%B5%8B%E5%B7%A5%E5%85%B7%E3%80%82%E5%AF%B9%E4%BA%8E%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91%E8%80%85%E3%80%81%E5%86%85%E6%A0%B8%E6%A8%A1%E5%9D%97%E4%BD%9C%E8%80%85%E5%92%8C%E6%80%A7%E8%83%BD%E5%B7%A5%E7%A8%8B%E5%B8%88%E6%9D%A5%E8%AF%B4%EF%BC%8C%E6%8E%8C%E6%8F%A1%20KCSAN%20%E6%84%8F%E5%91%B3%E7%9D%80%EF%BC%9A%3C/p%3E%0A%0A%3Col%3E%0A%3Cli%3E%E8%83%BD%E5%9C%A8%E5%BC%80%E5%8F%91%E9%98%B6%E6%AE%B5%E5%8F%91%E7%8E%B0%E9%9A%BE%E4%BB%A5%E5%A4%8D%E7%8E%B0%E7%9A%84%E5%B9%B6%E5%8F%91%E7%BC%BA%E9%99%B7%3C/li%3E%0A%3Cli%3E%E9%80%9A%E8%BF%87%E4%BF%AE%E5%A4%8D%20KCSAN%20%E6%8A%A5%E5%91%8A%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%8C%E9%A9%B1%E5%8A%A8%E4%BB%A3%E7%A0%81%E6%9B%B4%E5%81%A5%E5%A3%AE%3C/li%3E%0A%3Cli%3E%E7%90%86%E8%A7%A3%E5%86%85%E6%A0%B8%E5%90%8C%E6%AD%A5%E5%8E%9F%E8%AF%AD%E8%83%8C%E5%90%8E%E7%9A%84%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80%3C/li%3E%0A%3C/ol%3E%0A%0A%3Cp%3E%E5%BB%BA%E8%AE%AE%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7%EF%BC%9A%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E5%BF%85%E5%BC%80%20%E2%86%92%20CI%20%E9%9B%86%E6%88%90%E7%81%B0%E5%BA%A6%E5%90%AF%E7%94%A8%20%E2%86%92%20%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%BF%9D%E7%95%99%E8%A7%A6%E5%8F%91%E5%BC%80%E5%85%B3%E3%80%82%3C/p%3E%0A%0A%3Cp%3E%E8%AE%B0%E4%BD%8F%20KCSAN%20%E7%9A%84%E7%AC%AC%E4%B8%80%E6%9D%A1%E5%8E%9F%E5%88%99%EF%BC%9A%3Cstrong%3E%E8%A2%AB%20KCSAN%20%E5%8F%91%E7%8E%B0%E7%9A%84%E7%AB%9E%E4%BA%89%EF%BC%8C%E4%B8%8D%E4%B8%80%E5%AE%9A%E6%98%AF%20bug%EF%BC%9B%E4%BD%86%E6%B2%A1%E8%A2%AB%E5%8F%91%E7%8E%B0%E7%9A%84%E7%AB%9E%E4%BA%89%EF%BC%8C%E4%B8%8D%E4%B8%80%E5%AE%9A%E6%98%AF%E6%B2%A1%E6%9C%89%20bug%3C/strong%3E%E3%80%82%3C/p%3E%0A%0A%3Chr/%3E%0A%0A%3Cp%3E%3Cem%3E%E7%9B%B8%E5%85%B3%E5%B7%A5%E5%85%B7%E9%93%BE%EF%BC%9AGCC/Clang%20sanitizer%20framework%E3%80%81%20Linux%205.13%2B%E3%80%81%20ftrace%E3%80%81debugfs%3C/em%3E%3C/p%3E%0A%3Cp%3E%3Cem%3E%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3%EF%BC%9A%3Ccode%3EDocumentation/dev-tools/kcsan.rst%3C/code%3E%3C/em%3E%3C/p%3E%0A
点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部