2022-11-11 09:47:04

by Xiongfeng Wang

[permalink] [raw]
Subject: [PATCH] crypto: hisilicon/qm - add missing pci_dev_put() in q_num_set()

pci_get_device() will increase the reference count for the returned
pci_dev. We need to use pci_dev_put() to decrease the reference count
before q_num_set() returns.

Signed-off-by: Xiongfeng Wang <[email protected]>
---
include/linux/hisi_acc_qm.h | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/include/linux/hisi_acc_qm.h b/include/linux/hisi_acc_qm.h
index e230c7c46110..c3618255b150 100644
--- a/include/linux/hisi_acc_qm.h
+++ b/include/linux/hisi_acc_qm.h
@@ -384,14 +384,14 @@ struct hisi_qp {
static inline int q_num_set(const char *val, const struct kernel_param *kp,
unsigned int device)
{
- struct pci_dev *pdev = pci_get_device(PCI_VENDOR_ID_HUAWEI,
- device, NULL);
+ struct pci_dev *pdev;
u32 n, q_num;
int ret;

if (!val)
return -EINVAL;

+ pdev = pci_get_device(PCI_VENDOR_ID_HUAWEI, device, NULL);
if (!pdev) {
q_num = min_t(u32, QM_QNUM_V1, QM_QNUM_V2);
pr_info("No device found currently, suppose queue number is %u\n",
@@ -401,6 +401,8 @@ static inline int q_num_set(const char *val, const struct kernel_param *kp,
q_num = QM_QNUM_V1;
else
q_num = QM_QNUM_V2;
+
+ pci_dev_put(pdev);
}

ret = kstrtou32(val, 10, &n);
--
2.20.1



2022-11-14 12:07:32

by Weili Qian

[permalink] [raw]
Subject: Re: [PATCH] crypto: hisilicon/qm - add missing pci_dev_put() in q_num_set()


On 2022/11/11 18:00, Xiongfeng Wang wrote:
> pci_get_device() will increase the reference count for the returned
> pci_dev. We need to use pci_dev_put() to decrease the reference count
> before q_num_set() returns.
>
> Signed-off-by: Xiongfeng Wang <[email protected]>
> ---
> include/linux/hisi_acc_qm.h | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/hisi_acc_qm.h b/include/linux/hisi_acc_qm.h
> index e230c7c46110..c3618255b150 100644
> --- a/include/linux/hisi_acc_qm.h
> +++ b/include/linux/hisi_acc_qm.h
> @@ -384,14 +384,14 @@ struct hisi_qp {
> static inline int q_num_set(const char *val, const struct kernel_param *kp,
> unsigned int device)
> {
> - struct pci_dev *pdev = pci_get_device(PCI_VENDOR_ID_HUAWEI,
> - device, NULL);
> + struct pci_dev *pdev;
> u32 n, q_num;
> int ret;
>
> if (!val)
> return -EINVAL;
>
> + pdev = pci_get_device(PCI_VENDOR_ID_HUAWEI, device, NULL);
> if (!pdev) {
> q_num = min_t(u32, QM_QNUM_V1, QM_QNUM_V2);
> pr_info("No device found currently, suppose queue number is %u\n",
> @@ -401,6 +401,8 @@ static inline int q_num_set(const char *val, const struct kernel_param *kp,
> q_num = QM_QNUM_V1;
> else
> q_num = QM_QNUM_V2;
> +
> + pci_dev_put(pdev);
> }
>
> ret = kstrtou32(val, 10, &n);
>

Looks good!

Reviewed-by: Weili Qian <[email protected]>

Thanks!

2022-11-18 09:20:12

by Herbert Xu

[permalink] [raw]
Subject: Re: [PATCH] crypto: hisilicon/qm - add missing pci_dev_put() in q_num_set()

On Fri, Nov 11, 2022 at 06:00:36PM +0800, Xiongfeng Wang wrote:
> pci_get_device() will increase the reference count for the returned
> pci_dev. We need to use pci_dev_put() to decrease the reference count
> before q_num_set() returns.
>
> Signed-off-by: Xiongfeng Wang <[email protected]>
> ---
> include/linux/hisi_acc_qm.h | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)

Patch applied. Thanks.
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt