• Javed Hasan's avatar
    scsi: libfc: Handling of extra kref · 71f2bf85
    Javed Hasan authored
    Handling of extra kref which is done by lookup table in case rdata is
    already present in list.
    
    This issue was leading to memory leak. Trace from KMEMLEAK tool:
    
      unreferenced object 0xffff8888259e8780 (size 512):
        comm "kworker/2:1", pid 182614, jiffies 4433237386 (age 113021.971s)
        hex dump (first 32 bytes):
        58 0a ec cf 83 88 ff ff 00 00 00 00 00 00 00 00
        01 00 00 00 08 00 00 00 13 7d f0 1e 0e 00 00 10
      backtrace:
    	[<000000006b25760f>] fc_rport_recv_req+0x3c6/0x18f0 [libfc]
    	[<00000000f208d994>] fc_lport_recv_els_req+0x120/0x8a0 [libfc]
    	[<00000000a9c437b8>] fc_lport_recv+0xb9/0x130 [libfc]
    	[<00000000ad5be37b>] qedf_ll2_process_skb+0x73d/0xad0 [qedf]
    	[<00000000e0eb6893>] process_one_work+0x382/0x6c0
    	[<000000002dfd9e21>] worker_thread+0x57/0x5c0
    	[<00000000b648204f>] kthread+0x1a0/0x1c0
    	[<0000000072f5ab20>] ret_from_fork+0x35/0x40
    	[<000000001d5c05d8>] 0xffffffffffffffff
    
    Below is the log sequence which leads to memory leak. Here we get the
    nested "Received PLOGI request" for same port and this request leads to
    call the fc_rport_create() twice for the same rport.
    
    	kernel: host1: rport fffce5: Received PLOGI request
    	kernel: host1: rport fffce5: Received PLOGI in INIT state
    	kernel: host1: rport fffce5: Port is Ready
    	kernel: host1: rport fffce5: Received PRLI request while in state Ready
    	kernel: host1: rport fffce5: PRLI rspp type 8 active 1 passive 0
    	kernel: host1: rport fffce5: Received LOGO request while in state Ready
    	kernel: host1: rport fffce5: Delete port
    	kernel: host1: rport fffce5: Received PLOGI request
    	kernel: host1: rport fffce5: Received PLOGI in state Delete - send busy
    
    Link: https://lore.kernel.org/r/20200622101212.3922-2-jhasan@marvell.comReviewed-by: default avatarGirish Basrur <gbasrur@marvell.com>
    Reviewed-by: default avatarSaurav Kashyap <skashyap@marvell.com>
    Reviewed-by: default avatarShyam Sundar <ssundar@marvell.com>
    Signed-off-by: default avatarJaved Hasan <jhasan@marvell.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    71f2bf85
fc_rport.c 60.1 KB