summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorStephen Rothwell <sfr@canb.auug.org.au>2017-04-07 17:41:52 +1000
committerStephen Rothwell <sfr@canb.auug.org.au>2017-04-07 17:41:52 +1000
commit0be34db467384a383d3a447ccd5c4aa880b1da11 (patch)
treeb86d7faf9e6991b27121b1724abc25d2c4362232 /lib
parentde1e69aae2ee1ddc7caaa42835c5265ffbfd4b27 (diff)
parente7bdf14d8df77bb938e5ca9ade7de14c94af704b (diff)
downloadlinux-next-0be34db467384a383d3a447ccd5c4aa880b1da11.tar.gz
Merge branch 'akpm/master'
Diffstat (limited to 'lib')
-rw-r--r--lib/iov_iter.c5
-rw-r--r--lib/rhashtable.c13
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)