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