drm/nouveau: cleanup after display init failure
Subsystems (3)
PATCH 1/1 drm/nouveau: cleanup after display init failure
Depending on exact point of failure, not cleaning would lead to BUG_ONs/oopses in various distant places.
Signed-off-by Marcin Slusarz <[email protected]>
--- drivers/gpu/drm/nouveau/nouveau_display.c | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-)
drivers/gpu/drm/nouveau/nouveau_display.c +9 -2
@@ -304,14 +304,21 @@ nouveau_display_create(struct drm_device *dev) ret = disp->create (dev);if (ret) -return ret; + goto disp_create_err;if (dev->mode_config.num_crtc) { ret =drm_vblank_init (dev, dev->mode_config.num_crtc);if (ret) -return ret; + goto vblank_err; } +return 0 ; + +vblank_err: + disp->destroy (dev); +disp_create_err: +drm_kms_helper_poll_fini (dev); +drm_mode_config_cleanup (dev);return ret; }
Signature · 1 line
1.7.8.rc3
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 27 lines · Marcin Slusarz
Depending on exact point of failure, not cleaning would lead to BUG_ONs/oopses in various distant places.
Signed-off-by Marcin Slusarz <[email protected]>--- drivers/gpu/drm/nouveau/nouveau_display.c | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-)drivers/gpu/drm/nouveau/nouveau_display.c +2
-2@@ -304,14 +304,21 @@ nouveau_display_create(struct drm_device *dev) ret = disp->create (dev);if (ret) -return ret; + goto disp_create_err;if (dev->mode_config.num_crtc) { ret =drm_vblank_init (dev, dev->mode_config.num_crtc);if (ret) -return ret; + goto vblank_err; }
drivers/gpu/drm/nouveau/nouveau_display.c nouveau_display_create(struct drm_device *dev) · line 324
Quoted 10 lines
drivers/gpu/drm/nouveau/nouveau_display.c +7
-0+return 0 ; + +vblank_err: + disp->destroy (dev); +disp_create_err: +drm_kms_helper_poll_fini (dev); +drm_mode_config_cleanup (dev);return ret; }
ping