Commit 59b0afd0 authored by Miaoqian Lin's avatar Miaoqian Lin Committed by Herbert Xu
Browse files

crypto: hisilicon/qm - Fix device reference leak in qm_get_qos_value



The qm_get_qos_value() function calls bus_find_device_by_name() which
increases the device reference count, but fails to call put_device()
to balance the reference count and lead to a device reference leak.

Add put_device() calls in both the error path and success path to
properly balance the reference count.

Found via static analysis.

Fixes: 22d7a6c3 ("crypto: hisilicon/qm - add pci bdf number check")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarMiaoqian Lin <linmq006@gmail.com>
Reviewed-by: default avatarLongfang Liu <liulongfang@huawei.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 3c9bf72c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -3871,10 +3871,12 @@ static ssize_t qm_get_qos_value(struct hisi_qm *qm, const char *buf,
	pdev = container_of(dev, struct pci_dev, dev);
	if (pci_physfn(pdev) != qm->pdev) {
		pci_err(qm->pdev, "the pdev input does not match the pf!\n");
		put_device(dev);
		return -EINVAL;
	}

	*fun_index = pdev->devfn;
	put_device(dev);

	return 0;
}