• Yangyang Li's avatar
    RDMA/hns: Fix a calltrace when registering MR from userspace · 98a61519
    Yangyang Li authored
    ibmr.device is assigned after MR is successfully registered, but both
    write_mtpt() and frmr_write_mtpt() accesses it during the mr registration
    process, which may cause the following error when trying to register MR in
    userspace and pbl_hop_num is set to 0.
    
      pc : hns_roce_mtr_find+0xa0/0x200 [hns_roce]
      lr : set_mtpt_pbl+0x54/0x118 [hns_roce_hw_v2]
      sp : ffff00023e73ba20
      x29: ffff00023e73ba20 x28: ffff00023e73bad8
      x27: 0000000000000000 x26: 0000000000000000
      x25: 0000000000000002 x24: 0000000000000000
      x23: ffff00023e73bad0 x22: 0000000000000000
      x21: ffff0000094d9000 x20: 0000000000000000
      x19: ffff8020a6bdb2c0 x18: 0000000000000000
      x17: 0000000000000000 x16: 0000000000000000
      x15: 0000000000000000 x14: 0000000000000000
      x13: 0140000000000000 x12: 0040000000000041
      x11: ffff000240000000 x10: 0000000000001000
      x9 : 0000000000000000 x8 : ffff802fb7558480
      x7 : ffff802fb7558480 x6 : 000000000003483d
      x5 : ffff00023e73bad0 x4 : 0000000000000002
      x3 : ffff00023e73bad8 x2 : 0000000000000000
      x1 : 0000000000000000 x0 : ffff0000094d9708
      Call trace:
       hns_roce_mtr_find+0xa0/0x200 [hns_roce]
       set_mtpt_pbl+0x54/0x118 [hns_roce_hw_v2]
       hns_roce_v2_write_mtpt+0x14c/0x168 [hns_roce_hw_v2]
       hns_roce_mr_enable+0x6c/0x148 [hns_roce]
       hns_roce_reg_user_mr+0xd8/0x130 [hns_roce]
       ib_uverbs_reg_mr+0x14c/0x2e0 [ib_uverbs]
       ib_uverbs_write+0x27c/0x3e8 [ib_uverbs]
       __vfs_write+0x60/0x190
       vfs_write+0xac/0x1c0
       ksys_write+0x6c/0xd8
       __arm64_sys_write+0x24/0x30
       el0_svc_common+0x78/0x130
       el0_svc_handler+0x38/0x78
       el0_svc+0x8/0xc
    
    Solve above issue by adding a pointer of structure hns_roce_dev as a
    parameter of write_mtpt() and frmr_write_mtpt(), so that both of these
    functions can access it before finishing MR's registration.
    
    Fixes: 9b2cf76c ("RDMA/hns: Optimize PBL buffer allocation process")
    Link: https://lore.kernel.org/r/1592314629-51715-1-git-send-email-liweihang@huawei.comSigned-off-by: default avatarYangyang Li <liyangyang20@huawei.com>
    Signed-off-by: default avatarWeihang Li <liweihang@huawei.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    98a61519
hns_roce_device.h 34.7 KB