nvme-fabrics: get a reference when reusing a nvme_host structure

Without this we'll get a use after free after connecting two controller
using the same hostnqn and then disconnecting one of them.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jay Freyensee <james_p_freyensee@linux.intel.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
This commit is contained in:
Christoph Hellwig 2016-08-18 11:16:35 -07:00 committed by Sagi Grimberg
parent 7a665d2f60
commit 98096d8a78

View File

@ -47,8 +47,10 @@ static struct nvmf_host *nvmf_host_add(const char *hostnqn)
mutex_lock(&nvmf_hosts_mutex); mutex_lock(&nvmf_hosts_mutex);
host = __nvmf_host_find(hostnqn); host = __nvmf_host_find(hostnqn);
if (host) if (host) {
kref_get(&host->ref);
goto out_unlock; goto out_unlock;
}
host = kmalloc(sizeof(*host), GFP_KERNEL); host = kmalloc(sizeof(*host), GFP_KERNEL);
if (!host) if (!host)