net: allow GFP_HIGHMEM in __vmalloc()
We forgot to use __GFP_HIGHMEM in several __vmalloc() calls. In ceph, add the missing flag. In fib_trie.c, xfrm_hash.c and request_sock.c, using vzalloc() is cleaner and allows using HIGHMEM pages as well. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
a6c36ee677
Коммит
7a1c8e5ab1
|
@ -19,7 +19,7 @@ struct ceph_buffer *ceph_buffer_new(size_t len, gfp_t gfp)
|
|||
if (b->vec.iov_base) {
|
||||
b->is_vmalloc = false;
|
||||
} else {
|
||||
b->vec.iov_base = __vmalloc(len, gfp, PAGE_KERNEL);
|
||||
b->vec.iov_base = __vmalloc(len, gfp | __GFP_HIGHMEM, PAGE_KERNEL);
|
||||
if (!b->vec.iov_base) {
|
||||
kfree(b);
|
||||
return NULL;
|
||||
|
|
|
@ -45,9 +45,7 @@ int reqsk_queue_alloc(struct request_sock_queue *queue,
|
|||
nr_table_entries = roundup_pow_of_two(nr_table_entries + 1);
|
||||
lopt_size += nr_table_entries * sizeof(struct request_sock *);
|
||||
if (lopt_size > PAGE_SIZE)
|
||||
lopt = __vmalloc(lopt_size,
|
||||
GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO,
|
||||
PAGE_KERNEL);
|
||||
lopt = vzalloc(lopt_size);
|
||||
else
|
||||
lopt = kzalloc(lopt_size, GFP_KERNEL);
|
||||
if (lopt == NULL)
|
||||
|
|
|
@ -365,7 +365,7 @@ static struct tnode *tnode_alloc(size_t size)
|
|||
if (size <= PAGE_SIZE)
|
||||
return kzalloc(size, GFP_KERNEL);
|
||||
else
|
||||
return __vmalloc(size, GFP_KERNEL | __GFP_ZERO, PAGE_KERNEL);
|
||||
return vzalloc(size);
|
||||
}
|
||||
|
||||
static void __tnode_vfree(struct work_struct *arg)
|
||||
|
|
|
@ -19,7 +19,7 @@ struct hlist_head *xfrm_hash_alloc(unsigned int sz)
|
|||
if (sz <= PAGE_SIZE)
|
||||
n = kzalloc(sz, GFP_KERNEL);
|
||||
else if (hashdist)
|
||||
n = __vmalloc(sz, GFP_KERNEL | __GFP_ZERO, PAGE_KERNEL);
|
||||
n = vzalloc(sz);
|
||||
else
|
||||
n = (struct hlist_head *)
|
||||
__get_free_pages(GFP_KERNEL | __GFP_NOWARN | __GFP_ZERO,
|
||||
|
|
Загрузка…
Ссылка в новой задаче