2021-05-27 00:14:35

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: [PATCH] Input: elants_i2c - Fix NULL dereference at probing

Hi Takashi,

On Wed, May 26, 2021 at 09:43:01PM +0200, Takashi Iwai wrote:
> The recent change in elants_i2c driver to support more chips
> introduced a regression leading to Oops at probing. The driver reads
> id->driver_data, but the id may be NULL depending on the device type
> the driver gets bound.
>
> Add a NULL check and falls back to the default EKTH3500.

Thank you for the patch. I think my preference would be to switch to
device_get_match_data() and annotate the rest of the match tables with
proper controller types.

Thanks!

--
Dmitry


2021-05-27 00:35:25

by Dmitry Osipenko

[permalink] [raw]
Subject: Re: [PATCH] Input: elants_i2c - Fix NULL dereference at probing

Hello all,

26.05.2021 23:19, Dmitry Torokhov пишет:
> Hi Takashi,
>
> On Wed, May 26, 2021 at 09:43:01PM +0200, Takashi Iwai wrote:
>> The recent change in elants_i2c driver to support more chips
>> introduced a regression leading to Oops at probing. The driver reads
>> id->driver_data, but the id may be NULL depending on the device type
>> the driver gets bound.
>>
>> Add a NULL check and falls back to the default EKTH3500.
>
> Thank you for the patch. I think my preference would be to switch to
> device_get_match_data() and annotate the rest of the match tables with
> proper controller types.

Doesn't a NULL mean that elants_i2c_id[] table fails to match the ACPI
device name? What is the name then?

This could be two patches:
1 - trivial fix that can be backported easily
2 - switch to device_get_match_data()

2021-05-27 06:30:12

by Takashi Iwai

[permalink] [raw]
Subject: Re: [PATCH] Input: elants_i2c - Fix NULL dereference at probing

On Wed, 26 May 2021 22:44:59 +0200,
Dmitry Osipenko wrote:
>
> Hello all,
>
> 26.05.2021 23:19, Dmitry Torokhov пишет:
> > Hi Takashi,
> >
> > On Wed, May 26, 2021 at 09:43:01PM +0200, Takashi Iwai wrote:
> >> The recent change in elants_i2c driver to support more chips
> >> introduced a regression leading to Oops at probing. The driver reads
> >> id->driver_data, but the id may be NULL depending on the device type
> >> the driver gets bound.
> >>
> >> Add a NULL check and falls back to the default EKTH3500.
> >
> > Thank you for the patch. I think my preference would be to switch to
> > device_get_match_data() and annotate the rest of the match tables with
> > proper controller types.
>
> Doesn't a NULL mean that elants_i2c_id[] table fails to match the ACPI
> device name? What is the name then?

I don't own the device, so we need to ask on (open)SUSE Bugzilla.

> This could be two patches:
> 1 - trivial fix that can be backported easily
> 2 - switch to device_get_match_data()

I guess 2 is easy enough to backport to 5.12.x. Let's see.


thanks,

Takashi

2021-05-27 07:14:30

by Takashi Iwai

[permalink] [raw]
Subject: Re: [PATCH] Input: elants_i2c - Fix NULL dereference at probing

On Wed, 26 May 2021 22:19:51 +0200,
Dmitry Torokhov wrote:
>
> Hi Takashi,
>
> On Wed, May 26, 2021 at 09:43:01PM +0200, Takashi Iwai wrote:
> > The recent change in elants_i2c driver to support more chips
> > introduced a regression leading to Oops at probing. The driver reads
> > id->driver_data, but the id may be NULL depending on the device type
> > the driver gets bound.
> >
> > Add a NULL check and falls back to the default EKTH3500.
>
> Thank you for the patch. I think my preference would be to switch to
> device_get_match_data() and annotate the rest of the match tables with
> proper controller types.

OK, that sounds feasible. Shall I submit a revised patch?


Takashi

2021-05-27 19:13:30

by Dmitry Osipenko

[permalink] [raw]
Subject: Re: [PATCH] Input: elants_i2c - Fix NULL dereference at probing

27.05.2021 09:22, Takashi Iwai пишет:
> On Wed, 26 May 2021 22:44:59 +0200,
> Dmitry Osipenko wrote:
>>
>> Hello all,
>>
>> 26.05.2021 23:19, Dmitry Torokhov пишет:
>>> Hi Takashi,
>>>
>>> On Wed, May 26, 2021 at 09:43:01PM +0200, Takashi Iwai wrote:
>>>> The recent change in elants_i2c driver to support more chips
>>>> introduced a regression leading to Oops at probing. The driver reads
>>>> id->driver_data, but the id may be NULL depending on the device type
>>>> the driver gets bound.
>>>>
>>>> Add a NULL check and falls back to the default EKTH3500.
>>>
>>> Thank you for the patch. I think my preference would be to switch to
>>> device_get_match_data() and annotate the rest of the match tables with
>>> proper controller types.
>>
>> Doesn't a NULL mean that elants_i2c_id[] table fails to match the ACPI
>> device name? What is the name then?
>
> I don't own the device, so we need to ask on (open)SUSE Bugzilla.

If we will know the name, then alternative fix could be to add the name
to the elants_i2c_id[]. To be honest, I thought that the ID should be
borrowed from elants_acpi_id[] for the ACPI devices, but this was a mistake.

>> This could be two patches:
>> 1 - trivial fix that can be backported easily
>> 2 - switch to device_get_match_data()
>
> I guess 2 is easy enough to backport to 5.12.x. Let's see.

Okay