Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cfddf9f4 authored by Wenwen Wang's avatar Wenwen Wang Committed by Jeff Layton
Browse files

locks: fix a memory leak bug in __break_lease()



In __break_lease(), the file lock 'new_fl' is allocated in lease_alloc().
However, it is not deallocated in the following execution if
smp_load_acquire() fails, leading to a memory leak bug. To fix this issue,
free 'new_fl' before returning the error.

Signed-off-by: default avatarWenwen Wang <wenwen@cs.uga.edu>
Signed-off-by: default avatarJeff Layton <jlayton@kernel.org>
parent df2474a2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1592,7 +1592,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(&file_rwsem);
@@ -1672,6 +1672,7 @@ int __break_lease(struct inode *inode, unsigned int mode, unsigned int type)
	spin_unlock(&ctx->flc_lock);
	percpu_up_read(&file_rwsem);
	locks_dispose_list(&dispose);
free_lock:
	locks_free_lock(new_fl);
	return error;
}