diff --git a/fs/locks.c b/fs/locks.c index 28270e74be3428be2b518d4c26daa04e353cff39..545e79d6eb70b9648766d5efff2adac1339e1ed1 100644 --- a/fs/locks.c +++ b/fs/locks.c @@ -1459,7 +1459,7 @@ int __break_lease(struct inode *inode, unsigned int mode, unsigned int type) ctx = smp_load_acquire(&inode->i_flctx); if (!ctx) { WARN_ON_ONCE(1); - return error; + goto free_lock; } percpu_down_read_preempt_disable(&file_rwsem); @@ -1539,6 +1539,7 @@ int __break_lease(struct inode *inode, unsigned int mode, unsigned int type) spin_unlock(&ctx->flc_lock); percpu_up_read_preempt_enable(&file_rwsem); locks_dispose_list(&dispose); +free_lock: locks_free_lock(new_fl); return error; }