From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Carpenter Date: Fri, 20 Jan 2012 07:54:55 +0000 Subject: [patch] Btrfs: fix bitwise vs logical condition Message-Id: <20120120075454.GA2295@elgon.mountain> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Chris Mason , Ilya Dryomov Cc: linux-btrfs@vger.kernel.org, kernel-janitors@vger.kernel.org The intent here was to do a logical && instead of a bitwise &. The original condition tests whether they have the some of same bits set. I have fixed that and rewritten it to be more clear. Signed-off-by: Dan Carpenter --- Warning: This is a static analysis bug and I'm not very familiar with the code. Please review carefully. diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 0b4e2af..0c54027 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -2376,8 +2376,8 @@ static int should_balance_chunk(struct btrfs_root *root, u64 chunk_type = btrfs_chunk_type(leaf, chunk); /* type filter */ - if (!((chunk_type & BTRFS_BLOCK_GROUP_TYPE_MASK) & - (bctl->flags & BTRFS_BALANCE_TYPE_MASK))) { + if (!(chunk_type & BTRFS_BLOCK_GROUP_TYPE_MASK) || + !(bctl->flags & BTRFS_BALANCE_TYPE_MASK)) { return 0; }