Re: [RFT PATCH] xhci: Fix memory leak when caching protocol extended capability PSI tables

From: Mathias Nyman
Date: Wed Jan 08 2020 - 10:54:52 EST


On 8.1.2020 17.40, Greg KH wrote:
On Wed, Jan 08, 2020 at 05:17:30PM +0200, Mathias Nyman wrote:
xhci driver assumed that xHC controllers have at most one custom
supported speed table (PSI) for all usb 3.x ports.
Memory was allocated for one PSI table under the xhci hub structure.

Turns out this is not the case, some controllers have a separate
"supported protocol capability" entry with a PSI table for each port.
This means each usb3 port can in theory support different custom speeds.

Is there a "max" number of port capabilities that can happen? Or this
this truely dynamic?

Almost truly dynamic, each capability points to the next, last points to 0

But we can't have more "supported protocol capabilities" than xHC ports.
(MaxPorts value in xHC HCSPARAMS1 register)


+ for (i = 0; i < xhci->num_port_caps; i++) {
+ kfree(xhci->port_caps[i].psi);
+ xhci->port_caps[i].psi = NULL;
+ }

Nit, no need to set to NULL here :)

Thanks, will remove that

-Mathias