Ядро USB заботится об освобождении urb-> hcpriv, даже если оно НЕ выделяется само по себе? - PullRequest
0 голосов
/ 12 февраля 2019

Я работаю над настроенным модулем контроллера hci, внутри которого я использую urb->hcpriv для хранения личных данных для каждого urb.Память выделяется kmalloc() контроллером hci внутри urb_enqueue().

Я предполагаю, что мне нужно освободить его перед вызовом usb_hcd_giveback_urb(), чтобы завершить URB, чтобы избежать утечки памяти, но похоже, что это вешает все ядро.Однако я не смог увидеть, где urb->hcpriv освобождается внутри основного кода USB.

Я что-то здесь упускаю?

1 Ответ

0 голосов
/ 21 февраля 2019

После некоторого копания я понял, что USB-ядро заботится об очистке hcpriv в случае, если urb->status настроен на завершение (0) при вызове usb_hcd_giveback_urb().Таким образом, вам нужно только освободить hcpriv явно, когда URB завершается с ошибкой.

...