diff mbox series

crypto: hisilicon/qm - add missing pci_dev_put() in q_num_set()

Message ID 20221111100036.129685-1-wangxiongfeng2@huawei.com
State Accepted
Commit cc7710d0d4ebc6998f04035cde4f32c5ddbe9d7f
Headers show
Series crypto: hisilicon/qm - add missing pci_dev_put() in q_num_set() | expand

Commit Message

Xiongfeng Wang Nov. 11, 2022, 10 a.m. UTC
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 <wangxiongfeng2@huawei.com>
---
 include/linux/hisi_acc_qm.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Weili Qian Nov. 14, 2022, 11:49 a.m. UTC | #1
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 <wangxiongfeng2@huawei.com>
> ---
>  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 <qianweili@huawei.com>

Thanks!
diff mbox series

Patch

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);