[PATCH v5 3/3] drm: Add Generic USB Display driver

Noralf Trønnes noralf at tronnes.org
Tue Feb 16 16:43:33 UTC 2021



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.


More information about the dri-devel mailing list