[PATCH v3 3/8] component: add support for component match array

Russell King - ARM Linux linux at arm.linux.org.uk
Fri Jul 4 03:52:58 PDT 2014


On Fri, Jul 04, 2014 at 04:17:35PM +0530, Sachin Kamat wrote:
> Hi Russell
> 
> > +int component_master_add_with_match(struct device *dev,
> > +       const struct component_master_ops *ops,
> > +       struct component_match *match)
> >  {
> >         struct master *master;
> >         int ret;
> >
> > +       if (ops->add_components && match)
> > +               return -EINVAL;
> > +
> > +       /* Reallocate the match array for its true size */
> > +       match = component_match_realloc(dev, match, match->num);
> 
>            ^^^^^^^^^^^^^
> This gives a NULL pointer dereference error when match is NULL (as passed
> by component_master_add() below). Observed this while testing linux-next
> kernel (next-20140704) on Exynos based board with DRM enabled.

Thanks for your report.  Please verify that the patch below resolves it
for you.  Thanks.

 drivers/base/component.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/base/component.c b/drivers/base/component.c
index b4236daed4fa..f748430bb654 100644
--- a/drivers/base/component.c
+++ b/drivers/base/component.c
@@ -293,10 +293,12 @@ int component_master_add_with_match(struct device *dev,
 	if (ops->add_components && match)
 		return -EINVAL;
 
-	/* Reallocate the match array for its true size */
-	match = component_match_realloc(dev, match, match->num);
-	if (IS_ERR(match))
-		return PTR_ERR(match);
+	if (match) {
+		/* Reallocate the match array for its true size */
+		match = component_match_realloc(dev, match, match->num);
+		if (IS_ERR(match))
+			return PTR_ERR(match);
+	}
 
 	master = kzalloc(sizeof(*master), GFP_KERNEL);
 	if (!master)


-- 
FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly
improving, and getting towards what was expected from it.



More information about the linux-arm-kernel mailing list