Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/client: Remove drm_client_framebuffer_delete()

Release client buffers with drm_client_buffer_delete() instead of
drm_client_framebuffer_delete(). The latter is just a tiny wrapper
around the former.

Move the test for !buffer into drm_client_buffer_delete(), although
all callers appear to always have a valid pointer.

v2:
- test for !buffer before deref-ing pointer (Jocelyn, Dan)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Tested-by: Francesco Valla <francesco@valla.it>
Link: https://patch.msgid.link/20251027121042.143588-6-tzimmermann@suse.de

+24 -28
+2 -2
drivers/gpu/drm/clients/drm_log.c
··· 272 272 273 273 err_failed_commit: 274 274 for (i = 0; i < n_modeset; i++) 275 - drm_client_framebuffer_delete(dlog->scanout[i].buffer); 275 + drm_client_buffer_delete(dlog->scanout[i].buffer); 276 276 277 277 err_nomodeset: 278 278 kfree(dlog->scanout); ··· 286 286 287 287 if (dlog->n_scanout) { 288 288 for (i = 0; i < dlog->n_scanout; i++) 289 - drm_client_framebuffer_delete(dlog->scanout[i].buffer); 289 + drm_client_buffer_delete(dlog->scanout[i].buffer); 290 290 dlog->n_scanout = 0; 291 291 kfree(dlog->scanout); 292 292 dlog->scanout = NULL;
+12 -16
drivers/gpu/drm/drm_client.c
··· 177 177 } 178 178 EXPORT_SYMBOL(drm_client_release); 179 179 180 - static void drm_client_buffer_delete(struct drm_client_buffer *buffer) 180 + /** 181 + * drm_client_buffer_delete - Delete a client buffer 182 + * @buffer: DRM client buffer 183 + */ 184 + void drm_client_buffer_delete(struct drm_client_buffer *buffer) 181 185 { 182 - struct drm_gem_object *gem = buffer->fb->obj[0]; 186 + struct drm_gem_object *gem; 183 187 int ret; 184 188 189 + if (!buffer) 190 + return; 191 + 192 + gem = buffer->fb->obj[0]; 185 193 drm_gem_vunmap(gem, &buffer->map); 186 194 187 195 ret = drm_mode_rmfb(buffer->client->dev, buffer->fb->base.id, buffer->client->file); ··· 201 193 202 194 kfree(buffer); 203 195 } 196 + EXPORT_SYMBOL(drm_client_buffer_delete); 204 197 205 198 static struct drm_client_buffer * 206 199 drm_client_buffer_create(struct drm_client_dev *client, u32 width, u32 height, ··· 385 376 * 386 377 * This function creates a &drm_client_buffer which consists of a 387 378 * &drm_framebuffer backed by a dumb buffer. 388 - * Call drm_client_framebuffer_delete() to free the buffer. 379 + * Call drm_client_buffer_delete() to free the buffer. 389 380 * 390 381 * Returns: 391 382 * Pointer to a client buffer or an error pointer on failure. ··· 428 419 return ERR_PTR(ret); 429 420 } 430 421 EXPORT_SYMBOL(drm_client_framebuffer_create); 431 - 432 - /** 433 - * drm_client_framebuffer_delete - Delete a client framebuffer 434 - * @buffer: DRM client buffer (can be NULL) 435 - */ 436 - void drm_client_framebuffer_delete(struct drm_client_buffer *buffer) 437 - { 438 - if (!buffer) 439 - return; 440 - 441 - drm_client_buffer_delete(buffer); 442 - } 443 - EXPORT_SYMBOL(drm_client_framebuffer_delete); 444 422 445 423 /** 446 424 * drm_client_framebuffer_flush - Manually flush client framebuffer
+3 -3
drivers/gpu/drm/drm_fbdev_dma.c
··· 55 55 drm_fb_helper_fini(fb_helper); 56 56 57 57 drm_client_buffer_vunmap(fb_helper->buffer); 58 - drm_client_framebuffer_delete(fb_helper->buffer); 58 + drm_client_buffer_delete(fb_helper->buffer); 59 59 drm_client_release(&fb_helper->client); 60 60 } 61 61 ··· 88 88 vfree(shadow); 89 89 90 90 drm_client_buffer_vunmap(fb_helper->buffer); 91 - drm_client_framebuffer_delete(fb_helper->buffer); 91 + drm_client_buffer_delete(fb_helper->buffer); 92 92 drm_client_release(&fb_helper->client); 93 93 } 94 94 ··· 324 324 fb_helper->buffer = NULL; 325 325 drm_client_buffer_vunmap(buffer); 326 326 err_drm_client_buffer_delete: 327 - drm_client_framebuffer_delete(buffer); 327 + drm_client_buffer_delete(buffer); 328 328 return ret; 329 329 } 330 330 EXPORT_SYMBOL(drm_fbdev_dma_driver_fbdev_probe);
+2 -2
drivers/gpu/drm/drm_fbdev_shmem.c
··· 63 63 drm_fb_helper_fini(fb_helper); 64 64 65 65 drm_client_buffer_vunmap(fb_helper->buffer); 66 - drm_client_framebuffer_delete(fb_helper->buffer); 66 + drm_client_buffer_delete(fb_helper->buffer); 67 67 drm_client_release(&fb_helper->client); 68 68 } 69 69 ··· 204 204 fb_helper->buffer = NULL; 205 205 drm_client_buffer_vunmap(buffer); 206 206 err_drm_client_buffer_delete: 207 - drm_client_framebuffer_delete(buffer); 207 + drm_client_buffer_delete(buffer); 208 208 return ret; 209 209 } 210 210 EXPORT_SYMBOL(drm_fbdev_shmem_driver_fbdev_probe);
+4 -4
drivers/gpu/drm/drm_fbdev_ttm.c
··· 50 50 fb_deferred_io_cleanup(info); 51 51 drm_fb_helper_fini(fb_helper); 52 52 vfree(shadow); 53 - drm_client_framebuffer_delete(fb_helper->buffer); 53 + drm_client_buffer_delete(fb_helper->buffer); 54 54 55 55 drm_client_release(&fb_helper->client); 56 56 } ··· 200 200 screen_buffer = vzalloc(screen_size); 201 201 if (!screen_buffer) { 202 202 ret = -ENOMEM; 203 - goto err_drm_client_framebuffer_delete; 203 + goto err_drm_client_buffer_delete; 204 204 } 205 205 206 206 info = drm_fb_helper_alloc_info(fb_helper); ··· 233 233 drm_fb_helper_release_info(fb_helper); 234 234 err_vfree: 235 235 vfree(screen_buffer); 236 - err_drm_client_framebuffer_delete: 236 + err_drm_client_buffer_delete: 237 237 fb_helper->fb = NULL; 238 238 fb_helper->buffer = NULL; 239 - drm_client_framebuffer_delete(buffer); 239 + drm_client_buffer_delete(buffer); 240 240 return ret; 241 241 } 242 242 EXPORT_SYMBOL(drm_fbdev_ttm_driver_fbdev_probe);
+1 -1
include/drm/drm_client.h
··· 195 195 196 196 struct drm_client_buffer * 197 197 drm_client_framebuffer_create(struct drm_client_dev *client, u32 width, u32 height, u32 format); 198 - void drm_client_framebuffer_delete(struct drm_client_buffer *buffer); 198 + void drm_client_buffer_delete(struct drm_client_buffer *buffer); 199 199 int drm_client_framebuffer_flush(struct drm_client_buffer *buffer, struct drm_rect *rect); 200 200 int drm_client_buffer_vmap_local(struct drm_client_buffer *buffer, 201 201 struct iosys_map *map_copy);