Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933812AbdC3RI3 (ORCPT ); Thu, 30 Mar 2017 13:08:29 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:20489 "EHLO esa1.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933524AbdC3RIY (ORCPT ); Thu, 30 Mar 2017 13:08:24 -0400 X-IronPort-AV: E=Sophos;i="5.35,258,1483977600"; d="scan'208";a="109376301" Authentication-Results: spf=pass (sender IP is 74.221.232.54) smtp.mailfrom=sandisk.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=bestguesspass action=none header.from=sandisk.com; X-AuditID: ac1c2133-d1e189800000c960-4d-58dd3b7c3569 From: Bart Van Assche To: "target-devel@vger.kernel.org" , "nab@linux-iscsi.org" CC: "linux-scsi@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "cyl@datera.io" , "jcs@datera.io" , "rlm@daterainc.com" Subject: Re: [PATCH 1/2] iscsi-target: Fix TMR reference leak during session shutdown Thread-Topic: [PATCH 1/2] iscsi-target: Fix TMR reference leak during session shutdown Thread-Index: AQHSqXg1VhNzZ5f8LE6xcSaMfybfSw== Date: Thu, 30 Mar 2017 17:08:10 +0000 Message-ID: <1490893673.2753.8.camel@sandisk.com> References: <1490862594-2712-1-git-send-email-nab@linux-iscsi.org> <1490862594-2712-2-git-send-email-nab@linux-iscsi.org> In-Reply-To: <1490862594-2712-2-git-send-email-nab@linux-iscsi.org> Accept-Language: en-US, nl-NL Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.28.1.254] Content-Type: text/plain; charset="iso-8859-1" Content-ID: MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrBIsWRmVeSWpSXmKPExsWyRobxn26N9d0Ig2W31CxmfvvKZHFs6gQ2 i8u75rBZdF/fwWbRtvoMo8W3pq2MFq1L3zI5sHtMur6J2WPph1XMHve3H2Hy+LxJLoAlissm JTUnsyy1SN8ugSvjw/5DLAW9AhU3bx5gb2D8y9PFyMkhIWAiMe/aZqYuRi4OIYElTBKTfk5l hXAuMUo8uLmWCaSKTcBIYvaEPSwgtohAgcSVF/sYQYqYBd4ySjy7fwCsSFggXGLX/JNQRRES /Q8uM0PYehJNl+6zg9gsAqoSf7p/gNm8AoYSl/6dZOti5ADaViPR/7IIJMwp4Cyx7kYHWAmj gKzE4uktYOOZBcQlbj2ZzwRxtYDEkj3nmSFsUYmXj/+xQtgKEp9X/GODqNeTuDF1CpRtJbFv 6g+oOdoSyxa+ZoY4QVDi5MwnLBMYxWYhWTELSfssJO2zkLTPQtK+gJF1FaNYcWJycW56aoGh iV5xYl5KZnG2XnJ+7iZGcHwqGu9g/LfB/RCjAAejEg/vDsG7EUKsiWXFlbmHGCU4mJVEeJks gEK8KYmVValF+fFFpTmpxYcYpTlYlMR5Y2ZPjRASSE8sSc1OTS1ILYLJMnFwSjUwCuk8SrZ3 KG9hKzudXbxLodgk/O+ey5e4S9pPHll1+yvPn743ko/sL5xUY1tw2jB/7QrLySa3fm18X2QS 365d983OqJljs/w9p1Pn9ScyfW4Pdr8zY6bCJhVW/a/q802zL943ljU8/30+azbrvDtbsy1l gh1N21ritDSc9wiFX2qQrOuMbM9XYinOSDTUYi4qTgQAlUchKcsCAAA= X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:74.221.232.54;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(39410400002)(39400400002)(39860400002)(39850400002)(39840400002)(39450400003)(2980300002)(438002)(51444003)(24454002)(189002)(377424004)(199003)(9170700003)(7736002)(3846002)(102836003)(189998001)(6246003)(53936002)(229853002)(6116002)(2906002)(2950100002)(356003)(305945005)(5660300001)(47776003)(2501003)(8676002)(81166006)(8936002)(8746002)(103116003)(50466002)(36756003)(106466001)(86362001)(33646002)(76176999)(54356999)(50986999)(54906002)(4326008)(38730400002)(2900100001)(23756003);DIR:OUT;SFP:1102;SCL:1;SRVR:BN1PR04MB391;H:sacsmgep14.sandisk.com;FPR:;SPF:Pass;MLV:sfv;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN3NAM04FT017;1:UxJyf4Mcy26ZwgdiI9XNc4zXLp7rFxdZ608kq9RdHElLCOcSxYSlrKncaRpWOTUGoXo1uU/4d0Dfqr1hT2huc9RBsPv1O+gvObEHx4nVBK1O0VcO8s6tEMvY8QxiDVl7YA9YXffI9GHBQxvvaBKkNIXtQYMFDaRhVMz8hiIUwipQ6ylugj8CWiJ52QUry+7WFdHr2d1dR2Cw+7iE0+c06WeZEs6RxOl2nPMfma9y9T7GdGX74gw3kv7cB/zzUc359WEgXeY40rtKhnYlRgFtmvcCGCtw1ClB7YYQ82Nme3lWmTtPhC83pPZGUkij1Bjny98NC2X0QxZJsuehLm7S3pvFjV8jjvLwEyAd10wGUrcch5xtB65Q9vV/VZZ61taMt/yx+2MbfdvqLVATwHSqXa6GGyqEvYS4c/QePcaNGrr0+p1TTaZJh1J5y0lpwN2yAhheffHdpRpipdjuwbjKBuw3528AteAsurD6s2iGKEiMl9POsDAuw3Vq7trlmFvn/oMsby7hcZt9TuZ2KMNoUEApHHbxauzxFzOrqoHIXVc= X-MS-Office365-Filtering-Correlation-Id: e98284b3-72fc-4663-588a-08d4778f5a0a X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(8251501002)(2017030254075)(201703131423075)(201703031133081);SRVR:BN1PR04MB391; X-Microsoft-Exchange-Diagnostics: 1;BN1PR04MB391;3:pfu1qGUR+bLn07vJK9P2N4yyJWYElf2etr9hV3y34+5vmXh9kSSL9JuPSWRrIYv4mRIOXVouluvKZgl0RiKPTvf/E80kBhbHr3D46yn5s6Uu87foGUTKrJgB0vZWXFUWVCeykVifSAPiVJKm1x4Q/Q1kbec0qjejD/wt1cdDfUEduYQ+9e9ICNEX23SJ2/1zOI2GUEQXa6nKUu9rFz2vrJ6mei+0eGjVON/POCaxfdSPtJ/uWlYfAAfXzpEix65mRSPg5NZY9oqjjdTEiQJVY4UhMkToG/5HTDHcKSfPWpB2iXiKAfCputQlVGJkaoFccIyzVpcmFPyxj7X3ekdztHq/j9Km3N0a46uuBA1kMdcoopD5fzLO5hWUL9FBWxNzAzdS1l9Is5LPejV1UJMrtcy+vlecLbtgL2ruMxS3xHozqwsMNJOhjx+6t6kNX+skzd0GRhwVfPj05k9/Z81ROlkg6GYtbNmKZRQd3BpVZXNoyM2sQ4z/nPWrWm472x1m X-Microsoft-Exchange-Diagnostics: 1;BN1PR04MB391;25:HO2lwbb2OrtPqbBTwHbZACzwNMT/Z73g0oYgCs8j/r54Y3oqe15Gqto3eKS9HFNp9+uKvAzit1MSt44zz6c+C5LtdApau4xbjIRBgruopDFFXoCys7sG48copkcF1Jh3gYhcQEIjA+HDiTUcATFLUM5ialgBOoxISClTPX+hjL6Vp97HAWv81lx1Yxk4B1Pcnkq/7f0KS22RPWz/fSSU7n/Uwc3ojPRhMzgzqlKuZ0ZD5aK/+G27R+sUQ7hMC+fQ8gpIrOyQG/O8LKkr0NIvMq2tpmSfMAUJ1j9GLfPUgsfa2xlnUMtIYSoGIT8bxnrcUvqyvR6gMDGTftIOf15UiOk+oU19VvWsJH2sP2gKWqKNWmfLuJD5O21mLuYzz1TF/K9/oUNl85eHGw0VWFxtyMLvuttq98DhC2c6UYLgE1fpQNh+ee4mZYp1kZ7R1fCMi8wEEnLkKEkwp7OEyY7Hyg==;31:hKTlPPqFSWDVqhGW+foXnNH2t6vPPU7gjmm0qkaCFCiw0VL8VCef+1larBZljRUSQxHQ6kDkUML2/7S0eMZI5IgteJ+5b4fG0XNZ+9S3Su+M39/buPqDiPY+mLP/ep83qdU1PaCKGIZI/MKeCQqrjge64fFBaMcdneIE5uC/AGgV+5O+ApDOmEb7qwoPgNbHYotnN/0H54A03sKwNOcV7K5s6PF9fVQUOeGqPx9GYkYYLzQsF15JzbCV0FJbTXKKIiHyp7kTs291vfw0Gxw5ag== WDCIPOUTBOUND: EOP-TRUE X-Microsoft-Exchange-Diagnostics: 1;BN1PR04MB391;20:BKSlUfuLVuvoK9biCYaSQNxkqfcGg0D0SwCHU/1cpBHwZyLFBSYHjwG1LT4hisZ9cJTVDwYf6BqUdjMKimgKRFEPVpSaQbylam/w6VL3qxqNb+JcNXFVvkWhAdYbZ4FQKMASDhs25/QDQrtaEGh3t97ibosqgwlbUXLolNDtnTkXxEqYkTcKXPXPN8FpBTmynrnT71fdA4UiaqFZwDQj60uzrD4TUof0QoKs2iyN5GaV+WhRLmAVOxYTWxIGEjHcfiAkPsIBdA6qRCoPRvOqejuU9VFQdetgWzRdz3IAEPcp12EVgNnnXXHli1eWdimfamM6Xw2SqjpoHvfoYt3mERctlX7ZrDxbAKS9o9jWdPYy/yEwxGziQpQTfZG/z13uaj8+sXLDyglGSocYmUoHcshLNaBzmZymWcOuJxtW3BA4ODrenidU+xXdG2brqM8rO4zMImjA2tzlWoXx5lTFXD3INH/hIkz1fcXaaMySus0lLIYj66Wdd05UXrzjZA8O X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(13018025)(13023025)(13024025)(5005006)(13016025)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(20161123564025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(20161123560025)(6072148);SRVR:BN1PR04MB391;BCL:0;PCL:0;RULEID:;SRVR:BN1PR04MB391; X-Microsoft-Exchange-Diagnostics: 1;BN1PR04MB391;4:xv8U9nTJBsKZJH88LgfAujcesvb+eFkxLl89bXGtpmVFHb+WWiKukfOzKobpVR8iIX2t7g6yfxdQumhiEjADs4fpArjtjUFsRGexmjcoCvlSRNW3Mq4owtpbpFl6tWqNoew9SF/zJem/kTMxgugAoxj2GF1FITtvA/tS1OkgFL5R0r3MWyiJz3mzQH2z6ZKJz7mr7NLBcTG+DeVAu+nPcSCYzS9MC2YjxPyAolpQT8JcIxeuJhfMBDQYahRhubKbNrXladXy60ZzJBWVWs5JsszQH7xQO3q3xN+tIavi/kBgcIQr5OF24zGhsAn0XJ3HWr38vOUzh7ahV1eKqdZWzsViMqby7BOCsrroZGhm0777aD+a6b4gscv//yYDsxumOCK16jGOoZQUooSQeKrX8HE10biSfOw/EkjFHXyYv8BcNZ4KLM3gwIOyPdLY+tHJgJkYonEtIPgqUc0gAHb5WKmZ/ElCgmfDverzuhmXWbsJkFdTN/j3K+KSYSvlg/OukwWK89jMLkeKS6PMAuzUhPszlJ/4X8djMrP945iNfu0kfvvKr98Byvi8zusk7oe7qZopf+5KwDAKQ2VwvoiJEmmmSlxfdTbJoUMTfLmDnUy1YEnUCwL2juO9aG29QBIiQEx7A85MjwzXJ3/tvg19CAQ7aen0QyAPQf1WaJfBetRbFvpevkuX6qkzFKQ7sxcqmbDKw1s3kex1hfFbMenwsdQhZHzw6WZRDRlyvuFlyLfPMRf0VZbXRZnniqmvIZB8jmP0WX6fRuaaVCgnILXiSA== X-Forefront-PRVS: 02622CEF0A X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;BN1PR04MB391;23:orzCposiQHq/+WNIg5JQTfhvVVRsb1XctC3/suJ0?= =?iso-8859-1?Q?yS8x0aAPFnhn+3tg/a+eO38A2VZ8d/blM9xmIigSGEcRsDi0RGmMwr95k2?= =?iso-8859-1?Q?T1KUn49mzsrCwTN8rkrvkYoJvuokPDTluYwomwu328rLweW6ShC7pi4rQ5?= =?iso-8859-1?Q?IXEGhS2ko2fwVbOU7sb349Sl2Hmi6UT4zMfLqlGK6i0tR3VNEsFHv/z5SB?= =?iso-8859-1?Q?5aE85NvYb2gZ0MbkQv9w3+Tt7nQjrcetPPsuhuTF8Y6h8FIS5lKa9UVktE?= =?iso-8859-1?Q?nms7j5Osbk0+IB0e69eygGPnYxs2doFx78P/mExCodrD+M1VpbNjodgKRC?= =?iso-8859-1?Q?FiBNJQ/A3iKhQZjKt7h2iN4zuu+KqFLo3P95gltI5EKxjlY/+SFng1is4I?= =?iso-8859-1?Q?12vaWMX0qy6A9C9jYSIOVoAtDafsDunHLOnOy1nnXAHpYSFQ6D3In3zmMa?= =?iso-8859-1?Q?Un7wZ3U9N0hqyQN6j5w0uPtvObXAi552H3NUvmx0sFEF9YulBY5IVFLdHV?= =?iso-8859-1?Q?5jfITFErPDVd9LVgWyold1VKIGZocvU8ce6RUdlAM6iGFGEmzKmShELCkl?= =?iso-8859-1?Q?Mq2DMQ+jp/cp7V0NwQUfnxw4hSVElRwLumLb0WcMW71p7TU3acAIR1+RXS?= =?iso-8859-1?Q?D6LvymjC1BJzUB1j7a50mpgSCYYtYEnwsCU5JBsQ4iP4+3LgnzYsLMDegM?= =?iso-8859-1?Q?ST/PF1p+E6OswwDdMDmb5CgiLOvhKTF2Ji1lYdKUs0MrZXfSuo/qY+46MH?= =?iso-8859-1?Q?dJMeXQtJIr1ymF3Va/6bcbqeVkYGPDDN5ZqtYxq9BY9Hzsd3EivH1gDaVk?= =?iso-8859-1?Q?0UwAJAIGgXVGDl16JGq32CM6PoHUzZ1MQhcUGMQ23tepWDSaN9LaowVp6A?= =?iso-8859-1?Q?Dtli9/EtbcpCvn1ho1uFJE3B7X+JmmRC5MUfC4jDN4ePY5EgbTaZr6QAnC?= =?iso-8859-1?Q?OGtUGD6KHyIEp3VmDq9jzmjayoLDdRUgi6ySsTLnkPMEGevnOxtfC4b6YI?= =?iso-8859-1?Q?XsZ4yvB4mZnMWvfbFXyxa80JUAGmde0BUdKhlS9Kvmo2No+XVe8LB/wmBr?= =?iso-8859-1?Q?v4JcT55QTijTlLFGrrgyKMCCTDPKQULhPeHUXLg0j4be/9/PPCAvIBo9ow?= =?iso-8859-1?Q?6HZPZp5ELLKZNnOfMwUi/1PSKxcoA470RnqJySDCUtLNufgxbbBoHkOQlh?= =?iso-8859-1?Q?z1Y771E8Noo17LLziq1RSGALCQb1VKARqY//rsuDJ5gMVPIdDSzV0=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN1PR04MB391;6:NmhSTwCbgAVQ/8u89L96ai676nv/r81INOSxhrmlt9324LaV2b4e1e4CsCJn47h1ZTxswxPHXoAUlIBau+t2O+Xd95wZvFEY34/YzhN6mgoKt9BbcBE004GRPlWNvgDaIsNY+1JkB4tZKGEeuk0I1ReFCZ1IBGYcf1rashvyAh9kRNiuka428ef8ar2ITU8JXRBKXviuQSOpBLIpFLc6ulwSf0u6xuLFUiE0j+pe8nWHguaJudTTBWdGWPwamh5M0oKd1fLupKeqaka9Tn4w2bfJCqafJJ6aNb8ufVb457CdFhNyQz6EAmiigUoqfA/TJw/pLeH3luIJt7Obk5fB+gYVGsC1gMwYTeWG70Cx9ygLPzd1NCi9AlDqLlGBgqN5ZqmBhk9SPMNn6Nqh9oLeSCekxnjsS0z+Pt3K3d6olDg=;5:eQBnZXOe2ym03Ds23C3RTH9cQ+za+rEvV0pSCkw8jyaihjoU/O+cFTyJCgRbPUVFpNyQuYHErFgmZYR5RnaWhV7tkVeEycTysD4x/W24xLTCASTFuccIyuM78A+SIkld0pFt6nhT0xRg6VYOj4wOhA==;24:3fyGVuoch7lArqitrGK1c6MKFt8CBK+X3sBoT4wVhyyG8/VE4Ex/LGNbCRkNHnSIJMqVo8aFnJBOSK62F7YUZgLRpAZifAOps0dRG0Focas= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN1PR04MB391;7:ECsAKJ0QwkmZziHC4p/RvgaGgtAYXqdOfGh6NcEh4AT4yA4lsnMWeWziNRg59OGuiosOrgY2RdIkNVmoirzFtWi1zK+Gb+ZpblUrwgz/5eW7tA0q17QQw83HiyYsP7QphmpCCxAqvZuy5I7t8BnU7qirBKetjo8C78mb/zM568G4vBcWNy45HFsBCqFnPfecspX671Kp25rjWwksVRFpmfi/I4ZvR6ArKDxJqViwp2asjKR9lbBLKWVwCtGZn+u8uXmFL3kBOJVyTDzEwyQ2phiACJq9CC/0wPK3YHrQNP+Xns4Ns70T0j+GU4vVagR98/8HDM9vCSJpKt67cnH/PQ==;20:bOzugeaiykHWEKDJ+dMjdKS6DyJZhLUmx3WTMRk2g9UDMEpoqb1IXxI6CJ/6UmWUxQh57PYekWXFONeFv3XTR3mmXYmhNaKGdk+VXtZ2waiBeAyFL6KQqCe9j9xXdEPFJLrDuaE2p4ltdGTMXJu0oIWEimUPuQubBoHaH2CmkfY= X-OriginatorOrg: sandisk.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2017 17:08:13.4176 (UTC) X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=b61c8803-16f3-4c35-9b17-6f65f441df86;Ip=[74.221.232.54];Helo=[sacsmgep14.sandisk.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR04MB391 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by mail.home.local id v2UH8jKG028154 Content-Length: 1976 Lines: 49 On Thu, 2017-03-30 at 08:29 +0000, Nicholas A. Bellinger wrote: > diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c > index 5041a9c..b464033 100644 > --- a/drivers/target/iscsi/iscsi_target_util.c > +++ b/drivers/target/iscsi/iscsi_target_util.c > @@ -737,21 +737,23 @@ void iscsit_free_cmd(struct iscsi_cmd *cmd, bool shutdown) > { > struct se_cmd *se_cmd = NULL; > int rc; > + bool op_scsi = false; > /* > * Determine if a struct se_cmd is associated with > * this struct iscsi_cmd. > */ > switch (cmd->iscsi_opcode) { > case ISCSI_OP_SCSI_CMD: > - se_cmd = &cmd->se_cmd; > - __iscsit_free_cmd(cmd, true, shutdown); > + op_scsi = true; > /* > * Fallthrough > */ > case ISCSI_OP_SCSI_TMFUNC: > - rc = transport_generic_free_cmd(&cmd->se_cmd, shutdown); > - if (!rc && shutdown && se_cmd && se_cmd->se_sess) { > - __iscsit_free_cmd(cmd, true, shutdown); > + se_cmd = &cmd->se_cmd; > + __iscsit_free_cmd(cmd, op_scsi, shutdown); > + rc = transport_generic_free_cmd(se_cmd, shutdown); > + if (!rc && shutdown && se_cmd->se_sess) { > + __iscsit_free_cmd(cmd, op_scsi, shutdown); > target_put_sess_cmd(se_cmd); > } > break; Hello Nic, I agree that this patch fixes a leak. However, an existing bug in iscsit_free_cmd() is not addressed by this patch. Before the TMF code started using kref_get() / kref_put() it was possible for transport_generic_free_cmd() to determine whether or not iscsit_free_cmd() should call __iscsit_free_cmd() by checking the command reference count. I think that since the TMF code manipulates the command reference count it is no longer possible for transport_generic_free_cmd() to determine this. If iscsit_free_cmd() is called while a LUN RESET is in progress then the return value of transport_generic_free_cmd() will be wrong. I will post a few patches that not only address what I just described but also the leak fixed by this patch. Bart.