• Javed Hasan's avatar
    scsi: libfc: Handling of extra kref · 694ec54b
    Javed Hasan authored
    [ Upstream commit 71f2bf85 ]
    
    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>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    694ec54b
fc_rport.c 60.3 KB