diff --git a/doc/source/whatsnew/v0.24.2.rst b/doc/source/whatsnew/v0.24.2.rst
index cba21ce7ee1e6..dc6dc5f6ad57c 100644
--- a/doc/source/whatsnew/v0.24.2.rst
+++ b/doc/source/whatsnew/v0.24.2.rst
@@ -20,9 +20,7 @@ including other versions of pandas.
 Fixed Regressions
 ^^^^^^^^^^^^^^^^^
 
--
--
--
+- Fixed regression in :meth:`DataFrame.all` and :meth:`DataFrame.any` where ``bool_only=True`` was ignored (:issue:`25101`)
 
 .. _whatsnew_0242.enhancements:
 
diff --git a/pandas/core/frame.py b/pandas/core/frame.py
index ade05ab27093e..afe09df8b13ab 100644
--- a/pandas/core/frame.py
+++ b/pandas/core/frame.py
@@ -7476,7 +7476,8 @@ def f(x):
                 if filter_type is None or filter_type == 'numeric':
                     data = self._get_numeric_data()
                 elif filter_type == 'bool':
-                    data = self
+                    # GH 25101, # GH 24434
+                    data = self._get_bool_data() if axis == 0 else self
                 else:  # pragma: no cover
                     msg = ("Generating numeric_only data with filter_type {f}"
                            "not supported.".format(f=filter_type))
diff --git a/pandas/tests/frame/test_analytics.py b/pandas/tests/frame/test_analytics.py
index 386e5f57617cf..456af34e74956 100644
--- a/pandas/tests/frame/test_analytics.py
+++ b/pandas/tests/frame/test_analytics.py
@@ -1442,6 +1442,26 @@ def test_any_datetime(self):
         expected = Series([True, True, True, False])
         tm.assert_series_equal(result, expected)
 
+    def test_any_all_bool_only(self):
+
+        # GH 25101
+        df = DataFrame({"col1": [1, 2, 3],
+                        "col2": [4, 5, 6],
+                        "col3": [None, None, None]})
+
+        result = df.all(bool_only=True)
+        expected = Series(dtype=np.bool)
+        tm.assert_series_equal(result, expected)
+
+        df = DataFrame({"col1": [1, 2, 3],
+                        "col2": [4, 5, 6],
+                        "col3": [None, None, None],
+                        "col4": [False, False, True]})
+
+        result = df.all(bool_only=True)
+        expected = Series({"col4": False})
+        tm.assert_series_equal(result, expected)
+
     @pytest.mark.parametrize('func, data, expected', [
         (np.any, {}, False),
         (np.all, {}, True),