• Sean Hefty's avatar
    IB/mad: Fix incorrect access to items on local_list · b61d92d8
    Sean Hefty authored
    In cancel_mads(), MADs are moved from the wait_list and local_list
    to a cancel_list for processing.  However, the structures on these two
    lists are not the same.  The wait_list references struct
    ib_mad_send_wr_private, but local_list references struct
    ib_mad_local_private.  Cancel_mads() treats all items moved to the
    cancel_list as struct ib_mad_send_wr_private.  This leads to a system
    crash when requests are moved from the local_list to the cancel_list.
    
    Fix this by leaving local_list alone.  All requests on the local_list
    have completed are just awaiting processing by a queued worker thread.
    
    Bug (crash) reported by Dotan Barak <dotanb@dev.mellanox.co.il>.
    Problem with local_list access reported by Robert Reynolds
    <rreynolds@opengridcomputing.com>.
    Signed-off-by: default avatarSean Hefty <sean.hefty@intel.com>
    Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
    b61d92d8
mad.c 83.7 KB