]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
video: fbdev: udlfb: Fix use after free on dlfb_usb_probe error path
authorAnton Vasilyev <vasilyev@ispras.ru>
Mon, 21 Aug 2017 14:49:58 +0000 (16:49 +0200)
committerBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Mon, 21 Aug 2017 14:49:58 +0000 (16:49 +0200)
If dlfb_usb_probe drops to error path then there is only one
kref_init() call and no kref_get(), so second kref_put() leads to
use after free.

The patch removes superfluous kref_put on dlfb_usb_probe error path.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
Cc: Bernie Thompson <bernie@plugable.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
drivers/video/fbdev/udlfb.c

index d0d29743dae205209d08d7a71f6b728d59472498..ef08a104fb42c6dafe3c88d32ca18b7430ede759 100644 (file)
@@ -1655,7 +1655,6 @@ static int dlfb_usb_probe(struct usb_interface *interface,
 error:
        if (dev) {
 
-               kref_put(&dev->kref, dlfb_free); /* ref for framebuffer */
                kref_put(&dev->kref, dlfb_free); /* last ref from kref_init */
 
                /* dev has been deallocated. Do not dereference */