summaryrefslogtreecommitdiff
path: root/drivers/dma-buf/udmabuf.c
diff options
context:
space:
mode:
authorPavel Skripkin <paskripkin@gmail.com>2021-08-11 20:50:52 +0300
committerGerd Hoffmann <kraxel@redhat.com>2021-08-12 10:27:22 +0300
commitb9770b0b6eac2be3772b6f4748e6b899a9ab2870 (patch)
tree37c0c51100ab841911453d60f4531a75b96c150f /drivers/dma-buf/udmabuf.c
parent83326a73a1f2933295d30667ab4996b1b1099708 (diff)
downloadlinux-b9770b0b6eac2be3772b6f4748e6b899a9ab2870.tar.xz
udmabuf: fix general protection fault in udmabuf_create
Syzbot reported general protection fault in udmabuf_create. The problem was in wrong error handling. In commit 16c243e99d33 ("udmabuf: Add support for mapping hugepages (v4)") shmem_read_mapping_page() call was replaced with find_get_page_flags(), but find_get_page_flags() returns NULL on failure instead PTR_ERR(). Wrong error checking was causing GPF in get_page(), since passed page was equal to NULL. Fix it by changing if (IS_ER(!hpage)) to if (!hpage) Reported-by: syzbot+e9cd3122a37c5d6c51e8@syzkaller.appspotmail.com Fixes: 16c243e99d33 ("udmabuf: Add support for mapping hugepages (v4)") Signed-off-by: Pavel Skripkin <paskripkin@gmail.com> Link: http://patchwork.freedesktop.org/patch/msgid/20210811175052.21254-1-paskripkin@gmail.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'drivers/dma-buf/udmabuf.c')
-rw-r--r--drivers/dma-buf/udmabuf.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/dma-buf/udmabuf.c b/drivers/dma-buf/udmabuf.c
index 8df761a10251..c57a609db75b 100644
--- a/drivers/dma-buf/udmabuf.c
+++ b/drivers/dma-buf/udmabuf.c
@@ -227,8 +227,8 @@ static long udmabuf_create(struct miscdevice *device,
if (!hpage) {
hpage = find_get_page_flags(mapping, pgoff,
FGP_ACCESSED);
- if (IS_ERR(hpage)) {
- ret = PTR_ERR(hpage);
+ if (!hpage) {
+ ret = -EINVAL;
goto err;
}
}