• James Smart's avatar
    Fix driver unload/reload operation. · d1f525aa
    James Smart authored
    There are couple of different load/unload issues fixed with this patch.
    One of the issues was reported by Junichi Nomura, a patch was submitted
    by Johannes Thumsrhirn which did fix one of the problems but the fix in
    this patch separates the pring free from the queue free and does not set
    the parameter passed in to NULL.
    
    issues:
    (1) driver could not be unloaded and reloaded without some Oops or
     Panic occurring.
    (2) The driver was panicking because of a corruption in the Memory
    Manager when the iocb list was getting allocated.
    
    Root cause for the memory corruption was a double free of the Work Queue
    ring pointer memory - Freed once in the lpfc_sli4_queue_free when the CQ
    was destroyed and again in lpfc_sli4_queue_free when the WQ was destroyed.
    
    The pring free and the queue free were separated, the pring free was moved
    to the wq destroy routine because it a better fit logically to delete the
    ring with the wq.
    
    The checkpatch flagged several alignmenet issues that were also corrected
    with this patch.
    
    The mboxq was never initialed correctly before it was used by the driver
    this patch corrects that issue.
    Reported-by: default avatarJunichi Nomura <j-nomura@ce.jp.nec.com>
    Signed-off-by: default avatarDick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: default avatarJames Smart <james.smart@broadcom.com>
    Reviewed-by: default avatarJohannes Thumshirn <jthumshirn@suse.de>
    Tested-by: default avatarJunichi Nomura <j-nomura@ce.jp.nec.com>
    d1f525aa
lpfc_init.c 356 KB