Index: rk_drm.c =================================================================== RCS file: /cvsroot/src/sys/arch/arm/rockchip/rk_drm.c,v retrieving revision 1.2 diff -p -u -r1.2 rk_drm.c --- rk_drm.c 14 Nov 2019 20:39:46 -0000 1.2 +++ rk_drm.c 15 Dec 2019 00:36:51 -0000 @@ -401,7 +401,8 @@ rk_drm_load(struct drm_device *ddev, uns if (num_crtc == 0) { aprint_error_dev(sc->sc_dev, "no display interface ports configured\n"); - return ENXIO; + error = ENXIO; + goto drmerr; } fbdev = kmem_zalloc(sizeof(*fbdev), KM_SLEEP); @@ -410,7 +411,7 @@ rk_drm_load(struct drm_device *ddev, uns error = drm_fb_helper_init(ddev, &fbdev->helper, num_crtc, num_crtc); if (error) - goto drmerr; + goto allocerr; fbdev->helper.fb = kmem_zalloc(sizeof(struct rk_drm_framebuffer), KM_SLEEP); @@ -426,9 +427,10 @@ rk_drm_load(struct drm_device *ddev, uns return 0; +allocerr: + kmem_free(fbdev, sizeof(*fbdev)); drmerr: drm_mode_config_cleanup(ddev); - kmem_free(fbdev, sizeof(*fbdev)); return error; }