diff --git a/lustre/lvfs/llog.c b/lustre/lvfs/llog.c
index 12da23ba049c9f62f404ed105fdba5c19eb844ce..0b647a76ae0263922e10c007bf3af28bf2decee9 100644
--- a/lustre/lvfs/llog.c
+++ b/lustre/lvfs/llog.c
@@ -345,6 +345,10 @@ int llog_reverse_process(struct llog_handle *loghandle, llog_cb_t cb,
                         --index;
                         if (index < first_index)
                                 GOTO(out, rc = 0);
+
+                        if ((void *)rec == buf)
+                                break;
+
                         tail = (void *)rec - sizeof(struct llog_rec_tail);
                         rec = ((void *)rec - le32_to_cpu(tail->lrt_len));
                 }