From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754811AbdERHP7 (ORCPT ); Thu, 18 May 2017 03:15:59 -0400 Received: from mx02-sz.bfs.de ([194.94.69.103]:37116 "EHLO mx02-sz.bfs.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753809AbdERHP5 (ORCPT ); Thu, 18 May 2017 03:15:57 -0400 Message-ID: <591D4A27.7020402@bfs.de> Date: Thu, 18 May 2017 09:15:51 +0200 From: walter harms Reply-To: wharms@bfs.de User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.1.16) Gecko/20101125 SUSE/3.0.11 Thunderbird/3.0.11 MIME-Version: 1.0 To: Colin King CC: Alex Deucher , =?UTF-8?B?Q2hyaXN0aWFuIEvDtg==?= =?UTF-8?B?bmln?= , David Airlie , Rex Zhu , Eric Huang , Huang Rui , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, kernel-janitors@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] drm/amd/powerplay: ensure loop does not wraparound on decrement References: <20170517181346.11715-1-colin.king@canonical.com> In-Reply-To: <20170517181346.11715-1-colin.king@canonical.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Am 17.05.2017 20:13, schrieb Colin King: > From: Colin Ian King > > The current for loop decrements i when it is zero and this causes > a wrap-around back to ~0 because i is unsigned. In the unlikely event > that mask is 0, the loop will run forever. Fix this so we can't loop > forever. > > Detected by CoverityScan, CID#1435469 ("Unsigned compared against 0") > > Signed-off-by: Colin Ian King > --- > drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > index ad30f5d3a10d..d92c9b9b15be 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > @@ -4199,7 +4199,7 @@ static int vega10_force_clock_level(struct pp_hwmgr *hwmgr, > } > data->smc_state_table.gfx_boot_level = i; > > - for (i = 31; i >= 0; i--) { > + for (i = 32; --i; ) { > if (mask & (1 << i)) > break; > } nitpicking: we notices at several points that programmers are bad at counting backwards. Is there a reason not to start with i=0 ? re, wh