From patchwork Tue Dec 20 04:33:41 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9481087 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 DDABE60237 for ; Tue, 20 Dec 2016 04:34:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D1C2E27DC2 for ; Tue, 20 Dec 2016 04:34:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C678F284A9; Tue, 20 Dec 2016 04:34:22 +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 1075027DC2 for ; Tue, 20 Dec 2016 04:34:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933013AbcLTEeV (ORCPT ); Mon, 19 Dec 2016 23:34:21 -0500 Received: from mail-by2nam03on0085.outbound.protection.outlook.com ([104.47.42.85]:49408 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932473AbcLTEeS (ORCPT ); Mon, 19 Dec 2016 23:34:18 -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=453jDlyzoxc2P0+Jc0+v9n4w5piFy8uRgKKHjBPtifQ=; b=XxlfKQU/ZGjOVRF04vatgeZxF/FsKPXY8eyYUHxsOKOziSrlGNj/vJ1j/7ydGI2LcBeC6cjvVa7AEbqsD4JR1jGcjJCnuj7wkfqlWfM5dhNOmygUTk60SqcQnQ+UYhIB4wv4okQOc6Pn/W2kDpa4E1Mf5LNKuxUzOuSjT8DP+S0= Received: from BY2PR07CA0084.namprd07.prod.outlook.com (10.166.107.37) by BLUPR07MB194.namprd07.prod.outlook.com (10.242.200.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.789.14; Tue, 20 Dec 2016 04:34:14 +0000 Received: from BN1BFFO11FD046.protection.gbl (2a01:111:f400:7c10::1:167) by BY2PR07CA0084.outlook.office365.com (2a01:111:e400:7bff::37) 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; Tue, 20 Dec 2016 04:34:14 +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 BN1BFFO11FD046.mail.protection.outlook.com (10.58.145.1) 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; Tue, 20 Dec 2016 04:34:13 +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; Mon, 19 Dec 2016 20:33:46 -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 uBK4Xkin012415; Mon, 19 Dec 2016 20:33:46 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id uBK4Xk3a012414; Mon, 19 Dec 2016 20:33:46 -0800 From: Himanshu Madhani To: , , , CC: , , Subject: [PATCH 07/10] qla2xxx: Terminate exchange if corrputed. Date: Mon, 19 Dec 2016 20:33:41 -0800 Message-ID: <1482208424-12358-8-git-send-email-himanshu.madhani@cavium.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1482208424-12358-1-git-send-email-himanshu.madhani@cavium.com> References: <1482208424-12358-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)(189002)(199003)(92566002)(2201001)(106466001)(5003940100001)(626004)(105586002)(189998001)(575784001)(69596002)(86362001)(107886002)(4001430100002)(5001770100001)(33646002)(80596001)(47776003)(76176999)(101416001)(2906002)(50226002)(356003)(8676002)(4326007)(81166006)(50986999)(81156014)(26826002)(42186005)(8936002)(305945005)(48376002)(2950100002)(6666003)(4720700003)(36756003)(5660300001)(38730400001)(39060400001)(50466002)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR07MB194; 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; BN1BFFO11FD046; 1:Cs697yzGaBkipG1AO0cn9bGVhDD1dSnZFKpc30KiqgbWGNvOI9dcCAVExB5Rr2vvop7sK5KDgxQSGE5QUzLS4TVFM/DPYpIyP6jQb1TQONy7tjONoaPMIe6Rlg0mE5cr0RrJjV1PX2zxIO9Kf1D3bfFXQu/XDQhPodpSh66ZsaJp5/Qkm+ZRxCEAHj2zwcjjjP7eIZRF2Xxel/9Zv0n3zMnksf/B55z4ib1jQWKqgpIj9dr3UtTaIveJH1ze+DT1z9cW/m8MFCtVvFEqwhluBLu4UmV/vjE9cE7ZwscOA24ZILDaNSxZHiWjaw3fnZf5WdXvS5wvJ6FXCzXAflLfKoypbU9LvVYEeLWsJhjEIZd/sK2uE0T7NVW1moAkTQ3F1ZTHmBGCUgZm0H3oOJtvZiczz2fdJhe+xu4z4YLW/HM2UhwDsVHIBMl7E6x0JS+MPCesPK4kotpzaTRonoLB63s4KHJ6nuvUWGYDOHj1ED+sV6pMJCDyrnWaqss7VG2IvSNoj1ep4JgBFcbZy0YzOQ== X-MS-Office365-Filtering-Correlation-Id: 45625e37-456e-48dc-6934-08d42891739e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BLUPR07MB194; X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB194; 3:8+SkhPE3DRkIJY1JCOkfNKxgoHOkGeof60v3BiQY3YNHnU0dhBP/vbUFoytu8WooMob4ckhQZ62lISA8RhPB0KpQuVBwHxU19X/J8you9DHTRbYYk7EEGCrHy626YWkcXRsMzQEvzdo5K2N+IMCgYQj2aK7+HNEFIyK8aDvYbUweo9MKbnZ6ew2ZfS1JjVqq51QWUlKvUWsuHTsBijFC04eTF2mmYkJwRrSLBUf+AEYZZwE5N4gRBOFAOn773hYXKQAPQ7XQi8a2TVgB769ut0kDdpZ7rH21rCdyzUwe9/feXWscvyWHzuXL+piULXeEAeqM8Befwys0rfo74bv71pf1B3xlBGxu7ERNrPHdQhQdnqNVsP3OnQ24A0etFNbO X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB194; 25:VFucv9SatuCf+SWPC2TjDu1pv4awO7sZXsK0z2iKQyBv4Wrx4yv1KC/pwyFXk2POXg8uz0AUXn+FXYgRV686HicUegIfyj/7kviuUKk/QhaNqmgXTY4YKRKKMTnfIjZ5EzDno3vZdxSf5GWGwIvg+qY1sju4BGQYOd1w7s/nfW0dVPOX/JOSVhaWZwhoJrC58tFAPditGHnTKW+9ZDhpONrJaFJHji48rO+KrJG0NdI1Tuhsj/pks1hhEsL6SlHrfiv5lO3ha5zQEs7B7Y+fsseJKYokx/4ojRxjj9GTiSfamTH9Ee9DBRfXqNlbPEwQY2Fl/9xFSQgCC39bb/lLuchekqTOrmB4wvMbAMVTyNkngBLrrhTZPlGHo0FwbDjUdJzA7c1FJa6qj45D5+8Z5kbwIbO96K17z9oYSd6UGLJoUs5ByepF8UpPDhTVXDigS1LhbrBmBXnR6sFrm482jySFfzIvyK1IQV5/8Kc5lJHgufRwwmfOldNWNkSVXw7BVIrtq3aqVAASKUXFvJp1AlboDnPYdn4TMBe6I+7h54HWwdcR65ObkObiTLVS5PUvwNjoZ4bwP0/PgJDIaAZmjlsozL0G/cUvLIasdNzO4XUj78Y60921LMRUvlKaAhTmzAZIrZCV9rnNh3tlrKo6GJrw+C5k4eJ6elV6UvEnD0Cc++qro1kzUevsS+28qwNorWDu7o2Z6D8p7KHfNm1/eLrC/n0wBGOR14gpb42Sztxb++lxTJdU35+Mhd4H/AzidFmqzGVWGNtpe1Mg8ifeMMnLTnm/IJXvqaUPGT4Fos905ifjGMpElzjajQ+Fd+vSvbJfjHsHTRTXcBogtoStsQ== X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB194; 31:jRJnnvfsZcW2x7hviaFMHTDhvQA4k80abURY89DUYv7rJhpC2/KFvEAS2YgUTLqyaNOoIA3/LFdCdj91S8wjnRsOIHZRCU5FtK/yD3QP26EvLty6iITjVaNe9SWk1PAywJoFY1JOOfehd3VDe4JayvGyxD7IbP2Goy7bPYHjEijY5VEhy7RJHfUt76SEos9kZuqdMOAzbVwBvfC04PFCRDRo6C037zifT6RSmOx/XsuQJgHMGXMNlPxJpM6scJk6oydcGC5CNp3cOvk36luUjg==; 20:KFKER6AuZL464anIbMaToXMG2nWKIh01akb/ext7Rm9INuiqMfUqVmwadLt0IITHti+RCa8K98xCx71HtZ0dqz6jk1+S0W3jL1b3mjscITqK5l+3gUHIFtRW4elUYDw1aAwyRh8X9uF65EYjqCNGQl0iuvXwb9KQtlHgoNS09G1hhsPokjcoS6HxObTD1wgjdwgzreovVckvB+tqjA7CVTS1nd8Y0Pj+uSONr1DCgyfBfSDlgvE52itPLGZrokQ5cniKitzv3Rrmsx1vDd6Scs+5UOdk+X3isgq17Tqa5bdY9vXnt+gMHQWwrLB3ifNQyBVSRwvpKHJT2yKkUYTpDaUg+n00bPHId3Hr6XVScpE3op8mtvTi9O2bV7i/ke6Oz7yDrqwSaHvEx6/aoiun5/Q2585tJLuAOnzQmLjXYEe1NN1EXY8g+0VKdEH9A+L8aGqYnMYZiobZUN5gOwOOcdKsdLG1+kFaUa0QQaVKxNAeXSAyPGebZN9Tyo//+zir 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)(20161123564025)(20161123562025)(20161123555025)(20161123560025)(6072148); SRVR:BLUPR07MB194; BCL:0; PCL:0; RULEID:; SRVR:BLUPR07MB194; X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB194; 4:N2vb5PBv+3H7EbWihliSZgruc0rP1DDKfNSOUF3ae+ESppUGFwPu0+ItqOg35ObCNr5LeS4W9f6jvwYOP8kqogupYbLcQ0gdA0k+P5h/RHg2YB/BH2Q7qzudZMDKIMuZAxhXvOnyKpvUJvicy0mSNtCisIVmm/xdbWnIl405+XZWZbr+Y9NcsN3up7OVEWLSgE23cuk5LnHoWTEGsjD20EcDw6cECNJg+wK7i2n/Ji+IsNEq2sW7jcHqpyKEmD1VHaZtsO9FI1ocaNC8mfMn5nT1+lTIBqq/Ur3Kb0jW8quwVs259PRd4Zq2s4P5vXobC+4W+2fZeluazqTTzGhQTVRfOFzrfV9G//lgi73UmQKRLyyMKMstzxrjywJOZ2gLythMETS9MQMkmMFFkIw8t3EkkbMn+7UX0t+knkWj45pZrSkTxIPa11OYe2u6XfzdJOjA3axI58om7SATg5HtjDI94V10k+hZo0U8MWOcsbiQR9oS0KgFS2vf6PNYMNrbXiNPAi1eh5yFs0L4wvrQpOq3LcxYpIwhpbYdCkzsPpONtkWEgMpxb1BdILqnt3qXPdDVT7TKGZHsNniIa+n98AADhe7O/xEL/VdjjBeYUVkWV1rbR/ldjk8/s7VStVIkUFGv7RJFGTot9f75OOW7nMXHXkFMwWKyThZscUy3d2w= X-Forefront-PRVS: 0162ACCC24 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR07MB194; 23:OcR7OITl75j3OIZw5tDthehO79RcSCbcAgnoxU5+Hh?= =?us-ascii?Q?ORun4/vF96jykOUx1ia4fvgoRnDTzhy9xlHiklSA4eRro/dCO+ETnasCW8Xs?= =?us-ascii?Q?ylXUzXpiRg5vF4ntHicXHQV3A1UqVQL85qD09cndTuG2EAHoAOg/IhBgRc7i?= =?us-ascii?Q?bA+30wJpodHqDl77rGYo9DcIeldIIAO/YHrdTY3iac7y7G9xHOph/hmLqtjd?= =?us-ascii?Q?N1Dh8cwe11O2EkYhUGV4FYzqy8Ym/3xTb5KV3a9FPu+DiTge0cfWiyB4FWwC?= =?us-ascii?Q?3mGCEH0JEkvTim9K9tqMxcB9zCTo8xoFvTqpvDAQswpoCskfgZN6LIXdHGyf?= =?us-ascii?Q?zAqm5cN8200LssI0Z9eROEHoIi5cHamIQqQzxzcYh83ZQpbY6epDb5eeDTVZ?= =?us-ascii?Q?euEHVJIYtoKE0deA3j63caWMTEyMzSNooo4xlarl5V2wUs+VakKE2ON++9a0?= =?us-ascii?Q?B86yseymX82R8XMj+jdjHp22tcfq3jsc20SfdjIbyzln6L1VGAGBcNDQOtW7?= =?us-ascii?Q?Euy9BUYn36C4L8ejhTKMU2ZZ8Zs7Qvd1CU5kS8XSCir/XzPv5LtElxp6mbMG?= =?us-ascii?Q?7PsmX6UFkz5e8PdDEST/wPN9H16Q4RSi+H+KdWbStDzuAuF3NwBH3Jdv8a1o?= =?us-ascii?Q?m0Ry/9amfGJn0cF8K0Jxv5dpoafTvnt+OgFItwJTvgfZyKmWZBFQwXOZFg5w?= =?us-ascii?Q?MjexWvspJKa4b+O1b0MjHuYvlIRKl3L3getPlS4qjfJhxanWKQ9S43zjNyig?= =?us-ascii?Q?VvuC4Rj/FD+cElmoqFKd7RyCMObiaH4YPgSb3SYaR2yPfg6HBeRXZ8pmJavm?= =?us-ascii?Q?WQSDfvkiNBv8b4kX2kUW6INWCaYZsVGK1e+XjgbQyBWbbgeLnjTO6ahLpnrn?= =?us-ascii?Q?Po5AqX9BCZjDwqmPdIUdJJibzpIf7lx//17FtvoWobxyMWYnjV0zOb35hiDG?= =?us-ascii?Q?pcHr0UOFEESQUxEvTvB30nKHVKMioKXNip7QwusGi6nQME89NYsTL4CGeSbR?= =?us-ascii?Q?Wl0YwJTvn3gXWQAbKzHQUlGmp9gM/t9GaQ1eSHBXvtMij2yOOXTn+OXzamZ9?= =?us-ascii?Q?m4W9ts/t4Hg7nzfwyYr24rCRJ+x9h0ae2E1x4fszwxzR2ffR8/2zWJc18DrX?= =?us-ascii?Q?Fu5cfUJ7EIG1qjZBtxsK2aWZ/ePhJs31gACTBrCVQ/u5qhH5FZZQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB194; 6:XShRgd85pDqdBWfriP1jspTyXTVLwED6cUKIBpFBFuS0oWG9O25iGadEs0xTCez8dgkDPUsK8r4KrO/t49c3Bh/ddxYWBBXm1yP7Ei+3Xqq8UKtk4TmS/LaCyk26c3l/SqErJO6XhwlxoWzkp0bb5zNK2suB42q/GJ/TRF0qe44p9Be28k1g2G6VmyA0FL/fU5LhTa9P018WKqqp8oBlVYnJLuDSxItSeTlFlgoiUJQt26qv8VEb+5GVmhQGKwAxpoQHyo0Sg5cz6WyPywQGKu2RzxZNbBxSuQjaEvS2I/5yarI+qt7AuSZnYO3aU5PiZSjJSYOpOldzG1P/epM4yEUxfC4iM1a6XZoMRPdLEKjZ2+rpIgRw6YT92onCXc7DU71bf8aoihqmg+cpWIo4f+6YovybvZHvHhhzctPpXg8=; 5:jDt9DdM2GxFv00TbBLjE+3ryNANkm1haFLD6vS9nE4iA0eQsrCQRid7Sek2vPhynGR6DHjf6b4WuW38N0J+LATBOWQRanA3Cse3g1G48ywxk+bVoRPp+cUTfT0qYAWc96VRj3LvrE7jOHqVkyYHdxA==; 24:mNbmHFd3kDVOP/vRCyc5e85sRGzpzNbkhpmSd7CfnpVthQw6dC0YhbE8scDxw1MzBMxWuDeKNou+lolRFo/N293IMz5VjAccZ8tXsm/W3qg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB194; 7:H/j8bTh+1K9V2nnqTWRtBOlQwAU5BxosXuwGVWLadX9mXznC3pLTWPQ7j9q46+U6PYCTVx+2CyaNEgceYRH5auMEvDUrt8haFvul7L7hAKi7SmlRgB+KY6wlr9J3/9P277Gpn9/H8Gvt0cgF1TUeK61gF81GKtGvroBPn101QVWTMTHtwQikbcaTrODiYT0a1eyw2ANPB2ojbCQ70PfQi0sqr/ZwLJ+QhEWJmm07hFSgWrIlD0RFGiLIORQZ6P8rbn61K1w44YctsWQoe8oD8wW17icaaZVvZ8fO6uOX7Agt1DjNzDS2+vumxwLO6qtNHxJmFZyBGh71/E2eBgCxn9PUZDfrqlAF/75VjdUvIBnM1pDtFaOJSTS0W/Hb6G9yaU3ALFbGTDpi6Dvs3jmKPk57SM3qFBzl1obfEzam24pfb6nUNYuL5CuvMwsnoYtlI3pYU+VFPfc2+3GGLHVSYA== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Dec 2016 04:34:13.7781 (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: BLUPR07MB194 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 Reviewed-by: Christoph Hellwig --- drivers/scsi/qla2xxx/qla_def.h | 3 ++- drivers/scsi/qla2xxx/qla_target.c | 22 +++++++++++++++++++--- drivers/scsi/qla2xxx/qla_target.h | 17 ++++++++++++++++- 3 files changed, 37 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..7ae179a 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); + + 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 f26c5f6..15359f0 100644 --- a/drivers/scsi/qla2xxx/qla_target.h +++ b/drivers/scsi/qla2xxx/qla_target.h @@ -427,13 +427,28 @@ 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; } u; } __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 CTIO_TYPE7 0x12 /* Continue target I/O entry (for 24xx) */ /*