Hi Kangjie, thanks for your patch. On 2019-03-23 3:29 a.m., Kangjie Lu wrote: > In case alloc_workqueue fails, the fix frees memory and > returns to avoid potential NULL pointer dereference. > > Signed-off-by: Kangjie Lu <kjlu@xxxxxxx> > --- > drivers/gpu/drm/radeon/radeon_display.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c > index aa898c699101..a31305755a77 100644 > --- a/drivers/gpu/drm/radeon/radeon_display.c > +++ b/drivers/gpu/drm/radeon/radeon_display.c > @@ -678,6 +678,11 @@ static void radeon_crtc_init(struct drm_device *dev, int index) > drm_mode_crtc_set_gamma_size(&radeon_crtc->base, 256); > radeon_crtc->crtc_id = index; > radeon_crtc->flip_queue = alloc_workqueue("radeon-crtc", WQ_HIGHPRI, 0); > + if (!radeon_crtc->flip_queue) { > + DRM_ERROR("failed to allocate the flip queue\n"); > + kfree(radeon_crtc); This would leak some memory referenced by struct drm_crtc. To solve this, I suggest calling radeon_crtc_destroy here and making that cope with radeon_crtc->flip_queue being NULL. Also, I'm not sure all driver code can handle some CRTCs not initializing. Given that, and as alloc_workqueue presumably only fails if the system is essentially out of memory anyway, it's probably better for radeon_crtc_init to return -ENOMEM in this case and for radeon_modeset_init to propagate that, which will prevent the driver as a whole from initializing. -- Earthling Michel Dänzer | https://www.amd.com Libre software enthusiast | Mesa and X developer _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx