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

Commit b7656e7f authored by David S. Miller's avatar David S. Miller
Browse files

[IPV4]: Fix memory leak during fib_info hash expansion.



When we grow the tables, we forget to free the olds ones
up.

Noticed by Yan Zheng.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2f60f8d3
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -593,10 +593,13 @@ static void fib_hash_move(struct hlist_head *new_info_hash,
			  struct hlist_head *new_laddrhash,
			  unsigned int new_size)
{
	struct hlist_head *old_info_hash, *old_laddrhash;
	unsigned int old_size = fib_hash_size;
	unsigned int i;
	unsigned int i, bytes;

	write_lock(&fib_info_lock);
	old_info_hash = fib_info_hash;
	old_laddrhash = fib_info_laddrhash;
	fib_hash_size = new_size;

	for (i = 0; i < old_size; i++) {
@@ -636,6 +639,10 @@ static void fib_hash_move(struct hlist_head *new_info_hash,
	fib_info_laddrhash = new_laddrhash;

	write_unlock(&fib_info_lock);

	bytes = old_size * sizeof(struct hlist_head *);
	fib_hash_free(old_info_hash, bytes);
	fib_hash_free(old_laddrhash, bytes);
}

struct fib_info *