[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: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2f60f8d357
commit
b7656e7f29
1 changed files with 8 additions and 1 deletions
|
@ -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 *
|
||||
|
|
Loading…
Reference in a new issue