On Tue, 28 Nov 2023, Maxime Ripard <mripard@xxxxxxxxxx> wrote: > All the drm_connector_init variants take at least a pointer to the > device, connector and hooks implementation. > > However, none of them check their value before dereferencing those > pointers which can lead to a NULL-pointer dereference if the author > isn't careful. Arguably oopsing on the spot is preferrable when this can't be caused by user input. It's always a mistake that should be caught early during development. Not everyone checks the return value of drm_connector_init and friends, so those cases will lead to more mysterious bugs later. And probably oopses as well. BR, Jani. > > Let's test those pointers instead and error out if any is NULL. > > Signed-off-by: Maxime Ripard <mripard@xxxxxxxxxx> > --- > drivers/gpu/drm/drm_connector.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c > index b0516505f7ae..2f60755dccdd 100644 > --- a/drivers/gpu/drm/drm_connector.c > +++ b/drivers/gpu/drm/drm_connector.c > @@ -229,6 +229,9 @@ static int __drm_connector_init(struct drm_device *dev, > struct ida *connector_ida = > &drm_connector_enum_list[connector_type].ida; > > + if (!dev || !connector || !funcs) > + return -EINVAL; > + > WARN_ON(drm_drv_uses_atomic_modeset(dev) && > (!funcs->atomic_destroy_state || > !funcs->atomic_duplicate_state)); -- Jani Nikula, Intel