mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 02:21:52 +09:00
staging: lustre: fix 'NULL pointer dereference' errors
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) Signed-off-by: Sebastien Buisson <sbuisson@ddn.com> Signed-off-by: James Nunez <james.a.nunez@intel.com> Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3042 Reviewed-on: http://review.whamcloud.com/5868 Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com> Reviewed-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: James Simmons <jsimmons@infradead.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
a7a9ed4b5d
commit
0fcd869f9e
@@ -611,15 +611,16 @@ static int ll_readdir(struct file *filp, struct dir_context *ctx)
|
||||
struct inode *inode = file_inode(filp);
|
||||
struct ll_file_data *lfd = LUSTRE_FPRIVATE(filp);
|
||||
struct ll_sb_info *sbi = ll_i2sbi(inode);
|
||||
__u64 pos = lfd ? lfd->lfd_pos : 0;
|
||||
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 32bit_api %d\n",
|
||||
inode->i_ino, inode->i_generation,
|
||||
inode, (unsigned long)lfd->lfd_pos, i_size_read(inode), api32);
|
||||
inode, (unsigned long)pos, i_size_read(inode), api32);
|
||||
|
||||
if (lfd->lfd_pos == MDS_DIR_END_OFF) {
|
||||
if (pos == MDS_DIR_END_OFF) {
|
||||
/*
|
||||
* end-of-file.
|
||||
*/
|
||||
@@ -627,9 +628,10 @@ static int ll_readdir(struct file *filp, struct dir_context *ctx)
|
||||
goto out;
|
||||
}
|
||||
|
||||
ctx->pos = lfd->lfd_pos;
|
||||
ctx->pos = pos;
|
||||
rc = ll_dir_read(inode, ctx);
|
||||
lfd->lfd_pos = ctx->pos;
|
||||
if (lfd)
|
||||
lfd->lfd_pos = ctx->pos;
|
||||
if (ctx->pos == MDS_DIR_END_OFF) {
|
||||
if (api32)
|
||||
ctx->pos = LL_DIR_END_OFF_32BIT;
|
||||
|
||||
@@ -277,10 +277,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);
|
||||
lsm = lio->lis_object->lo_lsm;
|
||||
|
||||
/*
|
||||
* Need to be optimized, we can't afford to allocate a piece of memory
|
||||
|
||||
Reference in New Issue
Block a user