Issue #12102: Merge with 3.2.
diff --git a/Doc/ACKS.txt b/Doc/ACKS.txt
index e68826c..433c9ee 100644
--- a/Doc/ACKS.txt
+++ b/Doc/ACKS.txt
@@ -144,6 +144,7 @@
    * Sjoerd Mullender
    * Dale Nagata
    * Michal Nowikowski
+   * Steffen Daode Nurpmeso
    * Ng Pheng Siong
    * Koray Oner
    * Tomas Oppelstrup
diff --git a/Doc/library/mmap.rst b/Doc/library/mmap.rst
index 7708028..1598cb8 100644
--- a/Doc/library/mmap.rst
+++ b/Doc/library/mmap.rst
@@ -21,6 +21,12 @@
 :func:`os.open` function, which returns a file descriptor directly (the file
 still needs to be closed when done).
 
+.. note::
+   If you want to create a memory-mapping for a writable, buffered file, you
+   should :func:`~io.IOBase.flush` the file first.  This is necessary to ensure
+   that local modifications to the buffers are actually available to the
+   mapping.
+
 For both the Unix and Windows versions of the constructor, *access* may be
 specified as an optional keyword parameter. *access* accepts one of three
 values: :const:`ACCESS_READ`, :const:`ACCESS_WRITE`, or :const:`ACCESS_COPY`
diff --git a/Misc/NEWS b/Misc/NEWS
index 5d7f59f..c740b20 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -237,6 +237,9 @@
 Library
 -------
 
+- Issue #12102: Document that buffered files must be flushed before being used
+  with mmap. Patch by Steffen Daode Nurpmeso.
+
 - Issue #12560: Build libpython.so on OpenBSD. Patch by Stefan Sperling.
 
 - Issue #1813: Fix codec lookup under Turkish locales.