From patchwork Fri May 19 21:53:29 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9738253 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 DF5766034C for ; Fri, 19 May 2017 21:54:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CC1F528562 for ; Fri, 19 May 2017 21:54:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C114C28573; Fri, 19 May 2017 21:54:13 +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.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI 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 38EB728562 for ; Fri, 19 May 2017 21:54:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756822AbdESVyL (ORCPT ); Fri, 19 May 2017 17:54:11 -0400 Received: from mail-dm3nam03on0078.outbound.protection.outlook.com ([104.47.41.78]:61312 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756731AbdESVyH (ORCPT ); Fri, 19 May 2017 17:54:07 -0400 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=uxClp7XN8bFvjCkWIlnaBpFqGD62YZqV7fi3MxDPPCw=; b=eaq9Vd5ToZqlcj9hoJiidSSH6XVRW0uN9ZFkYG6drL8pfELeq31IUlrSntoLm/U7M4bUi/lrbdO6vkXp8d3VejRnecE+qXl+2yiZWLNp0lMtaWjzCwOxuvjWOcI7OUiybjSZf5B74bKWH7KB+WEfOA3JPAM8a1y5bF3FrZ6EP/c= Received: from SN1PR07CA0031.namprd07.prod.outlook.com (2a01:111:e400:3000::41) by DM2PR0701MB1017.namprd07.prod.outlook.com (2a01:111:e400:246f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1084.16; Fri, 19 May 2017 21:54:05 +0000 Received: from BY2FFO11FD023.protection.gbl (2a01:111:f400:7c0c::169) by SN1PR07CA0031.outlook.office365.com (2a01:111:e400:3000::41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1101.14 via Frontend Transport; Fri, 19 May 2017 21:54:05 +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 BY2FFO11FD023.mail.protection.outlook.com (10.1.15.212) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1075.5 via Frontend Transport; Fri, 19 May 2017 21:54:04 +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.347.0; Fri, 19 May 2017 14:53:52 -0700 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 v4JLrqZG002243; Fri, 19 May 2017 14:53:52 -0700 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id v4JLrqr1002242; Fri, 19 May 2017 14:53:52 -0700 From: Himanshu Madhani To: , CC: , Subject: [PATCH 10/25] qla2xxx: Prevent null pointer dereference of ctx. Date: Fri, 19 May 2017 14:53:29 -0700 Message-ID: <20170519215344.2168-11-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170519215344.2168-1-himanshu.madhani@cavium.com> References: <20170519215344.2168-1-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)(39850400002)(39450400003)(39840400002)(39410400002)(39400400002)(2980300002)(428002)(199003)(189002)(9170700003)(101416001)(33646002)(2906002)(42186005)(189998001)(76176999)(50986999)(106466001)(1076002)(50226002)(105586002)(8936002)(81166006)(87636003)(8676002)(72206003)(80596001)(478600001)(305945005)(356003)(6666003)(50466002)(38730400002)(54906002)(2950100002)(5003940100001)(86362001)(48376002)(47776003)(5660300001)(4326008)(36756003); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0701MB1017; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD023; 1:UEB4cak8CKDQX/q/donVmR7AzPMysgeOzaai6LoGAocpEZNerjLkkWHdLdqxjtkE2Tlob6kwN+gS0NO1Ds+SE91OraLq6IVYWRIcpBFxj3rxquqs7Os23qd24Y9uSXtsKsFAIqB2m9e5sdO+Xxj80XtHfQ+DSi6cMBnzh/JruMPlLA9BCl0uNCBIzIrYpXzjzZzMOnw4J6A5h3ci30J2/yGkm1bTmJRwMH8d/UqiCwwwm/GvVn7NkyxiCtpGmUodrijxZqhpVFuwfW7F2s0TvjsNO0N+VfVaLik+y/jTjyQgOkKs9csv6svrbAJXFf5qwOOJLVyxdNcQneiqtkHLEV59dMu0WpJBtyW0XbijFIdQnYCUDrP5SiWAksidrLF/2cbJaX7lqlkz0sYqRzK1B8UmJdnnckgJgYhUC+a5vUq4/1rnTEkWcWAYbdAwStOTnsloyxPGrv8bwe4Y30RWax1Usqp1aQSEYvIG7TbZk9Ji+bqVooh5ohFYh7zrQ8du+PNsLZfPPb8nHkKlkdttloWrVzDRjufp5hcEnCHQzHyPblM0ecBjG9OTcojGAN6KZBDpCEWc1sPAhaQ5GmMUxg== X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 78a3e6dd-747f-4056-f997-08d49f01918e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(201703131423075)(201703031133081)(201702281549075); SRVR:DM2PR0701MB1017; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0701MB1017; 3:wvQoh358b5ilCYbp/O1tbpvyzPFKX4AoTs3gN2QT4UDSKsZExC8wKsC6Mzfvss2SQUGuDacrApWyIp4ykV9euUTvOQtawECYE+xLakrBwkCXZBS/qPMhKM4X8y1ktO1IIhHeMwF6QHRvLSdN0bgiVINgXfSC7jhT0yR/Lrql3MN3VQWF9IGQGpmVNoaJI6mIKuMYORSUo3VWCTLCKjPwHhEqHr0JG621nNZxc5W2SNJ0ZDYiRycUQJXdaoiLcNbOaXepxIzKk0WBc1/1HtyDJgWismtZkgBUwjGdiyWVYju8qfse1YBb8ITMoalTpo9uFQtZ/Z6WUoMdj4rQcuNHph25MCUkRaOUIi7VMf/Fzg8P7r6KAR9G3J15GELHD+l2xgnpUOCMnYpGRV1iA4OoWTHtO+lRCeMLdkh3W15VOe6Fy5d5+j/9b0A59jqioHPOyeYfklidHEVLTsr8RHHMnaiharI734DAAzzPdG+JYurPpOUmGdNrjzmxMAIzsy1e X-Microsoft-Exchange-Diagnostics: 1; DM2PR0701MB1017; 25:7IjWDlTYmlFSq39k/ydi9JJmdfXVkWunYqTXm7WRm9IzNwvK5YUj9CRbF9jH2oYeiD3h1x2jb86HVKah2bFcqNk02QYlJLlOFOlN2sbUrCVUPMXy3gLZBqGOr6gkiOwf5q5Si9CQRQ2ObQWvX9tnREuoG5PQVSOWFSTMRur7DOnmMc3ngTaIzAZneLZvSSE28EN9CAqGpH0ycwQhvHdv4L+HE7Q67yWcqXsoPAcIk2ZUg7Oi8ERJZZmBBxMridTOos67akgr3l1MEUUZaLJ5MkBFyqeKrU5G+w7m2iBKrEbGJRmYaY2KZljhelkzMSbwWHAKsoz1vV/+HKYRhg+jS6o65TNoZUga3X2TPp8Ozj97+FRPmnHKcrTKMQ80oIeHK9/iX1DLSMrPsdXxuxdBeqr2JVOK44OWRTAXlZ4ThtflEIhA1YQ7HN3wwhspkByMtkHhjDQx4m/bKTj5X5HYKaN0qzmHWVWMeswPspuuhQ4=; 31:TtyaTXyp9DGTT8rp1Us6DWWLlMpubSYwxr7ZBw/PBhCpbfEdNiuEAkoKB65OTUYcChCG6WQ8KofrZ6QDjeYe/ozHlT/M2P/6OqB5w4Y8cFO/NLhSOe0MHmHDSG+2NMMhD9we+BKqnQZmsE8Akk+mLTnd3bC6tBrwT/WAv3jzVm2epvjTRnXlIVWnGCs7rJ2a7ICwLaR16CHG3KnW+ej6tLY6chFdOzPtmBEPL58W/g6iXowpw22DI8of81eDucPj X-Microsoft-Exchange-Diagnostics: 1; DM2PR0701MB1017; 20:1sB87f8EVa4AgDNpenvuYiJAQbkDvEPRKP7QldNFsR1Uw2YGbMJL6uy2YJ8OA9LSt+XLmo5DHdAj7ubOvb4fj9BY+ItDiQ88OWp1n1qIhFkhvkCU1rg/n+8CjNBmx8hPVFGcgqw76qRUVtwqHthGEINT6n7GKGqu2c7OmItFrEfo+DS3LND4MDEyu147cc+6QeGwL28nWi+leB51iH5sx8v2FAwZQ/95l13oHEmuOrlhELFXrSmHAwnPrOFQkNTipWjtl/iKsmZOhucnXjT8MiiUq2qP7wNcqQWEDPMYblfEDx9o/PiH4YPH7x/oLT9/1f7TnzD7lNZUGrUVUK0t2RsdkURAWZgmvodnx3NmAfRrkQ8IXbu2dFmernynKDlkJ1HLBqUN9YDcEkw7y9G22EZmKvl1Nxy+bRhK408UoEq04Jbo+KIbHtKh+4k+R/D2zcavI0eTrdFFpoGdSylnybh0tmKDCHDiYmrdoVu76ld1CIisPxE8r8S2aJk01Bra X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(131327999870524); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(5005006)(13017025)(13015025)(13024025)(13023025)(8121501046)(13018025)(93006095)(93001095)(10201501046)(3002001)(6041248)(20161123564025)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(6072148); SRVR:DM2PR0701MB1017; BCL:0; PCL:0; RULEID:; SRVR:DM2PR0701MB1017; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR0701MB1017; 4:B07FbgbsRzMs3IrdtbMLfcM+UwQY+NUuDKunf1Fn?= =?us-ascii?Q?GIC6iYJVfqnFjC3GUt2/S0mRmv/ecAkx7q9AVj/KCdpoAc7VvW9y1Z8FavQi?= =?us-ascii?Q?pseIjSFCexQ3nSFJWivPhs8tC2FFpQVTA1++2W/Fh2rNZyKjC+Jmuxlha3d8?= =?us-ascii?Q?K/6tUCNcF9m2UGASCnqOKgfWjo5IPVt+N2u780Y+95+UZ5VpCkFTJP11HUlS?= =?us-ascii?Q?r/CU4Gb6kkRZtwlkkCV3azkHiQyip8hVb11wJdg3bbqeS5YOBQQG/Te9Pfzm?= =?us-ascii?Q?w9kaPoNUB18xDdJPdevJ3j9F9b3UaL4Ydhmr6AiB+gcPC2mcmczwSLrzjO8P?= =?us-ascii?Q?EPs5CyLv+AJPhqte5nt5yg9xemZeCKsVQJSKS6+daEJNBfvCdfPovfroh6Hk?= =?us-ascii?Q?I+mNoLrYkqXIHfSmAbXwwd9MiklEMV4pwERtdiD4j8ZjF0R4S4cBiojJZ9aH?= =?us-ascii?Q?YIBYuuFXaNz+aLhYwN6HDZnMo6JZVXHrLMxzX2l6Vil0NDPHVfTMVIRh5NQE?= =?us-ascii?Q?VloyhisuW8PlQWM7Xyo/b4Pn08a2heLCs6ZkDw9x+NIg5AVTPiCibfldpnC1?= =?us-ascii?Q?laRId2Y49v/SuVMzIMHk0qreJO77keGyRtHyQf1eXgA5yVlg+nIW1KTmcbdM?= =?us-ascii?Q?rjUWGgxoGMi2LXY8YmbY/XF3+3X9NYz8xjdipivSNA0aEwB+dfdwILlvsAIh?= =?us-ascii?Q?D4Pi+SoGXFRt2kt4GWmZNxOzNhoeN4IJEb7YGKPwg2qv74sma97ZD4VaJvhH?= =?us-ascii?Q?4n2s/JQ0S85lkUsjn1Q4Hp8K4ifKzF0lCU0ltYiOxUTvrUOW7XqD3eb/xRz3?= =?us-ascii?Q?NfieJFJOH4EBZLwmZHDAwh3HyHGIPStRyxsbPcf/anbC8058yWxAcpMyptNE?= =?us-ascii?Q?rwOiMyZiDTua5Hc3omg4OeJJyrYF908nnTc7QZdAAPR54FJvSc3fwR1yiK9Y?= =?us-ascii?Q?se6lsGKtkQr4JzdN6uOwRK//oQFXxss6DHVjs43gbQ=3D=3D?= X-Forefront-PRVS: 031257FE13 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR0701MB1017; 23:Gvpm+8JkDBFr8dM5rwwo9qXSDq4WHntmfkO3Qp6?= =?us-ascii?Q?xyYR9ZKNpFpM23hTFQ98sRQ33BDqQwSqbDoKNk5NTjr/PNOUBe8CysyIcTL2?= =?us-ascii?Q?rIIqF/Lm4m3IpG1V7C5MAjEpWcdtoO1gAjdxr5NADDgkeNsx/6TLstVMoSay?= =?us-ascii?Q?9LlFu6seAmSfPivoO27YWZB2Z75mS7MPHLz2mfYWhZBZba/Z6ACP0hrL8yvM?= =?us-ascii?Q?bEWkVlIUtkwohxeNwftvvmyI0dex6p7Zvhi2WUQzGPeh131BRKCln84bWtUC?= =?us-ascii?Q?NdQzyq/NYVWH9aR96q1hzlPPhFDxV1eRQFaZea6rMvxZTQK62NjEHvdT4dYw?= =?us-ascii?Q?BCUFl4Wex7ZIIkWe8nOFdZK3t2WLgwuyzKBxKBDVMK0zMb7wOYJfJYGAP2+E?= =?us-ascii?Q?C0uGisNKAwY9Wyp15dFx72/4Bvu4PNFgDMY9FaLYc6S9NR2BRnHYmiTMx9Hh?= =?us-ascii?Q?P+yJnXy5sSGtAesANuHgyfp4waazN43TZ6LMGq6tH91+153s9irPsMnhU7h4?= =?us-ascii?Q?bdRW+uR//Cf137t86ofr4WwvbgT0eMNegdVSJkWnW5zLKomYFeK5mFaWoPtd?= =?us-ascii?Q?Iy8OHFClQ/KXJ2PzG4Z4RXHchJdD/Fa5IgrI+dUap88M7WqxP5BREtJC88Zl?= =?us-ascii?Q?rZwcvhAL94In7ERRJCujD9J3o/1Z8rMKG1VkXEQDM046HsQ7GRjQhA08HmMe?= =?us-ascii?Q?wkM2II3k41X+bL5ZJmiMVOwy32mKmObYUFusilriK4qXZcXIWv0IzII639rG?= =?us-ascii?Q?lVd0vEEsdMBmh1c6vkgWf1x8CwY+bLaAmTTf4+eOdJZLHwlonAPwv/m8edqX?= =?us-ascii?Q?A1IL/edaekXEOFg4bezLAyH4Y5sEJxhGwQXeR4/dvEDLKDjhlot9Wt2bslfk?= =?us-ascii?Q?rZHOmeYtK3XXmbrQmu0L6G/nHv7sryoDlLJA41d4tWhpQohkHHfqT7Hm/9YL?= =?us-ascii?Q?3emvgrB4kE0FUeXli/BdfWo/iAQcfdWbEVQzq70ztUppPdreE3aREoel3n7i?= =?us-ascii?Q?bEPYRL2P70iC7OdUQsFeOLU84F6HV3SrGggP0h7GMSaDakqlZY5ejH2D7QGJ?= =?us-ascii?Q?OvjMQEsbOK5seVa9yKN9YfwoTA0vG?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0701MB1017; 6:npDuIMiGjNn4dmclGe1OXrm+U6yJPxLjSXiRai8f6PNZJ6aAtPPZqbpORIp5WDyXUsvgEvxwOSLPKRyOgkj4XAzgpE1Aw2JqzA8C85sgoTp0ZlmvmUQPwPAEyk4zwTvm2uHwq9FFY24OSimmv2NtuOYDC9eK/RUbFKIxTzbBOy5Xc6wny6gBYWFDeTR8bTUWk2ZTFaaRIoMJziSWPCvt+1VpMIYX5DijA07KKyIoRnnCfO42bR7apnhBgv5jUXGCvsJOwZtQfNv/izG9T/TJSqNFfYUAnTAXINaR0pzHQ3pOk4RFn7mic4g+3zCMIFZU/8b9xIuZKupzZ2tTxafqR+Jel9yKb8dOckeh9tWcRDbR99KwYA420oMYt0gj1roQtE+7TFiHzFVhCrR0nERKtmIZbtdcVEvF5GmEJJcbqvgMFdBU1Av6aSbY+iBoAzdsvQ+O0PX5/bGNKRISBAmr2v9EDYpflbr78mLUVKBzhjwMghRV10jn668icUmNjhWu8zpUypRbn4o09Flhgbo/vg==; 5:y/QpfQgKYarylJuDptsj0BmK1pn3fnz18KkH/1UGgVZ+hc+AhJYwvWwRp9RehwABJabv8sIfwCe1BJls47j4MOvyuqjsTJf6rJwnfwjG+FGYN7UbbP/xpP/6ndP9A9WkHSwdlTSI6Qy7P1gNqtlUTQ==; 24:cOUGER5aCSmY4JKm5nDZHMk4ApsAPOkP9D3lUeefKjFhtR0AMqKQ3VL+zP7SnCwnvskMfBw57bp4RrYfkNAu9Yz7toPwitaP6tlckyM+9oE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR0701MB1017; 7:4AKneW+1ycuD2d6qQTaDdxYXfiBsTRA43euOzU+VFDTkcWsD0aecBXko5U4qbJmuzmN9ktH56xBvDgSPid18EtomtBgEyxp1spaX7t4j7b5/kuO0IkdzwZZdO3091WGccXAVdSdNRzwlTA8wuMIVpNlDsll8xWizDy4gVTBCY6l897TJThzdRmyEuckpdreoa/ufDlXCILxatNULMNJIFPhE2BGXdP3xepJ7KlIDuHzu6Vi/w+U/ID84lp6Hg9cuKttXLj8/X3Vl/l4SwlIxB0XT21yl2x7BVllmgJRlmR7Sqw97iDQ1j4lpo1MSnHCHzVP8D+T42wkw5DQWK9wn6Q== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2017 21:54:04.9748 (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: DM2PR0701MB1017 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: Joe Carnuccio Fixes following signature in the stack trace: BUG: unable to handle kernel NULL pointer dereference at 0000000000000374 IP: [] qla2x00_sp_free_dma+0xeb/0x2a0 [qla2xxx] Cc: Signed-off-by: Joe Carnuccio Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_inline.h | 26 +++++++------------------- drivers/scsi/qla2xxx/qla_os.c | 30 +++++++++++++++++++----------- drivers/scsi/qla2xxx/qla_target.c | 8 +++++--- 3 files changed, 31 insertions(+), 33 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_inline.h b/drivers/scsi/qla2xxx/qla_inline.h index 66df6cec59da..c61a6a871c8e 100644 --- a/drivers/scsi/qla2xxx/qla_inline.h +++ b/drivers/scsi/qla2xxx/qla_inline.h @@ -129,28 +129,16 @@ qla2x00_clear_loop_id(fc_port_t *fcport) { } static inline void -qla2x00_clean_dsd_pool(struct qla_hw_data *ha, srb_t *sp, - struct qla_tgt_cmd *tc) +qla2x00_clean_dsd_pool(struct qla_hw_data *ha, struct crc_context *ctx) { - struct dsd_dma *dsd_ptr, *tdsd_ptr; - struct crc_context *ctx; - - if (sp) - ctx = (struct crc_context *)GET_CMD_CTX_SP(sp); - else if (tc) - ctx = (struct crc_context *)tc->ctx; - else { - BUG(); - return; - } + struct dsd_dma *dsd, *tdsd; /* clean up allocated prev pool */ - list_for_each_entry_safe(dsd_ptr, tdsd_ptr, - &ctx->dsd_list, list) { - dma_pool_free(ha->dl_dma_pool, dsd_ptr->dsd_addr, - dsd_ptr->dsd_list_dma); - list_del(&dsd_ptr->list); - kfree(dsd_ptr); + list_for_each_entry_safe(dsd, tdsd, &ctx->dsd_list, list) { + dma_pool_free(ha->dl_dma_pool, dsd->dsd_addr, + dsd->dsd_list_dma); + list_del(&dsd->list); + kfree(dsd); } INIT_LIST_HEAD(&ctx->dsd_list); } diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 1c7957903283..c8282a1ab6dc 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -630,29 +630,34 @@ qla2x00_sp_free_dma(void *ptr) sp->flags &= ~SRB_CRC_PROT_DMA_VALID; } + if (!ctx) + goto end; + if (sp->flags & SRB_CRC_CTX_DSD_VALID) { /* List assured to be having elements */ - qla2x00_clean_dsd_pool(ha, sp, NULL); + qla2x00_clean_dsd_pool(ha, ctx); sp->flags &= ~SRB_CRC_CTX_DSD_VALID; } if (sp->flags & SRB_CRC_CTX_DMA_VALID) { - dma_pool_free(ha->dl_dma_pool, ctx, - ((struct crc_context *)ctx)->crc_ctx_dma); + struct crc_context *ctx0 = ctx; + + dma_pool_free(ha->dl_dma_pool, ctx0, ctx0->crc_ctx_dma); sp->flags &= ~SRB_CRC_CTX_DMA_VALID; } if (sp->flags & SRB_FCP_CMND_DMA_VALID) { - struct ct6_dsd *ctx1 = (struct ct6_dsd *)ctx; + struct ct6_dsd *ctx1 = ctx; dma_pool_free(ha->fcp_cmnd_dma_pool, ctx1->fcp_cmnd, - ctx1->fcp_cmnd_dma); + ctx1->fcp_cmnd_dma); list_splice(&ctx1->dsd_list, &ha->gbl_dsd_list); ha->gbl_dsd_inuse -= ctx1->dsd_use_cnt; ha->gbl_dsd_avail += ctx1->dsd_use_cnt; mempool_free(ctx1, ha->ctx_mempool); } +end: CMD_SP(cmd) = NULL; qla2x00_rel_sp(sp); } @@ -699,21 +704,24 @@ qla2xxx_qpair_sp_free_dma(void *ptr) sp->flags &= ~SRB_CRC_PROT_DMA_VALID; } + if (!ctx) + goto end; + if (sp->flags & SRB_CRC_CTX_DSD_VALID) { /* List assured to be having elements */ - qla2x00_clean_dsd_pool(ha, sp, NULL); + qla2x00_clean_dsd_pool(ha, ctx); sp->flags &= ~SRB_CRC_CTX_DSD_VALID; } if (sp->flags & SRB_CRC_CTX_DMA_VALID) { - dma_pool_free(ha->dl_dma_pool, ctx, - ((struct crc_context *)ctx)->crc_ctx_dma); + struct crc_context *ctx0 = ctx; + + dma_pool_free(ha->dl_dma_pool, ctx, ctx0->crc_ctx_dma); sp->flags &= ~SRB_CRC_CTX_DMA_VALID; } if (sp->flags & SRB_FCP_CMND_DMA_VALID) { - struct ct6_dsd *ctx1 = (struct ct6_dsd *)ctx; - + struct ct6_dsd *ctx1 = ctx; dma_pool_free(ha->fcp_cmnd_dma_pool, ctx1->fcp_cmnd, ctx1->fcp_cmnd_dma); list_splice(&ctx1->dsd_list, &ha->gbl_dsd_list); @@ -721,7 +729,7 @@ qla2xxx_qpair_sp_free_dma(void *ptr) ha->gbl_dsd_avail += ctx1->dsd_use_cnt; mempool_free(ctx1, ha->ctx_mempool); } - +end: CMD_SP(cmd) = NULL; qla2xxx_rel_qpair_sp(sp->qpair, sp); } diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index 4c64f8e3f9b6..a2e17a5794ab 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -2246,11 +2246,13 @@ static void qlt_unmap_sg(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd) pci_unmap_sg(ha->pdev, cmd->prot_sg, cmd->prot_sg_cnt, cmd->dma_data_direction); + if (!cmd->ctx) + return; + if (cmd->ctx_dsd_alloced) - qla2x00_clean_dsd_pool(ha, NULL, cmd); + qla2x00_clean_dsd_pool(ha, cmd->ctx); - if (cmd->ctx) - dma_pool_free(ha->dl_dma_pool, cmd->ctx, cmd->ctx->crc_ctx_dma); + dma_pool_free(ha->dl_dma_pool, cmd->ctx, cmd->ctx->crc_ctx_dma); } static int qlt_check_reserve_free_req(struct scsi_qla_host *vha,