diff --git a/dune/istl/cholmod.hh b/dune/istl/cholmod.hh
index bfc8457a26c83822c8c83033aafd252040ca434e..a69de4b2775f0662959729cc4e266d15ccae2865 100644
--- a/dune/istl/cholmod.hh
+++ b/dune/istl/cholmod.hh
@@ -461,6 +461,10 @@ public:
 
     });
 
+    // Remove old factor that may be left over from a previous run
+    if (L_)
+      CholmodMethod::free_factor(&L_, &c_);
+
     // Now analyse the pattern and optimal row order
     L_ = CholmodMethod::analyze(M.get(), &c_);