lkml.org 
[lkml]   [2020]   [Apr]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH v10 54/55] Input: atmel_mxt_ts: Implement synchronization during various operation
From
Date
Hi Dmitry

On 2020/04/02 1:04, Dmitry Osipenko wrote:
> 31.03.2020 13:50, Jiada Wang пишет:
>> From: Sanjeev Chugh <sanjeev_chugh@mentor.com>
>>
>> There could be scope of race conditions when sysfs is being handled
>> and at the same time, device removal is occurring. For example,
>> we don't want the device removal to begin if the Atmel device
>> cfg update is going on or firmware update is going on. In such
>> cases, wait for device update to be completed before the removal
>> continues.
>>
>> Thread Thread 2:
>> ========================= =========================
>> mxt_update_fw_store() mxt_remove()
>> mutex_lock(&data->lock) ...
>> mxt_initialize() //Tries to acquire lock
>> request_firmware_nowait() mutex_lock(&data->lock)
>> ... ==>waits for lock()
>> ... .
>> ... .
>> mutex_unlock(&data->lock) .
>> //Gets lock and proceeds
>> mxt_free_input_device();
>> ...
>> mutex_unlock(&data->lock)
>> //Frees atmel driver data
>> kfree(data)
>>
>> If the request_firmware_nowait() completes after the driver removal,
>> and callback is triggered. But kernel crashes since the module is
>> already removed.
>>
>> This commit adds state machine to serialize such scenarios.
>
> Won't it be easier to bump driver's module use-count by __module_get()
> while firmware is updating? Or remove sysfs during of mxt_remove()? >

thanks for your inspiration, I will replace state machine with module
use-count.

Thanks,
Jiada

\
 
 \ /
  Last update: 2020-04-02 13:51    [W:1.445 / U:0.984 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site