提交 7a1c8e5a 编写于 作者: E Eric Dumazet 提交者: David S. Miller

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: NEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 a6c36ee6
...@@ -19,7 +19,7 @@ struct ceph_buffer *ceph_buffer_new(size_t len, gfp_t gfp) ...@@ -19,7 +19,7 @@ struct ceph_buffer *ceph_buffer_new(size_t len, gfp_t gfp)
if (b->vec.iov_base) { if (b->vec.iov_base) {
b->is_vmalloc = false; b->is_vmalloc = false;
} else { } 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) { if (!b->vec.iov_base) {
kfree(b); kfree(b);
return NULL; return NULL;
......
...@@ -45,9 +45,7 @@ int reqsk_queue_alloc(struct request_sock_queue *queue, ...@@ -45,9 +45,7 @@ int reqsk_queue_alloc(struct request_sock_queue *queue,
nr_table_entries = roundup_pow_of_two(nr_table_entries + 1); nr_table_entries = roundup_pow_of_two(nr_table_entries + 1);
lopt_size += nr_table_entries * sizeof(struct request_sock *); lopt_size += nr_table_entries * sizeof(struct request_sock *);
if (lopt_size > PAGE_SIZE) if (lopt_size > PAGE_SIZE)
lopt = __vmalloc(lopt_size, lopt = vzalloc(lopt_size);
GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO,
PAGE_KERNEL);
else else
lopt = kzalloc(lopt_size, GFP_KERNEL); lopt = kzalloc(lopt_size, GFP_KERNEL);
if (lopt == NULL) if (lopt == NULL)
......
...@@ -365,7 +365,7 @@ static struct tnode *tnode_alloc(size_t size) ...@@ -365,7 +365,7 @@ static struct tnode *tnode_alloc(size_t size)
if (size <= PAGE_SIZE) if (size <= PAGE_SIZE)
return kzalloc(size, GFP_KERNEL); return kzalloc(size, GFP_KERNEL);
else else
return __vmalloc(size, GFP_KERNEL | __GFP_ZERO, PAGE_KERNEL); return vzalloc(size);
} }
static void __tnode_vfree(struct work_struct *arg) static void __tnode_vfree(struct work_struct *arg)
......
...@@ -19,7 +19,7 @@ struct hlist_head *xfrm_hash_alloc(unsigned int sz) ...@@ -19,7 +19,7 @@ struct hlist_head *xfrm_hash_alloc(unsigned int sz)
if (sz <= PAGE_SIZE) if (sz <= PAGE_SIZE)
n = kzalloc(sz, GFP_KERNEL); n = kzalloc(sz, GFP_KERNEL);
else if (hashdist) else if (hashdist)
n = __vmalloc(sz, GFP_KERNEL | __GFP_ZERO, PAGE_KERNEL); n = vzalloc(sz);
else else
n = (struct hlist_head *) n = (struct hlist_head *)
__get_free_pages(GFP_KERNEL | __GFP_NOWARN | __GFP_ZERO, __get_free_pages(GFP_KERNEL | __GFP_NOWARN | __GFP_ZERO,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册