From 14482784db15a1ed78db00f1d34611e77087ecca Mon Sep 17 00:00:00 2001 From: Dmitry Kovba Date: Wed, 6 Aug 2025 18:44:27 -0700 Subject: [PATCH] Ensure mutable properties aren't accessed outside their intended thread-safe usage patterns (#247) This PR modifies the access level of certain mutable properties to ensure their thread-safe usage. It doesn't address https://github.com/apple/containerization/issues/246 at this time. --- .../Image/ImageStore/ImageStore+ReferenceManager.swift | 2 +- Sources/Containerization/TimeSyncer.swift | 2 +- vminitd/Sources/vminitd/OSFile+Splice.swift | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Sources/Containerization/Image/ImageStore/ImageStore+ReferenceManager.swift b/Sources/Containerization/Image/ImageStore/ImageStore+ReferenceManager.swift index 77ea73c1..1f220d6e 100644 --- a/Sources/Containerization/Image/ImageStore/ImageStore+ReferenceManager.swift +++ b/Sources/Containerization/Image/ImageStore/ImageStore+ReferenceManager.swift @@ -21,7 +21,7 @@ import Foundation extension ImageStore { /// A ReferenceManager handles the mappings between an image's /// reference and the underlying descriptor inside of a content store. - internal actor ReferenceManager: Sendable { + internal actor ReferenceManager { private let path: URL private typealias State = [String: Descriptor] diff --git a/Sources/Containerization/TimeSyncer.swift b/Sources/Containerization/TimeSyncer.swift index ad29f9d2..fc65d713 100644 --- a/Sources/Containerization/TimeSyncer.swift +++ b/Sources/Containerization/TimeSyncer.swift @@ -17,7 +17,7 @@ import Foundation import Logging -actor TimeSyncer: Sendable { +actor TimeSyncer { private var task: Task? private var context: Vminitd? private let logger: Logger? diff --git a/vminitd/Sources/vminitd/OSFile+Splice.swift b/vminitd/Sources/vminitd/OSFile+Splice.swift index 8ca83bdd..d63ca47c 100644 --- a/vminitd/Sources/vminitd/OSFile+Splice.swift +++ b/vminitd/Sources/vminitd/OSFile+Splice.swift @@ -18,9 +18,9 @@ import Foundation extension OSFile { struct SpliceFile: Sendable { - var file: OSFile - var offset: Int - let pipe = Pipe() + fileprivate var file: OSFile + fileprivate var offset: Int + fileprivate let pipe = Pipe() var fileDescriptor: Int32 { file.fileDescriptor