From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753928AbcHUVVq (ORCPT ); Sun, 21 Aug 2016 17:21:46 -0400 Received: from mout.gmx.net ([212.227.17.20]:52829 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753353AbcHUVUY (ORCPT ); Sun, 21 Aug 2016 17:20:24 -0400 Subject: Re: [PATCH 1/1] drm/radeon: avoid NULL dereference, si_get_vce_clock_voltage To: Joe Perches , Heinrich Schuchardt , Alex Deucher , =?UTF-8?Q?Christian_K=c3=b6nig?= References: <1471812743-5095-1-git-send-email-xypron.glpk@gmx.de> <1471813562.3746.23.camel@perches.com> Cc: David Airlie , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org From: Heinrich Schuchardt Message-ID: <6345f323-9fc5-6d26-f646-0a0a5989c34d@gmx.de> Date: Sun, 21 Aug 2016 23:20:06 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.2.0 MIME-Version: 1.0 In-Reply-To: <1471813562.3746.23.camel@perches.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:bj1q5/VfD1EoseuR6g2mt9kigMEWNPheF4SfkIlRlEZ7m9fHGaq tVfJS9nybUU1mn3jhVycNX2ziuwl2D2KmmeauyGi3eM90uI/ubMvLsRDFju4zSKRBCJ6/B+ s5dkzNyt9IXGlmHdEvrP834Wjub9Qp96swnaPoVJKtYywYTHTI4/YmpRE7u1XFC+YMiZO7K p7R9elOlrEgEU2qiertNw== X-UI-Out-Filterresults: notjunk:1;V01:K0:nv8QdeXNCIw=:TsI6tq571xRcCMArQKscXR IURnWARkAvyOlGLbYQaQPn+53uaTDCvrgjxIsdc3bjRyKxiXp7B75tHdPMNwT/9ueXov3PZBb BsXPuttI7Y7BlxjrQbmbYt0Ege22B7zk4/Oh7ruXRHH27zCKFmiMYTDUNekrqkxLcWyES0q+D P9+v/ZoqbCWOxXzNBiGm3r5V7mj5ptmo9E6AAOvQ9Sg+YYyoJETj1FEdCN2GfnViQ4McOPLub dqA93sU72aN0oEPpAiqi/HcgzVRrNxjsStkoie6W3QytWBdh9s1PPPmNGvonra7ZI3B2S5Vq/ y0tGf6C2z+ljCN2pZgrEIKQJ3BuOM0zobsnJWXiDUuF69pg/mumLv92FUAnYX0KC8/BjbDlTK U5nCkWHbWO0YZfCT/cYajdBiHIJ+/yFZ0f+h8utYXV9DWows/MMDWiD1L61LDDx4QTfrCW+hA KbxSFo9qkgz2/uFUEyXui4zIhypRWBnS9j89LxiHTYhgspieR2eqLAfNLBwg3oqxrTKv5RX/z LMN/8gOnArU9pwrFDhTNY4lacyPDMHMjA4ZbIyD1LgWhiE4UaMIMDmf+M6CZXHmW9tRombUtF EhbUgcSQV7thC2HvPQRb2Pyhx6pEfnR2e3TJzpHm6z03IjiGcSeDrdb5WsZjNw9q7dADeMiPe umAWcCEkeldFn9oCtNSCqDD9akW9dwt5cGLlWFt1ge+Uu6NmA0ik0GDBN/9yIFu6u2sWpdDYP TuKV/q8ImlFxeRgo+d86vjaTmiQ2x4aKxBEnnD+v0KFhY9Y/qBbMltVL3U9AvJopIv0rL/ELY 1r5Ecv4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/21/2016 11:06 PM, Joe Perches wrote: > On Sun, 2016-08-21 at 22:52 +0200, Heinrich Schuchardt wrote: >> It does not make sense to check if table is NULL >> and afterwards to dereference it without >> considering the result. > > This makes no sense. > >> The inconsistency was indicated by cppcheck. > > Perhaps this is a defect in cppcheck? > >> An actual NULL pointer dereference was not observed. > [] >> diff --git a/drivers/gpu/drm/radeon/si_dpm.c b/drivers/gpu/drm/radeon/si_dpm.c > [] >> @@ -2962,7 +2962,7 @@ static int si_get_vce_clock_voltage(struct radeon_device *rdev, >> &rdev->pm.dpm.dyn_state.vce_clock_voltage_dependency_table; >> >> if (((evclk == 0) && (ecclk == 0)) || >> - (table && (table->count == 0))) { > > Here table is only dereferenced if table is non-null > >> + table == NULL || table->count == 0) { >> *voltage = 0; >> return 0; >> } > > Perhaps the unnecessary parentheses can be reduce though. > > if ((evclk == 0 && ecclk == 0) || (table && table->count == 0)) { > The possible NULL pointer dereference would occur here: 2970 for (i = 0; i < table->count; i++) {