diff --git a/autoload/fugitive.vim b/autoload/fugitive.vim
index 5af4c4fd12890d7e2a9a26bbfaa1bf076c91d8c3..a3470c77548f6aeed8cbad8991244951eed0b547 100644
--- a/autoload/fugitive.vim
+++ b/autoload/fugitive.vim
@@ -2556,6 +2556,10 @@ function! fugitive#BufReadStatus(...) abort
   let b:fugitive_type = 'index'
   unlet! b:fugitive_reltime
   try
+    if exists('b:fugitive_reloading')
+      throw 'double status reload???'
+    endif
+    let b:fugitive_reloading = 1
     silent doautocmd BufReadPre
     let config = fugitive#Config()
 
@@ -2878,6 +2882,8 @@ function! fugitive#BufReadStatus(...) abort
     return s:DoAutocmd('User FugitiveIndex')
   catch /^fugitive:/
     return 'echoerr ' . string(v:exception)
+  finally
+    unlet! b:fugitive_reloading
   endtry
 endfunction