On 11/03/2017 11:56 PM, James Smart wrote:
> In test cases where an instance of the driver is detached and
> reattached, the driver will crash on reattachment. There is a
> compound if statement that will skip over the bar setup if
> the pci_resource_start call is not successful. The driver
> erroneously returns success to its bar setup in this scenario
> even though the bars aren't properly configured.
> 
> Rework the offending code segment for proper initialization steps.
> If the pci_resource_start call fails, -ENOMEM is now returned.
> 
> Sample stack:
> 
> rport-5:0-10: blocked FC remote port time out: removing rport
> BUG: unable to handle kernel NULL pointer dereference at           (null)
> ... lpfc_sli4_wait_bmbx_ready+0x32/0x70 [lpfc]
> ...
> ...  RIP: 0010:...  ... lpfc_sli4_wait_bmbx_ready+0x32/0x70 [lpfc]
>  Call Trace:
>   ... lpfc_sli4_post_sync_mbox+0x106/0x4d0 [lpfc]
>   ... ? __alloc_pages_nodemask+0x176/0x420
>   ... ? __kmalloc+0x2e/0x230
>   ... lpfc_sli_issue_mbox_s4+0x533/0x720 [lpfc]
>   ... ? mempool_alloc+0x69/0x170
>   ... ? dma_generic_alloc_coherent+0x8f/0x140
>   ... lpfc_sli_issue_mbox+0xf/0x20 [lpfc]
>   ... lpfc_sli4_driver_resource_setup+0xa6f/0x1130 [lpfc]
>   ... ? lpfc_pci_probe_one+0x23e/0x16f0 [lpfc]
>   ... lpfc_pci_probe_one+0x445/0x16f0 [lpfc]
>   ... local_pci_probe+0x45/0xa0
>   ... work_for_cpu_fn+0x14/0x20
>   ... process_one_work+0x17a/0x440
> 
> Cc: <sta...@vger.kernel.org> # 4.12+
> Signed-off-by: Dick Kennedy <dick.kenn...@broadcom.com>
> Signed-off-by: James Smart <james.sm...@broadcom.com>
> ---
>  drivers/scsi/lpfc/lpfc_init.c | 84 
> ++++++++++++++++++++++++++-----------------
>  1 file changed, 51 insertions(+), 33 deletions(-)
> 
Reviewed-by: Hannes Reinecke <h...@suse.com>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke                Teamlead Storage & Networking
h...@suse.de                                   +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)

Reply via email to