In the Linux kernel, the following vulnerability has been resolved:
nvme-pci: fix a NULL pointer dereference in nvmeallocadmin_tags
In nvmeallocadmintags, the adminq can be set to an error (typically -ENOMEM) if the blkmqinitqueue call fails to set up the queue, which is checked immediately after the call. However, when we return the error message up the stack, to nvmeresetwork the error takes us to nvmeremovedeadctrl() nvmedevdisable() nvmesuspendqueue(&dev->queues[0]).
Here, we only check that the admin_q is non-NULL, rather than not an error or NULL, and begin quiescing a queue that never existed, leading to bad / NULL pointer dereference.