lkml.org 
[lkml]   [2018]   [Sep]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 079/165] scsi: fcoe: drop frames in ELS LOGO error path
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Johannes Thumshirn <jthumshirn@suse.de>

    [ Upstream commit 63d0e3dffda311e77b9a8c500d59084e960a824a ]

    Drop the frames in the ELS LOGO error path instead of just returning an
    error.

    This fixes the following kmemleak report:
    unreferenced object 0xffff880064cb1000 (size 424):
    comm "kworker/0:2", pid 24, jiffies 4294904293 (age 68.504s)
    hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    backtrace:
    [<(____ptrval____)>] _fc_frame_alloc+0x2c/0x180 [libfc]
    [<(____ptrval____)>] fc_lport_enter_logo+0x106/0x360 [libfc]
    [<(____ptrval____)>] fc_fabric_logoff+0x8c/0xc0 [libfc]
    [<(____ptrval____)>] fcoe_if_destroy+0x79/0x3b0 [fcoe]
    [<(____ptrval____)>] fcoe_destroy_work+0xd2/0x170 [fcoe]
    [<(____ptrval____)>] process_one_work+0x7ff/0x1420
    [<(____ptrval____)>] worker_thread+0x87/0xef0
    [<(____ptrval____)>] kthread+0x2db/0x390
    [<(____ptrval____)>] ret_from_fork+0x35/0x40
    [<(____ptrval____)>] 0xffffffffffffffff

    which can be triggered by issuing
    echo eth0 > /sys/bus/fcoe/ctlr_destroy

    Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/scsi/fcoe/fcoe_ctlr.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/drivers/scsi/fcoe/fcoe_ctlr.c
    +++ b/drivers/scsi/fcoe/fcoe_ctlr.c
    @@ -754,9 +754,9 @@ int fcoe_ctlr_els_send(struct fcoe_ctlr
    case ELS_LOGO:
    if (fip->mode == FIP_MODE_VN2VN) {
    if (fip->state != FIP_ST_VNMP_UP)
    - return -EINVAL;
    + goto drop;
    if (ntoh24(fh->fh_d_id) == FC_FID_FLOGI)
    - return -EINVAL;
    + goto drop;
    } else {
    if (fip->state != FIP_ST_ENABLED)
    return 0;

    \
     
     \ /
      Last update: 2018-09-04 06:58    [W:4.304 / U:0.188 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site