diff --git a/Doc/lib/libstringio.tex b/Doc/lib/libstringio.tex
index 2431251..73ff0e4 100644
--- a/Doc/lib/libstringio.tex
+++ b/Doc/lib/libstringio.tex
@@ -78,6 +78,10 @@
 module, those provided by this module are not able to accept Unicode
 strings that cannot be encoded as plain \ASCII{} strings.
 
+Calling \function{StringIO()} with a Unicode string parameter populates
+the object with the buffer representation of the Unicode string, instead of
+encoding the string.
+
 Another difference from the \refmodule{StringIO} module is that calling
 \function{StringIO()} with a string parameter creates a read-only object.
 Unlike an object created without a string parameter, it does not have
diff --git a/Lib/test/test_StringIO.py b/Lib/test/test_StringIO.py
index aa36b09..cc3367f 100644
--- a/Lib/test/test_StringIO.py
+++ b/Lib/test/test_StringIO.py
@@ -120,28 +120,6 @@
 class TestcStringIO(TestGenericStringIO):
     MODULE = cStringIO
 
-    def test_unicode(self):
-
-        if not test_support.have_unicode: return
-
-        # The cStringIO module converts Unicode strings to character
-        # strings when writing them to cStringIO objects.
-        # Check that this works.
-
-        f = self.MODULE.StringIO()
-        f.write(unicode(self._line[:5]))
-        s = f.getvalue()
-        self.assertEqual(s, 'abcde')
-        self.assertEqual(type(s), types.StringType)
-
-        f = self.MODULE.StringIO(unicode(self._line[:5]))
-        s = f.getvalue()
-        self.assertEqual(s, 'abcde')
-        self.assertEqual(type(s), types.StringType)
-
-        self.assertRaises(UnicodeEncodeError, self.MODULE.StringIO,
-                          unicode('\xf4', 'latin-1'))
-
 import sys
 if sys.platform.startswith('java'):
     # Jython doesn't have a buffer object, so we just do a useless
diff --git a/Misc/NEWS b/Misc/NEWS
index 3d5221c..0e2985c 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -26,6 +26,9 @@
 Library
 -------
 
+- Reverted the fix for bug #1548891 because it broke compatibility with
+  arbitrary read buffers. Added a note in the documentation.
+
 - GB18030 codec now can encode additional two-byte characters that
   are missing in GBK.
 
diff --git a/Modules/cStringIO.c b/Modules/cStringIO.c
index 06bc6cb..2d8a6ab 100644
--- a/Modules/cStringIO.c
+++ b/Modules/cStringIO.c
@@ -665,8 +665,11 @@
   char *buf;
   Py_ssize_t size;
 
-  if (PyObject_AsCharBuffer(s, (const char **)&buf, &size) != 0)
-      return NULL;
+  if (PyObject_AsReadBuffer(s, (const char **)&buf, &size)) {
+    PyErr_Format(PyExc_TypeError, "expected read buffer, %.200s found",
+                 s->ob_type->tp_name);
+    return NULL;
+  }
 
   self = PyObject_New(Iobject, &Itype);
   if (!self) return NULL;
