Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [Medium] drm: wrapping EXPORT_SYMBOL_GPL functions with EXPORT_SYMBOL - [Low] drm: kernel-doc mismatch for DRM_BRIDGE_DETACHED enum --
commit dcfd2e822b2355745325f20ab78b53e5e57972ac Author: Luca Ceresoli <[email protected]> drm: event-notifier: add mechanism to notify about hotplug events In preparation for supporting DRM bridge hotplug, this commit adds an event notifier. It allows interested parties to be notified about events they need to react to, such as bridge detach and MIPI device attach. > diff --git a/drivers/gpu/drm/drm_event_notifier.c > b/drivers/gpu/drm/drm_event_notifier.c > index 0000000000000..76af4dd4cdb02 > --- /dev/null > +++ b/drivers/gpu/drm/drm_event_notifier.c [ ... ] > +/** > + * drm_event_notifier_register - Register to be notified of DRM events > + * @nb: the notifier block to be registered > + * > + * @nb will be notified of events defined in &drm_event_notifier_event > + * > + * Returns 0 on success, %-EEXIST on error. > + */ > +int drm_event_notifier_register(struct notifier_block *nb) > +{ > + return blocking_notifier_chain_register(&drm_event_notifier, nb); > +} > +EXPORT_SYMBOL(drm_event_notifier_register); [Severity: Medium] Does this create a GPL-bypass? The core API blocking_notifier_chain_register() is exported strictly as EXPORT_SYMBOL_GPL, but wrapping it here and exporting drm_event_notifier_register() via EXPORT_SYMBOL could allow proprietary modules to access GPL-only core functionality. [ ... ] > +/** > + * drm_event_notifier_unregister - Unregister from be notified of DRM events > + * @nb: the notifier block to be unregistered > + * > + * @nb will stop being notified of events defined in > &drm_event_notifier_event > + * > + * Returns zero on success or %-ENOENT on failure. > + */ > +int drm_event_notifier_unregister(struct notifier_block *nb) > +{ > + return blocking_notifier_chain_unregister(&drm_event_notifier, nb); > +} > +EXPORT_SYMBOL(drm_event_notifier_unregister); [Severity: Medium] Similar to the register function, does wrapping blocking_notifier_chain_unregister() with EXPORT_SYMBOL inadvertently allow proprietary modules to bypass the license restriction? [ ... ] > +/** > + * drm_event_notifier_notify - Emit an event to be notified to registered > + * entities > + * @event: event ID as defined in &drm_event_notifier_event > + * @data: metadata associated to the event > + */ > +void drm_event_notifier_notify(unsigned long event, void *data) > +{ > + blocking_notifier_call_chain(&drm_event_notifier, event, data); > +} > +EXPORT_SYMBOL(drm_event_notifier_notify); [Severity: Medium] Is it intentional to export this via EXPORT_SYMBOL? Since blocking_notifier_call_chain() is EXPORT_SYMBOL_GPL, this wrapper effectively bypasses that restriction for loadable modules calling drm_event_notifier_notify(). > diff --git a/include/drm/drm_event_notifier.h > b/include/drm/drm_event_notifier.h > index 0000000000000..2457719d50fe1 > --- /dev/null > +++ b/include/drm/drm_event_notifier.h [ ... ] > +enum drm_event_notifier_event { > + /** > + * @DRM_MIPI_DSI_ATTACHED: A MIPI DSI device has just been attached > + * to its MIPI DSI host. @data is a pointer to the &struct > + * mipi_dsi_device that has just attached. > + */ > + DRM_MIPI_DSI_ATTACHED, > + /** > + * @DRM_BRIDGE_NOTIFY_DETACHED: A bridge has just been detached > + * from the encoder bridge chain. Emitted at the end of > + * drm_bridge_detach(), after removing the bridge from the encoder > + * chain. @data is a pointer to the &struct drm_bridge that has > + * just been detached. > + */ > + DRM_BRIDGE_DETACHED, [Severity: Low] This isn't a bug, but there is a kernel-doc mismatch here in drm_event_notifier_event. The comment refers to @DRM_BRIDGE_NOTIFY_DETACHED, but the actual enum value is DRM_BRIDGE_DETACHED. This will cause kernel-doc parsing warnings. > +}; > + > +int drm_event_notifier_register(struct notifier_block *nb); > +int drm_event_notifier_unregister(struct notifier_block *nb); > +void drm_event_notifier_notify(unsigned long event, void *data); > + > +#endif /* _DRM_EVENT_NOTIFIER_H_ */ -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=14
