All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 1/2] Input: elants_i2c - Fix NULL dereference at probing
@ 2021-05-28  7:10 Takashi Iwai
  2021-05-28  7:10 ` [PATCH v3 2/2] Input: elants_i2c - Switch to probe_new Takashi Iwai
  2021-06-02  4:14 ` [PATCH v3 1/2] Input: elants_i2c - Fix NULL dereference at probing Dmitry Torokhov
  0 siblings, 2 replies; 4+ messages in thread
From: Takashi Iwai @ 2021-05-28  7:10 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel

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.

Replace the driver data extraction with the device_get_match_data()
helper, and define the driver data in OF table, too.

Fixes: 9517b95bdc46 ("Input: elants_i2c - add support for eKTF3624")
BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1186454
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
v1->v2: Use device_get_match_data()   
v2->v3: Fix pointer cast

 drivers/input/touchscreen/elants_i2c.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/input/touchscreen/elants_i2c.c b/drivers/input/touchscreen/elants_i2c.c
index 17540bdb1eaf..0f9e3ec99aae 100644
--- a/drivers/input/touchscreen/elants_i2c.c
+++ b/drivers/input/touchscreen/elants_i2c.c
@@ -1396,7 +1396,7 @@ static int elants_i2c_probe(struct i2c_client *client,
 	init_completion(&ts->cmd_done);
 
 	ts->client = client;
-	ts->chip_id = (enum elants_chip_id)id->driver_data;
+	ts->chip_id = (enum elants_chip_id)(uintptr_t)device_get_match_data(&client->dev);
 	i2c_set_clientdata(client, ts);
 
 	ts->vcc33 = devm_regulator_get(&client->dev, "vcc33");
@@ -1636,8 +1636,8 @@ MODULE_DEVICE_TABLE(acpi, elants_acpi_id);
 
 #ifdef CONFIG_OF
 static const struct of_device_id elants_of_match[] = {
-	{ .compatible = "elan,ekth3500" },
-	{ .compatible = "elan,ektf3624" },
+	{ .compatible = "elan,ekth3500", .data = (void *)EKTH3500 },
+	{ .compatible = "elan,ektf3624", .data = (void *)EKTF3624 },
 	{ /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(of, elants_of_match);
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v3 2/2] Input: elants_i2c - Switch to probe_new
  2021-05-28  7:10 [PATCH v3 1/2] Input: elants_i2c - Fix NULL dereference at probing Takashi Iwai
@ 2021-05-28  7:10 ` Takashi Iwai
  2021-06-02  4:14   ` Dmitry Torokhov
  2021-06-02  4:14 ` [PATCH v3 1/2] Input: elants_i2c - Fix NULL dereference at probing Dmitry Torokhov
  1 sibling, 1 reply; 4+ messages in thread
From: Takashi Iwai @ 2021-05-28  7:10 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel

Now that we get rid of the usage of id argument at probe again, let's
switch to the new i2c probe method; this will avoid for people
misusing the possibly unassigned id pointer again.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 drivers/input/touchscreen/elants_i2c.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/input/touchscreen/elants_i2c.c b/drivers/input/touchscreen/elants_i2c.c
index 0f9e3ec99aae..68f542bb809f 100644
--- a/drivers/input/touchscreen/elants_i2c.c
+++ b/drivers/input/touchscreen/elants_i2c.c
@@ -1369,8 +1369,7 @@ static bool elants_acpi_is_hid_device(struct device *dev)
 }
 #endif
 
-static int elants_i2c_probe(struct i2c_client *client,
-			    const struct i2c_device_id *id)
+static int elants_i2c_probe(struct i2c_client *client)
 {
 	union i2c_smbus_data dummy;
 	struct elants_data *ts;
@@ -1644,7 +1643,7 @@ MODULE_DEVICE_TABLE(of, elants_of_match);
 #endif
 
 static struct i2c_driver elants_i2c_driver = {
-	.probe = elants_i2c_probe,
+	.probe_new = elants_i2c_probe,
 	.id_table = elants_i2c_id,
 	.driver = {
 		.name = DEVICE_NAME,
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v3 1/2] Input: elants_i2c - Fix NULL dereference at probing
  2021-05-28  7:10 [PATCH v3 1/2] Input: elants_i2c - Fix NULL dereference at probing Takashi Iwai
  2021-05-28  7:10 ` [PATCH v3 2/2] Input: elants_i2c - Switch to probe_new Takashi Iwai
@ 2021-06-02  4:14 ` Dmitry Torokhov
  1 sibling, 0 replies; 4+ messages in thread
From: Dmitry Torokhov @ 2021-06-02  4:14 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: linux-input, linux-kernel

On Fri, May 28, 2021 at 09:10:23AM +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.
> 
> Replace the driver data extraction with the device_get_match_data()
> helper, and define the driver data in OF table, too.
> 
> Fixes: 9517b95bdc46 ("Input: elants_i2c - add support for eKTF3624")
> BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1186454
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Takashi Iwai <tiwai@suse.de>

Applied, thank you.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v3 2/2] Input: elants_i2c - Switch to probe_new
  2021-05-28  7:10 ` [PATCH v3 2/2] Input: elants_i2c - Switch to probe_new Takashi Iwai
@ 2021-06-02  4:14   ` Dmitry Torokhov
  0 siblings, 0 replies; 4+ messages in thread
From: Dmitry Torokhov @ 2021-06-02  4:14 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: linux-input, linux-kernel

On Fri, May 28, 2021 at 09:10:24AM +0200, Takashi Iwai wrote:
> Now that we get rid of the usage of id argument at probe again, let's
> switch to the new i2c probe method; this will avoid for people
> misusing the possibly unassigned id pointer again.
> 
> Signed-off-by: Takashi Iwai <tiwai@suse.de>

Applied, thank you.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-06-02  4:14 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-28  7:10 [PATCH v3 1/2] Input: elants_i2c - Fix NULL dereference at probing Takashi Iwai
2021-05-28  7:10 ` [PATCH v3 2/2] Input: elants_i2c - Switch to probe_new Takashi Iwai
2021-06-02  4:14   ` Dmitry Torokhov
2021-06-02  4:14 ` [PATCH v3 1/2] Input: elants_i2c - Fix NULL dereference at probing Dmitry Torokhov

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.