>> static void nvme_free_ctrl(struct kref *kref)
>> {
>> struct nvme_ctrl *ctrl = container_of(kref, struct nvme_ctrl, kref);
>> + struct nvme_subsystem *subsys = ctrl->subsys;
>> put_device(ctrl->device);
>> nvme_release_instance(ctrl);
>> ida_destroy(&ctrl->ns_ida);
>> + if (subsys) {
>> + mutex_lock(&subsys->lock);
>> + list_del(&ctrl->subsys_entry);
>> + mutex_unlock(&subsys->lock);
>> + }
>> +
>
> When can this happen? can a controller not have a subsys?
When we fail early enough to not have set up the subsystem yet.