From: Jan Kara <jack@suse.com>
Subject: xfsprogs: Fix attr leaf block definition

struct xfs_attr_leafblock contains 'entries' array which is declared with
size 1 altough it can in fact contain much more entries. Since this array
is followed by further struct members, gcc (at least in version 4.8.3) thinks
that the delared size of the array is the real one and thus optimizes away
all accesses beyond the end of array resulting in non-working code.

Since the additional declarations are never used, just remove them which makes
gcc stop optimizing away accesses beyond the end of array.

Signed-off-by: Jan Kara <jack@suse.com>

Index: b/include/xfs_attr_leaf.h
===================================================================
--- a/include/xfs_attr_leaf.h
+++ b/include/xfs_attr_leaf.h
@@ -111,8 +111,14 @@ typedef struct xfs_attr_leaf_name_remote
 typedef struct xfs_attr_leafblock {
 	xfs_attr_leaf_hdr_t	hdr;	/* constant-structure header block */
 	xfs_attr_leaf_entry_t	entries[1];	/* sorted on key, not name */
+	/*
+	 * Comment below definitions out so that gcc doesn't optimize away
+	 * accesses into 'entries' for indexes larger than 1
+	 */
+#if 0
 	xfs_attr_leaf_name_local_t namelist;	/* grows from bottom of buf */
 	xfs_attr_leaf_name_remote_t valuelist;	/* grows from bottom of buf */
+#endif
 } xfs_attr_leafblock_t;
 
 /*
