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