.. | .. |
---|
289 | 289 | static inline int q_num_set(const char *val, const struct kernel_param *kp, |
---|
290 | 290 | unsigned int device) |
---|
291 | 291 | { |
---|
292 | | - struct pci_dev *pdev = pci_get_device(PCI_VENDOR_ID_HUAWEI, |
---|
293 | | - device, NULL); |
---|
| 292 | + struct pci_dev *pdev; |
---|
294 | 293 | u32 n, q_num; |
---|
295 | 294 | int ret; |
---|
296 | 295 | |
---|
297 | 296 | if (!val) |
---|
298 | 297 | return -EINVAL; |
---|
299 | 298 | |
---|
| 299 | + pdev = pci_get_device(PCI_VENDOR_ID_HUAWEI, device, NULL); |
---|
300 | 300 | if (!pdev) { |
---|
301 | 301 | q_num = min_t(u32, QM_QNUM_V1, QM_QNUM_V2); |
---|
302 | 302 | pr_info("No device found currently, suppose queue number is %d\n", |
---|
.. | .. |
---|
306 | 306 | q_num = QM_QNUM_V1; |
---|
307 | 307 | else |
---|
308 | 308 | q_num = QM_QNUM_V2; |
---|
| 309 | + |
---|
| 310 | + pci_dev_put(pdev); |
---|
309 | 311 | } |
---|
310 | 312 | |
---|
311 | 313 | ret = kstrtou32(val, 10, &n); |
---|