In the Linux kernel, the following vulnerability has been resolved: uacce: ensure safe queue release with state management Directly calling `put_queue` carries risks since it cannot guarantee that resources of `uacce_queue` have been fully released beforehand. So adding a `stop_queue` operation for the UACCE_CMD_PUT_Q command and leaving the `put_queue` operation to the final resource release ensures safety. Queue states are defined as follows: - UACCE_Q_ZOMBIE: Initial state - UACCE_Q_INIT: After opening `uacce` - UACCE_Q_STARTED: After `start` is issued via `ioctl` When executing `poweroff -f` in virt while accelerator are still working, `uacce_fops_release` and `uacce_remove` may execute concurrently. This can cause `uacce_put_queue` within `uacce_fops_release` to access a NULL `ops` pointer. Therefore, add state checks to prevent accessing freed pointers.
https://git.kernel.org/stable/c/b457abeb5d962db88aaf60e249402fd3073dbfab
https://git.kernel.org/stable/c/92e4f11e29b98ef424ff72d6371acac03e5d973c
https://git.kernel.org/stable/c/8b57bf1d3b1db692f34bce694a03e41be79f6016
https://git.kernel.org/stable/c/47634d70073890c9c37e39ab4ff93d4b585b028a
https://git.kernel.org/stable/c/43f233eb6e7b9d88536881a9bc43726d0e34800d
https://git.kernel.org/stable/c/336fb41a186e7c0415ae94fec9e23d1f04b87483
https://git.kernel.org/stable/c/26c08dabe5475d99a13f353d8dd70e518de45663