Module Name: xsrc
Committed By: mrg
Date: Sun Jul 11 21:24:14 UTC 2021
Modified Files:
xsrc/external/mit/xf86-video-ati-kms/dist/src: drmmode_display.c
radeon_bo_helper.c
Log Message:
fix a couple of issues found while testing new drm.
- actually check the return value of radeon_bo_open() in a three places
- for create_pixmap_for_fbcon(), release the bo when jumping to
'out_free_fb'. fixes memory leak.
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
xsrc/external/mit/xf86-video-ati-kms/dist/src/drmmode_display.c
cvs rdiff -u -r1.3 -r1.4 \
xsrc/external/mit/xf86-video-ati-kms/dist/src/radeon_bo_helper.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: xsrc/external/mit/xf86-video-ati-kms/dist/src/drmmode_display.c
diff -u xsrc/external/mit/xf86-video-ati-kms/dist/src/drmmode_display.c:1.2 xsrc/external/mit/xf86-video-ati-kms/dist/src/drmmode_display.c:1.3
--- xsrc/external/mit/xf86-video-ati-kms/dist/src/drmmode_display.c:1.2 Fri Feb 7 23:36:50 2020
+++ xsrc/external/mit/xf86-video-ati-kms/dist/src/drmmode_display.c Sun Jul 11 21:24:14 2021
@@ -373,7 +373,7 @@ create_pixmap_for_fbcon(drmmode_ptr drmm
RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
RADEONInfoPtr info = RADEONPTR(pScrn);
PixmapPtr pixmap = info->fbcon_pixmap;
- struct radeon_buffer *bo;
+ struct radeon_buffer *bo = NULL;
drmModeFBPtr fbcon;
struct drm_gem_flink flink;
@@ -405,7 +405,7 @@ create_pixmap_for_fbcon(drmmode_ptr drmm
bo->ref_count = 1;
bo->bo.radeon = radeon_bo_open(drmmode->bufmgr, flink.name, 0, 0, 0, 0);
- if (!bo) {
+ if (!bo->bo.radeon) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Couldn't open BO for fbcon handle\n");
goto out_free_fb;
@@ -415,8 +415,8 @@ create_pixmap_for_fbcon(drmmode_ptr drmm
fbcon->depth, fbcon->bpp, fbcon->pitch,
bo);
info->fbcon_pixmap = pixmap;
- radeon_buffer_unref(&bo);
out_free_fb:
+ radeon_buffer_unref(&bo);
drmModeFreeFB(fbcon);
return pixmap;
}
Index: xsrc/external/mit/xf86-video-ati-kms/dist/src/radeon_bo_helper.c
diff -u xsrc/external/mit/xf86-video-ati-kms/dist/src/radeon_bo_helper.c:1.3 xsrc/external/mit/xf86-video-ati-kms/dist/src/radeon_bo_helper.c:1.4
--- xsrc/external/mit/xf86-video-ati-kms/dist/src/radeon_bo_helper.c:1.3 Sat Jun 1 07:25:41 2019
+++ xsrc/external/mit/xf86-video-ati-kms/dist/src/radeon_bo_helper.c Sun Jul 11 21:24:14 2021
@@ -308,7 +308,7 @@ radeon_alloc_pixmap_bo(ScrnInfoPtr pScrn
bo->bo.radeon = radeon_bo_open(info->bufmgr, 0, size, base_align,
domain, flags);
- if (bo && tiling && radeon_bo_set_tiling(bo->bo.radeon, tiling, pitch) == 0)
+ if (bo->bo.radeon && tiling && radeon_bo_set_tiling(bo->bo.radeon, tiling, pitch) == 0)
*new_tiling = tiling;
*new_pitch = pitch;
@@ -504,7 +504,7 @@ Bool radeon_set_shared_pixmap_backing(Pi
#endif
bo->bo.radeon = radeon_gem_bo_open_prime(info->bufmgr, ihandle, size);
- if (!bo)
+ if (!bo->bo.radeon)
goto error;
bo->ref_count = 1;