diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2017-04-07 17:41:52 +1000 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2017-04-07 17:41:52 +1000 |
commit | 0be34db467384a383d3a447ccd5c4aa880b1da11 (patch) | |
tree | b86d7faf9e6991b27121b1724abc25d2c4362232 /lib | |
parent | de1e69aae2ee1ddc7caaa42835c5265ffbfd4b27 (diff) | |
parent | e7bdf14d8df77bb938e5ca9ade7de14c94af704b (diff) | |
download | linux-next-0be34db467384a383d3a447ccd5c4aa880b1da11.tar.gz |
Merge branch 'akpm/master'
Diffstat (limited to 'lib')
-rw-r--r-- | lib/iov_iter.c | 5 | ||||
-rw-r--r-- | lib/rhashtable.c | 13 |
2 files changed, 4 insertions, 14 deletions
diff --git a/lib/iov_iter.c b/lib/iov_iter.c index f7c93568ec99..83ecb6bd336f 100644 --- a/lib/iov_iter.c +++ b/lib/iov_iter.c @@ -1028,10 +1028,7 @@ EXPORT_SYMBOL(iov_iter_get_pages); static struct page **get_pages_array(size_t n) { - struct page **p = kmalloc(n * sizeof(struct page *), GFP_KERNEL); - if (!p) - p = vmalloc(n * sizeof(struct page *)); - return p; + return kvmalloc_array(n, sizeof(struct page *), GFP_KERNEL); } static ssize_t pipe_get_pages_alloc(struct iov_iter *i, diff --git a/lib/rhashtable.c b/lib/rhashtable.c index f8635fd57442..2c2c8afcde15 100644 --- a/lib/rhashtable.c +++ b/lib/rhashtable.c @@ -86,16 +86,9 @@ static int alloc_bucket_locks(struct rhashtable *ht, struct bucket_table *tbl, size = min(size, 1U << tbl->nest); if (sizeof(spinlock_t) != 0) { - tbl->locks = NULL; -#ifdef CONFIG_NUMA - if (size * sizeof(spinlock_t) > PAGE_SIZE && - gfp == GFP_KERNEL) - tbl->locks = vmalloc(size * sizeof(spinlock_t)); -#endif - if (gfp != GFP_KERNEL) - gfp |= __GFP_NOWARN | __GFP_NORETRY; - - if (!tbl->locks) + if (gfpflags_allow_blocking(gfp)) + tbl->locks = kvmalloc(size * sizeof(spinlock_t), gfp); + else tbl->locks = kmalloc_array(size, sizeof(spinlock_t), gfp); if (!tbl->locks) |