[BUG] usb: serial: garmin_gps: A possible concurrency use-after-free bug

From: Jia-Ju Bai
Date: Thu Dec 20 2018 - 08:41:28 EST


In drivers/usb/serial/garmin_gps.c,
the functions garmin_read_bulk_callback() and garmin_write_bulk_callback()
may be concurrently executed.

In garmin_write_bulk_callback() on line 969:
kfree(urb->transfer_buffer);
In garmin_read_bulk_callback() on line 1165:
unsigned char *data = urb->transfer_buffer;
Thus, a concurrency use-after-free bug may occur.

This possible bug is found by a static analysis tool written by myself.


Best wishes,
Jia-Ju Bai