diff --git a/internal/ceres/lapack.cc b/internal/ceres/lapack.cc
index 90973fa..04a87e8 100644
--- a/internal/ceres/lapack.cc
+++ b/internal/ceres/lapack.cc
@@ -70,7 +70,7 @@
     int num_rows,
     const double* in_lhs,
     double* rhs_and_solution,
-    string* status) {
+    string* message) {
 #ifdef CERES_NO_LAPACK
   LOG(FATAL) << "Ceres was built without a BLAS library.";
   return LINEAR_SOLVER_FATAL_ERROR;
@@ -91,7 +91,7 @@
   }
 
   if (info > 0) {
-    *status =
+    *message =
         StringPrintf(
             "LAPACK::dpotrf numerical failure. "
              "The leading minor of order %d  is not positive definite.", info);
@@ -107,7 +107,7 @@
     return LINEAR_SOLVER_FATAL_ERROR;
   }
 
-  *status = "Success";
+  *message = "Success";
   return LINEAR_SOLVER_SUCCESS;
 #endif
 };
@@ -151,7 +151,7 @@
     int work_size,
     double* work,
     double* rhs_and_solution,
-    string* status) {
+    string* message) {
 #ifdef CERES_NO_LAPACK
   LOG(FATAL) << "Ceres was built without a LAPACK library.";
   return LINEAR_SOLVER_FATAL_ERROR;
@@ -184,7 +184,7 @@
                << "Argument: " << -info << " is invalid.";
   }
 
-  *status = "Success.";
+  *message = "Success.";
   return LINEAR_SOLVER_SUCCESS;
 #endif
 }
diff --git a/internal/ceres/lapack.h b/internal/ceres/lapack.h
index 53a33e1..8933c2c 100644
--- a/internal/ceres/lapack.h
+++ b/internal/ceres/lapack.h
@@ -51,14 +51,14 @@
   //
   // This function uses the LAPACK dpotrf and dpotrs routines.
   //
-  // The return value and the status string together describe whether
+  // The return value and the message string together describe whether
   // the solver terminated successfully or not and if so, what was the
   // reason for failure.
   static LinearSolverTerminationType SolveInPlaceUsingCholesky(
       int num_rows,
       const double* lhs,
       double* rhs_and_solution,
-      string* status);
+      string* message);
 
   // The SolveUsingQR function requires a buffer for its temporary
   // computation. This function given the size of the lhs matrix will
@@ -81,7 +81,7 @@
   //
   // This function uses the LAPACK dgels routine.
   //
-  // The return value and the status string together describe whether
+  // The return value and the message string together describe whether
   // the solver terminated successfully or not and if so, what was the
   // reason for failure.
   static LinearSolverTerminationType SolveInPlaceUsingQR(
@@ -91,7 +91,7 @@
       int work_size,
       double* work,
       double* rhs_and_solution,
-      string* status);
+      string* message);
 };
 
 }  // namespace internal
diff --git a/internal/ceres/suitesparse.cc b/internal/ceres/suitesparse.cc
index 8a52631..3cafe07 100644
--- a/internal/ceres/suitesparse.cc
+++ b/internal/ceres/suitesparse.cc
@@ -287,7 +287,7 @@
                 "LL' has tiny absolute value.";
       return LINEAR_SOLVER_FAILURE;
     case CHOLMOD_OK:
-      if (cholmod_message != 0) {
+      if (cholmod_status != 0) {
         return LINEAR_SOLVER_SUCCESS;
       }
 
diff --git a/internal/ceres/suitesparse.h b/internal/ceres/suitesparse.h
index 85cceb1..832f103 100644
--- a/internal/ceres/suitesparse.h
+++ b/internal/ceres/suitesparse.h
@@ -1,4 +1,4 @@
-s// Ceres Solver - A fast non-linear least squares minimizer
+// Ceres Solver - A fast non-linear least squares minimizer
 // Copyright 2010, 2011, 2012 Google Inc. All rights reserved.
 // http://code.google.com/p/ceres-solver/
 //
diff --git a/internal/ceres/trust_region_minimizer.cc b/internal/ceres/trust_region_minimizer.cc
index a613a65..802f0bf 100644
--- a/internal/ceres/trust_region_minimizer.cc
+++ b/internal/ceres/trust_region_minimizer.cc
@@ -245,15 +245,6 @@
     iteration_summary.step_is_valid = false;
     iteration_summary.step_is_successful = false;
 
-    if (strategy_summary.termination_type == LINEAR_SOLVER_FATAL_ERROR) {
-      summary->error =
-          "Terminating. Linear solver failed due to unrecoverable "
-          "non-numeric causes. Please see the error log for clues. ";
-      summary->termination_type = NUMERICAL_FAILURE;
-      LOG_IF(WARNING, is_not_silent) << summary->error;
-      return;
-    }
-
     double model_cost_change = 0.0;
     if (strategy_summary.termination_type != LINEAR_SOLVER_FAILURE) {
       // new_model_cost
