From patchwork Sat Dec 24 02:06:11 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9487777 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 C034662AAB for ; Sat, 24 Dec 2016 02:06:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id ADD842074F for ; Sat, 24 Dec 2016 02:06:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A297726212; Sat, 24 Dec 2016 02:06:45 +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 1FAAB2074F for ; Sat, 24 Dec 2016 02:06:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S941208AbcLXCGo (ORCPT ); Fri, 23 Dec 2016 21:06:44 -0500 Received: from mail-co1nam03on0041.outbound.protection.outlook.com ([104.47.40.41]:16928 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1763070AbcLXCGh (ORCPT ); Fri, 23 Dec 2016 21:06:37 -0500 X-Greylist: delayed 120110 seconds by postgrey-1.27 at vger.kernel.org; Fri, 23 Dec 2016 21:06:36 EST 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=253p57J9MSYQEnkHiylUxt65gTZpuHghcI3FchmMFKo=; b=dDTN3SxYKUeDJ0WHzR5CcxQH8WNla4RleKCzj/gB8mL+MEfe3nmVV8GBN+U3C/fSHmTf93LZQ/3VMVNUZ95aA4W1/OnezUpU7pZY40CPiZuE+5DCxzL0zwt7UdzjtlhrhfqFDjnnDqHdmuP35XOZ117zMhJNlr7Yjn8hxA7KdF4= Received: from SN1PR0701CA0075.namprd07.prod.outlook.com (10.163.126.43) by BLUPR07MB018.namprd07.prod.outlook.com (10.255.209.40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.803.11; Sat, 24 Dec 2016 02:06:34 +0000 Received: from BN1AFFO11FD027.protection.gbl (2a01:111:f400:7c10::104) by SN1PR0701CA0075.outlook.office365.com (2a01:111:e400:52fd::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.803.11 via Frontend Transport; Sat, 24 Dec 2016 02:06:33 +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 BN1AFFO11FD027.mail.protection.outlook.com (10.58.52.87) 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; Sat, 24 Dec 2016 02:06:33 +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; Fri, 23 Dec 2016 18:06:16 -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 uBO26G8m000895; Fri, 23 Dec 2016 18:06:16 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id uBO26Gwj000894; Fri, 23 Dec 2016 18:06:16 -0800 From: Himanshu Madhani To: , , , CC: , , Subject: [PATCH v3 07/10] qla2xxx: Terminate exchange if corruputed. Date: Fri, 23 Dec 2016 18:06:11 -0800 Message-ID: <1482545174-811-8-git-send-email-himanshu.madhani@cavium.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1482545174-811-1-git-send-email-himanshu.madhani@cavium.com> References: <1482545174-811-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:CAL; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(39450400003)(2980300002)(428002)(199003)(189002)(2201001)(26826002)(50986999)(5001770100001)(50466002)(101416001)(189998001)(76176999)(48376002)(107886002)(6666003)(356003)(36756003)(2950100002)(626004)(92566002)(4720700003)(5660300001)(305945005)(105586002)(80596001)(2906002)(106466001)(42186005)(33646002)(47776003)(5003940100001)(4326007)(38730400001)(39060400001)(86362001)(50226002)(81156014)(69596002)(81166006)(575784001)(4001430100002)(8936002)(8676002)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR07MB018; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; PTR:50-232-66-26-static.hfc.comcastbusiness.net; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD027; 1:27uBiBlOOGOXhpUt9zD9+iujLfNJWMbJXy3GMZH88hrhn3p/zZWY9DyKCD71NEh7FHy7ym2Bld59UL653StCQSdbAiuIDZnCue4Aequ0RWWC4i5r6lbGhlU6ii4VaxwgHRxtwmldM6IHdgQGIf/wkmR4uhLwgxZHzIOS4GMkrA/RNxS7UNvZUdNTW+vacCg/rADAXIXL2pAUmjfIknJOljYvpAMmXqDuwIwBxFd9+VHbsuH5OcvvIqgylEhUlA8vnMk+lZkQvQVFfyua2GQlVWEgp0PADfn+2roQ80PhCa8HPuduWKIisBWVA9ObXCNlMFOtMkxPcsKi5EKt8PrydikfWhqptPtePBFfrta2zsBhsX1wmFP7/fefA+oNxwu4cNCj2Ve9uuvsaNzyMEqaOxajD7X71sD99gPr+XyiT836/nN6hAoeDjXqD5/VLQqW4bCwCYfPVZby/cDC54uh5KbtCNu4NtsjTvWIPBEKO3Mx2Q4yN0+y3/ZhyVy2R5plJVoCBiftN3KdYT9xrI0g/w== X-MS-Office365-Filtering-Correlation-Id: b46ff137-4568-49d9-05d0-08d42ba17c0c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BLUPR07MB018; X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB018; 3:Pgn6pjURhy2hvPfe81qsJLAeyYJW5NDkS9DBTnfFSjf/FGDW8xC0raMHnyLTLeQLT4fFAkOUPSwkVNfvo9lAi36OLGLjWBvOgr/9MfQ725FW49DdZdFhpY9pP8I0BY3aJTG/PzQfL6a/H15ZO9eoFd8GPZgmtfrDEcGh+e9fOn+A88SI0vj3e40g4xk+1tdd36Tnor7szjOSW+arMfyNanCcnObjCenO8b7Fy99lVbbcFN6CzuTiEaNj88CTQyGTH60upjdcOaSSamtFikA7Acay+y8jMQisoNWRmAXFPM2xePBDaXe+zjJDKIroDQ4xrMJW48oupFBiWfxq5Ykw8rH6CDLinM9W5b6uF1BMoiH633nyc/RLCHEO3o3sY3X4 X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB018; 25:FrQN00GMGfDDHLzNpmsEc2ByOg59hOpJXI44D3PZnZo5b2eyrTWzWuDUy5BSQRH3XxcxfHpAT+UaKp3qBjRmqcdArLd0TO35ZCYNzGQOYqQ1rsUoaZQNvkIUcFQ4PzENcRG3LmA0vXdER22fca8/ZCzYHK0Rsdr11Vmx6BQheR5vmkqg7vAi4vrnAMOBPeGPnrO09HBZn+31To7G6qNWVYTT6k+Au3aYp6sTDfkDEEtyw8NqiT0YFxziOIFbND6DTpekrvyVbGu9auP/pi9AKd3m/cYS+u1tqqdfN5iRdsSGhFz0dDMg+hsvpQPDNgtbHTrLOePu4YZG8NeJ9NvNQwaE388P8F6J+moytXen79A2edrpT3XTAMhjZ+r0pGitjsHwJ0WhHg7JTil+BjgeD5jRKysfuCpEKfcQOjQWMxXHdr/lIskND4Bv2GvWIlFmYCSxssuUaPrJWRtthflojDR7bS3v3eRpQiEiX7bmaTzwWSmGTeVy8DUOQxEIgk1Z6GhKe7Upfi1WoKhd4RNteVwrK2InR9KEfX40wsPcc2OSS4PWvISmkaEmD97F1+oRmwLMNdb0a4FouUGZpQGwwVYxXnzXCtK9rKG9ZsCELeEx8cpWY0rLJM3GhDLOcRWTEr9RkOKJbBdxCm2wapVHYCafIRfWVbaAHfLXPQhybEYt6X33+0b1tHuDENfK4sxNTdDjWNbDz3IIFcBY+FqGGvysflV+MNFirtil9YHXXl646LiIV7GEKphDJHBPxdNQw7GAjWH6eeKQGuH2uUIHR3M+e8yPkOLxZkd7FqfKIPkrkGrfXLBFUeRlJ4/Yz4o6IprORBQvYij+TwJztCOesQ== X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB018; 31:hqRGGEGgJeoFLwLngQKjcoed/LCngyHr+VgUbmZJ0hBEKhhMuKFxOZFdU+W37+6oNGSbUcurLiftHQ3uOSOWg2cmf0bMMlqnhcz+RsIb9+/nyirkzuubITOXNgDcfsGxejb0ppCXXSTLCf+wtF4oacbvBplb34FnsKe3VdNT6x5QNligDw6+c3QWdVkXmak1ASp7A8Kbr/Umq4OtSnzRrFV5hcWGKP8AsgzbGEq9k3luuQOEkOMqnISy8k63z0/SDOpAqDvXCv+qJmpArH3ZDKVTZrgy3ykWjLcUm1IZqSA=; 20:tyFz6FDg/r++BP5fIaZ/LgNsrh7fMAYloV56syX4BOT/hF6wum0knqi+9qUgrhmA0PtfM+j7VR4SdrhsZZj1zw/55DLt3u4oqb6g5SYkLTyM4cZueOnnl/EXBhoJ6Gc9wWpT4liAuC5bxKovZhriiAODqbJHvR/TyZ2t/N5xM+x81CpafHgj3SiqlN90BxAYepydRLzQcbOM7W6oCUhczS8FxjOy4uQolucdQpJHZM2hTstXU8spFMKOkAYVdr70vqY1i+sYZkHrzg60x/sQddcbG2OIB20AsVOj+bXHJwesEc4dZspFmNLiTEzcp3BD8ZpmQftmqQ/u/Wz0TJ0ND4jvTapEeNtZGNMsTrmPmmP9SYJ8WdqPlL9Cuw1BNfLYCsiYbAGgUY82WMFTNYdELT5amKalO74URydyeLiyM88faMjRr6qmLe1PhLhQ2leg5VQK3YzAxBPMgFmqUd2cp/D0UQAvow7olYXOrZs0AsBwvmw/coNMqzBpYwldkw0a 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)(13021025)(13013025)(13023025)(5005006)(8121501046)(10201501046)(3002001)(6041248)(20161123560025)(20161123564025)(20161123562025)(20161123555025)(6072148); SRVR:BLUPR07MB018; BCL:0; PCL:0; RULEID:; SRVR:BLUPR07MB018; X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB018; 4:gCZ62lwuDWe94DMSv3ygJSvFQpclWPkggF1yEojDIN/f+aF91Utvplh8C5QdTXXmDwMDk+ZBCJO7fiweNQ308eVM6q2WUDuxT6zrlNTxxq4HI4HYChuDuP+KMKmVrvWVVP0mGBqfkUmDtj3fY/nSyWckvJLmPai2ttNaDxRXyHLLzuF1xfwM2+ZwylUtDi0PvTIMuFT6c+jXTEW8c6B6JREOqQgX4azJ2qZRDFXY/zOGBKtfN3UnfnStl/0WOtERGY/iURMIYqaMvR2L0WSfcSOwdWgZ72wuVFHde7fzkLG57keJX+lcjRj9bTEkKj9caeUC+mTYiQGjJo1LtWLRPIH6HZYu6GDzeS97FokU75kPFIZbsYurPj43bi1JaA/y3if7/q8wK6QiCEG3Kw9Nioo4oXJUCQn8DFiwuGu6KA3JN2QqLz2j6Z2e8924/upubqBCy+TVnLFbppZaRzP1xYxS8OMbMH5ePvQA4P0gUvkdLII58jWzZFJie+0iV31U+2SmzW/zZRnkte0ZdlLQyyfobV94kjvALGeMYB8X+65uC65ZKNp61sql4yrQyRDyfUuHC+DkUIXlFD/4vKGHi0QpnVpf98C1BxjJjWVqkQZuvo8tjJNSCsnLV0Mqpr28/Xwn2BH3ft7PaWE8d65XBA+EmwuuxGewJ1a0zgJLhNY= X-Forefront-PRVS: 0166B75B74 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR07MB018; 23:gcwdc7uQ04Vxip9PUSjxMZMx45fyb9YX1sUbYOSDFv?= =?us-ascii?Q?cAMBrtiSN00xydbhifKnv1SBbFO5U7xCeNMvnMao3P4qEu7K7mYeyFk1ApGJ?= =?us-ascii?Q?QRe77JOBpdu0GjUIlTIij1gQQg5fcwZw3iSyUMLnJdlQeRe2K7Hq5fldslBr?= =?us-ascii?Q?o7ujREwMmJryILhHu7aR6SntIO00G/VO6HqKOQ3O1Cte1sq1Jz4F2CRo5fcj?= =?us-ascii?Q?7N64uQpi/C3MINB4RYvngNLWxcq3S9+Fwywd5Nlu6N7o0STmnHDXWQ9noXkj?= =?us-ascii?Q?XtqDzmCPkd4U7FbqFX13c9iweZ8oKasmxEvmqqPjkVqcddsDvawfZ9SuxbmN?= =?us-ascii?Q?W+mzcu1lz0qNoaeF2DWDH3NuwgapqmXBAjoQMb1tHoNA1V+QPMCaFnZ5r1N0?= =?us-ascii?Q?mzuT4oVd7rgRvxMSqPuNNArHuJxG89YsbGjjAMx0f9msap3t6kpfY4aROMp/?= =?us-ascii?Q?/5uuuXbx3hp5qF+fHNdg1q8/qHX9FNRqWRCRG6HL5/ocdLJo9nrlO7MZNvTk?= =?us-ascii?Q?YVzFNrMjSBueExLUkygvQkC8ImCxK7IUdX/P6YHGzGyagk2iFZ5uXWOP2FUy?= =?us-ascii?Q?1O3NzrvcVRbiCaL7b5+t1nUEG343St9pXJYes5Dimqf10SQlktB6Kj6BCI6l?= =?us-ascii?Q?XovPW/n/+dyGYI0BapDb/DcL9NW3uD/70B6h+H0QqhkHdn/JeKb1iq0x/tS9?= =?us-ascii?Q?/mJJrOAOdoALFq3ZM0u4Q1nXmjXKF1WjEN3DaBOcQB/6Uvd/qemqZxhahW8U?= =?us-ascii?Q?6nOi1XXLWUgqtJfEwPYbmaEI10r7gOzAIJSGcHrO+4LuCl1UVqmcjewkio4c?= =?us-ascii?Q?t4DePPytJOCIoCRH87gxfKoVcORVKxFFlrLTJdng3n1ZWjn4lNkBCmL0Pspo?= =?us-ascii?Q?jIKEsgENT9TXoILxYlGsVCjVteRT31P4fmtjXl5iBJeeVQp+S3SwPR+IKPJ2?= =?us-ascii?Q?zmPnyaqo1X32RiMJUFm/V6wqg1gRfsh1s8XtFdvW7TudJDHJThAg9XdOBocM?= =?us-ascii?Q?QdH0HuEITDPVuvLi+3X98xRK1BGiDBBknmXWWgXUaU68Odw2oslmJVr6NYcD?= =?us-ascii?Q?sSCpWmZUsoMiIF545Xf+fp/GqQurEKWLEBVTQ+Edymv2o7QmJ4HQHCClQSNY?= =?us-ascii?Q?DauLkvoX4moG6+UvRsNKSHXtIH5op8Wqbja/vH8i0lq63afyWN1w=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB018; 6:VKhFTTNWJpOuo4/kDAOWsASAGlch7GLYpfz7z8JyA6bvj6dFvB7fyUBRkKsL2bRkibjIgZpzJveT4so7vb+LFmQE+RKP78HV5Htem9GZVY1F65PoXPR4hppKCrjpUZ4vgjJ8S7P6a58fnKAFpD3CBLggXi4f4ohLppZn3KyIE3zwt+4CJeqiN8rsBfF+Vfp0S0mftpeL31hBsX3AOQJA2n8hqy3mitGf4rOmYABq5Sh6SufGqQtpvIp7Pvb45bPxrZTG5rIK8UJ6KcKHpqBaf7KMeoNa8AkJxc1VjNnse7sHWjR+n7DrqI5/OvEMbBe+TxQouUE+tmw5gl2RlcrLgMkQurm3DEeJl408vLBXiAct52wVtJgBtcd0SZXOqu+bT01EAiKOrf7QrDUUqfkKecHPgixw2w5IsPwIWgnoD7A=; 5:7m0KbU210mYC0TlLI+5lr1M4KHbdWxxqwmnZVm2uflirPrY9jsbFOY1ym6YZNKn5Gzi7Jvq+JuRCN1dw2Z2o9FNUFxDrP+A5xhEi9myFdGPn/9LviUZqzyz6I4ZroVSIO/vbIErh1CYCrgY09xTyPw==; 24:u1pna+ltviqhZYo0o1CTKLd9N3mwYj3ltsTYz5p0VxQJtRR7FCng/QkIC7wXFgSSeiyqh6mTXKm6AXxTFEJaqOfu7q08i9wz/3tezGqlfhE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB018; 7:u1Gr8aEQiQXDsZnK72/zpe5sKpEbZ8LybKIaWsuEhU6qTdAKVtRw1e98lrvSKHb0OF2SlGsMzaWwJjmRkedXKmvWiqGsJLVMRbG+Uvevt6SvUNLxtokmIRP/SLsh7KXWwY7fM/kcyT7t8jjjrauW6/2emhdpx8pLdYYz9Oo8nlRqdbQVFSaYm9aJhbKzNfz0jpnPmc4aokyoN1Ad3b8Gbb5txJ035o2wllfySBtYGy7bw7MNAOvoYKyLsr9ARideuIgQ8e9zP/TwebAVTvEwG49UNJkDaFyL6rfVHaeEmZANFuIeXwCrnadaRzrT6Q5MdeL32gWL0PVvGBNiRkw/Z/lccUGCGeWn9D8hdbQS/qTu2ELRt3XxQxnhTVeb9K7eInT1tnpbtLAVj7jezuCK/IH/XzFpH0NIcg3aDv+mseKiGvHMrROAUogj+K3fobo0cd53M/G0F/PivCAnR14zfg== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Dec 2016 02:06:33.3542 (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: BLUPR07MB018 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. Reviewed-by: Christoph Hellwig Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_def.h | 3 ++- drivers/scsi/qla2xxx/qla_target.c | 23 ++++++++++++++++++++--- drivers/scsi/qla2xxx/qla_target.h | 22 +++++++++++++++++++++- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index f7df01b..1f7c6d2 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]; + __le16 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 369d62f2..2c04f42 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -6451,12 +6451,29 @@ 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..0824a81 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]; + __le16 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) */ /*