In the Linux kernel, the following vulnerability has been resolved:
staging: rtl8712: fix a potential memory leak in r871xudrvinit()
In r871xudrvinit(), if r8712initdrvsw() fails, then the memory allocated by r8712allocioqueue() in r8712usbdvobjinit() is not properly released as there is no action will be performed by r8712usbdvobjdeinit(). To properly release it, we should call r8712freeioqueue() in r8712usbdvobjdeinit().
Besides, in r871xudevremove(), r8712usbdvobjdeinit() will be called
by r871xdevunload() under condition padapter->bup
and
r8712freeioqueue() is called by r8712freedrvsw().
However, r8712usbdvobjdeinit() does not rely on padapter->bup
and
calling r8712freeioqueue() in r8712freedrvsw() is negative for
better understading the code.
So I move r8712usbdvobjdeinit() into r871xudevremove(), and remove
r8712freeioqueue() from r8712freedrv_sw().