@@ -1312,7 +1312,8 @@ static int mdc_read_page_remote(void *data, struct page *page0)
fid = &op_data->op_fid1;
LASSERT(inode);
- page_pool = kcalloc(max_pages, sizeof(page), GFP_NOFS);
+ page_pool = kvmalloc_array(max_pages, sizeof(page),
+ GFP_KERNEL | __GFP_ZERO);
if (page_pool) {
page_pool[0] = page0;
} else {
@@ -1381,7 +1382,7 @@ static int mdc_read_page_remote(void *data, struct page *page0)
}
if (page_pool != &page0)
- kfree(page_pool);
+ kvfree(page_pool);
return rc;
}
@@ -1350,7 +1350,8 @@ static int mgc_process_recover_log(struct obd_device *obd,
if (cfg->cfg_last_idx == 0) /* the first time */
nrpages = CONFIG_READ_NRPAGES_INIT;
- pages = kcalloc(nrpages, sizeof(*pages), GFP_KERNEL);
+ pages = kvmalloc_array(nrpages, sizeof(*pages),
+ GFP_KERNEL | __GFP_ZERO);
if (!pages) {
rc = -ENOMEM;
goto out;
@@ -1474,7 +1475,7 @@ static int mgc_process_recover_log(struct obd_device *obd,
break;
__free_page(pages[i]);
}
- kfree(pages);
+ kvfree(pages);
}
return rc;
}
@@ -1302,7 +1302,8 @@ static int echo_client_kbrw(struct echo_device *ed, int rw, struct obdo *oa,
if (!pga)
return -ENOMEM;
- pages = kcalloc(npages, sizeof(*pages), GFP_NOFS);
+ pages = kvmalloc_array(npages, sizeof(*pages),
+ GFP_KERNEL | __GFP_ZERO);
if (!pages) {
kfree(pga);
return -ENOMEM;
@@ -1355,7 +1356,7 @@ static int echo_client_kbrw(struct echo_device *ed, int rw, struct obdo *oa,
__free_page(pgp->pg);
}
kfree(pga);
- kfree(pages);
+ kvfree(pages);
return rc;
}
@@ -2323,7 +2323,7 @@ static void sort_brw_pages(struct brw_page **array, int num)
static void osc_release_ppga(struct brw_page **ppga, u32 count)
{
LASSERT(ppga);
- kfree(ppga);
+ kvfree(ppga);
}
static int brw_interpret(const struct lu_env *env,
@@ -2523,7 +2523,8 @@ int osc_build_rpc(const struct lu_env *env, struct client_obd *cli,
if (mem_tight)
mpflag = memalloc_noreclaim_save();
- pga = kcalloc(page_count, sizeof(*pga), GFP_NOFS);
+ pga = kvmalloc_array(page_count, sizeof(*pga),
+ GFP_KERNEL | __GFP_ZERO);
if (!pga) {
rc = -ENOMEM;
goto out;