From f037c9b286041ce13ecca41a5bbddccf76a87d1c Mon Sep 17 00:00:00 2001 From: jiuker <2818723467@qq.com> Date: Thu, 18 May 2023 03:09:41 +0800 Subject: [PATCH] Protecting the read index is not out of bounds (#17226) --- cmd/erasure-sets.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cmd/erasure-sets.go b/cmd/erasure-sets.go index 1deca76a7..9c4172f31 100644 --- a/cmd/erasure-sets.go +++ b/cmd/erasure-sets.go @@ -221,16 +221,15 @@ func (s *erasureSets) connectDisks() { if disk.IsLocal() && disk.Healing() != nil { globalBackgroundHealState.pushHealLocalDisks(disk.Endpoint()) } - s.erasureDisksMu.RLock() + s.erasureDisksMu.Lock() setIndex, diskIndex, err := findDiskIndex(s.format, format) - s.erasureDisksMu.RUnlock() if err != nil { printEndpointError(endpoint, err, false) disk.Close() + s.erasureDisksMu.Unlock() return } - s.erasureDisksMu.Lock() if currentDisk := s.erasureDisks[setIndex][diskIndex]; currentDisk != nil { if !reflect.DeepEqual(currentDisk.Endpoint(), disk.Endpoint()) { err = fmt.Errorf("Detected unexpected drive ordering refusing to use the drive: expecting %s, found %s, refusing to use the drive",