Message ID | a1bedd480c31bcc2f48cd6d965a9bb853e8786ee.1525436031.git.mchehab+samsung@kernel.org (mailing list archive) |
---|---|
State | Obsoleted, archived |
Delegated to: | Mauro Carvalho Chehab |
Headers |
Received: from vger.kernel.org ([209.132.180.67]) by www.linuxtv.org with esmtp (Exim 4.84_2) (envelope-from <linux-media-owner@vger.kernel.org>) id 1fEZbC-0007vs-VI; Fri, 04 May 2018 12:14:07 +0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751261AbeEDMOE (ORCPT <rfc822;mkrufky@linuxtv.org> + 1 other); Fri, 4 May 2018 08:14:04 -0400 Received: from osg.samsung.com ([64.30.133.232]:64919 "EHLO osg.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751107AbeEDMOD (ORCPT <rfc822;linux-media@vger.kernel.org>); Fri, 4 May 2018 08:14:03 -0400 Received: from localhost (localhost [127.0.0.1]) by osg.samsung.com (Postfix) with ESMTP id 5750E1E19D; Fri, 4 May 2018 05:14:03 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at dev.s-opensource.com Received: from osg.samsung.com ([127.0.0.1]) by localhost (localhost [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id LNJyPNNzB0IZ; Fri, 4 May 2018 05:14:02 -0700 (PDT) Received: from smtp.s-opensource.com (177.17.129.114.dynamic.adsl.gvt.net.br [177.17.129.114]) by osg.samsung.com (Postfix) with ESMTPSA id 4CF2B1E197; Fri, 4 May 2018 05:14:02 -0700 (PDT) Received: from mchehab by smtp.s-opensource.com with local (Exim 4.90_1) (envelope-from <mchehab@smtp.s-opensource.com>) id 1fEZb5-0000gj-Uc; Fri, 04 May 2018 08:13:59 -0400 From: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Cc: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>, Linux Media Mailing List <linux-media@vger.kernel.org>, Mauro Carvalho Chehab <mchehab@infradead.org>, Laurent Pinchart <laurent.pinchart@ideasonboard.com>, linux-renesas-soc@vger.kernel.org Subject: [PATCH] media: vsp1: cleanup a false positive warning Date: Fri, 4 May 2018 08:13:58 -0400 Message-Id: <a1bedd480c31bcc2f48cd6d965a9bb853e8786ee.1525436031.git.mchehab+samsung@kernel.org> X-Mailer: git-send-email 2.17.0 To: unlisted-recipients:; (no To-header on input) Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: <linux-media.vger.kernel.org> X-Mailing-List: linux-media@vger.kernel.org |
Commit Message
Mauro Carvalho Chehab
May 4, 2018, 12:13 p.m. UTC
With the new vsp1 code changes introduced by changeset
f81f9adc4ee1 ("media: v4l: vsp1: Assign BRU and BRS to pipelines dynamically"),
smatch complains with:
drivers/media/platform/vsp1/vsp1_drm.c:262 vsp1_du_pipeline_setup_bru() error: we previously assumed 'pipe->bru' could be null (see line 180)
This is a false positive, as, if pipe->bru is NULL, the brx
var will be different, with ends by calling a code that will
set pipe->bru to another value.
Yet, cleaning this false positive is as easy as adding an explicit
check if pipe->bru is NULL.
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
---
drivers/media/platform/vsp1/vsp1_drm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
Hi Mauro, On Fri, May 4, 2018 at 2:13 PM, Mauro Carvalho Chehab <mchehab+samsung@kernel.org> wrote: > With the new vsp1 code changes introduced by changeset > f81f9adc4ee1 ("media: v4l: vsp1: Assign BRU and BRS to pipelines dynamically"), > smatch complains with: > drivers/media/platform/vsp1/vsp1_drm.c:262 vsp1_du_pipeline_setup_bru() error: we previously assumed 'pipe->bru' could be null (see line 180) > > This is a false positive, as, if pipe->bru is NULL, the brx > var will be different, with ends by calling a code that will > set pipe->bru to another value. > > Yet, cleaning this false positive is as easy as adding an explicit > check if pipe->bru is NULL. > > Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Thanks for your patch! s/bru/brx/ > --- a/drivers/media/platform/vsp1/vsp1_drm.c > +++ b/drivers/media/platform/vsp1/vsp1_drm.c > @@ -185,7 +185,7 @@ static int vsp1_du_pipeline_setup_brx(struct vsp1_device *vsp1, > brx = &vsp1->brs->entity; > > /* Switch BRx if needed. */ > - if (brx != pipe->brx) { > + if (brx != pipe->brx || !pipe->brx) { > struct vsp1_entity *released_brx = NULL; > > /* Release our BRx if we have one. */ Gr{oetje,eeting}s, Geert
Em Fri, 4 May 2018 16:37:23 +0200 Geert Uytterhoeven <geert@linux-m68k.org> escreveu: > Hi Mauro, > > On Fri, May 4, 2018 at 2:13 PM, Mauro Carvalho Chehab > <mchehab+samsung@kernel.org> wrote: > > With the new vsp1 code changes introduced by changeset > > f81f9adc4ee1 ("media: v4l: vsp1: Assign BRU and BRS to pipelines dynamically"), > > smatch complains with: > > drivers/media/platform/vsp1/vsp1_drm.c:262 vsp1_du_pipeline_setup_bru() error: we previously assumed 'pipe->bru' could be null (see line 180) > > > > This is a false positive, as, if pipe->bru is NULL, the brx > > var will be different, with ends by calling a code that will > > set pipe->bru to another value. > > > > Yet, cleaning this false positive is as easy as adding an explicit > > check if pipe->bru is NULL. > > > > Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> > > Thanks for your patch! > > s/bru/brx/ Hah, yeah... there was a rename from bru->brx... I guess that confused me, as I saw this error before the renaming patch (even though I wrote it to be applied after them) :-) > > > --- a/drivers/media/platform/vsp1/vsp1_drm.c > > +++ b/drivers/media/platform/vsp1/vsp1_drm.c > > @@ -185,7 +185,7 @@ static int vsp1_du_pipeline_setup_brx(struct vsp1_device *vsp1, > > brx = &vsp1->brs->entity; > > > > /* Switch BRx if needed. */ > > - if (brx != pipe->brx) { > > + if (brx != pipe->brx || !pipe->brx) { > > struct vsp1_entity *released_brx = NULL; > > > > /* Release our BRx if we have one. */ > > Gr{oetje,eeting}s, > > Geert > Thanks, Mauro
Hi Mauro, Thank you for the patch. On Friday, 4 May 2018 15:13:58 EEST Mauro Carvalho Chehab wrote: > With the new vsp1 code changes introduced by changeset > f81f9adc4ee1 ("media: v4l: vsp1: Assign BRU and BRS to pipelines > dynamically"), smatch complains with: > drivers/media/platform/vsp1/vsp1_drm.c:262 vsp1_du_pipeline_setup_bru() > error: we previously assumed 'pipe->bru' could be null (see line 180) > > This is a false positive, as, if pipe->bru is NULL, the brx > var will be different, with ends by calling a code that will > set pipe->bru to another value. > > Yet, cleaning this false positive is as easy as adding an explicit > check if pipe->bru is NULL. It's not very difficult indeed, but it really is a false positive. I think the proposed change decreases readability, the condition currently reads as "if (new brx != old brx)", why does smatch even flag that as an error ? > Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> > --- > drivers/media/platform/vsp1/vsp1_drm.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/media/platform/vsp1/vsp1_drm.c > b/drivers/media/platform/vsp1/vsp1_drm.c index 095dc48aa25a..cb6b60843400 > 100644 > --- a/drivers/media/platform/vsp1/vsp1_drm.c > +++ b/drivers/media/platform/vsp1/vsp1_drm.c > @@ -185,7 +185,7 @@ static int vsp1_du_pipeline_setup_brx(struct vsp1_device > *vsp1, brx = &vsp1->brs->entity; > > /* Switch BRx if needed. */ > - if (brx != pipe->brx) { > + if (brx != pipe->brx || !pipe->brx) { > struct vsp1_entity *released_brx = NULL; > > /* Release our BRx if we have one. */
Em Mon, 07 May 2018 17:05:24 +0300 Laurent Pinchart <laurent.pinchart@ideasonboard.com> escreveu: > Hi Mauro, > > Thank you for the patch. > > On Friday, 4 May 2018 15:13:58 EEST Mauro Carvalho Chehab wrote: > > With the new vsp1 code changes introduced by changeset > > f81f9adc4ee1 ("media: v4l: vsp1: Assign BRU and BRS to pipelines > > dynamically"), smatch complains with: > > drivers/media/platform/vsp1/vsp1_drm.c:262 vsp1_du_pipeline_setup_bru() > > error: we previously assumed 'pipe->bru' could be null (see line 180) > > > > This is a false positive, as, if pipe->bru is NULL, the brx > > var will be different, with ends by calling a code that will > > set pipe->bru to another value. > > > > Yet, cleaning this false positive is as easy as adding an explicit > > check if pipe->bru is NULL. > > It's not very difficult indeed, but it really is a false positive. I think the > proposed change decreases readability, the condition currently reads as "if > (new brx != old brx)", why does smatch even flag that as an error ? I've no idea. Never studied smatch code. If you don't think that this is a fix for it, do you have an alternative patch (either to smatch or to vsp1)? Regards, Mauro > > > Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> > > --- > > drivers/media/platform/vsp1/vsp1_drm.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/media/platform/vsp1/vsp1_drm.c > > b/drivers/media/platform/vsp1/vsp1_drm.c index 095dc48aa25a..cb6b60843400 > > 100644 > > --- a/drivers/media/platform/vsp1/vsp1_drm.c > > +++ b/drivers/media/platform/vsp1/vsp1_drm.c > > @@ -185,7 +185,7 @@ static int vsp1_du_pipeline_setup_brx(struct vsp1_device > > *vsp1, brx = &vsp1->brs->entity; > > > > /* Switch BRx if needed. */ > > - if (brx != pipe->brx) { > > + if (brx != pipe->brx || !pipe->brx) { > > struct vsp1_entity *released_brx = NULL; > > > > /* Release our BRx if we have one. */ > Thanks, Mauro
Em Mon, 7 May 2018 12:21:03 -0300 Mauro Carvalho Chehab <mchehab+samsung@kernel.org> escreveu: > Em Mon, 07 May 2018 17:05:24 +0300 > Laurent Pinchart <laurent.pinchart@ideasonboard.com> escreveu: > > > Hi Mauro, > > > > Thank you for the patch. > > > > On Friday, 4 May 2018 15:13:58 EEST Mauro Carvalho Chehab wrote: > > > With the new vsp1 code changes introduced by changeset > > > f81f9adc4ee1 ("media: v4l: vsp1: Assign BRU and BRS to pipelines > > > dynamically"), smatch complains with: > > > drivers/media/platform/vsp1/vsp1_drm.c:262 vsp1_du_pipeline_setup_bru() > > > error: we previously assumed 'pipe->bru' could be null (see line 180) > > > > > > This is a false positive, as, if pipe->bru is NULL, the brx > > > var will be different, with ends by calling a code that will > > > set pipe->bru to another value. > > > > > > Yet, cleaning this false positive is as easy as adding an explicit > > > check if pipe->bru is NULL. > > > > It's not very difficult indeed, but it really is a false positive. I think the > > proposed change decreases readability, the condition currently reads as "if > > (new brx != old brx)", why does smatch even flag that as an error ? > > I've no idea. Never studied smatch code. If you don't think that > this is a fix for it, do you have an alternative patch (either to > smatch or to vsp1)? Ping. We're carrying this warning since the latest Kernel release. If you don't have a better fix, let's apply it for 4.19. You may work on a different solution if you think you'll be able to either patch smatch in order to identify such complex logic or do something else at the vsp1 code to simplify the logic on future Kernel revisions. > > Regards, > Mauro > > > > > > Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> > > > --- > > > drivers/media/platform/vsp1/vsp1_drm.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/drivers/media/platform/vsp1/vsp1_drm.c > > > b/drivers/media/platform/vsp1/vsp1_drm.c index 095dc48aa25a..cb6b60843400 > > > 100644 > > > --- a/drivers/media/platform/vsp1/vsp1_drm.c > > > +++ b/drivers/media/platform/vsp1/vsp1_drm.c > > > @@ -185,7 +185,7 @@ static int vsp1_du_pipeline_setup_brx(struct vsp1_device > > > *vsp1, brx = &vsp1->brs->entity; > > > > > > /* Switch BRx if needed. */ > > > - if (brx != pipe->brx) { > > > + if (brx != pipe->brx || !pipe->brx) { > > > struct vsp1_entity *released_brx = NULL; > > > > > > /* Release our BRx if we have one. */ > > > > > > Thanks, > Mauro Thanks, Mauro
diff --git a/drivers/media/platform/vsp1/vsp1_drm.c b/drivers/media/platform/vsp1/vsp1_drm.c index 095dc48aa25a..cb6b60843400 100644 --- a/drivers/media/platform/vsp1/vsp1_drm.c +++ b/drivers/media/platform/vsp1/vsp1_drm.c @@ -185,7 +185,7 @@ static int vsp1_du_pipeline_setup_brx(struct vsp1_device *vsp1, brx = &vsp1->brs->entity; /* Switch BRx if needed. */ - if (brx != pipe->brx) { + if (brx != pipe->brx || !pipe->brx) { struct vsp1_entity *released_brx = NULL; /* Release our BRx if we have one. */