From patchwork Tue Dec 6 20:30:51 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9463277 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 475D56022E for ; Tue, 6 Dec 2016 21:08:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 38E48284DD for ; Tue, 6 Dec 2016 21:08:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2D9AE284E8; Tue, 6 Dec 2016 21:08:16 +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 7B16B284DD for ; Tue, 6 Dec 2016 21:08:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751949AbcLFVIO (ORCPT ); Tue, 6 Dec 2016 16:08:14 -0500 Received: from mail-bn3nam01on0063.outbound.protection.outlook.com ([104.47.33.63]:11520 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751254AbcLFVIM (ORCPT ); Tue, 6 Dec 2016 16:08:12 -0500 X-Greylist: delayed 2217 seconds by postgrey-1.27 at vger.kernel.org; Tue, 06 Dec 2016 16:08:12 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=7DB4NkYRkg4hBsmCzOp9ckBq+rTgbDYxx3JzFa3MSew=; b=Xjk+TNDH72/JPs+1iYK+VFhjDlRy3p5Bc11pFCE835EhQl2z+f+8wHSE4mfZa8TWkjMuwZmP72202ptU5C+mAwzbRP/I7zHslVFWgam0PXu/VvKBcK3a4qkqNGbALYbJTur3e4qJxizXEz/WkfMTEzToSVLod1H5BqGsOh0/+3g= Received: from BY2PR07CA0032.namprd07.prod.outlook.com (10.166.107.27) by CO1PR07MB207.namprd07.prod.outlook.com (10.242.167.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.761.9; Tue, 6 Dec 2016 21:08:08 +0000 Received: from BL2FFO11FD021.protection.gbl (2a01:111:f400:7c09::156) by BY2PR07CA0032.outlook.office365.com (2a01:111:e400:7bff::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.771.8 via Frontend Transport; Tue, 6 Dec 2016 21:08:09 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.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 BL2FFO11FD021.mail.protection.outlook.com (10.173.161.100) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.734.4 via Frontend Transport; Tue, 6 Dec 2016 21:08:08 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:1139; Count:15 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; Tue, 6 Dec 2016 13:07:57 -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 uB6KUtVb002435; Tue, 6 Dec 2016 12:30:55 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id uB6KUtps002434; Tue, 6 Dec 2016 12:30:55 -0800 From: Himanshu Madhani To: , CC: , , Subject: [PATCH 22/22] qla2xxx: Add check for corrupt ATIO. Date: Tue, 6 Dec 2016 12:30:51 -0800 Message-ID: <1481056251-2310-23-git-send-email-himanshu.madhani@cavium.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1481056251-2310-1-git-send-email-himanshu.madhani@cavium.com> References: <1481056251-2310-1-git-send-email-himanshu.madhani@cavium.com> MIME-Version: 1.0 X-IncomingHeaderCount: 15 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(428002)(199003)(189002)(106466001)(4001430100002)(356003)(6666003)(7846002)(2950100002)(36756003)(105586002)(76176999)(39410400001)(8936002)(38730400001)(50986999)(50226002)(39840400001)(39850400001)(42186005)(8676002)(4720700003)(39450400002)(2906002)(4326007)(81166006)(81156014)(47776003)(5003940100001)(5001770100001)(189998001)(48376002)(575784001)(33646002)(107886002)(101416001)(86362001)(305945005)(92566002)(80596001)(5660300001)(626004)(50466002)(69596002)(61793002)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:CO1PR07MB207; 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; BL2FFO11FD021; 1:DB4CIwkBCICUcc7X+XYOu0n61OIIo0vmtVgpMR2kL4kI5rQlcArnJYGg32Obo0QVkOLzxFG1XALzJ3SwydyxtlB9llQRZgJK6TJ8xwqinZtGce8upEULAKu9R3ELrSf7yi0oM4bBoaXVqRQRMv+QbVEI+lm+XR6dSnd0Hs2kj7YvZgkJg+kpZ2Y8pIy2ghv9T6vhDCiqjBwVdcr00Ro2noDWeVSH7yRozi/OxYlob3ZlCU//EQjdD/mmuMUkcAX32YGCvG+CO16gVSORMmzIj7oi5UDDZX11q+Hppw+xX0rlNUDqrb7843MoD0Ja63MO1NVnTlKAKWoz7PoOC75zFnn6tG12Mik3/lanpwRTQHUexdBZ2ZkzPbKk/KQroR7abew8dElUzhoKf5x2pEj9ZleGDOXzgRk8TizoTz6d+ADfw2bbPshXTkED/+VOgkzJPFVTcszzHgmg7meuyle2DlwNwoCK7x0DSjZTdJaGWyHLW5V8db+g9oRDcV+VuBFw+ZxMx0FEUxJUkA281SqEQQ== X-MS-Office365-Filtering-Correlation-Id: fd72ed53-25a1-44f7-ee41-08d41e1bfb12 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CO1PR07MB207; X-Microsoft-Exchange-Diagnostics: 1; CO1PR07MB207; 3:wtSh8nqk49dSuTRTeuVn1iM8lQd2vSTFcghreeiDebTWrrj/10XSglmtq3YnRgYTTZMAUJhEuBWPGCyeMcp3Ms6OdkBu4Y13j+hYaJTezi+7RnnzCwanDvCWlebF01+84N9as8S5kwYYcKFLFWQ40As6CCmlj+9UVFWrWNaLb3IRVYLv1D6Pugd/s/Yib3tQ94rLjVNq4RhDsq7JHS8uSB1M8NcZkXy2jOgfkVPDImdb21zYfWcBJc/vQzDjkU2KqHiWpo89pbFzhbCEpTFQc36iIqqfZqh+EEwJaWrYKDNHXDtXaBbafzvlyF6xRETMyRU3bm5jOT/Somsq71fgQnKXmkcGUbxst+Znq2wmDzZIXU5Z98cCmf8Z9zGJzfUw X-Microsoft-Exchange-Diagnostics: 1; CO1PR07MB207; 25:aILBRDsB/CfhZ2n8ImRMuNT3ihqXOjBn5I5a4wd21pbCotf2sZlbEiO3/kxibBpLoTK4/bqWiODW0cWS5wMLMWC3W/MUzHX7gQ8sP5d5xMVMtxjpzshs0Ylyss+xcQFZ697wNJeaXgwjcPDnJRRqOE4Fa6SCU1gnOBzYHoXNUmosCfVrrtCD6e449aMMDKTmKqUgAKXohngJJ2O5HA4rQ6dlg7Gxl84YWKvrV/ZByMOtZ7d5oUdzLbxLJxLF+FHrk99Ox6N4UcXYFG89egNx0qu+ONMKvWU9B6hl3oiDR1X+s649vu3yODVZZGug7Xm4tpJOKDoz1Mah1NCGBmUk/BjnbpTgQbrKV7I7+LB4aUkrKWqXIBSxLAVDIIvMSnsYE7PqcDbEpwydKnCghn2JrFX7RWLu+/gAzMNRPvjPcVxlaNQEh+qwroVbH8hjY9WtbQbh+sCBat+kVWvwToBwxITjHWNhdtuOTTWs2ZNDR688dJqXaNh9HDg8iwqE5ve1wOzzu0ueWLWxVNdzSsuJiZv36UsJIUu9Kr2zHB/Y1iI2bh2DVoJhBxe8OwY0reKyTI0UkFSGkcEKZU20zG/UT6YSrZvzYSvegLCsd/yg4XSMMAaMlI88QF/JGcAaYRDDz8NC9Xr8j9LiMYzTLvd/yFjESFIIUB/r0VqTTUhdHvibJRCTqyEND+7asJW+Zu61jQMtep2+lq8UeqYLc90+BSEWFyqVfBFXQzrIM7GlBQI47WIbfDH5TOJsl4FVzB0KeljKEkGrGZtINGhYAQ6sBzxVcREeQaaIq2amMBDM/W/IavkqVh/2JzwHJq4RKf2gOwnttGThHE8SSmAQ3ewmuw== X-Microsoft-Exchange-Diagnostics: 1; CO1PR07MB207; 31:82l8e7Aqh03c++J9HblX9mXWsycK1gl6bwNdWOIQ12vyLZ1wTSzjBgse/jJ7e+Wig60XyWYPF8zVcPh0lWHewF2DQb1B+bQavi8tpNcq5HHRovF/D7DrhsxLCy3BoXL2RkV6geYR/3P0TrRSxFi60Co2d9uR+dC+aFgPj/iv+A9HToMZPtDqnP2aaZkM1Om6ZWwUvR7UGUCiz+x6e1MqclddN6qLsxooN5OD0TZHzEdxMw6VW4bhGCJ3pFIaqG1oJhcRSAaL0rm2IjVaSwwz1Q==; 20:nzKCm48If1vWYXkhu5lghsomnidpBifPOrvRMS4E9DFSD4d7kd/RmN4krSDH3HMyXo0HqdT9/UuSs43Z5307VDEyT21/y9eCxz4brhk91uDZQYuOnInAKnH1By3qlWs1Z2YS1h4j1ljPdpXfJSjqxN7riPOYXAbgLkiBFoMQsrFcA4PH1BhOi7H5X5Vx52zAgqcYuVctZyCn9tMs5jfob95FMD2lE7ZwAJy/AuE/8GdhbZNBM9gG6LSRN8kSflvk+r0+9KyHR3O+kL1t/QSaOWkIz2lyTYn23feTMu13R0Sv4fJ1k3Kd9bCFHogjqNjYYcYnsXJH4QaTEQA5/Dkx+E61BFg48PIuW+6yT7eQp8lsBnrP7FrSDuLaX/22BzmB1w+1ePlEy5N7nxLW8TKqBKGqncrcBqcYC4uNLHTQBuh+sZy2TtGvOa5+2J4q9NBGIA+fb1Vptz4wjDM0m4tkn4YnGRhO9gzhRDmJazTPxZ9QnzpAigi4PUelqEOyBJQ/ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(13023025)(13015025)(13017025)(13024025)(13018025)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(6072148); SRVR:CO1PR07MB207; BCL:0; PCL:0; RULEID:; SRVR:CO1PR07MB207; X-Microsoft-Exchange-Diagnostics: 1; CO1PR07MB207; 4:v8L3GhGDGgCjyHITr8nbWFTaDQuc+Z7zyleWackRMuIL2wPZrsDBdJVXHg0H0Bq8QTCd25u9pRc6wA4Staf2UdbzjE7FRW0tN/MJWlNPqhNTAFqwYwPR58B4x2o3AcSlxVoHCUKK61ExbGfah0+WkkJNDGul8vzd38ZP0pb4cj/HcgrZGAZRyl6s9OdfRQ5IJfCSoES7XYjXiDydgxjj4fEMPLXDGjXlgdDeN8EiBuqAg39cwUDady3WE/yiPS8RJla4kwV/khpEmvmfZdWenNcQQrkpojOB1/ODcXYSzdElQ1OFtQ8Ldz6e9FFZ5BQ/fQY3+cbtV6o+u/8YEtedjbaTa9fDvoZit1SoFPztGWA7pceft4eiVPNYd+xK1XqzbH3FvqmLXd4PV3A0VmS89GvJMf0JI4kyL1c+B31aYgNtpk5YqxydEz7KpEF/dMXlpgmU9a2AZ2pTg7/Swlp5vtDuxt7N7FRalKxbH4WoBxbPB4DGY4rk7/XeoNljb0dKITpeV65ZMCLaRnau7vf1awS5lLc8ZRhc9vz3HxZ+5y6miJdToQ+68WytwOM11xf7XW2NZ7ihopjIgJ1PPVItdwO1XNHd0XSuXNjkCZFh+fZVLIhbTLDv1vti9tmO2DyH391/83RWw3zlPNoaiJ/y3PDxYf+HjcvfGKN8KV7+x0c= X-Forefront-PRVS: 01480965DA X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CO1PR07MB207; 23:iZjR/MYBmBSW5jL8P8t504vYhn/qQfQzzpZkJ2SEmd?= =?us-ascii?Q?Kay39M+L1b+qLRpwHj9x2zjbWmbcQ7ahTcRQ+fzg6oAfU4ZVmReOgvIz9FOD?= =?us-ascii?Q?tmSLleba4d/T25+JK2D0nTCmtlv1UQSyknG52OxK9A887v9dNmS6LjYko69b?= =?us-ascii?Q?rh1c15legJ06YXL7OxkEHTZaVXEHGGhcYpNy7mtIXgRW7GKKLShzcCMV+MO3?= =?us-ascii?Q?osEripFfOqO49H8cxKK6WsyusshGJQRXwK3PXDAZ/UJkGPV1PtruTn2A4e/V?= =?us-ascii?Q?Eawkq3jwPOOQOc6Q/y3T/gFlnmr5OW8tGNvngXqeSN1In+QajT2dGMd3qSsg?= =?us-ascii?Q?pqk8a9IoP6ExORmEDZBxymxa8eAq+uINmO6HoaF0knYZlp2ehtQCqEM6BYzs?= =?us-ascii?Q?lCmM6bADOwJaqL0LsNmjHN+p5Gqi55lhrn+3ZPluk9E9q/7KJi3nx6muPAYg?= =?us-ascii?Q?0CQYh+6mAb/KHhjtllrgs7aR3jGc8V9Z3ZF2UxTDJs9ayEQh0ebGP27GFpxr?= =?us-ascii?Q?GmNfJ9+40qdBpmIyeRT0AGkkm9i5N/6VNK1Zt0l7Y8jpfrER7ACd/v/Y+H4T?= =?us-ascii?Q?tTMghBGVXhI1iKA6douoRFp1LLVD5PRoYlv8tjLF5K2gu5Ul2Xxqb8o8ZARr?= =?us-ascii?Q?NtObKFqazGnubpsiCN/7Vfd78tFgd+bRMIcErmlaLh396etRElNpZvv09rnl?= =?us-ascii?Q?gjmU/Y/8YbBgOsgEAG7J1wrSaC92xc9oG+p0smQtBhWPJhfMWFKAPAYJSRaG?= =?us-ascii?Q?Rh+ceOECOAc4tiz6UheovkEBV2IvtKYXTUva9oMdbdUM4RPQNrReHJzCamC0?= =?us-ascii?Q?j4IbxxQJwjy8xzdk3z0NCbfTXC77KwZS9+s0mCxSckN4c3vXeehlN0angSR6?= =?us-ascii?Q?5YqjDtl/LZtA/PZBQ/23fS9wtIiGQHPS2eauExoXO4tLRn41wOP3kP6toBpc?= =?us-ascii?Q?bvXo00GXgSvTG8mh1KcOljLc0Rbm+ZKAxCNv9aEaNvjO9OpQx7WzAg7kppN0?= =?us-ascii?Q?wSdHYAfJpoAmyUTO7GKC9oPf4ttuDFsDFiaPbQb/FEP+mR8l/5wGp2cU52q0?= =?us-ascii?Q?o3WPETVDUGD7aP30s2/ec7CW/wkPl81/hxDpzSeXhX3W0RNfNNEWMHKN5JzY?= =?us-ascii?Q?5pyPj6EEKqnNurGZD7wgJLYcddHXmQ8F3qA/TGuRlW8VqnwkVLnKUc2rdAUp?= =?us-ascii?Q?olrw2tCcdHG3YPaJIYXAily5zvcYay63nNJj1QCscNifIoRYlRu0o5vg=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; CO1PR07MB207; 6:QHi33a4rsq811E8W5kR7jwDH8oDendQPOziv0UKB16U+uq7+WSaGppED0dwwROZu0KOgVKxzBPJ60H5PAK1bqmWpnfCVQoG07bXRjjKblTRlfza8gzds3BrI6Er1ayxN009MrmWPDuzyuAUqghuBrgfeHEpSO8fHTTcPvThl65B2OjklgShhvosd7nc6hqhGRqo3ztqyKDi9OUwj15nYAS/HUIs+r4A8URPNzo1j9FSMg+tSGPe8QJtA12A7PFVb3e1JRnT765z7yR195fspK32eaoRSsDd61BRXxYD3hlcz+yXzjah+TuGRFeLaIDJjzSkJ7MLZ+DsKkp7Ik1dkZC0ZIPWpRxxS5jEQRxige1c4/p/Xz2EDgBZGwd/7ARpgkQzOaCUpCrQlZzi7p84AmRGBLVQZPIvHQ8gH8a/06JN9ZdiEQdOPPgDCzFdri1UzGiLkvLwE+foQRUWMQOyN9g==; 5:SwKsBHwAeHLAEcG1StC5UjfhdROIpQeJpqU/Ml80Kk6NNAeld0Ookg1e+DcZuvbQNymwz0rLLMhvngFFvGwH07D0CPJXnpC6rNk69Tn3a4zFO6e7RyrsuRLbCy/R3QRrtKPqe7NELv40Ly3lDSreGw==; 24:8RB5nVMJVkbcsAwX1SbSWtxRu61mcIep6wGndqikReGRC9i5a0cUdpsUTPYhI1rkP/Sfxlx4W0UoxHCuC8Hh3wH4gf216xLQhlGk7daeEbo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CO1PR07MB207; 7:VZo7evn0PBZTQcSGTGnSrNJ9wrgBAUGRvLHhSLCNTo6SWEeEzm0YpntpyWEPqz6ZYytXSBuMR/rzt+gT6xvl2bkFrENC1XT7UqtZnesZ+8T907zQKgEUzTwU0l2UgNafKUJMXTAiqmD8ptkKE5QyE56yrYj6S2pFIKTxRCAl2kT1fer8tQRV/qfj1L2EZ6190EESsyVogFMIPRbB568w5X+OPadnKiy5dPf4XeALPXSTxP63AOoxOc2eE1XM5RI6dlX9lp8W53NUhuwaxdMfwZS2fucQTex8m0TnIPjxK9ThQ82E3IiFpxYg9YwGWBKLe1wlEcPMVeMHX/QcMFEJYjyvyp+l9ED3FWoMjEfV1g+EItXv1jGzFqRyqkeuehYmyZHLeHEMuV6dvaJaKDsmHepuxp+Hr9yrO3GgneMT/VxM8Sep9b5Q8keOJD+McYluM6VlHCpzQ6Xf2vUVzonRiw== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2016 21:08:08.7922 (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: CO1PR07MB207 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 corrupt 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 drop or terminated if corrupted Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani Reviewed-by: Hannes Reinecke --- drivers/scsi/qla2xxx/qla_def.h | 3 ++- drivers/scsi/qla2xxx/qla_target.c | 23 ++++++++++++++++++++--- drivers/scsi/qla2xxx/qla_target.h | 16 +++++++++++++++- 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index de058a1..e1e686f 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -1600,7 +1600,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 6f01c66..c7093c79 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -6967,12 +6967,29 @@ static void qlt_disable_vha(struct scsi_qla_host *vha) if (!ha->flags.fw_started) 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); + + ADJ_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 b57067d..3aff551 100644 --- a/drivers/scsi/qla2xxx/qla_target.h +++ b/drivers/scsi/qla2xxx/qla_target.h @@ -429,7 +429,10 @@ 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_LENTH_MASK 0x0fff +#define FCP_CMD_LENTH_MIN 0x38 + uint8_t data[56]; uint32_t signature; #define ATIO_PROCESSED 0xDEADDEAD /* Signature */ } raw; @@ -437,6 +440,17 @@ struct atio_from_isp { } __packed; +#define FCPCMD_IS_CORRUPTED(_a) \ +((_a->entry_type == ATIO_TYPE7) && \ +((le16_to_cpu(_a->attr_n_length) & FCP_CMD_LENTH_MASK) < FCP_CMD_LENTH_MIN)) + +/* adjust corrupted atio so we won't trip over the same entry again. */ +#define ADJ_CORRUPTED_ATIO(_a) \ +{ \ + _a->u.raw.attr_n_length = cpu_to_le16(FCP_CMD_LENTH_MIN); \ + ((struct atio_from_isp *)_a)->u.isp24.fcp_cmnd.add_cdb_len = 0; \ +} + #define GET_DL_FR_ATIO(_atio) \ (be32_to_cpu(get_unaligned((uint32_t *) \ &_atio->u.isp24.fcp_cmnd.add_cdb[_atio->u.isp24.fcp_cmnd.add_cdb_len*4])))