Re: [PATCH 00/15] atmel_mxt_ts - device tree, bootloader, etc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07/29/2014 01:26 PM, Stephen Warren wrote:
On 07/29/2014 11:06 AM, Nick Dyer wrote:
On 29/07/14 17:16, Stephen Warren wrote:
...
I also found that removing the module (even without attempting a FW
update) yields:

After attempted FW update via sysfs:

root@localhost:~# rmmod ./atmel_mxt_ts.ko
[   81.995672] Unable to handle kernel NULL pointer dereference at
virtual address 00000364

Not good. It's trying to free an input device which isn't registered at
that point. In a later patch in my series I add a guard around that
(mxt_free_input_device):
https://github.com/ndyer/linux/commit/bb4800ff8c185

It looks like 8d01a84b86b0 "Input: atmel_mxt_ts - implement T100 touch
object support" from that branch is what solves the issue.

Ah, in linux-next, it's simply a double-unregister; both mxt_remove()
and mxt_free_object_table() call
input_unregister_device(data->input_dev). I think it would make sense to
send the following patch for 3.17. Do you agree?

Nick, I see the fix below isn't in linux-next as of next-20140829. IIRC, you'd sent the patch below but there had been some comments on it by Dmitry. Unfortunately, I don't recall the patch subject to search for it. Anyway, are you planning on re-spinning the patch so it can be applied?

diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c
b/drivers/input/touchscreen/atmel_mxt_ts.c
index 03b85711cb70..da497dbf9735 100644
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
@@ -1353,8 +1353,10 @@ static int mxt_get_info(struct mxt_data *data)

  static void mxt_free_object_table(struct mxt_data *data)
  {
-    input_unregister_device(data->input_dev);
-    data->input_dev = NULL;
+    if (data->input_dev) {
+        input_unregister_device(data->input_dev);
+        data->input_dev = NULL;
+    }

      kfree(data->object_table);
      data->object_table = NULL;
@@ -2194,7 +2196,6 @@ static int mxt_remove(struct i2c_client *client)

      sysfs_remove_group(&client->dev.kobj, &mxt_attr_group);
      free_irq(data->irq, data);
-    input_unregister_device(data->input_dev);
      mxt_free_object_table(data);
      kfree(data);

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux