diff --git a/dune/solvers/iterationsteps/blockgssteps.hh b/dune/solvers/iterationsteps/blockgssteps.hh
index 03ca4d083a7b610ca377f374b8aa3fc4348729da..6835c835c3b1a18aa5bed1c437eb88175e8fd0f0 100644
--- a/dune/solvers/iterationsteps/blockgssteps.hh
+++ b/dune/solvers/iterationsteps/blockgssteps.hh
@@ -33,7 +33,7 @@ std::istream& operator>>(std::istream& lhs, Direction& t);
  * \param direction Iteration direction (e.g. forward, backward, ...)
  */
 template <class M, class V, class BitVector, class LocalSolver>
-void linearStep(const M& m, V& x, const V& b, const BitVector& ignore,
+void linearStep(const M& m, V& x, const V& b, const BitVector* ignore,
                 LocalSolver&& localSolver,
                 Direction direction = Direction::FORWARD) {
   // Note: move-capture requires C++14
@@ -43,8 +43,12 @@ void linearStep(const M& m, V& x, const V& b, const BitVector& ignore,
     auto ri = b[i];
     for (auto cIt = row_i.begin(); cIt != row_i.end(); ++cIt)
       cIt->mmv(x[cIt.index()], ri);
+
+    std::bitset<V::block_type::dimension> ignore_i(0);
+    if (ignore != nullptr)
+      ignore_i = (*ignore)[i];
     // Update iterate with correction
-    x[i] += localSolver(row_i[i], std::move(ri), ignore[i]);
+    x[i] += localSolver(row_i[i], std::move(ri), ignore_i);
   };
 
   if (direction != Direction::BACKWARD)
@@ -60,7 +64,8 @@ template <class M, class V, class BitVector, class LocalSolver>
 void linearStep(LinearIterationStep<M, V, BitVector>& lis,
                 LocalSolver&& localSolver,
                 Direction direction = Direction::FORWARD) {
-  linearStep(*lis.mat_, *lis.x_, *lis.rhs_, lis.ignore(),
+  BitVector const* ignore = lis.hasIgnore() ? &lis.ignore() : nullptr;
+  linearStep(*lis.mat_, *lis.x_, *lis.rhs_, ignore,
              std::forward<LocalSolver>(localSolver), direction);
 }
 
@@ -310,7 +315,6 @@ struct BlockGSStep : public LinearIterationStep<Matrix, Vector, BitVector> {
       , direction_(direction) {}
 
   void iterate() {
-    assert(this->hasIgnore());
     assert(this->mat_ != nullptr);
     assert(this->x_ != nullptr);
     assert(this->rhs_ != nullptr);