--- old/src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/MappedMemorySegmentImpl.java 2020-04-30 16:04:02.000000000 +0100 +++ new/src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/MappedMemorySegmentImpl.java 2020-04-30 16:04:02.000000000 +0100 @@ -104,8 +104,12 @@ try (FileChannelImpl channelImpl = (FileChannelImpl)FileChannel.open(path, openOptions(mapMode))) { UnmapperProxy unmapperProxy = channelImpl.mapInternal(mapMode, 0L, bytesSize); MemoryScope scope = new MemoryScope(null, unmapperProxy::unmap); + int modes = defaultAccessModes(bytesSize); + if (mapMode == FileChannel.MapMode.READ_ONLY) { + modes &= ~WRITE; + } return new MappedMemorySegmentImpl(unmapperProxy.address(), unmapperProxy, bytesSize, - defaultAccessModes(bytesSize), Thread.currentThread(), scope); + modes, Thread.currentThread(), scope); } }