]> www.infradead.org Git - users/dwmw2/linux.git/commit
udmabuf: fix memory leak on last export_udmabuf() error path
authorJann Horn <jannh@google.com>
Wed, 4 Dec 2024 16:26:21 +0000 (17:26 +0100)
committerVivek Kasireddy <vivek.kasireddy@intel.com>
Thu, 12 Dec 2024 00:47:41 +0000 (16:47 -0800)
commitf49856f525acd5bef52ae28b7da2e001bbe7439e
tree18e76a5373a9ff2bfda6de34b5b379d5373454c8
parent0a16e24e34f28210f68195259456c73462518597
udmabuf: fix memory leak on last export_udmabuf() error path

In export_udmabuf(), if dma_buf_fd() fails because the FD table is full, a
dma_buf owning the udmabuf has already been created; but the error handling
in udmabuf_create() will tear down the udmabuf without doing anything about
the containing dma_buf.

This leaves a dma_buf in memory that contains a dangling pointer; though
that doesn't seem to lead to anything bad except a memory leak.

Fix it by moving the dma_buf_fd() call out of export_udmabuf() so that we
can give it different error handling.

Note that the shape of this code changed a lot in commit 5e72b2b41a21
("udmabuf: convert udmabuf driver to use folios"); but the memory leak
seems to have existed since the introduction of udmabuf.

Fixes: fbb0de795078 ("Add udmabuf misc device")
Acked-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
Signed-off-by: Jann Horn <jannh@google.com>
Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241204-udmabuf-fixes-v2-3-23887289de1c@google.com
drivers/dma-buf/udmabuf.c