Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp528816pxf; Wed, 24 Mar 2021 09:47:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyOj7DNjfm9nDzj9+TZ/d9ipxa4Skfwr5dxhyeqf4//4LTlxu8ITMHR4d0OJhkTqUYDA7eU X-Received: by 2002:a17:906:130c:: with SMTP id w12mr4676814ejb.253.1616604434837; Wed, 24 Mar 2021 09:47:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616604434; cv=none; d=google.com; s=arc-20160816; b=tM0vwTMKybmJUIuN3zid3ICC4R/SkxVvh5DIOfNrewYZfzkH9gF1ABmMuQ/rScT/Xk lhGQNfDzsX6DcrBqYqj9VqwQQ/mzpfmG9AXx0naQmX09/bJnqcjQbMto6UQDWzxbdxu/ m60OND7LxQvGVmA4iML/Ku4pOmALQ7sIEq7mfs01TFeFTHf944QkSpcHdnHQZBiaqTIH 4Ndj98avntvkWJzQwtlRHIRleM4xV2lsI+T8qgFBHwKpDXfIbLBBftWiWlg0jk5tO4w7 T43aogJMkP9cXM4oWvNsRmLYDzpX0EyAjx/Ot8ffFVYZiUyfkJUGYfm5oY2ihUyWZxMI ZSQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=CvV8WVLS4UXmAWQQ6YiQTQi+7tyN75UsHXIvLc66t4s=; b=PKeCEuUNWxm3ularCkOyeAtpaFexYm5bAOA9V0w4oR9PltXNh8YNM5QEjv/8PZxQxV z/cQE7FytUWf5tiLY9ouJFhYhCFIusdi2G5E/4QskH3xXTxRGJ40tO0mmkq4zabGjTMS 9Z+t5l2eYIm0dx2EZkxOGcyMUSPbw6J2wjKMTa0efPlP9qzyNkfv09JYitdLZ3AoqMSw bpIdCTuM6Q4ZjjHq1krX7lA/tQRQOqKB0tvJw6+fotll1wLM6MEUsR8ULs1iS4idAk9e Oga2M+pt61BwbOV2I3Dd/UTb/DG5lxmWCyNq/Oe5nbD53fSGlOPnyw6UYZEd7QwyVVYa n3Cg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="Ip//tYNx"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ka21si2150271ejc.323.2021.03.24.09.46.50; Wed, 24 Mar 2021 09:47:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="Ip//tYNx"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236432AbhCXQnR (ORCPT + 99 others); Wed, 24 Mar 2021 12:43:17 -0400 Received: from mail.kernel.org ([198.145.29.99]:40806 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233671AbhCXQmu (ORCPT ); Wed, 24 Mar 2021 12:42:50 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 7FEA161A15 for ; Wed, 24 Mar 2021 16:42:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1616604170; bh=FpJ4ufMl3GoETEBMXPsfhMl5UzmY31frNljvtIkqZOE=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=Ip//tYNx0qxfnmr4eR3JAA2+Itc24es7mwJQjJL07abkvmQYpDXcO9J8WWxO268/I JFbBlzhLB4pjKpi3ajTdodXBCgK5RLYj6OXrTWOad//1IpkDWh8PA/DxmErNyoY6fi YSJc3LSD6udZE6sznr4+WullETs4zWCfSXkXwGFSkD4OUDddqbDe9Tu0zPZvKfF+g8 J0gqhFSdJKUkkjV+UomcUJZTk8aF2So2W8338Pv32ORTAfG7CDwqERgQBkBNR7aapi eEZic2+cqlNuQNCc/cdhH59T6vYOv+iIzvLiP3V0CcGnlnZo+VcgAdOZFFs6mYNqF6 tUS+8klPf5qIg== Received: by mail-oi1-f177.google.com with SMTP id m13so21441648oiw.13 for ; Wed, 24 Mar 2021 09:42:50 -0700 (PDT) X-Gm-Message-State: AOAM53336HbYhFCezSjpiNK4Dj+9huecPJO/TJSzWE4JxmYzO0IJ6iXi k9OCMBUT5OJYiohetJACeNK/XDzk+E0aGvbTj8I= X-Received: by 2002:a05:6808:3d9:: with SMTP id o25mr3096654oie.4.1616604169767; Wed, 24 Mar 2021 09:42:49 -0700 (PDT) MIME-Version: 1.0 References: <20210324121832.3714570-1-arnd@kernel.org> In-Reply-To: From: Arnd Bergmann Date: Wed, 24 Mar 2021 17:42:34 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] [v2] drm/imx: imx-ldb: fix out of bounds array access warning To: Joe Perches Cc: Philipp Zabel , David Airlie , Daniel Vetter , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Marco Felsch , Laurent Pinchart , Liu Ying , dri-devel , Linux ARM , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 24, 2021 at 3:20 PM Joe Perches wrote: > > On Wed, 2021-03-24 at 13:17 +0100, Arnd Bergmann wrote: > > From: Arnd Bergmann > > > > When CONFIG_OF is disabled, building with 'make W=3D1' produces warning= s > > about out of bounds array access: > > > > drivers/gpu/drm/imx/imx-ldb.c: In function 'imx_ldb_set_clock.constprop= ': > > drivers/gpu/drm/imx/imx-ldb.c:186:8: error: array subscript -22 is belo= w array bounds of 'struct clk *[4]' [-Werror=3Darray-bounds] > > > > Add an error check before the index is used, which helps with the > > warning, as well as any possible other error condition that may be > > triggered at runtime. > > > > The warning could be fixed by adding a Kconfig depedency on CONFIG_OF, > > but Liu Ying points out that the driver may hit the out-of-bounds > > problem at runtime anyway. > > > > Signed-off-by: Arnd Bergmann > > --- > > v2: fix subject line > > expand patch description > > print mux number > > check upper bound as well > [] > > diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ld= b.c > [] > > @@ -197,6 +197,12 @@ static void imx_ldb_encoder_enable(struct drm_enco= der *encoder) > > int dual =3D ldb->ldb_ctrl & LDB_SPLIT_MODE_EN; > > int mux =3D drm_of_encoder_active_port_id(imx_ldb_ch->child, enco= der); > > > > + if (mux < 0 || mux >=3D ARRAY_SIZE(ldb->clk_sel)) { > > + dev_warn(ldb->dev, "%s: invalid mux %d\n", > > + __func__, ERR_PTR(mux)); > > This does not compile without warnings. > > drivers/gpu/drm/imx/imx-ldb.c: In function =E2=80=98imx_ldb_encoder_enabl= e=E2=80=99: > drivers/gpu/drm/imx/imx-ldb.c:201:22: warning: format =E2=80=98%d=E2=80= =99 expects argument of type =E2=80=98int=E2=80=99, but argument 4 has type= =E2=80=98void *=E2=80=99 [-Wformat=3D] > 201 | dev_warn(ldb->dev, "%s: invalid mux %d\n", > | ^~~~~~~~~~~~~~~~~~~~~~ > > If you want to use ERR_PTR, the %d should be %pe as ERR_PTR > is converting an int a void * to decode the error type and > emit it as a string. Sorry about that. I decided against using ERR_PTR() in order to also check for positive array overflow, but the version I tested was different from the version I sent. v3 coming. Arnd