Ensure that allocations are freed before returning in case of errors.
CoverityID: 457069 ("Resource leak")
CoverityID: 457073 ("Resource leak")
CoverityID: 457077 ("Resource leak")
Test-Parameters: trivial
Fixes:
ae828cd3b0 ("LU-4684 llite: add lock for dir layout data")
Fixes:
ed4a625d88 ("LU-13717 sec: filename encryption - digest support")
Fixes:
2e2b16c28b ("LU-11025 dne: support directory restripe")
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: I5ff33a7243e1f536e5308f61451f205f232540e5
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/58361
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Arshad Hussain <arshad.hussain@aeoncomputing.com>
Reviewed-by: Timothy Day <timday@amazon.com>
Reviewed-by: Sebastien Buisson <sbuisson@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
* enable further lookup requests.
*/
if (!fid)
- return -EINVAL;
+ GOTO(out_buf, rc = -EINVAL);
digest.ldf_fid = *fid;
memcpy(digest.ldf_excerpt,
LLCRYPT_EXTRACT_DIGEST(lltr.name, lltr.len),
rc = llcrypt_fname_disk_to_usr(inode, hash, minor_hash, &lltr, oname);
- kfree(buf);
oname->name = oname->name - digested;
oname->len = oname->len + digested;
+out_buf:
+ kfree(buf);
return rc;
}
return ERR_PTR(-EINVAL);
}
- if (op_data == NULL)
+ if (op_data == NULL) {
OBD_ALLOC_PTR(op_data);
- else
+ if (op_data == NULL)
+ return ERR_PTR(-ENOMEM);
+ } else {
op_data_alloc_inside = false;
-
- if (op_data == NULL)
- return ERR_PTR(-ENOMEM);
+ }
ll_i2gids(op_data->op_suppgids, i1, i2);
/* If the client is using a subdir mount and looks at what it sees as
smp_load_acquire(&sai->sai_task) &&
lli->lli_sa_enabled) {
struct lu_dirpage *dp;
- struct lu_dirent *ent;
+ struct lu_dirent *ent;
+ struct md_op_data *ret;
- op_data = ll_prep_md_op_data(op_data, dir, dir, NULL, 0, 0,
- LUSTRE_OPC_ANY, dir);
- if (IS_ERR(op_data)) {
- rc = PTR_ERR(op_data);
+ ret = ll_prep_md_op_data(op_data, dir, dir, NULL, 0, 0,
+ LUSTRE_OPC_ANY, dir);
+ if (IS_ERR(ret)) {
+ rc = PTR_ERR(ret);
break;
}
lmv = lmv_buf.lb_buf;
if (!lmv_is_sane(lmv))
- RETURN(-EBADF);
+ GOTO(out_lmv, rc = -EBADF);
lmu = mlc->mlc_buf.lb_buf;
mdd_object_put(env, stripe);
mdd_object_put(env, pobj);
}
+out_lmv:
lu_buf_free(&lmv_buf);
return rc;
}