Den 16.02.2021 17.40, skrev Noralf Trønnes: > > > Den 16.02.2021 14.36, skrev Oliver Neukum: >> Am Freitag, den 12.02.2021, 18:46 +0100 schrieb Noralf Trønnes: >>> +static void gud_connector_early_unregister(struct drm_connector *connector) >>> +{ >>> + struct gud_connector *gconn = to_gud_connector(connector); >>> + >>> + backlight_device_unregister(gconn->backlight); >>> + cancel_work_sync(&gconn->backlight_work); >>> +} >> >> Hi, >> >> this looks like you are creating a race condition where the queued work >> may operate on an already unregistered backlight. >> > > backlight_device_unregister() sets bd->ops = NULL. This means that > userspace can't update brightness anymore, and thus won't call into this > driver. After that it should be safe to flush/cancel the workqueue. > > Unless I'm missing something here. > And it's ok for the worker to operate on an unregistered backlight, the memory is still available. It's freed when the connector goes away. Noralf.