diff options
| author | Miaoqian Lin <linmq006@gmail.com> | 2025-10-27 23:09:34 +0800 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2025-11-24 10:37:46 +0100 |
| commit | 6f58b75a77fd982346889bcc8197138065e07134 (patch) | |
| tree | bf980f2db6875a6f00218e66f9df0a2c32631480 /drivers/crypto | |
| parent | a2bd247f8c6c5ac3f0ba823a2fffd77bb9cdf618 (diff) | |
| download | linux-6f58b75a77fd982346889bcc8197138065e07134.tar.gz linux-6f58b75a77fd982346889bcc8197138065e07134.tar.bz2 linux-6f58b75a77fd982346889bcc8197138065e07134.zip | |
crypto: hisilicon/qm - Fix device reference leak in qm_get_qos_value
commit 59b0afd01b2ce353ab422ea9c8375b03db313a21 upstream.
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: 22d7a6c39cab ("crypto: hisilicon/qm - add pci bdf number check")
Cc: stable@vger.kernel.org
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Reviewed-by: Longfang Liu <liulongfang@huawei.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/crypto')
| -rw-r--r-- | drivers/crypto/hisilicon/qm.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/crypto/hisilicon/qm.c b/drivers/crypto/hisilicon/qm.c index f9bf102b2b37..60fe8cc9a7d0 100644 --- a/drivers/crypto/hisilicon/qm.c +++ b/drivers/crypto/hisilicon/qm.c @@ -3857,10 +3857,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; } |
