linux_dsm_epyc7002/drivers/infiniband/hw
Sebastian Sanchez 45d924571a IB/hfi1: Fix NULL pointer dereference when invalid num_vls is used
When an invalid num_vls is used as a module parameter, the code
execution follows an exception path where the macro dd_dev_err()
expects dd->pcidev->dev not to be NULL in hfi1_init_dd(). This
causes a NULL pointer dereference.

Fix hfi1_init_dd() by initializing dd->pcidev and dd->pcidev->dev
earlier in the code. If a dd exists, then dd->pcidev and
dd->pcidev->dev always exists.

BUG: unable to handle kernel NULL pointer dereference
at 00000000000000f0
IP: __dev_printk+0x15/0x90
Workqueue: events work_for_cpu_fn
RIP: 0010:__dev_printk+0x15/0x90
Call Trace:
 dev_err+0x6c/0x90
 ? hfi1_init_pportdata+0x38d/0x3f0 [hfi1]
 hfi1_init_dd+0xdd/0x2530 [hfi1]
 ? pci_conf1_read+0xb2/0xf0
 ? pci_read_config_word.part.9+0x64/0x80
 ? pci_conf1_write+0xb0/0xf0
 ? pcie_capability_clear_and_set_word+0x57/0x80
 init_one+0x141/0x490 [hfi1]
 local_pci_probe+0x3f/0xa0
 work_for_cpu_fn+0x10/0x20
 process_one_work+0x152/0x350
 worker_thread+0x1cf/0x3e0
 kthread+0xf5/0x130
 ? max_active_store+0x80/0x80
 ? kthread_bind+0x10/0x10
 ? do_syscall_64+0x6e/0x1a0
 ? SyS_exit_group+0x10/0x10
 ret_from_fork+0x35/0x40

Cc: <stable@vger.kernel.org> # 4.9.x
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Reviewed-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Signed-off-by: Sebastian Sanchez <sebastian.sanchez@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2018-05-03 15:24:47 -04:00
..
bnxt_re RDMA: Use ib_gid_attr during GID modification 2018-04-03 21:34:16 -06:00
cxgb3 RDMA/cxgb3: Use structs to describe the uABI instead of opencoding 2018-03-22 12:42:48 -06:00
cxgb4 iw_cxgb4: Atomically flush per QP HW CQEs 2018-04-27 14:38:44 -04:00
hfi1 IB/hfi1: Fix NULL pointer dereference when invalid num_vls is used 2018-05-03 15:24:47 -04:00
hns RDMA/hns: Fix a couple misspellings 2018-04-27 14:21:51 -04:00
i40iw i40iw: Remove pre-production workaround for resource profile 1 2018-04-03 13:40:39 -06:00
mlx4 RDMA/mlx4: Add missed RSS hash inner header flag 2018-04-27 14:22:23 -04:00
mlx5 RDMA/mlx5: Properly check return value of mlx5_get_uars_page 2018-04-27 11:03:15 -04:00
mthca IB/uverbs: Extend uverbs_ioctl header with driver_id 2018-03-19 14:45:17 -06:00
nes IB/nes: fix nes_netdev_start_xmit()'s return type 2018-04-27 14:07:30 -04:00
ocrdma IB/providers: Avoid null netdev check for RoCE 2018-04-03 21:33:51 -06:00
qedr Merge candidates for 4.17 merge window 2018-04-06 17:35:43 -07:00
qib RDMA: Use u64_to_user_ptr everywhere 2018-03-29 13:42:29 -06:00
usnic Merge candidates for 4.17 merge window 2018-04-06 17:35:43 -07:00
vmw_pvrdma RDMA: Use ib_gid_attr during GID modification 2018-04-03 21:34:16 -06:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00