• Ira Weiny's avatar
    IB/hfi1: Define variables as unsigned long to fix KASAN warning · f8659d68
    Ira Weiny authored
    Define the working variables to be unsigned long to be compatible with
    for_each_set_bit and change types as needed.
    
    While we are at it remove unused variables from a couple of functions.
    
    This was found because of the following KASAN warning:
     ==================================================================
       BUG: KASAN: stack-out-of-bounds in find_first_bit+0x19/0x70
       Read of size 8 at addr ffff888362d778d0 by task kworker/u308:2/1889
    
       CPU: 21 PID: 1889 Comm: kworker/u308:2 Tainted: G W         5.3.0-rc2-mm1+ #2
       Hardware name: Intel Corporation W2600CR/W2600CR, BIOS SE5C600.86B.02.04.0003.102320141138 10/23/2014
       Workqueue: ib-comp-unb-wq ib_cq_poll_work [ib_core]
       Call Trace:
        dump_stack+0x9a/0xf0
        ? find_first_bit+0x19/0x70
        print_address_description+0x6c/0x332
        ? find_first_bit+0x19/0x70
        ? find_first_bit+0x19/0x70
        __kasan_report.cold.6+0x1a/0x3b
        ? find_first_bit+0x19/0x70
        kasan_report+0xe/0x12
        find_first_bit+0x19/0x70
        pma_get_opa_portstatus+0x5cc/0xa80 [hfi1]
        ? ret_from_fork+0x3a/0x50
        ? pma_get_opa_port_ectrs+0x200/0x200 [hfi1]
        ? stack_trace_consume_entry+0x80/0x80
        hfi1_process_mad+0x39b/0x26c0 [hfi1]
        ? __lock_acquire+0x65e/0x21b0
        ? clear_linkup_counters+0xb0/0xb0 [hfi1]
        ? check_chain_key+0x1d7/0x2e0
        ? lock_downgrade+0x3a0/0x3a0
        ? match_held_lock+0x2e/0x250
        ib_mad_recv_done+0x698/0x15e0 [ib_core]
        ? clear_linkup_counters+0xb0/0xb0 [hfi1]
        ? ib_mad_send_done+0xc80/0xc80 [ib_core]
        ? mark_held_locks+0x79/0xa0
        ? _raw_spin_unlock_irqrestore+0x44/0x60
        ? rvt_poll_cq+0x1e1/0x340 [rdmavt]
        __ib_process_cq+0x97/0x100 [ib_core]
        ib_cq_poll_work+0x31/0xb0 [ib_core]
        process_one_work+0x4ee/0xa00
        ? pwq_dec_nr_in_flight+0x110/0x110
        ? do_raw_spin_lock+0x113/0x1d0
        worker_thread+0x57/0x5a0
        ? process_one_work+0xa00/0xa00
        kthread+0x1bb/0x1e0
        ? kthread_create_on_node+0xc0/0xc0
        ret_from_fork+0x3a/0x50
    
       The buggy address belongs to the page:
       page:ffffea000d8b5dc0 refcount:0 mapcount:0 mapping:0000000000000000 index:0x0
       flags: 0x17ffffc0000000()
       raw: 0017ffffc0000000 0000000000000000 ffffea000d8b5dc8 0000000000000000
       raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
       page dumped because: kasan: bad access detected
    
       addr ffff888362d778d0 is located in stack of task kworker/u308:2/1889 at offset 32 in frame:
        pma_get_opa_portstatus+0x0/0xa80 [hfi1]
    
       this frame has 1 object:
        [32, 36) 'vl_select_mask'
    
       Memory state around the buggy address:
        ffff888362d77780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        ffff888362d77800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
       >ffff888362d77880: 00 00 00 00 00 00 f1 f1 f1 f1 04 f2 f2 f2 00 00
                                                        ^
        ffff888362d77900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        ffff888362d77980: 00 00 00 00 00 00 00 00 f1 f1 f1 f1 04 f2 f2 f2
    
     ==================================================================
    
    Cc: <stable@vger.kernel.org>
    Fixes: 77241056 ("IB/hfi1: add driver files")
    Link: https://lore.kernel.org/r/20190911113053.126040.47327.stgit@awfm-01.aw.intel.comReviewed-by: default avatarMike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: default avatarIra Weiny <ira.weiny@intel.com>
    Signed-off-by: default avatarKaike Wan <kaike.wan@intel.com>
    Signed-off-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    f8659d68
mad.c 140 KB