CVE-2021-47231

can: mcba_usb: fix memory leak in mcba_usb

Medium · published May 21, 2024

CVSS v3.1
5.5
EPSS
0%
Percentile
12.6
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

can: mcba_usb: fix memory leak in mcba_usb

Syzbot reported memory leak in SocketCAN driver for Microchip CAN BUS

Analyzer Tool. The problem was in unfreed usb_coherent.

In mcba_usb_start() 20 coherent buffers are allocated and there is

nothing, that frees them:

1) In callback function the urb is resubmitted and that's all

2) In disconnect function urbs are simply killed, but URB_FREE_BUFFER

is not set (see mcba_usb_start) and this flag cannot be used with

coherent buffers.

Fail log:

| [ 1354.053291][ T8413] mcba_usb 1-1:0.0 can0: device disconnected

| [ 1367.059384][ T8420] kmemleak: 20 new suspected memory leaks (see /sys/kernel/debug/kmem)

So, all allocated buffers should be freed with usb_free_coherent()

explicitly

NOTE:

The same pattern for allocating and freeing coherent buffers

is used in drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00226 · 12.6th percentile
Published
2024-05-21T14:19Z
EPSS history
Timeline
  • 21 MAY 14:19Z
    can: mcba_usb: fix memory leak in mcba_usb
    cvelistv5