lkml.org 
[lkml]   [2008]   [Jan]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [GIT PULL] please pull infiniband.git for-linus
    Subject: IB/srp: Fix list corruption/oops on module reload

    ib_srp doesn't clean up the transport attributes properly when
    unloading, so it leaves references around to free'd memory.

    The srp_remove_host() cannot go before the scsi_remove_host() call as
    the documented call sequence suggests, as it will cause an oops when the
    SRP transport code will free up an object that is not its own. So,
    temporarily reorder the calls in srp_remove_work() to avoid the problem
    as well until the transport code can be fixed.

    Signed-off-by: David Dillow <dillowda@ornl.gov>
    ---
    On Thu, 2008-01-03 at 15:13 -0500, David Dillow wrote:
    > I'll send a new patch to you for just the ib_srp.c side.

    Should've just sent it with the last email.

    diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
    index 950228f..6e7e3c8 100644
    --- a/drivers/infiniband/ulp/srp/ib_srp.c
    +++ b/drivers/infiniband/ulp/srp/ib_srp.c
    @@ -423,8 +423,8 @@ static void srp_remove_work(struct work_struct *work)
    list_del(&target->list);
    spin_unlock(&target->srp_host->target_lock);

    - srp_remove_host(target->scsi_host);
    scsi_remove_host(target->scsi_host);
    + srp_remove_host(target->scsi_host);
    ib_destroy_cm_id(target->cm_id);
    srp_free_target_ib(target);
    scsi_host_put(target->scsi_host);
    @@ -2054,6 +2054,7 @@ static void srp_remove_one(struct ib_device *device)
    list_for_each_entry_safe(target, tmp_target,
    &host->target_list, list) {
    scsi_remove_host(target->scsi_host);
    + srp_remove_host(target->scsi_host);
    srp_disconnect_target(target);
    ib_destroy_cm_id(target->cm_id);
    srp_free_target_ib(target);



    \
     
     \ /
      Last update: 2008-01-03 21:23    [W:0.023 / U:90.788 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site