]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit
USB: ldusb: fix read info leaks
authorJohan Hovold <johan@kernel.org>
Fri, 18 Oct 2019 15:19:54 +0000 (17:19 +0200)
committerStefan Bader <stefan.bader@canonical.com>
Tue, 12 Nov 2019 18:04:44 +0000 (19:04 +0100)
commit22a4045c5c58198071ce8a0e3985db9877cf4781
tree9e75d9e9753f94e1dc43bb82cf5ce168dbe71253
parent920e658e6d8e48ec01e4efb06efa13a983c681cb
USB: ldusb: fix read info leaks

BugLink: https://bugs.launchpad.net/bugs/1851876
commit 7a6f22d7479b7a0b68eadd308a997dd64dda7dae upstream.

Fix broken read implementation, which could be used to trigger slab info
leaks.

The driver failed to check if the custom ring buffer was still empty
when waking up after having waited for more data. This would happen on
every interrupt-in completion, even if no data had been added to the
ring buffer (e.g. on disconnect events).

Due to missing sanity checks and uninitialised (kmalloced) ring-buffer
entries, this meant that huge slab info leaks could easily be triggered.

Note that the empty-buffer check after wakeup is enough to fix the info
leak on disconnect, but let's clear the buffer on allocation and add a
sanity check to read() to prevent further leaks.

Fixes: 2824bd250f0b ("[PATCH] USB: add ldusb driver")
Cc: stable <stable@vger.kernel.org> # 2.6.13
Reported-by: syzbot+6fe95b826644f7f12b0b@syzkaller.appspotmail.com
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://lore.kernel.org/r/20191018151955.25135-2-johan@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/usb/misc/ldusb.c