• Samu Onkalo's avatar
    Input: polldev can cause crash in case when polling disabled · d9c4f846
    Samu Onkalo authored
    When polled input device is opened and closed and there are no other
    users of polled device, the workqueue is created and destroyed in
    every open / close operation. It is probable that at some point
    dynamic allocation of internal parts of the workqueue cause changes to the
    workqueue.
    
    When a work is queued to the workqueue the work struct contains pointers
    to the workqueue data. If the workqueue has been changed and the work
    has never been queued to the new workqueue, work-struct contains pointers
    to the non-existing workqueue. This will cause crash at the work
    cancellation during device close since cancellation of a work assumes
    that the workqueue exists.
    
    To prevent that, work struct is cleaned up at device close. This keeps
    work struct clean for the next use.
    Signed-off-by: default avatarSamu Onkalo <samu.p.onkalo@nokia.com>
    Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
    d9c4f846
input-polldev.c 7.12 KB