fs/file.c: replace alloc_fdmem() with kvmalloc() alternative
There is no real reason to duplicate kvmalloc* helpers so drop alloc_fdmem and replace it with the appropriate library function. Link: http://lkml.kernel.org/r/20170531155145.17111-2-mhocko@kernel.org Signed-off-by: Michal Hocko <mhocko@suse.com> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
b74271e40e
commit
c823bd9244
22
fs/file.c
22
fs/file.c
|
@ -30,21 +30,6 @@ unsigned int sysctl_nr_open_min = BITS_PER_LONG;
|
|||
unsigned int sysctl_nr_open_max =
|
||||
__const_min(INT_MAX, ~(size_t)0/sizeof(void *)) & -BITS_PER_LONG;
|
||||
|
||||
static void *alloc_fdmem(size_t size)
|
||||
{
|
||||
/*
|
||||
* Very large allocations can stress page reclaim, so fall back to
|
||||
* vmalloc() if the allocation size will be considered "large" by the VM.
|
||||
*/
|
||||
if (size <= (PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER)) {
|
||||
void *data = kmalloc(size, GFP_KERNEL_ACCOUNT |
|
||||
__GFP_NOWARN | __GFP_NORETRY);
|
||||
if (data != NULL)
|
||||
return data;
|
||||
}
|
||||
return __vmalloc(size, GFP_KERNEL_ACCOUNT, PAGE_KERNEL);
|
||||
}
|
||||
|
||||
static void __free_fdtable(struct fdtable *fdt)
|
||||
{
|
||||
kvfree(fdt->fd);
|
||||
|
@ -131,13 +116,14 @@ static struct fdtable * alloc_fdtable(unsigned int nr)
|
|||
if (!fdt)
|
||||
goto out;
|
||||
fdt->max_fds = nr;
|
||||
data = alloc_fdmem(nr * sizeof(struct file *));
|
||||
data = kvmalloc_array(nr, sizeof(struct file *), GFP_KERNEL_ACCOUNT);
|
||||
if (!data)
|
||||
goto out_fdt;
|
||||
fdt->fd = data;
|
||||
|
||||
data = alloc_fdmem(max_t(size_t,
|
||||
2 * nr / BITS_PER_BYTE + BITBIT_SIZE(nr), L1_CACHE_BYTES));
|
||||
data = kvmalloc(max_t(size_t,
|
||||
2 * nr / BITS_PER_BYTE + BITBIT_SIZE(nr), L1_CACHE_BYTES),
|
||||
GFP_KERNEL_ACCOUNT);
|
||||
if (!data)
|
||||
goto out_arr;
|
||||
fdt->open_fds = data;
|
||||
|
|
Loading…
Reference in New Issue