From patchwork Wed Dec 21 21:57:36 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9483817 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A87A9601D2 for ; Wed, 21 Dec 2016 21:58:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9865028481 for ; Wed, 21 Dec 2016 21:58:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8AE9C28494; Wed, 21 Dec 2016 21:58:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 141B728481 for ; Wed, 21 Dec 2016 21:58:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760075AbcLUV6j (ORCPT ); Wed, 21 Dec 2016 16:58:39 -0500 Received: from mail-cys01nam02on0056.outbound.protection.outlook.com ([104.47.37.56]:61696 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1759739AbcLUV6c (ORCPT ); Wed, 21 Dec 2016 16:58:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=huXZlR1gorXJ5J2lFglqakGFKZtxyywO09xGpt7Yahg=; b=e0ZA9xz+JxcBuhxKNeYvyZDCetGFYP/oPkmdA7GRnx2LvBUkHOfAOycJIK9KAFdEGF4qU2RYqE9FzOHFqlfOgY9+flR/pJyL7u6ZRLJEs1WtVzx5X5bYYjaofqSMkuLcgI9QPPy41dk6DhXMkG3Y+cMyjfEN0BXF9vKBvPFo7SQ= Received: from BY2PR07CA061.namprd07.prod.outlook.com (10.141.251.36) by SN2PR07MB030.namprd07.prod.outlook.com (10.255.174.40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.803.11; Wed, 21 Dec 2016 21:58:27 +0000 Received: from BN1BFFO11FD023.protection.gbl (2a01:111:f400:7c10::1:160) by BY2PR07CA061.outlook.office365.com (2a01:111:e400:2c61::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.789.14 via Frontend Transport; Wed, 21 Dec 2016 21:58:27 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; linux-iscsi.org; dkim=none (message not signed) header.d=none; linux-iscsi.org; dmarc=none action=none header.from=cavium.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) Received: from CAEXCH02.caveonetworks.com (50.232.66.26) by BN1BFFO11FD023.mail.protection.outlook.com (10.58.144.86) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.789.10 via Frontend Transport; Wed, 21 Dec 2016 21:58:27 +0000 Received: from dut1171.mv.qlogic.com (172.29.51.171) by CAEXCH02.caveonetworks.com (10.17.4.29) with Microsoft SMTP Server id 14.2.309.2; Wed, 21 Dec 2016 13:58:09 -0800 Received: from dut1171.mv.qlogic.com (localhost [127.0.0.1]) by dut1171.mv.qlogic.com (8.14.7/8.14.7) with ESMTP id uBLLvtA5031136; Wed, 21 Dec 2016 13:57:55 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id uBLLvthR031135; Wed, 21 Dec 2016 13:57:55 -0800 From: Himanshu Madhani To: , , , CC: , , Subject: [PATCH v2 07/10] qla2xxx: Terminate exchange if corrputed. Date: Wed, 21 Dec 2016 13:57:36 -0800 Message-ID: <1482357459-31079-8-git-send-email-himanshu.madhani@cavium.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1482357459-31079-1-git-send-email-himanshu.madhani@cavium.com> References: <1482357459-31079-1-git-send-email-himanshu.madhani@cavium.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(39450400003)(2980300002)(428002)(189002)(199003)(4720700003)(626004)(5001770100001)(76176999)(2950100002)(50986999)(81156014)(69596002)(575784001)(36756003)(86362001)(2201001)(6666003)(4326007)(8936002)(81166006)(80596001)(2906002)(4001430100002)(48376002)(107886002)(39060400001)(33646002)(50466002)(38730400001)(101416001)(106466001)(5660300001)(189998001)(92566002)(8676002)(5003940100001)(42186005)(305945005)(47776003)(356003)(105586002)(50226002)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN2PR07MB030; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; PTR:50-232-66-26-static.hfc.comcastbusiness.net; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD023; 1:XJ/vB+GTDrL0SnRjCRJfJuYbMPxEqo+r4k6xoSI8QeKG13GEbqaDTYCMUCUZdML0GHG/i0JPeaCcc6F+XjH9oiINHl3XGOLze9ruQVUI/D90ZOPeGVJWC/mr36Ioz3qw0gW83WnRx1Br5npxu7NqO9GGxAXsKBgrMmd7UXIZdGARHkiub1XpHSDxvLENSXiZt0PiRDKvRXn1LE6fqv4iVcGPbkWircX8HJkcdqxCJ/8McvLvkca29+Nt0ERqv7HDfNJdp6sLfX3WpJlAVOi658xro4Q7TOlnm4xBpHmcErh7RdjUGO4honvwbGAylrgp9Iy+gv7+oS1MKEnMRj4ysYiWhH0DlSFDof27B2xgTkcMzePHj+thA1VtWXJB5hKpPrVxPKW17fSiCPQJA/dWDZou3Saxie3VS+pXKOlG+w5OXW2nuVIU7YfmnzG36WJR2uh7yBye4F03lvN+kTAshCxae95ht9wP/9d5fxN1R+yX+5HLSZnIGOrzkN2ZM353A+3O5VWYAbDxfP/Sd5HajVB4LOFdfr817TqTYwAn/in6pC7lqlV+Rl2CJUZgUbU9 X-MS-Office365-Filtering-Correlation-Id: bad9f9e2-80ef-4d80-f575-08d429ec7e5f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:SN2PR07MB030; X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB030; 3:HZMQ0DoqbjJYSHVfMlj6EbPJ2kFIinHs/tj6y1dc36uZ9W2Mf342tXub+2lmvXPdEYAPN0O7l7SjR9oPisHcbcDOBPF8mcMFg9EReCF8cBwG6OqYZMXTvgQ5UVa4CN0Ew/pScAoPhL7vjzh6HppnrTBtTv2pi9MFDaXyN33KC7lD19Te9G+wQKHq+gs8ADc8360XK5XdxpmNE9lb+6WBL0oIxEydRMGBO8EebjZ7UljMH/oPKzmiSKz4Ok1uTbOU9HBs7X3pCt+y7GdxIghZWDAInDFA9QYe9goWkveQFWXc2/TsqYuXuSi19EPqAxZvw7ibK5dUGtfqlRKdrb+9GgVsxzdVqUosW3c6d0jt8+3r56wEh3ouuD3SNzklYbMJ X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB030; 25:K8dGKFjIy16/toqYDUpJvbQC7dd87JJ6R8znLXFt/NLOoi37B53IJj0ksvd9Aef+JZdFMwKjLTQSyzg2PKUqNv/D1vnli4nyKIT2Htpcyw5Cj2ng7SH/9hzUAS0MSM1VrdNLHBsjJGXc1S3t8AzSV4JnK7KR8hInwrsZ563wngd7WAcjKb5jMbKoUAziG3ADHcXrAqMvo/WzL9KFaBEWP2FHN9orADSf37q+fjHYSnHG2vw1X41xRfc7/ZMSdJohxF8t0YEB0i5GR6IUPxjgSzCmy9isizsUXbAHZfpWvqvhSgirxIzgIVs2YJFJkP08PAFvTQgdWTeH++UyX4XsgPxwIpVvgFscGQpoffFhccgBMz9LVeYDz7hPKJ2CIRMBeMcLMEEN56OZwCVn9PId3T2a1TnE6mnIU6RsGgNsb+Do2q/t3bPtMlf7u2KsD5DPqKHOINNnWi+sDpXUgq9PCWKKeVotmEd+apcbzJNspB1Dhrr6LN6Vjm+WlxaMfN0u1BXRTu58Qkb8YB6d27ChsyIB727wCRdQleGX2HmsaKdbnRcUjRgvX9/fEWOAqBe8HAkIokreaLTIsdCb+xVij/0FTi6mxf69+vIP+gDXryxeVdFaaWAYe0NFfdQu21R3zG74ofcjTjPLH9on8YxXc94Dig9SH43t8E3P9bCnU/2vSRFPXNpj6POs/iAu6djcFQpNT7EW6p8+dUhfEYbigFjWI6jsGOu4izgr+u9+eka/c9UeQj79r40CKwgXukj7itq7N7L5w+FlPRzTaX70R/Ti2tIAjP17ErkFYOBBB2x5plHUN6J+H12TdhEZ51erZtGXeTxaSD5PlefQca4xJg== X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB030; 31:ViEHB9/cAnkIPUeTqpQXaCXZZezcdbFLRVT+BnLeHOhnfESd3Ej5qWQr0o0kpMM2iNPOv+69GGjw8is5BKQIfBJFAxwHYXErAYHMuCM4OhZeEcf2fSe2mYgQ+21qoNaxSNxKYGNyxly8vk2EyhlLMUMTeICISk1ES3PJAQ+X+vP7NqixG7EkA47zMLEFrIjxTawMYvTKbgIX1+L0zu7EUQK97sciSf7FW2STNzF4BqxmiL5IRrpGovaN4YCYMfqVIiTjTX62s6R/np69dXFjsA==; 20:NL8kdabxiVqgrYbuQ+oAeaEpSoBik676blBEqFUBybM+LbKiaIdDSmlY5/VjNJqUr5VAGbuWkF/bXiKpSrj/UZ7OZeS+euYZoENwtkWxlg9uF+TryQlQO9quAWaTv0PLEnXVCO/x1JM6tVXxfjKyoPFvAj5eS5/slcsK3KdsuI93A8BXLh1p3gcfI9he/JjYBamh2zWTCbZnYkqedsJHVmt/+5B54Wtm2q6duc9aWZHZY9a+MAiU49hUsFhAcTW+Lxg7RyHB8xcEuJ2rzZHY52KkipSxzm108g1R/4K97+IHHBQJsCoaxxvxacmvZUIzGVeD3vZT+Mqh2tPPLK8sus4zpUQfGyiBUKb9//rgC6Emgeg57jR+i2QL0NscVYAxY0sM+4ALo+BodZ7JadwlV8DliDp/mhHww1GSetbXEdHVgrkFuz/fcSE8eORISbUwXf3vr9VHY6l+o47k9a7MskZUuajAIeujYkbaBPHYwkFjPp/l73sYGJkgD+K4MRib X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(209352067349851); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(13017025)(13023025)(13015025)(13024025)(5005006)(8121501046)(13018025)(10201501046)(3002001)(6041248)(20161123564025)(20161123562025)(20161123560025)(20161123555025)(6072148); SRVR:SN2PR07MB030; BCL:0; PCL:0; RULEID:; SRVR:SN2PR07MB030; X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB030; 4:xN5qVbMylBrk1K1SvDLtpE4ZjQJOblkhxYCxDqBnoVDjjG6BorZqzg9QN+qinRDtgTHJq8fGFzjLUj3Gd3AIFeM1mymLT0pL7SDcrqkVDi8rrzNJ2m5E9NmVK8smonlCeUNfPv+zGYjJlaarKAdXXuVrY7LxUrzYanNBgFXQVL8pFw7fqvONZddxXGsFJVIZm9gQXrUuumyFWWGoGbIQs/Ra9tAF5mO2qN1/s2nSCkw64W7oIDg3jaIvoAfC6oKX3PGBPvyieLuqQStPILkqweHMsbxwAKGOyH2D1wrPT7xfbou9xmHNRSoUESgRY/lMg6+5OXInNV9feTzUkORyHqA9EnDHsg1VPWBh/1nLcd/AWpb0/qgMw86n/Nm8OsrTajlSr3gpHUzbUMnTDGuqxOd0yg06abvIJ/hys07Su5/bq/2EqI5PZlnnDnu1UUQtVA82A8VACYH9dGZN+JsJ4JSZoySG4YI9nzU54VugKCwp2giM0xEi3HfrAOhNIlvT+W34q1XRxm6Lao/gVmLi5vt/Kd6hNHOh+ntNcamoXw9jPFETaWuyq9mLin0CF3Zge4YKPUj7Nb3oz1oq5lQaj1ryTjJ/NNu02layeRCGCoLcHy+Rp4qOUivVZCD9Tb8Co1fXD8V26FryQhX1iLYinUkxgARBHG5M5tnog0Vmcinl8XEYH+J2tusr5F/19PySqYuR7KXk/ETTyOpVLl5R7Q== X-Forefront-PRVS: 01630974C0 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN2PR07MB030; 23:Lq5fSbnEsoEVttz4nEee+FivRw92fbFeNuu/zZZvd8?= =?us-ascii?Q?J6BtOnGUfljtt9tMvxzFksrjjHXuxv9psK15uQDmwlXBb73D+L5Cv7Awso+J?= =?us-ascii?Q?DuNGdzWoxMq1Q3TJlqKO02CAxPGjbBPvu8tOLeT1e6ABp+psZFusdoTKxhJx?= =?us-ascii?Q?txGgB0jE0ZoHNPt1gwXPulu5oh6Vf36jPrilLknc3iwfXsR3C3BEyv4zBG4D?= =?us-ascii?Q?sZTLA4FJcnAvzgSS1KrUtRx03yQLgD2l2xDcFAucBwP0SfF5AZ2h1yszBw4E?= =?us-ascii?Q?F7datIEM/3vxRIeE84hi49BH2crmBnEkzgb34kC24aJCHfX9zCr/x2k0hh9i?= =?us-ascii?Q?TyU1gEQmzhjFHHoF0CthR6CRoGpHbqTtl9ZYfKgqAcjb5QCrMfnNBjUJHv5H?= =?us-ascii?Q?5BmEC0Qo1nK8IitK+e4pa+DG7kf9ULJUm8P2tpQOhLXkkg/0ISMnolr8csbw?= =?us-ascii?Q?NGePbRzByo19Lz1nBz+yYr6FDf1LSUCSpgdbYt866glGk+z5+iZvsekNLJyz?= =?us-ascii?Q?6mj9ZFpbU4L/ps1NSMrlNkmXKWGxd5WP1vXA2GvGZeHmYZYAsPyks1ommoBE?= =?us-ascii?Q?3raQfBjecSAn1Hg16ROr1sUdzy79cL0+RlqtH4iJSimU4qYcP+AcZ3VgWGH6?= =?us-ascii?Q?e8gl0YpudiSBCc+yFU+N8mgUTeqGLfsI57qJCag0WIbiMwsU+xRc5KOAAj9z?= =?us-ascii?Q?1iimQ9tLJX8EO6+sPi+JUCvHJxzsavBThtKILha25PMyVlAOjkoNNSn/P6ow?= =?us-ascii?Q?AiimfmIOq+pyE31ZKFSFBb/Sb2XpEIio9dhBIlPtuyYyGJ5ujYk4BDY846MZ?= =?us-ascii?Q?jHNZjJ3hjV1CnEMIy3YhV/ElHDrCf1GZwiyLOIUp8Hm0EdMjGbusmgeeHYHT?= =?us-ascii?Q?XkoitjLF3YTlsmAU45BTRL6cp3e9sZRZzUba86BoubaKvYNxAT4yTrmpIOEq?= =?us-ascii?Q?ldXzPUkI/rrfHaSLYBvTjdiDhRbIFVAIw4qtXjUaeLNUKDcLmyamOl8vbAKq?= =?us-ascii?Q?QHAHC/RooEhn83mKRuzG4aa7Vj6I+oV54aFnLSvZCf9qRHOEwf+tvp0cUIG1?= =?us-ascii?Q?T+6HnPdfHREIRA/1ReY7D/lt2lYd9KARdyRXTpSbdybtKNk41GeKAfQ8VH3Z?= =?us-ascii?Q?ug2ZGZb8E2k6lvPpt5j3oC/HU+PbJ1?= X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB030; 6:ek52ofUby8xZJSqmf7g3VupNnW7hkho8+UGhVNhT49THM7pArjCFOVnf9249gC7FHqE82/j1Mkq7UImAQKoIEQH6I0vRI2DN3f6buAmEQtqFPNsRIVFGsVrIhcuSsUfHtR8KMblJgOcwLozAe5c6u+FSpmThZBxsKWdOnj+X3XJwxAuQg9vyjb329jh+kRHigBEQQGTbp7iJeUnID5sjUjDzW6ACVugsv34juDQgHpGTEWTyFmiY4rso0yR5p3hvTBdr6BmmOTY6eNfxNEgXub9EY34S6ihSk3gFkJ53Yz06dXNarmjWIpGXEL8Y5+xZicVycY8oQBF6Vj9AN5OUPzOMi5qIfKIAIcrJNSRWsVVsKvhjht5vHQ3uJTrWoT7jK0eZ3qHuRHj6eepBZ0PlwIDgzKhTATPJyrV8jZGpBQM=; 5:84UEYTh7kqFlY6qv0pWkcvympkQ88mj8ll5jTtJGRqproBXLqM42aENLbgZWFLlnhbsaLRvr+JChqD6JFsEfR1rVYblcEpyiC5ZrbHDx2fVHhtOZo3l/Li3Lufio2c2gdkM55zx7pIkbS5i+Ix7FbQ==; 24:sUbg2OV7+3lP+vGlp/8D7zClzHpXC65EPsRA2PMzSjfGpfhDc6QaD7NvNmcajhBgVBt+zUYEFwTDQLG9N/nbyWN2Mt1EEskbFTbo//sx0OU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB030; 7:q+AeKAnat3tkq/SRDzo0/jeT8MB6ktqcW372FSV0MIL83QmZT5+dq5lQ7NxRFwmLdakEsDMOeYC9nyec+1vR5YgX0idfdelNeUEkvKkoQ3qlecz0l8X5rA0aYmeoQKFUe1RCziE7UAQuyGacd8yadskm+QgcS5qQVkN6xIMRDeuDCNsRUUv16OMRkLsyq/8PLbG2hSxfRtGoAivMarAwM2mCH95NM4zgaqDU0zWMEO5jiaLR9uyZg0hyRUyFzgMtoSa23vv7U6nYK2L9AXxTBxyhJWUuMJh9A8DqsbrIJGpMs4NQSRz+sjfq/xLMybTSttlz8qPNXD3kNgWst0w/eliiaSIfX1EyvRY7m34Fvk883ke9gqkbtd6IiFmFiVCjTNAwIrtzCrOAJh21B5/khEEmzh5NK/XwX8Jn8+DsPu0yN5fbKfgm41b2D0A0AftnlJpb3S73foiTgnSJb1m3CQ== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Dec 2016 21:58:27.1733 (UTC) X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=711e4ccf-2e9b-4bcf-a551-4094005b6194; Ip=[50.232.66.26]; Helo=[CAEXCH02.caveonetworks.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR07MB030 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Quinn Tran Corrupted ATIO is defined as length of fcp_header & fcp_cmd payload is less than 0x38. It's the minimum size for a frame to carry 8..16 bytes SCSI CDB. The exchange will be dropped or terminated if corrupted. Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_def.h | 3 ++- drivers/scsi/qla2xxx/qla_target.c | 22 +++++++++++++++++++--- drivers/scsi/qla2xxx/qla_target.h | 22 +++++++++++++++++++++- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index f7df01b..b14455e 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -1556,7 +1556,8 @@ struct link_statistics { struct atio { uint8_t entry_type; /* Entry type. */ uint8_t entry_count; /* Entry count. */ - uint8_t data[58]; + uint16_t attr_n_length; + uint8_t data[56]; uint32_t signature; #define ATIO_PROCESSED 0xDEADDEAD /* Signature */ }; diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index 5037b51..9252694 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -6451,12 +6451,28 @@ static void qlt_disable_vha(struct scsi_qla_host *vha) if (!vha->flags.online) return; - while (ha->tgt.atio_ring_ptr->signature != ATIO_PROCESSED) { + while ((ha->tgt.atio_ring_ptr->signature != ATIO_PROCESSED) || + fcpcmd_is_corrupted(ha->tgt.atio_ring_ptr)) { pkt = (struct atio_from_isp *)ha->tgt.atio_ring_ptr; cnt = pkt->u.raw.entry_count; - qlt_24xx_atio_pkt_all_vps(vha, (struct atio_from_isp *)pkt, - ha_locked); + if (unlikely(fcpcmd_is_corrupted(ha->tgt.atio_ring_ptr))) { + /* This packet is corrupted. The header + payload + * can not be trusted. There is no point in passing + * it further up. + */ + ql_log(ql_log_warn, vha, 0xffff, + "corrupted fcp frame SID[%3phN] OXID[%04x] EXCG[%x] %64phN\n", + pkt->u.isp24.fcp_hdr.s_id, + be16_to_cpu(pkt->u.isp24.fcp_hdr.ox_id), + le32_to_cpu(pkt->u.isp24.exchange_addr), pkt); + + adjust_corrupted_atio(pkt); + qlt_send_term_exchange(vha, NULL, pkt, ha_locked, 0); + } else { + qlt_24xx_atio_pkt_all_vps(vha, + (struct atio_from_isp *)pkt, ha_locked); + } for (i = 0; i < cnt; i++) { ha->tgt.atio_ring_index++; diff --git a/drivers/scsi/qla2xxx/qla_target.h b/drivers/scsi/qla2xxx/qla_target.h index f26c5f6..f31d343 100644 --- a/drivers/scsi/qla2xxx/qla_target.h +++ b/drivers/scsi/qla2xxx/qla_target.h @@ -427,13 +427,33 @@ struct atio_from_isp { struct { uint8_t entry_type; /* Entry type. */ uint8_t entry_count; /* Entry count. */ - uint8_t data[58]; + uint16_t attr_n_length; +#define FCP_CMD_LENGTH_MASK 0x0fff +#define FCP_CMD_LENGTH_MIN 0x38 + uint8_t data[56]; uint32_t signature; #define ATIO_PROCESSED 0xDEADDEAD /* Signature */ } raw; } u; } __packed; +static inline int fcpcmd_is_corrupted(struct atio *atio) +{ + if (atio->entry_type == ATIO_TYPE7 && + (le16_to_cpu(atio->attr_n_length & FCP_CMD_LENGTH_MASK) < + FCP_CMD_LENGTH_MIN)) + return 1; + else + return 0; +} + +/* adjust corrupted atio so we won't trip over the same entry again. */ +static inline void adjust_corrupted_atio(struct atio_from_isp *atio) +{ + atio->u.raw.attr_n_length = cpu_to_le16(FCP_CMD_LENGTH_MIN); + atio->u.isp24.fcp_cmnd.add_cdb_len = 0; +} + #define CTIO_TYPE7 0x12 /* Continue target I/O entry (for 24xx) */ /*