diff --git a/ChangeLog b/ChangeLog
index d7d1e89c147c0a3d93d33e129483ab59989224d9..57ad1208de0619ed8169d225015493c9d2d1205a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2010-03-10	The InnoDB Team
+
+	* log/log0recv.c:
+	Remove a bogus assertion about page numbers exceeding 0x90000000
+	in the redo log.  Abort when encountering a corrupted redo log
+	record, unless innodb_force_recovery is set.
+
 2010-03-09	The InnoDB Team
 
 	* handler/ha_innodb.cc:
diff --git a/log/log0recv.c b/log/log0recv.c
index de026cad7b7f68cd2b739ab27b0ea601a88f15f8..e5a67f28de68f29d9c96a3cedc67216a3af5794a 100644
--- a/log/log0recv.c
+++ b/log/log0recv.c
@@ -2052,15 +2052,6 @@ recv_parse_log_rec(
 	}
 #endif /* UNIV_LOG_LSN_DEBUG */
 
-	/* Check that page_no is sensible */
-
-	if (UNIV_UNLIKELY(*page_no > 0x8FFFFFFFUL)) {
-
-		recv_sys->found_corrupt_log = TRUE;
-
-		return(0);
-	}
-
 	new_ptr = recv_parse_or_apply_log_rec_body(*type, new_ptr, end_ptr,
 						   NULL, NULL);
 	if (UNIV_UNLIKELY(new_ptr == NULL)) {
@@ -2169,6 +2160,14 @@ recv_report_corrupt_log(
 		putc('\n', stderr);
 	}
 
+#ifndef UNIV_HOTBACKUP
+	if (!srv_force_recovery) {
+		fputs("InnoDB: Set innodb_force_recovery"
+		      " to ignore this error.\n", stderr);
+		ut_error;
+	}
+#endif /* !UNIV_HOTBACKUP */
+
 	fputs("InnoDB: WARNING: the log file may have been corrupt and it\n"
 	      "InnoDB: is possible that the log scan did not proceed\n"
 	      "InnoDB: far enough in recovery! Please run CHECK TABLE\n"
@@ -2683,6 +2682,16 @@ recv_scan_log_recs(
 
 				recv_sys->found_corrupt_log = TRUE;
 
+#ifndef UNIV_HOTBACKUP
+				if (!srv_force_recovery) {
+					fputs("InnoDB: Set"
+					      " innodb_force_recovery"
+					      " to ignore this error.\n",
+					      stderr);
+					ut_error;
+				}
+#endif /* !UNIV_HOTBACKUP */
+
 			} else if (!recv_sys->found_corrupt_log) {
 				more_data = recv_sys_add_to_parsing_buf(
 					log_block, scanned_lsn);