summaryrefslogtreecommitdiff
path: root/drivers/staging/lustre/lustre/lov
diff options
context:
space:
mode:
authorOleg Drokin <green@linuxhacker.ru>2015-05-16 03:38:33 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-05-31 09:29:45 +0900
commit3959d0cb7e6e1a00cf815278901929534709e72a (patch)
treecf65885acf89c73380d6a0ff85163b268250fb2f /drivers/staging/lustre/lustre/lov
parent38bbb63d94cd024d76db7d39594ae0bc605dd16c (diff)
staging/lustre/ptlrpc: Fix potential NULL pointer dereference
In lov_unpackmd() there's this strange bit of code where we first try to look inside of lmm striping pattern for it's type, and then we check if the pattern is NULL which cannot be right. Move the check under if (lmm) branch so that it's safe. Found by Coverity version 6.6.1 Signed-off-by: Sebastien Buisson <sebastien.buisson@bull.net> Reviewed-on: http://review.whamcloud.com/7827 Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-4049 Reviewed-by: John L. Hammond <john.hammond@intel.com> Reviewed-by: jacques-Charles Lafoucriere <jacques-charles.lafoucriere@cea.fr> Signed-off: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/lustre/lustre/lov')
-rw-r--r--drivers/staging/lustre/lustre/lov/lov_pack.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/staging/lustre/lustre/lov/lov_pack.c b/drivers/staging/lustre/lustre/lov/lov_pack.c
index 5356d5324176..92b9ffece4a0 100644
--- a/drivers/staging/lustre/lustre/lov/lov_pack.c
+++ b/drivers/staging/lustre/lustre/lov/lov_pack.c
@@ -367,9 +367,11 @@ int lov_unpackmd(struct obd_export *exp, struct lov_stripe_md **lsmp,
if (rc)
return rc;
magic = le32_to_cpu(lmm->lmm_magic);
+ pattern = le32_to_cpu(lmm->lmm_pattern);
} else {
magic = LOV_MAGIC;
stripe_count = lov_get_stripecnt(lov, magic, 0);
+ pattern = LOV_PATTERN_RAID0;
}
/* If we aren't passed an lsmp struct, we just want the size */
@@ -384,7 +386,6 @@ int lov_unpackmd(struct obd_export *exp, struct lov_stripe_md **lsmp,
return 0;
}
- pattern = le32_to_cpu(lmm->lmm_pattern);
lsm_size = lov_alloc_memmd(lsmp, stripe_count, pattern, magic);
if (lsm_size < 0)
return lsm_size;