All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
To: Suman Anna <s-anna-l0cyMroinI0@public.gmane.org>
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>,
	iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Florian Vaussard <florian.vaussard-p8DiymsW2f8@public.gmane.org>
Subject: Re: [PATCHv2 02/16] iommu/omap: omap_iommu_attach() should return ENODEV, not NULL
Date: Wed, 26 Feb 2014 03:05:42 +0100	[thread overview]
Message-ID: <18584919.CMGx44dZjC@avalon> (raw)
In-Reply-To: <530D19E3.9030407-l0cyMroinI0@public.gmane.org>

Hi Suman,

On Tuesday 25 February 2014 16:32:03 Suman Anna wrote:
> On 02/25/2014 03:13 PM, Laurent Pinchart wrote:
> > On Thursday 13 February 2014 12:15:33 Suman Anna wrote:
> >> From: Florian Vaussard <florian.vaussard-p8DiymsW2f8@public.gmane.org>
> >> 
> >> omap_iommu_attach() returns NULL or ERR_PTR in case of error, but
> >> omap_iommu_attach_dev() only checks for IS_ERR. Thus a NULL return value
> >> (in case driver_find_device fails) will cause the kernel to panic when
> >> omap_iommu_attach_dev() dereferences the pointer.
> >> 
> >> In such case, omap_iommu_attach() should return ENODEV, not NULL.
> >> 
> >> Signed-off-by: Florian Vaussard <florian.vaussard-p8DiymsW2f8@public.gmane.org>
> >> Acked-by: Suman Anna <s-anna-l0cyMroinI0@public.gmane.org>
> >> ---
> >> 
> >>   drivers/iommu/omap-iommu.c | 4 ++--
> >>   1 file changed, 2 insertions(+), 2 deletions(-)
> >> 
> >> diff --git a/drivers/iommu/omap-iommu.c b/drivers/iommu/omap-iommu.c
> >> index fff2ffd..6272c36 100644
> >> --- a/drivers/iommu/omap-iommu.c
> >> +++ b/drivers/iommu/omap-iommu.c
> >> @@ -863,7 +863,7 @@ static int device_match_by_alias(struct device *dev,
> >> void *data) **/
> >> 
> >>   static struct omap_iommu *omap_iommu_attach(const char *name, u32
> >>   *iopgd)
> >>   {
> >> -	int err = -ENOMEM;
> >> +	int err = -ENODEV;
> >>   	struct device *dev;
> >>   	struct omap_iommu *obj;
> >> 
> >> @@ -871,7 +871,7 @@ static struct omap_iommu *omap_iommu_attach(const
> >> char *name, u32 *iopgd)
> >>   				(void *)name,
> >>   				device_match_by_alias);
> >>   	if (!dev)
> >> -		return NULL;
> >> +		return ERR_PTR(err);
> > 
> > I would return ERR_PTR(-ENODEV) here, and remove the initialization at
> > declaration of err above.
> 
> The initialization at the beginning is also serving one another exit
> path (a check for try_module_get), where err is not being set. If the
> initialization is removed, then the err has to be set explicitly at the
> other place. Let me know if you still want this changed.

The return value of iommu_enable() is unconditionally stored in err before the 
try_module_get() call, so that code patch is buggy anyway and should be fixed. 
I would still remove the initialization at declaration and assign -ENODEV to 
err explicitly when try_module_get() fails before the goto err_module.

> >>   	obj = to_iommu(dev);

-- 
Regards,

Laurent Pinchart

WARNING: multiple messages have this Message-ID (diff)
From: laurent.pinchart@ideasonboard.com (Laurent Pinchart)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv2 02/16] iommu/omap: omap_iommu_attach() should return ENODEV, not NULL
Date: Wed, 26 Feb 2014 03:05:42 +0100	[thread overview]
Message-ID: <18584919.CMGx44dZjC@avalon> (raw)
In-Reply-To: <530D19E3.9030407@ti.com>

Hi Suman,

On Tuesday 25 February 2014 16:32:03 Suman Anna wrote:
> On 02/25/2014 03:13 PM, Laurent Pinchart wrote:
> > On Thursday 13 February 2014 12:15:33 Suman Anna wrote:
> >> From: Florian Vaussard <florian.vaussard@epfl.ch>
> >> 
> >> omap_iommu_attach() returns NULL or ERR_PTR in case of error, but
> >> omap_iommu_attach_dev() only checks for IS_ERR. Thus a NULL return value
> >> (in case driver_find_device fails) will cause the kernel to panic when
> >> omap_iommu_attach_dev() dereferences the pointer.
> >> 
> >> In such case, omap_iommu_attach() should return ENODEV, not NULL.
> >> 
> >> Signed-off-by: Florian Vaussard <florian.vaussard@epfl.ch>
> >> Acked-by: Suman Anna <s-anna@ti.com>
> >> ---
> >> 
> >>   drivers/iommu/omap-iommu.c | 4 ++--
> >>   1 file changed, 2 insertions(+), 2 deletions(-)
> >> 
> >> diff --git a/drivers/iommu/omap-iommu.c b/drivers/iommu/omap-iommu.c
> >> index fff2ffd..6272c36 100644
> >> --- a/drivers/iommu/omap-iommu.c
> >> +++ b/drivers/iommu/omap-iommu.c
> >> @@ -863,7 +863,7 @@ static int device_match_by_alias(struct device *dev,
> >> void *data) **/
> >> 
> >>   static struct omap_iommu *omap_iommu_attach(const char *name, u32
> >>   *iopgd)
> >>   {
> >> -	int err = -ENOMEM;
> >> +	int err = -ENODEV;
> >>   	struct device *dev;
> >>   	struct omap_iommu *obj;
> >> 
> >> @@ -871,7 +871,7 @@ static struct omap_iommu *omap_iommu_attach(const
> >> char *name, u32 *iopgd)
> >>   				(void *)name,
> >>   				device_match_by_alias);
> >>   	if (!dev)
> >> -		return NULL;
> >> +		return ERR_PTR(err);
> > 
> > I would return ERR_PTR(-ENODEV) here, and remove the initialization at
> > declaration of err above.
> 
> The initialization at the beginning is also serving one another exit
> path (a check for try_module_get), where err is not being set. If the
> initialization is removed, then the err has to be set explicitly at the
> other place. Let me know if you still want this changed.

The return value of iommu_enable() is unconditionally stored in err before the 
try_module_get() call, so that code patch is buggy anyway and should be fixed. 
I would still remove the initialization at declaration and assign -ENODEV to 
err explicitly when try_module_get() fails before the goto err_module.

> >>   	obj = to_iommu(dev);

-- 
Regards,

Laurent Pinchart

  parent reply	other threads:[~2014-02-26  2:05 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-13 18:15 [PATCHv2 00/16] OMAP IOMMU DT adaptation and cleanup Suman Anna
2014-02-13 18:15 ` Suman Anna
2014-02-13 18:15 ` [PATCHv2 01/16] iommu/omap: convert to devm_* interfaces Suman Anna
2014-02-13 18:15   ` Suman Anna
     [not found]   ` <1392315347-32967-2-git-send-email-s-anna-l0cyMroinI0@public.gmane.org>
2014-02-25 21:10     ` Laurent Pinchart
2014-02-25 21:10       ` Laurent Pinchart
     [not found] ` <1392315347-32967-1-git-send-email-s-anna-l0cyMroinI0@public.gmane.org>
2014-02-13 18:15   ` [PATCHv2 02/16] iommu/omap: omap_iommu_attach() should return ENODEV, not NULL Suman Anna
2014-02-13 18:15     ` Suman Anna
     [not found]     ` <1392315347-32967-3-git-send-email-s-anna-l0cyMroinI0@public.gmane.org>
2014-02-25 21:13       ` Laurent Pinchart
2014-02-25 21:13         ` Laurent Pinchart
2014-02-25 22:32         ` Suman Anna
2014-02-25 22:32           ` Suman Anna
     [not found]           ` <530D19E3.9030407-l0cyMroinI0@public.gmane.org>
2014-02-26  2:05             ` Laurent Pinchart [this message]
2014-02-26  2:05               ` Laurent Pinchart
2014-02-26 16:45               ` Suman Anna
2014-02-26 16:45                 ` Suman Anna
2014-02-13 18:15   ` [PATCHv2 03/16] Documentation: dt: add OMAP iommu bindings Suman Anna
2014-02-13 18:15     ` Suman Anna
2014-02-24 12:57     ` Florian Vaussard
2014-02-24 12:57       ` Florian Vaussard
2014-02-24 18:09       ` Suman Anna
2014-02-24 18:09         ` Suman Anna
     [not found]     ` <1392315347-32967-4-git-send-email-s-anna-l0cyMroinI0@public.gmane.org>
2014-02-25 21:26       ` Laurent Pinchart
2014-02-25 21:26         ` Laurent Pinchart
2014-02-25 23:02         ` Suman Anna
2014-02-25 23:02           ` Suman Anna
2014-02-26  2:13           ` Laurent Pinchart
2014-02-26  2:13             ` Laurent Pinchart
2014-02-26 17:02             ` Suman Anna
2014-02-26 17:02               ` Suman Anna
     [not found]               ` <530E1E20.9000301-l0cyMroinI0@public.gmane.org>
2014-02-26 19:32                 ` Laurent Pinchart
2014-02-26 19:32                   ` Laurent Pinchart
2014-02-26 20:23                   ` Suman Anna
2014-02-26 20:23                     ` Suman Anna
2014-02-26 20:36                     ` Laurent Pinchart
2014-02-26 20:36                       ` Laurent Pinchart
2014-02-26 22:18                       ` Suman Anna
2014-02-26 22:18                         ` Suman Anna
     [not found]                         ` <530E682D.9070005-l0cyMroinI0@public.gmane.org>
2014-02-26 22:28                           ` Suman Anna
2014-02-26 22:28                             ` Suman Anna
2014-02-26 22:43                             ` Laurent Pinchart
2014-02-26 22:43                               ` Laurent Pinchart
2014-02-26 23:14                               ` Suman Anna
2014-02-26 23:14                                 ` Suman Anna
2014-02-13 18:15   ` [PATCHv2 04/16] iommu/omap: add devicetree support Suman Anna
2014-02-13 18:15     ` Suman Anna
2014-02-26 17:08     ` Tony Lindgren
2014-02-26 17:08       ` Tony Lindgren
2014-02-13 18:15   ` [PATCHv2 05/16] iommu/omap: enable bus-error back on supported iommus Suman Anna
2014-02-13 18:15     ` Suman Anna
2014-02-13 18:15   ` [PATCHv2 06/16] iommu/omap: allocate archdata on the fly for DT-based devices Suman Anna
2014-02-13 18:15     ` Suman Anna
2014-02-13 18:15   ` [PATCHv2 07/16] iommu/omap: allow enable/disable even without pdata Suman Anna
2014-02-13 18:15     ` Suman Anna
     [not found]     ` <1392315347-32967-8-git-send-email-s-anna-l0cyMroinI0@public.gmane.org>
2014-02-25 21:15       ` Laurent Pinchart
2014-02-25 21:15         ` Laurent Pinchart
2014-02-25 22:41         ` Suman Anna
2014-02-25 22:41           ` Suman Anna
2014-02-13 18:15   ` [PATCHv2 09/16] ARM: OMAP2+: change the ISP device archdata MMU name Suman Anna
2014-02-13 18:15     ` Suman Anna
2014-02-13 18:15   ` [PATCHv2 10/16] ARM: OMAP2+: use pdata quirks for iommu reset lines Suman Anna
2014-02-13 18:15     ` Suman Anna
     [not found]     ` <1392315347-32967-11-git-send-email-s-anna-l0cyMroinI0@public.gmane.org>
2014-02-26 17:17       ` Tony Lindgren
2014-02-26 17:17         ` Tony Lindgren
     [not found]         ` <20140226171731.GG11654-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2014-02-26 18:04           ` Suman Anna
2014-02-26 18:04             ` Suman Anna
2014-02-13 18:15   ` [PATCHv2 11/16] ARM: OMAP3: fix iva mmu programming issues Suman Anna
2014-02-13 18:15     ` Suman Anna
2014-02-13 18:15   ` [PATCHv2 12/16] ARM: OMAP5: hwmod data: add mmu data for ipu & dsp Suman Anna
2014-02-13 18:15     ` Suman Anna
2014-02-13 18:15   ` [PATCHv2 16/16] ARM: OMAP2+: Remove legacy omap-iommu.c Suman Anna
2014-02-13 18:15     ` Suman Anna
2014-02-13 18:15 ` [PATCHv2 08/16] ARM: OMAP3: remove deprecated CONFIG_OMAP_IOMMU_IVA2 Suman Anna
2014-02-13 18:15   ` Suman Anna
     [not found]   ` <1392315347-32967-9-git-send-email-s-anna-l0cyMroinI0@public.gmane.org>
2014-02-25 21:17     ` Laurent Pinchart
2014-02-25 21:17       ` Laurent Pinchart
2014-02-26 17:09       ` Tony Lindgren
2014-02-26 17:09         ` Tony Lindgren
2014-02-26 17:15       ` Tony Lindgren
2014-02-26 17:15         ` Tony Lindgren
2014-02-28 19:58   ` Paul Walmsley
2014-02-28 19:58     ` Paul Walmsley
     [not found]     ` <alpine.DEB.2.02.1402281958170.453-rwI8Ez+7Ko+d5PgPZx9QOdBPR1lH4CV8@public.gmane.org>
2014-02-28 20:42       ` Suman Anna
2014-02-28 20:42         ` Suman Anna
2014-02-13 18:15 ` [PATCHv2 13/16] ARM: OMAP2+: extend iommu pdata-quirks to OMAP5 Suman Anna
2014-02-13 18:15   ` Suman Anna
2014-02-13 18:15 ` [PATCHv2 14/16] ARM: OMAP3: hwmod data: cleanup data for IOMMUs Suman Anna
2014-02-13 18:15   ` Suman Anna
     [not found]   ` <1392315347-32967-15-git-send-email-s-anna-l0cyMroinI0@public.gmane.org>
2014-02-26 17:18     ` Tony Lindgren
2014-02-26 17:18       ` Tony Lindgren
     [not found]       ` <20140226171824.GH11654-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2014-02-26 17:59         ` Suman Anna
2014-02-26 17:59           ` Suman Anna
     [not found]           ` <530E2B67.9050300-l0cyMroinI0@public.gmane.org>
2014-02-27  9:16             ` Florian Vaussard
2014-02-27  9:16               ` Florian Vaussard
     [not found]               ` <530F0255.0-p8DiymsW2f8@public.gmane.org>
2014-02-28  0:25                 ` Tony Lindgren
2014-02-28  0:25                   ` Tony Lindgren
2014-02-13 18:15 ` [PATCHv2 15/16] ARM: OMAP4: " Suman Anna
2014-02-13 18:15   ` Suman Anna

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=18584919.CMGx44dZjC@avalon \
    --to=laurent.pinchart-rylnwiuwjnjg/c1bvhzhaw@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=florian.vaussard-p8DiymsW2f8@public.gmane.org \
    --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=s-anna-l0cyMroinI0@public.gmane.org \
    --cc=tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.