On Tue, Sep 25, 2018 at 08:06:26AM +0800, Qu Wenruo wrote: > Although BTRFS_NAME_LEN and XATTR_NAME_MAX is the same value (255), > max(BTRFS_NAME_LEN, XATTR_NAME_MAX) should be optimized as const at > runtime. > > However S390x' arch dependent option "-mwarn-dynamicstack" could still > report it as dyanamic stack allocation. > > Just use BTRFS_NAME_LEN directly to avoid such false alert.
Same reasoning as for the NAME_MAX, these are different things. > Signed-off-by: Qu Wenruo <w...@suse.com> > --- > fs/btrfs/tree-checker.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/btrfs/tree-checker.c b/fs/btrfs/tree-checker.c > index db835635372f..4c045609909b 100644 > --- a/fs/btrfs/tree-checker.c > +++ b/fs/btrfs/tree-checker.c > @@ -336,7 +336,7 @@ static int check_dir_item(struct btrfs_fs_info *fs_info, > */ > if (key->type == BTRFS_DIR_ITEM_KEY || > key->type == BTRFS_XATTR_ITEM_KEY) { > - char namebuf[max(BTRFS_NAME_LEN, XATTR_NAME_MAX)]; > + char namebuf[BTRFS_NAME_LEN]; The updated implementation of max() can now handle the expression without a warning, with sufficiently new compiler so I don't think we need to fix that. Alternatively, you could use BTRFS_NAME_LEN and add a BUILD_BUG_ON(BTRFS_NAME_LEN < XATTR_NAME_MAX) with a comment why. > > read_extent_buffer(leaf, namebuf, > (unsigned long)(di + 1), name_len); > -- > 2.19.0