]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go/internal/modfetch: add Unlock before return in checkModSum
authorBurtonQin <bobbqqin@gmail.com>
Tue, 21 Apr 2020 11:37:41 +0000 (11:37 +0000)
committerJay Conrod <jayconrod@google.com>
Tue, 21 Apr 2020 15:37:29 +0000 (15:37 +0000)
In cmd/go/internal/modfetch/fetch.go,
`checkModSum()` forgets Unlock before return, which may lead to deadlock.
https://github.com/golang/go/blob/876c1feb7d5e10a6ff831de9db19b9ff0ea92fa8/src/cmd/go/internal/modfetch/fetch.go#L514-L520
The fix is to add `goSum.mu.Unlock()` before return.

Change-Id: I855b1c1bc00aeada2c1e84aabb5328f02823007d
GitHub-Last-Rev: afeb3763dd1d08c4c15c4c4183fd5705da60dc4c
GitHub-Pull-Request: golang/go#38563
Reviewed-on: https://go-review.googlesource.com/c/go/+/229219
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
src/cmd/go/internal/modfetch/fetch.go

index 61759c0e6bc98d38ac4208da9b852e2ae88d83af..fd7a5cef831cd2b7e41e8a5c5d458589e38f2aac 100644 (file)
@@ -514,6 +514,7 @@ func checkModSum(mod module.Version, h string) error {
        goSum.mu.Lock()
        inited, err := initGoSum()
        if err != nil {
+               goSum.mu.Unlock()
                return err
        }
        done := inited && haveModSumLocked(mod, h)