Patch "RDMA/siw: Fix calculation of tx_valid_cpus size" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    RDMA/siw: Fix calculation of tx_valid_cpus size

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     rdma-siw-fix-calculation-of-tx_valid_cpus-size.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 6d593b8971974c25b7f397ee5654d210da31ebc1
Author: Kamal Heib <kamalheib1@xxxxxxxxx>
Date:   Mon Feb 1 13:29:22 2021 +0200

    RDMA/siw: Fix calculation of tx_valid_cpus size
    
    [ Upstream commit 429fa9698957d1a910535ce5e33aedf5adfdabc1 ]
    
    The size of tx_valid_cpus was calculated under the assumption that the
    numa nodes identifiers are continuous, which is not the case in all archs
    as this could lead to the following panic when trying to access an invalid
    tx_valid_cpus index, avoid the following panic by using nr_node_ids
    instead of num_online_nodes() to allocate the tx_valid_cpus size.
    
       Kernel attempted to read user page (8) - exploit attempt? (uid: 0)
       BUG: Kernel NULL pointer dereference on read at 0x00000008
       Faulting instruction address: 0xc0080000081b4a90
       Oops: Kernel access of bad area, sig: 11 [#1]
       LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=2048 NUMA PowerNV
       Modules linked in: siw(+) rfkill rpcrdma ib_isert iscsi_target_mod ib_iser libiscsi scsi_transport_iscsi ib_srpt target_core_mod ib_srp scsi_transport_srp ib_ipoib rdma_ucm sunrpc ib_umad rdma_cm ib_cm iw_cm i40iw ib_uverbs ib_core i40e ses enclosure scsi_transport_sas ipmi_powernv ibmpowernv at24 ofpart ipmi_devintf regmap_i2c ipmi_msghandler powernv_flash uio_pdrv_genirq uio mtd opal_prd zram ip_tables xfs libcrc32c sd_mod t10_pi ast i2c_algo_bit drm_vram_helper drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops cec drm_ttm_helper ttm drm vmx_crypto aacraid drm_panel_orientation_quirks dm_mod
       CPU: 40 PID: 3279 Comm: modprobe Tainted: G        W      X --------- ---  5.11.0-0.rc4.129.eln108.ppc64le #2
       NIP:  c0080000081b4a90 LR: c0080000081b4a2c CTR: c0000000007ce1c0
       REGS: c000000027fa77b0 TRAP: 0300   Tainted: G        W      X --------- ---   (5.11.0-0.rc4.129.eln108.ppc64le)
       MSR:  9000000002009033 <SF,HV,VEC,EE,ME,IR,DR,RI,LE>  CR: 44224882  XER: 00000000
       CFAR: c0000000007ce200 DAR: 0000000000000008 DSISR: 40000000 IRQMASK: 0
       GPR00: c0080000081b4a2c c000000027fa7a50 c0080000081c3900 0000000000000040
       GPR04: c000000002023080 c000000012e1c300 000020072ad70000 0000000000000001
       GPR08: c000000001726068 0000000000000008 0000000000000008 c0080000081b5758
       GPR12: c0000000007ce1c0 c0000007fffc3000 00000001590b1e40 0000000000000000
       GPR16: 0000000000000000 0000000000000001 000000011ad68fc8 00007fffcc09c5c8
       GPR20: 0000000000000008 0000000000000000 00000001590b2850 00000001590b1d30
       GPR24: 0000000000043d68 000000011ad67a80 000000011ad67a80 0000000000100000
       GPR28: c000000012e1c300 c0000000020271c8 0000000000000001 c0080000081bf608
       NIP [c0080000081b4a90] siw_init_cpulist+0x194/0x214 [siw]
       LR [c0080000081b4a2c] siw_init_cpulist+0x130/0x214 [siw]
       Call Trace:
       [c000000027fa7a50] [c0080000081b4a2c] siw_init_cpulist+0x130/0x214 [siw] (unreliable)
       [c000000027fa7a90] [c0080000081b4e68] siw_init_module+0x40/0x2a0 [siw]
       [c000000027fa7b30] [c0000000000124f4] do_one_initcall+0x84/0x2e0
       [c000000027fa7c00] [c000000000267ffc] do_init_module+0x7c/0x350
       [c000000027fa7c90] [c00000000026a180] __do_sys_init_module+0x210/0x250
       [c000000027fa7db0] [c0000000000387e4] system_call_exception+0x134/0x230
       [c000000027fa7e10] [c00000000000d660] system_call_common+0xf0/0x27c
       Instruction dump:
       40810044 3d420000 e8bf0000 e88a82d0 3d420000 e90a82c8 792a1f24 7cc4302a
       7d2642aa 79291f24 7d25482a 7d295214 <7d4048a8> 7d4a3b78 7d4049ad 40c2fff4
    
    Fixes: bdcf26bf9b3a ("rdma/siw: network and RDMA core interface")
    Link: https://lore.kernel.org/r/20210201112922.141085-1-kamalheib1@xxxxxxxxx
    Signed-off-by: Kamal Heib <kamalheib1@xxxxxxxxx>
    Reviewed-by: Bernard Metzler <bmt@xxxxxxxxxxxxxx>
    Tested-by: Yi Zhang <yi.zhang@xxxxxxxxxx>
    Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/infiniband/sw/siw/siw_main.c b/drivers/infiniband/sw/siw/siw_main.c
index fb66d67572787..dbbf8c6c16d38 100644
--- a/drivers/infiniband/sw/siw/siw_main.c
+++ b/drivers/infiniband/sw/siw/siw_main.c
@@ -134,7 +134,7 @@ static struct {
 
 static int siw_init_cpulist(void)
 {
-	int i, num_nodes = num_possible_nodes();
+	int i, num_nodes = nr_node_ids;
 
 	memset(siw_tx_thread, 0, sizeof(siw_tx_thread));
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux