diff --git a/fs/jbd/transaction.c b/fs/jbd/transaction.c
index 83a661890868182dc8e8877b6cf583b7932e2388..dc39efd05d542553ea65fe861e26443433b39dfa 100644
--- a/fs/jbd/transaction.c
+++ b/fs/jbd/transaction.c
@@ -844,8 +844,8 @@ int journal_get_create_access(handle_t *handle, struct buffer_head *bh)
 	 */
 	JBUFFER_TRACE(jh, "cancelling revoke");
 	journal_cancel_revoke(handle, jh);
-	journal_put_journal_head(jh);
 out:
+	journal_put_journal_head(jh);
 	return err;
 }