diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index db5ff7f..57ea877 100644
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -1522,8 +1522,7 @@
             fileobj = bltn_open(name, self._mode)
             self._extfileobj = False
         else:
-            if (name is None and hasattr(fileobj, "name") and
-                isinstance(fileobj.name, basestring)):
+            if name is None and hasattr(fileobj, "name"):
                 name = fileobj.name
             if hasattr(fileobj, "mode"):
                 self._mode = fileobj.mode
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
index 7d13398..ff3265f 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -1,7 +1,6 @@
 # -*- coding: iso-8859-15 -*-
 
 import sys
-import io
 import os
 import shutil
 import StringIO
@@ -290,49 +289,24 @@
 class MiscReadTest(CommonReadTest):
     taropen = tarfile.TarFile.taropen
 
-    def requires_name_attribute(self):
-        pass
-
     def test_no_name_argument(self):
-        self.requires_name_attribute()
-        with open(self.tarname, "rb") as fobj:
-            self.assertIsInstance(fobj.name, str)
-            with tarfile.open(fileobj=fobj, mode=self.mode) as tar:
-                self.assertIsInstance(tar.name, str)
-                self.assertEqual(tar.name, os.path.abspath(fobj.name))
+        fobj = open(self.tarname, "rb")
+        tar = tarfile.open(fileobj=fobj, mode=self.mode)
+        self.assertEqual(tar.name, os.path.abspath(fobj.name))
 
     def test_no_name_attribute(self):
         data = open(self.tarname, "rb").read()
         fobj = StringIO.StringIO(data)
         self.assertRaises(AttributeError, getattr, fobj, "name")
         tar = tarfile.open(fileobj=fobj, mode=self.mode)
-        self.assertIsNone(tar.name)
+        self.assertEqual(tar.name, None)
 
     def test_empty_name_attribute(self):
         data = open(self.tarname, "rb").read()
         fobj = StringIO.StringIO(data)
         fobj.name = ""
         tar = tarfile.open(fileobj=fobj, mode=self.mode)
-        self.assertIsNone(tar.name)
-
-    def test_int_name_attribute(self):
-        # Issue 21044: tarfile.open() should handle fileobj with an integer
-        # 'name' attribute.
-        fd = os.open(self.tarname, os.O_RDONLY)
-        with io.open(fd, 'rb') as fobj:
-            self.assertIsInstance(fobj.name, int)
-            with tarfile.open(fileobj=fobj, mode=self.mode) as tar:
-                self.assertIsNone(tar.name)
-
-    @test_support.requires_unicode
-    def test_unicode_name_attribute(self):
-        self.requires_name_attribute()
-        tarname = unicode(self.tarname, test_support.TESTFN_ENCODING)
-        with io.open(tarname, 'rb') as fobj:
-            self.assertIsInstance(fobj.name, unicode)
-            with tarfile.open(fileobj=fobj, mode=self.mode) as tar:
-                self.assertIsInstance(tar.name, unicode)
-                self.assertEqual(tar.name, os.path.abspath(fobj.name))
+        self.assertEqual(tar.name, None)
 
     def test_illegal_mode_arg(self):
         with open(tmpname, 'wb'):
@@ -1694,8 +1668,6 @@
     tarname = bz2name
     mode = "r:bz2"
     taropen = tarfile.TarFile.bz2open
-    def requires_name_attribute(self):
-        self.skipTest("BZ2File have no name attribute")
 class Bz2UstarReadTest(UstarReadTest):
     tarname = bz2name
     mode = "r:bz2"
diff --git a/Misc/ACKS b/Misc/ACKS
index 7fcfae0..8716468 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -997,7 +997,6 @@
 Todd R. Palmer
 Juan David Ibáñez Palomar
 Jan Palus
-Martin Panter
 Mathias Panzenböck
 M. Papillon
 Peter Parente
diff --git a/Misc/NEWS b/Misc/NEWS
index 5dfeb82..a57a0e4 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -19,9 +19,6 @@
 - Issue #21868: Prevent turtle crash when undo buffer set to a value less
   than one.
 
-- Issue #21044: tarfile.open() now handles fileobj with an integer 'name'
-  attribute.  Based on patch by Martin Panter.
-
 - Issue #21151: Fixed a segfault in the _winreg module when ``None`` is passed
   as a ``REG_BINARY`` value to SetValueEx.  Patch by John Ehresman.
 
