In rtl_pci_probe(), rtl_pci_init() allocates some resources, such as:
_rtl_pci_init_trx_ring
_rtl_pci_init_rx_ring
_rtl_pci_init_rx_ring
pci_zalloc_consistent() -- resource
_rtl_pci_init_one_rxdesc
dev_alloc_skb() -- resource
_rtl_pci_init_trx_ring
_rtl_pci_init_tx_ring
pci_zalloc_consistent() -- resource
When ieee80211_register_hw() or rtl_pci_intr_mode_decide() fails, these
resources are not released in error handling code.
A possible fix is to call rtl_pci_deinit() in error handling code, but I
am not sure whether this is correct.
Thus, I only report the bugs.
These bugs are found by a runtime fuzzing tool named FIZZER written by us.
Best wishes,
Jia-Ju Bai