From: pschwan Date: Tue, 28 Jan 2003 04:17:24 +0000 (+0000) Subject: don't dereference NULL or freed mfd in mds_open X-Git-Tag: v1_7_100~1^94~141 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=c9ef9b5331241dc050ebc493130d539547591783;p=fs%2Flustre-release.git don't dereference NULL or freed mfd in mds_open --- diff --git a/lustre/mds/mds_open.c b/lustre/mds/mds_open.c index dbd3231..8cb45c2 100644 --- a/lustre/mds/mds_open.c +++ b/lustre/mds/mds_open.c @@ -178,17 +178,20 @@ int mds_open(struct mds_update_record *rec, int offset, out_unlock: l_dput(parent); ldlm_lock_decref(&lockh, lock_mode); - if (rc && rc != -EEXIST && mfd != NULL) + if (rc && rc != -EEXIST && mfd != NULL) { kmem_cache_free(mds_file_cache, mfd); + mfd = NULL; + } if (rc) RETURN(rc); out_pack: - body->handle.addr = (__u64)(unsigned long)mfd; - body->handle.cookie = mfd->mfd_servercookie; - if (mfd) + if (mfd) { + body->handle.addr = (__u64)(unsigned long)mfd; + body->handle.cookie = mfd->mfd_servercookie; CDEBUG(D_INODE, "file %p: mfd %p, cookie "LPX64"\n", mfd->mfd_file, mfd, mfd->mfd_servercookie); + } RETURN(0); out_ldput: