diff options
Diffstat (limited to 'drivers/staging/lustre/lustre/llite/file.c')
-rw-r--r-- | drivers/staging/lustre/lustre/llite/file.c | 95 |
1 files changed, 38 insertions, 57 deletions
diff --git a/drivers/staging/lustre/lustre/llite/file.c b/drivers/staging/lustre/lustre/llite/file.c index 4b44c634f..3075db211 100644 --- a/drivers/staging/lustre/lustre/llite/file.c +++ b/drivers/staging/lustre/lustre/llite/file.c @@ -213,7 +213,7 @@ out: md_clear_open_replay_data(md_exp, och); /* Free @och if it is not waiting for DONE_WRITING. */ och->och_fh.cookie = DEAD_HANDLE_MAGIC; - OBD_FREE_PTR(och); + kfree(och); } if (req) /* This is close request */ ptlrpc_req_finished(req); @@ -693,7 +693,7 @@ restart: out_och_free: if (rc) { if (och_p && *och_p) { - OBD_FREE(*och_p, sizeof(struct obd_client_handle)); + kfree(*och_p); *och_p = NULL; /* OBD_FREE writes some magic there */ (*och_usecount)--; } @@ -875,7 +875,7 @@ out_close: out_release_it: ll_intent_release(&it); out: - OBD_FREE_PTR(och); + kfree(och); return ERR_PTR(rc); } @@ -1282,7 +1282,7 @@ static int ll_lov_recreate(struct inode *inode, struct ost_id *oi, u32 ost_idx) lsm_size = sizeof(*lsm) + (sizeof(struct lov_oinfo) * (lsm->lsm_stripe_count)); - OBD_ALLOC_LARGE(lsm2, lsm_size); + lsm2 = libcfs_kvzalloc(lsm_size, GFP_NOFS); if (lsm2 == NULL) { rc = -ENOMEM; goto out; @@ -1300,7 +1300,7 @@ static int ll_lov_recreate(struct inode *inode, struct ost_id *oi, u32 ost_idx) rc = obd_create(NULL, exp, oa, &lsm2, &oti); ll_inode_size_unlock(inode); - OBD_FREE_LARGE(lsm2, lsm_size); + kvfree(lsm2); goto out; out: ccc_inode_lsm_put(inode, lsm); @@ -1477,12 +1477,12 @@ static int ll_lov_setea(struct inode *inode, struct file *file, if (!capable(CFS_CAP_SYS_ADMIN)) return -EPERM; - OBD_ALLOC_LARGE(lump, lum_size); + lump = libcfs_kvzalloc(lum_size, GFP_NOFS); if (lump == NULL) return -ENOMEM; if (copy_from_user(lump, (struct lov_user_md *)arg, lum_size)) { - OBD_FREE_LARGE(lump, lum_size); + kvfree(lump); return -EFAULT; } @@ -1490,7 +1490,7 @@ static int ll_lov_setea(struct inode *inode, struct file *file, lum_size); cl_lov_delay_create_clear(&file->f_flags); - OBD_FREE_LARGE(lump, lum_size); + kvfree(lump); return rc; } @@ -1779,7 +1779,7 @@ int ll_fid2path(struct inode *inode, void __user *arg) rc = -EFAULT; gf_free: - OBD_FREE(gfout, outsize); + kfree(gfout); return rc; } @@ -1802,7 +1802,7 @@ static int ll_ioctl_fiemap(struct inode *inode, unsigned long arg) num_bytes = sizeof(*fiemap_s) + (extent_count * sizeof(struct ll_fiemap_extent)); - OBD_ALLOC_LARGE(fiemap_s, num_bytes); + fiemap_s = libcfs_kvzalloc(num_bytes, GFP_NOFS); if (fiemap_s == NULL) return -ENOMEM; @@ -1839,7 +1839,7 @@ static int ll_ioctl_fiemap(struct inode *inode, unsigned long arg) rc = -EFAULT; error: - OBD_FREE_LARGE(fiemap_s, num_bytes); + kvfree(fiemap_s); return rc; } @@ -1883,7 +1883,7 @@ int ll_data_version(struct inode *inode, __u64 *data_version, *data_version = obdo->o_data_version; } - OBD_FREE_PTR(obdo); + kfree(obdo); out: ccc_inode_lsm_put(inode, lsm); return rc; @@ -2109,8 +2109,7 @@ putgl: } free: - if (llss != NULL) - OBD_FREE_PTR(llss); + kfree(llss); return rc; } @@ -2152,22 +2151,20 @@ static int ll_hsm_import(struct inode *inode, struct file *file, /* set HSM flags */ hss = kzalloc(sizeof(*hss), GFP_NOFS); - if (!hss) { - rc = -ENOMEM; - goto out; - } + if (!hss) + return -ENOMEM; hss->hss_valid = HSS_SETMASK | HSS_ARCHIVE_ID; hss->hss_archive_id = hui->hui_archive_id; hss->hss_setmask = HS_ARCHIVED | HS_EXISTS | HS_RELEASED; rc = ll_hsm_state_set(inode, hss); if (rc != 0) - goto out; + goto free_hss; attr = kzalloc(sizeof(*attr), GFP_NOFS); if (!attr) { rc = -ENOMEM; - goto out; + goto free_hss; } attr->ia_mode = hui->hui_mode & (S_IRWXU | S_IRWXG | S_IRWXO); @@ -2193,13 +2190,9 @@ static int ll_hsm_import(struct inode *inode, struct file *file, mutex_unlock(&inode->i_mutex); -out: - if (hss != NULL) - OBD_FREE_PTR(hss); - - if (attr != NULL) - OBD_FREE_PTR(attr); - + kfree(attr); +free_hss: + kfree(hss); return rc; } @@ -2350,7 +2343,7 @@ ll_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg) op_data = ll_prep_md_op_data(NULL, inode, NULL, NULL, 0, 0, LUSTRE_OPC_ANY, hus); if (IS_ERR(op_data)) { - OBD_FREE_PTR(hus); + kfree(hus); return PTR_ERR(op_data); } @@ -2361,25 +2354,20 @@ ll_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg) rc = -EFAULT; ll_finish_md_op_data(op_data); - OBD_FREE_PTR(hus); + kfree(hus); return rc; } case LL_IOC_HSM_STATE_SET: { struct hsm_state_set *hss; int rc; - hss = kzalloc(sizeof(*hss), GFP_NOFS); - if (!hss) - return -ENOMEM; - - if (copy_from_user(hss, (char *)arg, sizeof(*hss))) { - OBD_FREE_PTR(hss); - return -EFAULT; - } + hss = memdup_user((char *)arg, sizeof(*hss)); + if (IS_ERR(hss)) + return PTR_ERR(hss); rc = ll_hsm_state_set(inode, hss); - OBD_FREE_PTR(hss); + kfree(hss); return rc; } case LL_IOC_HSM_ACTION: { @@ -2394,7 +2382,7 @@ ll_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg) op_data = ll_prep_md_op_data(NULL, inode, NULL, NULL, 0, 0, LUSTRE_OPC_ANY, hca); if (IS_ERR(op_data)) { - OBD_FREE_PTR(hca); + kfree(hca); return PTR_ERR(op_data); } @@ -2405,7 +2393,7 @@ ll_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg) rc = -EFAULT; ll_finish_md_op_data(op_data); - OBD_FREE_PTR(hca); + kfree(hca); return rc; } case LL_IOC_SET_LEASE: { @@ -2495,18 +2483,13 @@ ll_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg) case LL_IOC_HSM_IMPORT: { struct hsm_user_import *hui; - hui = kzalloc(sizeof(*hui), GFP_NOFS); - if (!hui) - return -ENOMEM; - - if (copy_from_user(hui, (void *)arg, sizeof(*hui))) { - OBD_FREE_PTR(hui); - return -EFAULT; - } + hui = memdup_user((void *)arg, sizeof(*hui)); + if (IS_ERR(hui)) + return PTR_ERR(hui); rc = ll_hsm_import(inode, file, hui); - OBD_FREE_PTR(hui); + kfree(hui); return rc; } default: { @@ -3062,7 +3045,7 @@ static int ll_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, num_bytes = sizeof(*fiemap) + (extent_count * sizeof(struct ll_fiemap_extent)); - OBD_ALLOC_LARGE(fiemap, num_bytes); + fiemap = libcfs_kvzalloc(num_bytes, GFP_NOFS); if (fiemap == NULL) return -ENOMEM; @@ -3084,7 +3067,7 @@ static int ll_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, fiemap->fm_mapped_extents * sizeof(struct ll_fiemap_extent)); - OBD_FREE_LARGE(fiemap, num_bytes); + kvfree(fiemap); return rc; } @@ -3246,12 +3229,10 @@ void ll_iocontrol_unregister(void *magic) down_write(&llioc.ioc_sem); list_for_each_entry(tmp, &llioc.ioc_head, iocd_list) { if (tmp == magic) { - unsigned int size = tmp->iocd_size; - list_del(&tmp->iocd_list); up_write(&llioc.ioc_sem); - OBD_FREE(tmp, size); + kfree(tmp); return; } } @@ -3375,7 +3356,7 @@ static int ll_layout_fetch(struct inode *inode, struct ldlm_lock *lock) goto out; } - OBD_ALLOC_LARGE(lvbdata, lmmsize); + lvbdata = libcfs_kvzalloc(lmmsize, GFP_NOFS); if (lvbdata == NULL) { rc = -ENOMEM; goto out; @@ -3384,7 +3365,7 @@ static int ll_layout_fetch(struct inode *inode, struct ldlm_lock *lock) memcpy(lvbdata, lmm, lmmsize); lock_res_and_lock(lock); if (lock->l_lvb_data != NULL) - OBD_FREE_LARGE(lock->l_lvb_data, lock->l_lvb_len); + kvfree(lock->l_lvb_data); lock->l_lvb_data = lvbdata; lock->l_lvb_len = lmmsize; @@ -3619,6 +3600,6 @@ int ll_layout_restore(struct inode *inode) hur->hur_request.hr_itemcount = 1; rc = obd_iocontrol(LL_IOC_HSM_REQUEST, cl_i2sbi(inode)->ll_md_exp, len, hur, NULL); - OBD_FREE(hur, len); + kfree(hur); return rc; } |