From 7e1c374dc6311d187b4d75aeaea11d775332076e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jano=C5=A1=20Gulja=C5=A1?= Date: Fri, 28 Sep 2018 20:04:56 +0200 Subject: [PATCH] swarm/storage: ensure 64bit hasherStore struct alignment (#17766) --- swarm/storage/hasherstore.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/swarm/storage/hasherstore.go b/swarm/storage/hasherstore.go index 879622b9a..ff18e64c7 100644 --- a/swarm/storage/hasherstore.go +++ b/swarm/storage/hasherstore.go @@ -32,10 +32,13 @@ type hasherStore struct { hashFunc SwarmHasher hashSize int // content hash size refSize int64 // reference size (content hash + possibly encryption key) - nrChunks uint64 // number of chunks to store errC chan error // global error channel doneC chan struct{} // closed by Close() call to indicate that count is the final number of chunks quitC chan struct{} // closed to quit unterminated routines + // nrChunks is used with atomic functions + // it is required to be at the end of the struct to ensure 64bit alignment for arm architecture + // see: https://golang.org/pkg/sync/atomic/#pkg-note-BUG + nrChunks uint64 // number of chunks to store } // NewHasherStore creates a hasherStore object, which implements Putter and Getter interfaces.