• Stephen Boyd's avatar
    Input: i8042 - enable wakeup on a stable struct device · c8a144b2
    Stephen Boyd authored
    We don't know when the device will be added with device_add() in
    serio_add_port() because serio_add_port() is called from a workqueue
    that this driver schedules by calling serio_register_port(). The best we
    can know is that the device will definitely not have been added yet when
    the start callback is called on the serio device.
    
    While it hasn't been shown to be a problem, proactively move the wakeup
    enabling calls to the start hook so that we don't race with the
    workqueue calling device_add(). This will avoid racy situations where
    code tries to add wakeup sysfs attributes for this device from
    dpm_sysfs_add() but the path in device_set_wakeup_capable() has already
    done so.
    Signed-off-by: default avatarStephen Boyd <swboyd@chromium.org>
    Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    c8a144b2
i8042.c 37.3 KB