diff mbox series

[iwl-net] idpf: fix VF dynamic interrupt ctl register initialization

Message ID 20240828223825.426647-1-ahmed.zaki@intel.com
State Under Review
Delegated to: Anthony Nguyen
Headers show
Series [iwl-net] idpf: fix VF dynamic interrupt ctl register initialization | expand

Commit Message

Ahmed Zaki Aug. 28, 2024, 10:38 p.m. UTC
The VF's dynamic interrupt ctl "dyn_ctl_intrvl_s" is not initialized
in idpf_vf_intr_reg_init(). This resulted in the following UBSAN error
whenever a VF is created:

[  564.345655] UBSAN: shift-out-of-bounds in drivers/net/ethernet/intel/idpf/idpf_txrx.c:3654:10
[  564.345663] shift exponent 4294967295 is too large for 32-bit type 'int'
[  564.345671] CPU: 33 UID: 0 PID: 2458 Comm: NetworkManager Not tainted 6.11.0-rc4+ #1
[  564.345678] Hardware name: Intel Corporation M50CYP2SBSTD/M50CYP2SBSTD, BIOS SE5C6200.86B.0027.P10.2201070222 01/07/2022
[  564.345683] Call Trace:
[  564.345688]  <TASK>
[  564.345693]  dump_stack_lvl+0x91/0xb0
[  564.345708]  __ubsan_handle_shift_out_of_bounds+0x16b/0x320
[  564.345730]  idpf_vport_intr_update_itr_ena_irq.cold+0x13/0x39 [idpf]
[  564.345755]  ? __pfx_idpf_vport_intr_update_itr_ena_irq+0x10/0x10 [idpf]
[  564.345771]  ? static_obj+0x95/0xd0
[  564.345782]  ? lockdep_init_map_type+0x1a5/0x800
[  564.345794]  idpf_vport_intr_ena+0x5ef/0x9f0 [idpf]
[  564.345814]  idpf_vport_open+0x2cc/0x1240 [idpf]
[  564.345837]  idpf_open+0x6d/0xc0 [idpf]
[  564.345850]  __dev_open+0x241/0x420

Fixes: d4d558718266 ("idpf: initialize interrupts and enable vport")
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Ahmed Zaki <ahmed.zaki@intel.com>
---
 drivers/net/ethernet/intel/idpf/idpf_vf_dev.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Simon Horman Sept. 2, 2024, 8:49 a.m. UTC | #1
On Wed, Aug 28, 2024 at 04:38:25PM -0600, Ahmed Zaki wrote:
> The VF's dynamic interrupt ctl "dyn_ctl_intrvl_s" is not initialized
> in idpf_vf_intr_reg_init(). This resulted in the following UBSAN error
> whenever a VF is created:
> 
> [  564.345655] UBSAN: shift-out-of-bounds in drivers/net/ethernet/intel/idpf/idpf_txrx.c:3654:10
> [  564.345663] shift exponent 4294967295 is too large for 32-bit type 'int'
> [  564.345671] CPU: 33 UID: 0 PID: 2458 Comm: NetworkManager Not tainted 6.11.0-rc4+ #1
> [  564.345678] Hardware name: Intel Corporation M50CYP2SBSTD/M50CYP2SBSTD, BIOS SE5C6200.86B.0027.P10.2201070222 01/07/2022
> [  564.345683] Call Trace:
> [  564.345688]  <TASK>
> [  564.345693]  dump_stack_lvl+0x91/0xb0
> [  564.345708]  __ubsan_handle_shift_out_of_bounds+0x16b/0x320
> [  564.345730]  idpf_vport_intr_update_itr_ena_irq.cold+0x13/0x39 [idpf]
> [  564.345755]  ? __pfx_idpf_vport_intr_update_itr_ena_irq+0x10/0x10 [idpf]
> [  564.345771]  ? static_obj+0x95/0xd0
> [  564.345782]  ? lockdep_init_map_type+0x1a5/0x800
> [  564.345794]  idpf_vport_intr_ena+0x5ef/0x9f0 [idpf]
> [  564.345814]  idpf_vport_open+0x2cc/0x1240 [idpf]
> [  564.345837]  idpf_open+0x6d/0xc0 [idpf]
> [  564.345850]  __dev_open+0x241/0x420
> 
> Fixes: d4d558718266 ("idpf: initialize interrupts and enable vport")
> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> Signed-off-by: Ahmed Zaki <ahmed.zaki@intel.com>

Thanks,

I see that this now matches the implementation of idpf_intr_reg_init().

Reviewed-by: Simon Horman <horms@kernel.org>
diff mbox series

Patch

diff --git a/drivers/net/ethernet/intel/idpf/idpf_vf_dev.c b/drivers/net/ethernet/intel/idpf/idpf_vf_dev.c
index 629cb5cb7c9f..5d4182ca0ff6 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_vf_dev.c
+++ b/drivers/net/ethernet/intel/idpf/idpf_vf_dev.c
@@ -98,6 +98,7 @@  static int idpf_vf_intr_reg_init(struct idpf_vport *vport)
 						  reg_vals[vec_id].dyn_ctl_reg);
 		intr->dyn_ctl_intena_m = VF_INT_DYN_CTLN_INTENA_M;
 		intr->dyn_ctl_itridx_s = VF_INT_DYN_CTLN_ITR_INDX_S;
+		intr->dyn_ctl_intrvl_s = VF_INT_DYN_CTLN_INTERVAL_S;
 
 		spacing = IDPF_ITR_IDX_SPACING(reg_vals[vec_id].itrn_index_spacing,
 					       IDPF_VF_ITR_IDX_SPACING);