-
Notifications
You must be signed in to change notification settings - Fork 18k
os: fix race condition in readdir by atomically initializing dirinfo #71501
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This PR (HEAD: 5c8de8e) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/645720. Important tips:
|
Message from Gopher Robot: Patch Set 1: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Gopher Robot: Patch Set 1: Congratulations on opening your first change. Thank you for your contribution! Next steps: Most changes in the Go project go through a few rounds of revision. This can be During May-July and Nov-Jan the Go project is in a code freeze, during which Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Signed-off-by: Amirhossein Akhlaghpour <[email protected]>
This PR (HEAD: eac6fc1) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/645720. Important tips:
|
Message from Ian Lance Taylor: Patch Set 3: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Signed-off-by: Amirhossein Akhlaghpour <[email protected]>
This PR (HEAD: 1e1f619) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/645720. Important tips:
|
Message from Amirhosein Akhlaghpoor: Patch Set 4: (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Ian Lance Taylor: Patch Set 4: Commit-Queue+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Go LUCI: Patch Set 4: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2025-02-02T06:17:23Z","revision":"a215b69c2b4591d2dde9932e1d323e7ac6a8773d"} Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Ian Lance Taylor: Patch Set 4: -Commit-Queue Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Go LUCI: Patch Set 4: This CL has passed the run Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Go LUCI: Patch Set 4: LUCI-TryBot-Result+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Amirhosein Akhlaghpoor: Patch Set 4: Code-Review+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Ian Lance Taylor: Patch Set 4: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Amirhosein Akhlaghpoor: Patch Set 5: (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Ian Lance Taylor: Patch Set 5: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Ian Lance Taylor: Patch Set 5: Auto-Submit+1 Code-Review+2 Commit-Queue+1 (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Go LUCI: Patch Set 5: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2025-02-03T20:20:42Z","revision":"4b2d62fdf3d80cbffc9bedeb87c19f3bac49baf8"} Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Ian Lance Taylor: Patch Set 5: -Commit-Queue Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Go LUCI: Patch Set 5: This CL has failed the run. Reason: Tryjob golang/try/gotip-linux-arm64 has failed with summary (view all results):
Build or test failure, click here for results. To reproduce, try Additional links for debugging: Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Go LUCI: Patch Set 5: LUCI-TryBot-Result-1 Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Ian Lance Taylor: Patch Set 5: TryBot-Bypass+1 (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Amirhosein Akhlaghpoor: Patch Set 5: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Ian Lance Taylor: Patch Set 5: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Amirhosein Akhlaghpoor: Patch Set 5: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Ian Lance Taylor: Patch Set 5: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Ian Lance Taylor: Patch Set 6: Auto-Submit+1 Commit-Queue+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Go LUCI: Patch Set 6: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2025-02-04T17:30:02Z","revision":"d9b393dba1b569a4d0b31dbd6c2bfb811174b329"} Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Ian Lance Taylor: Patch Set 6: -Commit-Queue Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Go LUCI: Patch Set 6: This CL has failed the run. Reason: Tryjob golang/try/gotip-linux-arm64 has failed with summary (view all results):
Build or test failure, click here for results. To reproduce, try Additional links for debugging: Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Go LUCI: Patch Set 6: LUCI-TryBot-Result-1 Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Ian Lance Taylor: Patch Set 7: Auto-Submit+1 Commit-Queue+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Go LUCI: Patch Set 7: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2025-02-04T20:38:46Z","revision":"42dc52fdfaafc7e341657b17de4cb46004f5cdae"} Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Ian Lance Taylor: Patch Set 7: -Commit-Queue Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Go LUCI: Patch Set 7: This CL has passed the run Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
Message from Go LUCI: Patch Set 7: LUCI-TryBot-Result+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/645720. |
This change ensures that dirinfo in the File struct is initialized atomically, avoiding redundant allocations when multiple goroutines access it concurrently. Instead of creating separate buffers, we now use CompareAndSwap to guarantee thread-safe initialization and reduce unnecessary memory usage. Although this is not a strict race condition, the update enhances efficiency by eliminating duplicate allocations and ensuring safer concurrent access. Fixes #71496. Change-Id: If08699a94afa05611cdf67e82a5957a8d8f9d5c8 GitHub-Last-Rev: 1e1f619 GitHub-Pull-Request: #71501 Reviewed-on: https://go-review.googlesource.com/c/go/+/645720 Auto-Submit: Ian Lance Taylor <[email protected]> Reviewed-by: Dmitri Shuralyov <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Ian Lance Taylor <[email protected]>
This PR is being closed because golang.org/cl/645720 has been merged. |
This change ensures that dirinfo in the File struct is initialized atomically, avoiding redundant allocations when multiple goroutines access it concurrently. Instead of creating separate buffers, we now use CompareAndSwap to guarantee thread-safe initialization and reduce unnecessary memory usage. Although this is not a strict race condition, the update enhances efficiency by eliminating duplicate allocations and ensuring safer concurrent access. Fixes #71496. Change-Id: If08699a94afa05611cdf67e82a5957a8d8f9d5c8 GitHub-Last-Rev: 1e1f6191439cf3ad32f3ba54bba5a0185dd55b14 GitHub-Pull-Request: golang/go#71501 Reviewed-on: https://go-review.googlesource.com/c/go/+/645720 Auto-Submit: Ian Lance Taylor <[email protected]> Reviewed-by: Dmitri Shuralyov <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Ian Lance Taylor <[email protected]>
This change ensures that dirinfo in the File struct is initialized atomically,
avoiding redundant allocations when multiple goroutines access it concurrently.
Instead of creating separate buffers, we now use CompareAndSwap to guarantee
thread-safe initialization and reduce unnecessary memory usage.
Although this is not a strict race condition, the update enhances efficiency by
eliminating duplicate allocations and ensuring safer concurrent access.
Fixes #71496.