Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp1596326ybv; Fri, 21 Feb 2020 00:00:12 -0800 (PST) X-Google-Smtp-Source: APXvYqxyuA7N5zX9nd/2JtFs+/+VAGM2WnRco4fldDTOxozK3YaQtpuHVf/t+3C0+Gebl4wmVW4R X-Received: by 2002:a05:6830:2111:: with SMTP id i17mr25534692otc.24.1582272012381; Fri, 21 Feb 2020 00:00:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582272012; cv=none; d=google.com; s=arc-20160816; b=yVZNII1b5n9+1HLwbSppoUCrs3LQ9rP5yivQ4stBt6X3fizwsIKYjyIyiJFBFe75kY Dg4klKXDrNzOpIBcyxEEZL71oxr1yYl3sg1Af4tG0I18WH4v+t8hOpDveAnT67eTRzKt t7hfQZ4KvskObaKocC++Z6s88lotcAAGC6KH16c1MDOBX90tCSAuZ1krTOkkFrrawsb8 pdau+TGt8yj51f8r4tg3JK+Ja2d+MQ3NlxXA75mkWgpXc9E7uZHM324/9xUaTv4didAs cYZ1q4NVn/DDlE96HlkdR5Tn53thCgXESvZh3fPHCoAwF4b34+ZVoE2kRD68TV8n2Erj lirg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=0Num4IoEW35BtF7/J/YIVGA+JHJhGiqZ97dcwPE0NAE=; b=Y8oi+P8WiF6WmE9FUauYu5/W3Bl3uutfIozlBpO1947Slez35XVB700GrLGsR7NiwH sumIVhmWBjJCr82nUaAA0O5QWu0mHpkrwO8XHpzzEfhU4bvVDR8p33var1O0xv7LfBCk wL0CCE4zEBz/HoK0mGh5saaXAc6KTzu7cpNpjC3yXCAjL+Ts88OCknxkpWGZqURP2Ome 9+i6KvRXHCmVstB5+p1V3iPHJ3Zok/ezTljWQ/iNOAki64F2BLnhQWATFBOnhcbSy48D ueNNrs/SL6Y/D4EgDcrnaimIpbjAumGj+23xSS+VH5xqsUOCvSbNceaifMmZjZ3560zH f94g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=UOSx7aV9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z7si1116129oth.181.2020.02.21.00.00.00; Fri, 21 Feb 2020 00:00:12 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=UOSx7aV9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730972AbgBUH7z (ORCPT + 99 others); Fri, 21 Feb 2020 02:59:55 -0500 Received: from mail.kernel.org ([198.145.29.99]:60034 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730401AbgBUH7x (ORCPT ); Fri, 21 Feb 2020 02:59:53 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B818A2073A; Fri, 21 Feb 2020 07:59:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1582271992; bh=XoLjqGzT8TlCe9ldxSJPulUGD353dP5/aXwrHZtpYuw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UOSx7aV9LTuL20Qkk+0P7MNUqsbSREMqgScSlvflf42pRuX8PAsKSF+vRohjE8yVp 18kBMAKtkVnqcewt9EUyxJTHFBZgQZ/0iyqk5NQZiByDx+iKDXYFV/l0xGa4FotMXS F+avV7wnvcDtoaYYwUCwo7AmDvV0JVduIl1CB9rg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Dan Carpenter , Coly Li , Jens Axboe , Sasha Levin Subject: [PATCH 5.5 375/399] bcache: fix incorrect data type usage in btree_flush_write() Date: Fri, 21 Feb 2020 08:41:40 +0100 Message-Id: <20200221072436.813495037@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200221072402.315346745@linuxfoundation.org> References: <20200221072402.315346745@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Coly Li [ Upstream commit d1c3cc34f5a78b38d2b809b289d912c3560545df ] Dan Carpenter points out that from commit 2aa8c529387c ("bcache: avoid unnecessary btree nodes flushing in btree_flush_write()"), there is a incorrect data type usage which leads to the following static checker warning: drivers/md/bcache/journal.c:444 btree_flush_write() warn: 'ref_nr' unsigned <= 0 drivers/md/bcache/journal.c 422 static void btree_flush_write(struct cache_set *c) 423 { 424 struct btree *b, *t, *btree_nodes[BTREE_FLUSH_NR]; 425 unsigned int i, nr, ref_nr; ^^^^^^ 426 atomic_t *fifo_front_p, *now_fifo_front_p; 427 size_t mask; 428 429 if (c->journal.btree_flushing) 430 return; 431 432 spin_lock(&c->journal.flush_write_lock); 433 if (c->journal.btree_flushing) { 434 spin_unlock(&c->journal.flush_write_lock); 435 return; 436 } 437 c->journal.btree_flushing = true; 438 spin_unlock(&c->journal.flush_write_lock); 439 440 /* get the oldest journal entry and check its refcount */ 441 spin_lock(&c->journal.lock); 442 fifo_front_p = &fifo_front(&c->journal.pin); 443 ref_nr = atomic_read(fifo_front_p); 444 if (ref_nr <= 0) { ^^^^^^^^^^^ Unsigned can't be less than zero. 445 /* 446 * do nothing if no btree node references 447 * the oldest journal entry 448 */ 449 spin_unlock(&c->journal.lock); 450 goto out; 451 } 452 spin_unlock(&c->journal.lock); As the warning information indicates, local varaible ref_nr in unsigned int type is wrong, which does not matche atomic_read() and the "<= 0" checking. This patch fixes the above error by defining local variable ref_nr as int type. Fixes: 2aa8c529387c ("bcache: avoid unnecessary btree nodes flushing in btree_flush_write()") Reported-by: Dan Carpenter Signed-off-by: Coly Li Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- drivers/md/bcache/journal.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/md/bcache/journal.c b/drivers/md/bcache/journal.c index 33ddc5269e8dc..6730820780b06 100644 --- a/drivers/md/bcache/journal.c +++ b/drivers/md/bcache/journal.c @@ -422,7 +422,8 @@ err: static void btree_flush_write(struct cache_set *c) { struct btree *b, *t, *btree_nodes[BTREE_FLUSH_NR]; - unsigned int i, nr, ref_nr; + unsigned int i, nr; + int ref_nr; atomic_t *fifo_front_p, *now_fifo_front_p; size_t mask; -- 2.20.1