drivers/bluetooth/btintel_pcie.c:2402 btintel_pcie_reset_work() warn: can 'data' even be NULL?

kernel test robot <[email protected]> Fri, 24 Jul 2026 21:19:43 +0800
Newsgroups dev.linux.lists.oe-kbuild
Message-ID <[email protected]>
BCC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Chandrashekar Devegowda <[email protected]>
CC: Luiz Augusto von Dentz <[email protected]>
CC: Venkat Rao Bagalkote <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   4539944e515183668109bdf4d0c3d7d228383d88
commit: 2d00975c841fa2e52921353392ce9780843bfee7 Bluetooth: btintel_pcie: Support Product level reset
date:   6 weeks ago
:::::: branch date: 2 days ago
:::::: commit date: 6 weeks ago
config: x86_64-randconfig-161 (https://download.01.org/0day-ci/archive/20260724/[email protected]/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
smatch: v0.5.0-9187-g5189e3fb

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: 2d00975c841f ("Bluetooth: btintel_pcie: Support Product level reset")
| Reported-by: kernel test robot <[email protected]>
| Reported-by: Dan Carpenter <[email protected]>
| Closes: https://lore.kernel.org/r/[email protected]/

smatch warnings:
drivers/bluetooth/btintel_pcie.c:2402 btintel_pcie_reset_work() warn: can 'data' even be NULL?

vim +/data +2402 drivers/bluetooth/btintel_pcie.c

2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2389  
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2390  static void btintel_pcie_reset_work(struct work_struct *wk)
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2391  {
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2392  	struct btintel_pcie_data *data =
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2393  		container_of(wk, struct btintel_pcie_data, reset_work);
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2394  	struct pci_dev *pdev = data->pdev;
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2395  	int err;
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2396  
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2397  	pci_lock_rescan_remove();
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2398  
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2399  	if (!pdev->bus)
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2400  		goto out;
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2401  
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13 @2402  	if (!data)
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2403  		goto out;
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2404  
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2405  	btintel_pcie_disable_interrupts(data);
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2406  	btintel_pcie_synchronize_irqs(data);
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2407  
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2408  	flush_work(&data->rx_work);
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2409  
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2410  	bt_dev_dbg(data->hdev, "Release bluetooth interface");
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2411  	if (data->reset_type == BTINTEL_PCIE_IOSF_PRR_PLDR) {
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2412  		/* This function holds pci_lock_rescan_remove(), which acquires
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2413  		 * pci_rescan_remove_lock. This mutex serializes against PCI device
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2414  		 * addition/removal (hotplug), so no device can be added to or
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2415  		 * removed from the bus list while this code runs.
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2416  		 */
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2417  		btintel_pcie_perform_pldr(data);
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2418  		goto out;
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2419  	}
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2420  	btintel_pcie_release_hdev(data);
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2421  
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2422  	err = pci_reset_function(pdev);
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2423  	if (err) {
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2424  		BT_ERR("Failed resetting the pcie device (%d)", err);
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2425  		goto out;
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2426  	}
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2427  
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2428  	btintel_pcie_enable_interrupts(data);
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2429  	btintel_pcie_config_msix(data);
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2430  
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2431  	err = btintel_pcie_enable_bt(data);
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2432  	if (err) {
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2433  		BT_ERR("Failed to enable bluetooth hardware after reset (%d)",
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2434  		       err);
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2435  		goto out;
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2436  	}
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2437  
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2438  	btintel_pcie_reset_ia(data);
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2439  	btintel_pcie_start_rx(data);
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2440  	data->flags = 0;
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2441  
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2442  	err = btintel_pcie_setup_hdev(data);
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2443  	if (err) {
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2444  		BT_ERR("Failed registering hdev (%d)", err);
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2445  		goto out;
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2446  	}
2d00975c841fa2 Chandrashekar Devegowda 2026-04-13  2447  out:
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2448  	pci_dev_put(pdev);
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2449  	pci_unlock_rescan_remove();
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2450  }
256ab9520d15c7 Chandrashekar Devegowda 2025-06-10  2451  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki