From: Peng Tao <bergwolf@gmail.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-kernel@vger.kernel.org,
Sebastien Buisson <sebastien.buisson@bull.net>,
James Nunez <james.a.nunez@intel.com>,
Peng Tao <bergwolf@gmail.com>,
Andreas Dilger <andreas.dilger@intel.com>
Subject: [PATCH 31/39] staging/lustre/build: fix 'NULL pointer dereference' errors
Date: Fri, 15 Nov 2013 00:32:54 +0800 [thread overview]
Message-ID: <1384446782-13741-32-git-send-email-bergwolf@gmail.com> (raw)
In-Reply-To: <1384446782-13741-1-git-send-email-bergwolf@gmail.com>
From: Sebastien Buisson <sebastien.buisson@bull.net>
Fix 'NULL pointer dereference' defects found by Coverity version
6.5.0:
Dereference after null check (FORWARD_NULL)
For instance, Passing null pointer to a function which dereferences
it.
Dereference before null check (REVERSE_INULL)
Null-checking variable suggests that it may be null, but it has
already been dereferenced on all paths leading to the check.
Dereference null return value (NULL_RETURNS)
Lustre-change: http://review.whamcloud.com/5868
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3042
Signed-off-by: Sebastien Buisson <sebastien.buisson@bull.net>
Signed-off-by: James Nunez <james.a.nunez@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
Signed-off-by: Peng Tao <bergwolf@gmail.com>
Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
---
.../staging/lustre/lustre/include/lustre_update.h | 3 ++-
drivers/staging/lustre/lustre/llite/dir.c | 17 ++++++++++++-----
drivers/staging/lustre/lustre/lov/lov_io.c | 3 ++-
3 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/drivers/staging/lustre/lustre/include/lustre_update.h b/drivers/staging/lustre/lustre/include/lustre_update.h
index 84defce..3f424af 100644
--- a/drivers/staging/lustre/lustre/include/lustre_update.h
+++ b/drivers/staging/lustre/lustre/include/lustre_update.h
@@ -165,12 +165,13 @@ static inline int update_get_reply_buf(struct update_reply *reply, void **buf,
int result;
ptr = update_get_buf_internal(reply, index, &size);
+ LASSERT(ptr != NULL);
result = *(int *)ptr;
if (result < 0)
return result;
- LASSERT((ptr != NULL && size >= sizeof(int)));
+ LASSERT(size >= sizeof(int));
*buf = ptr + sizeof(int);
return size - sizeof(int);
}
diff --git a/drivers/staging/lustre/lustre/llite/dir.c b/drivers/staging/lustre/lustre/llite/dir.c
index f52c624..1856701 100644
--- a/drivers/staging/lustre/lustre/llite/dir.c
+++ b/drivers/staging/lustre/lustre/llite/dir.c
@@ -597,23 +597,30 @@ static int ll_readdir(struct file *filp, struct dir_context *ctx)
struct inode *inode = filp->f_dentry->d_inode;
struct ll_file_data *lfd = LUSTRE_FPRIVATE(filp);
struct ll_sb_info *sbi = ll_i2sbi(inode);
+ __u64 pos;
int hash64 = sbi->ll_flags & LL_SBI_64BIT_HASH;
int api32 = ll_need_32bit_api(sbi);
int rc;
- CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p) pos %lu/%llu "
+ if (lfd != NULL)
+ pos = lfd->lfd_pos;
+ else
+ pos = 0;
+
+ CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p) pos %llu/%llu "
" 32bit_api %d\n", inode->i_ino, inode->i_generation,
- inode, (unsigned long)lfd->lfd_pos, i_size_read(inode), api32);
+ inode, pos, i_size_read(inode), api32);
- if (lfd->lfd_pos == MDS_DIR_END_OFF)
+ if (pos == MDS_DIR_END_OFF)
/*
* end-of-file.
*/
GOTO(out, rc = 0);
- ctx->pos = lfd->lfd_pos;
+ ctx->pos = pos;
rc = ll_dir_read(inode, ctx);
- lfd->lfd_pos = ctx->pos;
+ if (lfd != NULL)
+ lfd->lfd_pos = ctx->pos;
if (ctx->pos == MDS_DIR_END_OFF) {
if (api32)
ctx->pos = LL_DIR_END_OFF_32BIT;
diff --git a/drivers/staging/lustre/lustre/lov/lov_io.c b/drivers/staging/lustre/lustre/lov/lov_io.c
index 5a6ab70..cdd69232 100644
--- a/drivers/staging/lustre/lustre/lov/lov_io.c
+++ b/drivers/staging/lustre/lustre/lov/lov_io.c
@@ -272,10 +272,11 @@ struct lov_io_sub *lov_page_subio(const struct lu_env *env, struct lov_io *lio,
static int lov_io_subio_init(const struct lu_env *env, struct lov_io *lio,
struct cl_io *io)
{
- struct lov_stripe_md *lsm = lio->lis_object->lo_lsm;
+ struct lov_stripe_md *lsm;
int result;
LASSERT(lio->lis_object != NULL);
+ lsm = lio->lis_object->lo_lsm;
/*
* Need to be optimized, we can't afford to allocate a piece of memory
--
1.7.9.5
next prev parent reply other threads:[~2013-11-14 16:52 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-14 16:32 [PATCH 00/39] staging/lustre: patch bomb 2 Peng Tao
2013-11-14 16:32 ` [PATCH 01/39] staging/lustre/hsm: remove hsm_nl proc file Peng Tao
2013-11-15 4:26 ` Greg Kroah-Hartman
2013-11-15 10:32 ` Peng Tao
2013-11-14 16:32 ` [PATCH 02/39] staging/lustre/clio: wrong cl_lock usage Peng Tao
2013-11-14 16:32 ` [PATCH 03/39] staging/lustre/build: fix 'deadcode' errors Peng Tao
2013-11-14 16:32 ` [PATCH 04/39] staging/lustre/build: fix 'integer handling' issues Peng Tao
2013-11-14 16:32 ` [PATCH 05/39] staging/lustre/ptlrpc: add rpc_cache Peng Tao
2013-11-14 16:32 ` [PATCH 06/39] staging/lustre/lnet: build Lustre with Intel OFED for Xeon Phi Peng Tao
2013-11-14 16:32 ` [PATCH 07/39] staging/lustre/osd-ldiskfs: remove dependency on mdd module Peng Tao
2013-11-14 16:32 ` [PATCH 08/39] staging/lustre/libcfs: improve validity test for valid file descriptors Peng Tao
2013-11-14 16:32 ` [PATCH 09/39] staging/lustre/llite: use 64bits flags in ll_lov_setea() Peng Tao
2013-11-14 16:32 ` [PATCH 10/39] staging/lustre/hsm: small fixes for HSM Peng Tao
2013-11-14 16:32 ` [PATCH 11/39] staging/lustre/mdt: CDT cleanup follow-on patch Peng Tao
2013-11-14 16:32 ` [PATCH 12/39] staging/lustre/utils: Posix copytool fixes Peng Tao
2013-11-14 16:32 ` [PATCH 13/39] staging/lustre/lmv: update coding style Peng Tao
2013-11-14 16:32 ` [PATCH 14/39] staging/lustre/hsm: copy start error should set HP_FLAG_COMPLETED Peng Tao
2013-11-14 16:32 ` [PATCH 15/39] staging/lustre/lov: Get the correct address of lmm_objects Peng Tao
2013-11-14 16:32 ` [PATCH 16/39] staging/lustre/lvfs: remove llog_lvfs.c and other lvfs code from llog Peng Tao
2013-11-14 16:32 ` [PATCH 17/39] staging/lustre/llite: reset writeback index in ll_writepages Peng Tao
2013-11-14 16:32 ` [PATCH 18/39] staging/lustre/llite: Delaying creation of client side proc entries Peng Tao
2013-11-14 16:32 ` [PATCH 19/39] staging/lustre/libcfs: Add relocation function to libcfs heap Peng Tao
2013-11-14 16:32 ` [PATCH 20/39] staging/lustre/build: fix 'data race condition' issues Peng Tao
2013-11-14 16:32 ` [PATCH 21/39] staging/lustre/autoconf: remove LC_LOCK_MAP_ACQUIRE test Peng Tao
2013-11-14 16:32 ` [PATCH 22/39] staging/lustre/mdc: document mdc_rpc_lock Peng Tao
2013-11-14 16:32 ` [PATCH 23/39] staging/lustre/autoconf: remove LC_FS_STRUCT_USE_PATH Peng Tao
2013-11-14 16:32 ` [PATCH 24/39] staging/lustre/obdclass: fix wrong device put in case of race Peng Tao
2013-11-14 16:32 ` [PATCH 25/39] staging/lustre/lmv: choose right MDT for open by FID Peng Tao
2013-11-14 16:32 ` [PATCH 26/39] staging/lustre/osd: remove fld lookup during configuration Peng Tao
2013-11-14 16:32 ` [PATCH 27/39] staging/lustre/mdt: HSM EXIST event not triggered at last rm/mv Peng Tao
2013-11-14 16:32 ` [PATCH 28/39] staging/lustre/ldlm: ldlm_flock_deadlock() ASSERTION( req != lock ) failed Peng Tao
2013-11-14 16:32 ` [PATCH 29/39] staging/lustre/changelogs: Account for changelog_ext_rec in CR_MAXSIZE Peng Tao
2013-11-14 16:32 ` [PATCH 30/39] staging/lustre/build: build error with gcc 4.7.0 20110509 Peng Tao
2013-11-14 16:32 ` Peng Tao [this message]
2013-11-14 16:32 ` [PATCH 32/39] staging/lustre/clio: honor O_NOATIME Peng Tao
2013-11-14 16:32 ` [PATCH 33/39] staging/lustre/llite: return compatible fsid for statfs Peng Tao
2013-11-14 16:32 ` [PATCH 34/39] staging/lustre/llite: cancel open lock before closing file Peng Tao
2013-11-14 16:32 ` [PATCH 35/39] staging/lustre/hsm: Add support to drop all pages for ll_data_version Peng Tao
2013-11-14 16:32 ` [PATCH 36/39] staging/lustre/build: fix 'no effect' errors Peng Tao
2013-11-14 16:33 ` [PATCH 37/39] staging/lustre/obd: add md_stats to MDC and LMV devices Peng Tao
2013-11-14 16:33 ` [PATCH 38/39] staging/lustre/autoconf: remove LC_SECURITY_PLUG test Peng Tao
2013-11-14 16:33 ` [PATCH 39/39] staging/lustre/osc: Lustre returns EINTR from writes when SA_RESTART is set Peng Tao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1384446782-13741-32-git-send-email-bergwolf@gmail.com \
--to=bergwolf@gmail.com \
--cc=andreas.dilger@intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=james.a.nunez@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sebastien.buisson@bull.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.