mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Skip checklocks analysis for stateify generated code.
Stateify methods are always called without holding the appropriate locks. The system is paused and we know there will be no mutations when we call Save/Load, so this is perfectly safe. However, checklocks can't know about this, and it will always complain. Mark stateify generated methods that touch struct fields as "checklocksignore" to avoid this. PiperOrigin-RevId: 364610241
This commit is contained in:
committed by
gVisor bot
parent
beb11cec76
commit
acb4c62885
@@ -403,6 +403,7 @@ func main() {
|
||||
// on this specific behavior, but the ability to specify slots
|
||||
// allows a manual implementation to be order-dependent.
|
||||
if generateSaverLoader {
|
||||
fmt.Fprintf(outputFile, "// +checklocksignore\n")
|
||||
fmt.Fprintf(outputFile, "func (%s *%s) StateSave(stateSinkObject %sSink) {\n", recv, ts.Name.Name, statePrefix)
|
||||
fmt.Fprintf(outputFile, " %s.beforeSave()\n", recv)
|
||||
scanFields(x, "", scanFunctions{zerovalue: emitZeroCheck})
|
||||
@@ -425,6 +426,7 @@ func main() {
|
||||
//
|
||||
// N.B. See the comment above for the save method.
|
||||
if generateSaverLoader {
|
||||
fmt.Fprintf(outputFile, "// +checklocksignore\n")
|
||||
fmt.Fprintf(outputFile, "func (%s *%s) StateLoad(stateSourceObject %sSource) {\n", recv, ts.Name.Name, statePrefix)
|
||||
scanFields(x, "", scanFunctions{normal: emitLoad, wait: emitLoadWait})
|
||||
scanFields(x, "", scanFunctions{value: emitLoadValue})
|
||||
|
||||
Reference in New Issue
Block a user