]>
Commit | Line | Data |
---|---|---|
ef332cb8 GKH |
1 | From foo@baz Tue Aug 28 16:10:37 CEST 2018 |
2 | From: Johannes Thumshirn <jthumshirn@suse.de> | |
3 | Date: Tue, 31 Jul 2018 15:46:02 +0200 | |
4 | Subject: scsi: fcoe: drop frames in ELS LOGO error path | |
5 | ||
6 | From: Johannes Thumshirn <jthumshirn@suse.de> | |
7 | ||
8 | [ Upstream commit 63d0e3dffda311e77b9a8c500d59084e960a824a ] | |
9 | ||
10 | Drop the frames in the ELS LOGO error path instead of just returning an | |
11 | error. | |
12 | ||
13 | This fixes the following kmemleak report: | |
14 | unreferenced object 0xffff880064cb1000 (size 424): | |
15 | comm "kworker/0:2", pid 24, jiffies 4294904293 (age 68.504s) | |
16 | hex dump (first 32 bytes): | |
17 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
18 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
19 | backtrace: | |
20 | [<(____ptrval____)>] _fc_frame_alloc+0x2c/0x180 [libfc] | |
21 | [<(____ptrval____)>] fc_lport_enter_logo+0x106/0x360 [libfc] | |
22 | [<(____ptrval____)>] fc_fabric_logoff+0x8c/0xc0 [libfc] | |
23 | [<(____ptrval____)>] fcoe_if_destroy+0x79/0x3b0 [fcoe] | |
24 | [<(____ptrval____)>] fcoe_destroy_work+0xd2/0x170 [fcoe] | |
25 | [<(____ptrval____)>] process_one_work+0x7ff/0x1420 | |
26 | [<(____ptrval____)>] worker_thread+0x87/0xef0 | |
27 | [<(____ptrval____)>] kthread+0x2db/0x390 | |
28 | [<(____ptrval____)>] ret_from_fork+0x35/0x40 | |
29 | [<(____ptrval____)>] 0xffffffffffffffff | |
30 | ||
31 | which can be triggered by issuing | |
32 | echo eth0 > /sys/bus/fcoe/ctlr_destroy | |
33 | ||
34 | Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de> | |
35 | Reviewed-by: Hannes Reinecke <hare@suse.com> | |
36 | Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> | |
37 | Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> | |
38 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
39 | --- | |
40 | drivers/scsi/fcoe/fcoe_ctlr.c | 4 ++-- | |
41 | 1 file changed, 2 insertions(+), 2 deletions(-) | |
42 | ||
43 | --- a/drivers/scsi/fcoe/fcoe_ctlr.c | |
44 | +++ b/drivers/scsi/fcoe/fcoe_ctlr.c | |
45 | @@ -752,9 +752,9 @@ int fcoe_ctlr_els_send(struct fcoe_ctlr | |
46 | case ELS_LOGO: | |
47 | if (fip->mode == FIP_MODE_VN2VN) { | |
48 | if (fip->state != FIP_ST_VNMP_UP) | |
49 | - return -EINVAL; | |
50 | + goto drop; | |
51 | if (ntoh24(fh->fh_d_id) == FC_FID_FLOGI) | |
52 | - return -EINVAL; | |
53 | + goto drop; | |
54 | } else { | |
55 | if (fip->state != FIP_ST_ENABLED) | |
56 | return 0; |