dmabuf: fix NULL pointer dereference in dma_buf_release()
authorCharan Teja Reddy <charante@codeaurora.org>
Fri, 18 Sep 2020 10:32:31 +0000 (16:02 +0530)
committerChristian König <christian.koenig@amd.com>
Mon, 21 Sep 2020 09:17:06 +0000 (11:17 +0200)
commit19a508bd1ad8e444de86873bf2f2b2ab8edd6552
tree603a0e16b4977b0eb13fc8580513ce74e0a2e37e
parent74ea06164cda81dc80e97790164ca533fd7e3087
dmabuf: fix NULL pointer dereference in dma_buf_release()

NULL pointer dereference is observed while exporting the dmabuf but
failed to allocate the 'struct file' which results into the dropping of
the allocated dentry corresponding to this file in the dmabuf fs, which
is ending up in dma_buf_release() and accessing the uninitialzed
dentry->d_fsdata.

Call stack on 5.4 is below:
 dma_buf_release+0x2c/0x254 drivers/dma-buf/dma-buf.c:88
 __dentry_kill+0x294/0x31c fs/dcache.c:584
 dentry_kill fs/dcache.c:673 [inline]
 dput+0x250/0x380 fs/dcache.c:859
 path_put+0x24/0x40 fs/namei.c:485
 alloc_file_pseudo+0x1a4/0x200 fs/file_table.c:235
 dma_buf_getfile drivers/dma-buf/dma-buf.c:473 [inline]
 dma_buf_export+0x25c/0x3ec drivers/dma-buf/dma-buf.c:585

Fix this by checking for the valid pointer in the dentry->d_fsdata.

Fixes: 4ab59c3c638c ("dma-buf: Move dma_buf_release() from fops to dentry_ops")
Cc: <stable@vger.kernel.org> [5.7+]
Signed-off-by: Charan Teja Reddy <charante@codeaurora.org>
Reviewed-by: Christian König <christian.koenig@amd.com>
Link: https://patchwork.freedesktop.org/patch/391319/
Signed-off-by: Christian König <christian.koenig@amd.com>
drivers/dma-buf/dma-buf.c