writeback: fix call of incorrect macro
authorMaxim Korotkov <korotkov.maxim.s@gmail.com>
Thu, 19 Jan 2023 10:44:43 +0000 (13:44 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 May 2023 09:53:33 +0000 (11:53 +0200)
[ Upstream commit 3e46c89c74f2c38e5337d2cf44b0b551adff1cb4 ]

 the variable 'history' is of type u16, it may be an error
 that the hweight32 macro was used for it
 I guess macro hweight16 should be used

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 2a81490811d0 ("writeback: implement foreign cgroup inode detection")
Signed-off-by: Maxim Korotkov <korotkov.maxim.s@gmail.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20230119104443.3002-1-korotkov.maxim.s@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/fs-writeback.c

index aa33c39be182924c99ac2017aab3833880bfff79..d387708977a50d8604afc78074e846036ed3ecbd 100644 (file)
@@ -827,7 +827,7 @@ void wbc_detach_inode(struct writeback_control *wbc)
                 * is okay.  The main goal is avoiding keeping an inode on
                 * the wrong wb for an extended period of time.
                 */
-               if (hweight32(history) > WB_FRN_HIST_THR_SLOTS)
+               if (hweight16(history) > WB_FRN_HIST_THR_SLOTS)
                        inode_switch_wbs(inode, max_id);
        }