From: fanyong Date: Fri, 24 Nov 2006 09:49:29 +0000 (+0000) Subject: Add ASSERT for filename validity check. X-Git-Tag: v1_8_0_110~486^2~80 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=dab3408844fcc5d4aeb584224eeb1bd917c67ddc;p=fs%2Flustre-release.git Add ASSERT for filename validity check. --- diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c index 3c69d5a..87c9456 100644 --- a/lustre/mdt/mdt_handler.c +++ b/lustre/mdt/mdt_handler.c @@ -771,8 +771,7 @@ static int mdt_getattr_name_lock(struct mdt_thread_info *info, namelen = req_capsule_get_size(&info->mti_pill, &RMF_NAME, RCL_CLIENT); - /* NOT count the terminating '\0' of filename for length */ - lname = mdt_name(info->mti_env, (char *)name, namelen - 1); + lname = mdt_name(info->mti_env, (char *)name, namelen); CDEBUG(D_INODE, "getattr with lock for "DFID"/%s, ldlm_rep = %p\n", PFID(mdt_object_fid(parent)), name, ldlm_rep); diff --git a/lustre/mdt/mdt_internal.h b/lustre/mdt/mdt_internal.h index 733b7df..2c93107 100644 --- a/lustre/mdt/mdt_internal.h +++ b/lustre/mdt/mdt_internal.h @@ -712,15 +712,19 @@ static inline ldlm_mode_t mdt_mdl_mode2dlm_mode(mdl_mode_t mode) } static inline struct lu_name *mdt_name(const struct lu_env *env, - char *name, int namelen) + char *name, int buflen) { struct lu_name *lname; struct mdt_thread_info *mti; + LASSERT(buflen > 0); + LASSERT(name[buflen - 1] == '\0'); + mti = lu_context_key_get(&env->le_ctx, &mdt_thread_key); lname = &mti->mti_name; lname->ln_name = name; - lname->ln_namelen = namelen; + /* NOT count the terminating '\0' of name for length */ + lname->ln_namelen = buflen - 1; return lname; } diff --git a/lustre/mdt/mdt_open.c b/lustre/mdt/mdt_open.c index 776601e..129e170 100644 --- a/lustre/mdt/mdt_open.c +++ b/lustre/mdt/mdt_open.c @@ -807,7 +807,7 @@ int mdt_reint_open(struct mdt_thread_info *info, struct mdt_lock_handle *lhc) fid_zero(child_fid); - lname = mdt_name(info->mti_env, (char *)rr->rr_name, rr->rr_namelen - 1); + lname = mdt_name(info->mti_env, (char *)rr->rr_name, rr->rr_namelen); result = mdo_lookup(info->mti_env, mdt_object_child(parent), lname, child_fid, &info->mti_spec); diff --git a/lustre/mdt/mdt_reint.c b/lustre/mdt/mdt_reint.c index 5fbc275..545dbc1 100644 --- a/lustre/mdt/mdt_reint.c +++ b/lustre/mdt/mdt_reint.c @@ -83,7 +83,7 @@ static int mdt_md_create(struct mdt_thread_info *info) info->mti_spec.sp_cr_lookup = 1; lname = mdt_name(info->mti_env, (char *)rr->rr_name, - rr->rr_namelen - 1); + rr->rr_namelen); rc = mdo_create(info->mti_env, next, lname, mdt_object_child(child), &info->mti_spec, ma); @@ -435,7 +435,7 @@ static int mdt_reint_unlink(struct mdt_thread_info *info, } /* step 2: find & lock the child */ - lname = mdt_name(info->mti_env, (char *)rr->rr_name, rr->rr_namelen - 1); + lname = mdt_name(info->mti_env, (char *)rr->rr_name, rr->rr_namelen); rc = mdo_lookup(info->mti_env, mdt_object_child(mp), lname, child_fid, &info->mti_spec); if (rc != 0) @@ -554,7 +554,7 @@ static int mdt_reint_link(struct mdt_thread_info *info, mdt_fail_write(info->mti_env, info->mti_mdt->mdt_bottom, OBD_FAIL_MDS_REINT_LINK_WRITE); - lname = mdt_name(info->mti_env, (char *)rr->rr_name, rr->rr_namelen - 1); + lname = mdt_name(info->mti_env, (char *)rr->rr_name, rr->rr_namelen); rc = mdo_link(info->mti_env, mdt_object_child(mp), mdt_object_child(ms), lname, ma); @@ -597,7 +597,7 @@ static int mdt_reint_rename_tgt(struct mdt_thread_info *info) /* step 2: find & lock the target object if exists. */ mdt_set_capainfo(info, 0, rr->rr_fid1, BYPASS_CAPA); - lname = mdt_name(info->mti_env, (char *)rr->rr_tgt, rr->rr_tgtlen - 1); + lname = mdt_name(info->mti_env, (char *)rr->rr_tgt, rr->rr_tgtlen); rc = mdo_lookup(info->mti_env, mdt_object_child(mtgtdir), lname, tgt_fid, &info->mti_spec); if (rc != 0 && rc != -ENOENT) { @@ -814,7 +814,7 @@ static int mdt_reint_rename(struct mdt_thread_info *info, } /* step 3: find & lock the old object. */ - lname = mdt_name(info->mti_env, (char *)rr->rr_name, rr->rr_namelen - 1); + lname = mdt_name(info->mti_env, (char *)rr->rr_name, rr->rr_namelen); rc = mdo_lookup(info->mti_env, mdt_object_child(msrcdir), lname, old_fid, &info->mti_spec); if (rc != 0) @@ -838,7 +838,7 @@ static int mdt_reint_rename(struct mdt_thread_info *info, /* step 4: find & lock the new object. */ /* new target object may not exist now */ - lname = mdt_name(info->mti_env, (char *)rr->rr_tgt, rr->rr_tgtlen - 1); + lname = mdt_name(info->mti_env, (char *)rr->rr_tgt, rr->rr_tgtlen); rc = mdo_lookup(info->mti_env, mdt_object_child(mtgtdir), lname, new_fid, &info->mti_spec); if (rc == 0) {