|
@@ -605,10 +605,10 @@ static inline unsigned int fib_laddr_hashfn(__be32 val)
|
|
|
static struct hlist_head *fib_hash_alloc(int bytes)
|
|
|
{
|
|
|
if (bytes <= PAGE_SIZE)
|
|
|
- return kmalloc(bytes, GFP_KERNEL);
|
|
|
+ return kzalloc(bytes, GFP_KERNEL);
|
|
|
else
|
|
|
return (struct hlist_head *)
|
|
|
- __get_free_pages(GFP_KERNEL, get_order(bytes));
|
|
|
+ __get_free_pages(GFP_KERNEL | __GFP_ZERO, get_order(bytes));
|
|
|
}
|
|
|
|
|
|
static void fib_hash_free(struct hlist_head *hash, int bytes)
|
|
@@ -712,12 +712,8 @@ struct fib_info *fib_create_info(struct fib_config *cfg)
|
|
|
if (!new_info_hash || !new_laddrhash) {
|
|
|
fib_hash_free(new_info_hash, bytes);
|
|
|
fib_hash_free(new_laddrhash, bytes);
|
|
|
- } else {
|
|
|
- memset(new_info_hash, 0, bytes);
|
|
|
- memset(new_laddrhash, 0, bytes);
|
|
|
-
|
|
|
+ } else
|
|
|
fib_hash_move(new_info_hash, new_laddrhash, new_size);
|
|
|
- }
|
|
|
|
|
|
if (!fib_hash_size)
|
|
|
goto failure;
|