diff --git a/fs/dax.c b/fs/dax.c
index f32d7125ad0f237d61173cd72383683ac380c4e4..e4ef8af31aa646fae08dd08010e77d1df57a53d0 100644
--- a/fs/dax.c
+++ b/fs/dax.c
@@ -447,6 +447,7 @@ bool dax_lock_mapping_entry(struct page *page)
 			xa_unlock_irq(&mapping->i_pages);
 			break;
 		} else if (IS_ERR(entry)) {
+			xa_unlock_irq(&mapping->i_pages);
 			WARN_ON_ONCE(PTR_ERR(entry) != -EAGAIN);
 			continue;
 		}