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

Sachin Kamat spk.linux at gmail.com
Fri Jul 4 04:30:36 PDT 2014


On Fri, Jul 4, 2014 at 4:22 PM, Russell King - ARM Linux
<linux at arm.linux.org.uk> wrote:
> 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.

Yes, the below patch fixes the crash. Thanks for the fix.


>
>  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.



-- 
Regards,
Sachin.



More information about the linux-arm-kernel mailing list