From 2f24f97209eb631d82632b882f6e066f099c32b0 Mon Sep 17 00:00:00 2001 From: Johann Lombardi Date: Mon, 11 Oct 2010 14:12:00 +0200 Subject: [PATCH] b=23781 fix another potential obdo leak i=hongchao --- lustre/include/lustre/lustre_idl.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lustre/include/lustre/lustre_idl.h b/lustre/include/lustre/lustre_idl.h index 1f13e7b..665ff17 100644 --- a/lustre/include/lustre/lustre_idl.h +++ b/lustre/include/lustre/lustre_idl.h @@ -2078,13 +2078,19 @@ static inline void lustre_set_wire_obdo(struct obdo *wobdo, struct obdo *lobdo) static inline void lustre_get_wire_obdo(struct obdo *lobdo, struct obdo *wobdo) { - obd_flag local_flags = lobdo->o_flags & OBD_FL_LOCAL_MASK; + obd_flag local_flags = 0; + + if (lobdo->o_valid & OBD_MD_FLFLAGS) + local_flags = lobdo->o_flags & OBD_FL_LOCAL_MASK; LASSERT(!(wobdo->o_flags & OBD_FL_LOCAL_MASK)); memcpy(lobdo, wobdo, sizeof(*lobdo)); - lobdo->o_flags &= ~OBD_FL_LOCAL_MASK; - lobdo->o_flags |= local_flags; + if (local_flags != 0) { + lobdo->o_valid |= OBD_MD_FLFLAGS; + lobdo->o_flags &= ~OBD_FL_LOCAL_MASK; + lobdo->o_flags |= local_flags; + } } extern void lustre_swab_obdo (struct obdo *o); -- 1.8.3.1