diff --git a/dune/istl/cholmod.hh b/dune/istl/cholmod.hh
index 420038fc4a5ea7fa35efa4fe7f1a27c794dbaea8..85aa443600a523258769aaebeccfb437136b5fd1 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_);