From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755355AbdC1OQh (ORCPT ); Tue, 28 Mar 2017 10:16:37 -0400 Received: from mail-bl2nam02on0040.outbound.protection.outlook.com ([104.47.38.40]:54969 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754159AbdC1OQd (ORCPT ); Tue, 28 Mar 2017 10:16:33 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=amd.com; Subject: Re: [PATCH 1/2] crypto: ccp - Reduce stack frame size with KASAN To: Arnd Bergmann , "Lendacky, Thomas" , "Hook, Gary" , Herbert Xu , "David S. Miller" References: <20170328095814.3734615-1-arnd@arndb.de> CC: "linux-crypto@vger.kernel.org" , "linux-kernel@vger.kernel.org" From: Gary R Hook Message-ID: Date: Tue, 28 Mar 2017 09:15:45 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <20170328095814.3734615-1-arnd@arndb.de> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR22CA0070.namprd22.prod.outlook.com (10.171.142.32) To CY1PR12MB0474.namprd12.prod.outlook.com (10.163.91.28) X-MS-Office365-Filtering-Correlation-Id: 214a32d6-5b74-4f65-fa8d-08d475e4f114 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423061)(201703031133067);SRVR:CY1PR12MB0474; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0474;3:+zG8bAj+ZGP/W5FvHoEbMTkzuujmsmJG6CFoi8sHlDEOmGCED68x7rFF0iTaiXovq/7qWgBVsvuWPmvIDL3G3XjGyYl8yO8tx+kY6wK4hKWeWFRCTKqgUicz7pooL6muMlJjiEhDDD3O19beXGa6xvPXlPozzw2yWryOgKWAXAaLeJuBt6SoXP6yS89KT+lPDKWXsF0ar8ZtASAr+D7PfoOUcmMIu/wDUSsBc9NhpRRmXAAbBE6MMCas3tSw6d7GbJBbOBjXqZcX5ao/Wl4lGH8x+SwhfdowBmGAmaPprfqUFYJ0rarR2H+nEC2rzlCOGqtQy+eQOMi8NU6kX1wIWIthlZJOuTom0gRLNyXvLaI=;25:hxBr17zwQQkH8cypf0+SGD5q7GuhDM3DLADuwNkOgkp8NUMKG/G4M1G+E4C8bMTGmZ2D5jQ4bMxmKGB5q5Um9GkZNvJK6Rl/lZOPs1iNLlATIQW9qTg97ZHzabcg4C2P3NNCD0FX9zgv6z5OgCezGF6yEAQovgpwcJwxe/jlurD+BO2s9nRsgPhUEFIB77xrMU1LSrtClq3mSQz9LknfDGWWEBnJLf0x34bs+4lue4lFSgnGrA3VYmErtUkaMA3PYsOes4WMlrVz6+aU4WDczR9fcGp2KzPtZwNIf712B3h4BlqWyAtciHXYkY4B67D+stvLesNtKA9F1Z7yEGMV7lncBQTwRMYE+rm4H7C1gtoapFoUWjxr+cMujbSbf7UP3ChQnTl49d6f5bQMwNRoP//cxd+S2lVxEBe5pNpWRt4bJLCIx19mPHZ/j3LrjcbTn7EU8pBJVinfi9FgxddSJg== X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0474;31:bAaRcEFqRLm0v+0Ty3uD/s6xwwwjrBWpo778gxpp1QHS0oPRElLVVQmF02K4yliCWNx1mDylNg6ZqWGwS+CoUM3beFfbVAlHlFAl9FBk9TZNbnXWAWfZsLT7Qi7edtawktimrSPTbLnXjwmRvSPN+PE7NYWJdZpFg1+GGN/AMQxHDtrHA2zMJDbyL+2nQMKWLMb2SFdshCAISPlNKWID/f3BvPPeLll4HdNxvkGEeq4=;20:EzDEZKcJb/Ra1EAduJSVNRCrvENcsxh/LvhEhVy+gFJBhzW9d5Pq7Yb7cGZv4/d5eBySX2CJGsxua069zOMbGiqyK5gCWZAq1avSUdokOvAtoWI/UFOC6fpPRJ8kGR61qL4QhnVevT3Q19cEZ1utfKouHn6Q+9UMz1rPBy6IeHXhIu2ild2qJZksr+6wXUVotsnVuVVvoEwtrQwOda4vPzxQvVEUE0XP/SZCFHJo/xkZwABWaLFuhEYcYiLdTceywrvnmgmn9mBZha7QjuSgXhpoiS1qLBS59XRE1owySpr90yy3KV2kWwPC9xv4qLC/sIuStoXIkM7hEjRE60v+YYw6CzP7T3EPBeuj2nD4siVSSvMONyumF3znO69f1d7LgGE3jIbX+RrmtcKqZBQgts3ds1H640buLX8grkllTmdBZRbwF6QuoNogkUc5d6Mn0JqqHrcL+Xpgjy/t/lEArvhkTTZ2pxMVhxjraCheELMCqVeTZTLv4mxOrsMeNAaq X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040436)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6041248)(20161123564025)(20161123560025)(201703131423061)(201702281528061)(201703061421061)(201703061406061)(20161123558025)(20161123555025)(20161123562025)(6072148);SRVR:CY1PR12MB0474;BCL:0;PCL:0;RULEID:;SRVR:CY1PR12MB0474; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0474;4:MtWdLLfjYaWTZn2PIaB+ni9m/+game7pqbN8b7NxyatiNmRRsODoCa+udS73tuijixAXJZ3ZiEkg4VyOZeInKeCT0kYXG8al5DWfnHQrekQYBzH56FMBT+s/2CeEvOBc5ngTOC3axB47uFGyJ1+udShPA5bqpj+oz+wcmTrp22RKQ7sJZpl0ETBGMe2gtM+c6SXUp9aFfJXvPZvyb27Bponffetd8lAQeuas128jR4+nLKuCkcNugPdcTRADbumXwigQnxHVyTIozLAShNcKapiAZShwK25Ntvg1nW4nx9U2lki6Fy9ObH6lksozr1nAM7EWtzv3gllLA+czuo1w5v33+waN7/w57hLovrnZKr1aV441KHi/hjSVuH93duU8XUlX7ozmwpQaq9eEtktxkdPk8VnUDKA692Itm1cVok1x6FrUhFp269JJb/FyR/Xtlno1Yvlxg09ubqfqEDXvmu1DxZxtk8N5iyF7YUwFxeZLns0rerAkGrUc/oACjsu8ZTJz4sP7q6C846imX2I/3dEyd5D4V3w0qfOn+KicCTQwXoyIDKRYhiiCDP4r6RKXjdpi5DjHF5unZZ/s2lEZ/nrfX4zglYbgA/O4WLDyhDcEnxhRCbewjHX2UsqWU5WOkMdbKzGQ5vac2UWqrtSCslUyg9epC64n7eyU3aXgmmPxAQvGW/img/csDItRww0yoimwSkVYEZ0IML87OwTEO6bKEPTd6dcT27CQliNbLK/GJW1Iz1jvbIe4TtOKKoqelu278svNbecr1o2mS740oQ== X-Forefront-PRVS: 0260457E99 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(39450400003)(39410400002)(39840400002)(39400400002)(39850400002)(39860400002)(377454003)(24454002)(50986999)(54906002)(305945005)(77096006)(36756003)(2950100002)(90366009)(31686004)(6666003)(76176999)(64126003)(189998001)(6486002)(81166006)(53936002)(42186005)(50466002)(23746002)(25786009)(47776003)(6116002)(31696002)(54356999)(8676002)(65806001)(4001350100001)(2906002)(6246003)(230700001)(33646002)(229853002)(66066001)(65956001)(38730400002)(7736002)(83506001)(5660300001)(4326008)(3846002);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR12MB0474;H:[10.236.19.127];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;CY1PR12MB0474;23:so24xFJpyf1TaKDmPyhIlJHZf6Hm4LgIdyKLX?= =?Windows-1252?Q?kMn8rfXKFWmTk25C+7BPAR1t6UktwyXgHedUFnwsMPgmjYH0a4jeYxx1?= =?Windows-1252?Q?bRvVncT8QQj4yHiZpymBSUimhL/TFwZAslTvnsM/hk7r4pp9PUIYFGrC?= =?Windows-1252?Q?PJzmsNRMYwHbmKHAO0gUuwgoEGa278Wb+3LLkuVJiJdrF34TsQzH1EGA?= =?Windows-1252?Q?tAGwWYpsTjaAUaeGzDLGry7WG3px+rAaIBFcNrWaOU1wKHEEpoNsX8L5?= =?Windows-1252?Q?8nYkonl7EH1flSKKCl2EB+tYiqtKFCJ6UU/+r+xBGfSEr+8iBO7CmoQe?= =?Windows-1252?Q?8tX2dIces+kNdbnnKcfwqdILxFitwsCyzQGmhq9pBiMOkOJOpagRHXVU?= =?Windows-1252?Q?wy9mcRSLkQHPCkQ9Hxm95loPiSDTzdx2ziHjJ2J2mCb3Wli2VUioTjJY?= =?Windows-1252?Q?5B9I1v9AxjhJwylAynO5YnZMsrOWMVpea7mNYb58iO1peRLh2QOl0dgQ?= =?Windows-1252?Q?+djNtORNSP5BSAKPz9aHHx0qCbW43E/XyDhlZM5abdnDT6kE3+3/nQCm?= =?Windows-1252?Q?S4nIq7N/nLsiccrqtJjFzwW02T3YbIriA662SDCFOEgbsqYhqx6OLB2h?= =?Windows-1252?Q?7yiKFWL8K5IuYCEUgPltM4U29PUBJhSxCEmMv5O62/b6SsOkO+Kjo45O?= =?Windows-1252?Q?D0Rbzg8nVYuexPw6irmqqOigj549MG6DLEg8F3vKZq2n/hP0xmEWNYss?= =?Windows-1252?Q?y81qKOd0IUuKz8r52c1tmQh47d3u4O7M1BzuI00RYb6rdeRynNx88hCC?= =?Windows-1252?Q?5lnfz2TK/v+jRltLiZMmZ2JKoTN7q8lq7uthFxKnxNMFkj82ihpSJUq8?= =?Windows-1252?Q?QnFu2cJKteUbd6Lr8KgD/vs7OXbPpAwzWGRwMIcBXz4oW1iw1inWc75W?= =?Windows-1252?Q?AQ3A3HQzJtB9ZfDC/sU5znkdhCKAmPMxNEbRk2tIRjYojhFAzhteCstZ?= =?Windows-1252?Q?oveYVBXAHqSk7PTxrBPu2URuGZQnjaYwmnZkY5l883PSfgiO6ajZbOAL?= =?Windows-1252?Q?5o0MuHY1zXj85jh7t86sNasPR8FweJ6kd8PO+pXUNXawKD7Y0Hw0VtuQ?= =?Windows-1252?Q?sghEq+icFCpNHCYAjDimMuwRkNPeMpZqBVOmTjgV3zdX5cd1QQ95t51m?= =?Windows-1252?Q?LDKOsCynmJPihoI/71KUvhHkhuEts1VpaaLXkdiLDpCwKcHE7nj/jzTF?= =?Windows-1252?Q?oLyNGbqyw61VW2z8Mtd0tP+hCGBgqCq4hGNH7ehOCjE4rbEz7yVOoiVg?= =?Windows-1252?Q?o1492jWeFOg/9NlQGPDooJwHrDz5lf6fkSg52aiCVMuVdU=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0474;6:1YJHLH8VK2iKw40+tzxsp9YntRISXNYZCRIkY/DOCPDq1Gwlc1BOkRhFnkXjII1+r802pPvz+wV05zyj3J9qoT47Kjh+UnSM5V6//LGaSZk7EPfMZvfuViT+DOI5DK3GUX37eHwzYoTBMLvbLzWU4fOCFckyBvo2Mei3fhQMYreEDXnnsf/1iJu33y9/ZNbNGuhQ4pr7MLeXh1ziz+eJdT9OSyCoPHWEagRaU+a3Lv5/zetB5YamXHw8O1LotdKSrayMzrMNI82SNyJGMLBblAb5p4hiVN2eUdrSz6UYAajPP+ifmk+8oNvp37CLN4mTJKSDWZO1m42SJ4GkImLYM20cDKc4mBvl5HVkctjnDLLrJULPOOhprmIR2C2UzhWxKvURiqSZiEnZOuafL5K0ExJTWLCNf2CNwANLzxnL8uY=;5:IQffnVHzKp7unpCIFCNMVvaqd1sSQMHMumSco+pxAmI4l7jGQ52dMyXLkJdXTRXlhUSsttEk0rsG2Q8t9u1m0OFxJ8ZNhDfWM0OOcUx++hX6D3tgo0nAkcYLsET/m3iWlZGM7OttkTK0vobEcB6MND15iaTSZTF6rw1cVCD4bFI=;24:GxjMyfVrjH7cVKokDXmGqF59TfxrSy4bzEvhitcRZjP2N7vjtaTlv89/V2JGHWV+q6syQYGRrc3MdxuoXoEgDDeFUrKx+z1qcPa30FcqDFA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0474;7:rCNp1NBprhob4qz73lOyBAumhPcaGA45dE63yxSRdMQTadE8BkOqVKw0tif6x+26xWnBaEsOCQ2ScJYqJoDhlqNKx6DXnAr1wieTYNBBVcc76byw7z4RiAKKwY3UjqABUEYwYxBRcDp0mmcYxH35ppvwCzr2rIkC7wuCfcubVecoN69RmYaEfrZ22VTVWu6NldxyO4y2O1U3eTLTBozhZSVRvBYiWjPyVBiRZaHmZGBVtSYY81SlgJ+wBwHNfSMV7j2rA7PsQ9z4VTu2eTGaWY28+rs8t30Cs8GrErBDMzzUOhNB3Ah4JgSiPNRRMeA6zB4VB7gqP1VsGAWUNBQsSg==;20:IvXEMpFibGZNDxLXTDrA5xqyg3vqRUMQ+Q6+DzOMEIZQeQQNd8evjlU1inU4bfZf2T7OHSl2CHmSNVTo+2qVyrmGyAidNZcnB3rkgulJ/F6G9SQbGivS3ecByi16bHp4mX3wFDeIOY0meiJVl2OmS8zmW2PYcZW7pfWMqcNyN/hiCnz/7a1CABOqURIytiimajywyinxR23zCfVClOO8w6cOyoxRddDUhFLUT/zeia223iOar36Z68/oJziC+BLo X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2017 14:15:51.6673 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB0474 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03/28/2017 04:58 AM, Arnd Bergmann wrote:> The newly added AES GCM implementation uses one of the largest stack frames > in the kernel, around 1KB on normal 64-bit kernels, and 1.6KB when > CONFIG_KASAN > is enabled: > > drivers/crypto/ccp/ccp-ops.c: In function 'ccp_run_aes_gcm_cmd': > drivers/crypto/ccp/ccp-ops.c:851:1: error: the frame size of 1632 bytes > is larger than 1536 bytes [-Werror=frame-larger-than=] > > This is problematic for multiple reasons: > > - The crypto functions are often used in deep call chains, e.g. behind > mm, fs and dm layers, making it more likely to run into an actual stack > overflow > > - Using this much stack space is an indicator that the code is not > written to be as efficient as it could be. I'm not sure I agree that A -> B, but I will certainly look into this. > - While this goes unnoticed at the moment in mainline with the frame size > warning being disabled when KASAN is in use, I would like to enable > the warning again, and the current code is slightly above my arbitrary > pick for a limit of 1536 bytes (I already did patches for every other > driver exceeding this). I've got my stack frame size (also) set to 1536, and would have paid more attention had a warning occurred due to my code. > A more drastic refactoring of the driver might be needed to reduce the > stack usage more substantially, but this patch is fairly simple and > at least addresses the third one of the problems I mentioned, reducing the > stack size by about 150 bytes and bringing it below the warning limit > I picked. Again, I'll devote some time to this. > diff --git a/drivers/crypto/ccp/ccp-dev.h b/drivers/crypto/ccp/ccp-dev.h > index 3a45c2af2fbd..c5ea0796a891 100644 > --- a/drivers/crypto/ccp/ccp-dev.h > +++ b/drivers/crypto/ccp/ccp-dev.h > @@ -432,24 +432,24 @@ struct ccp_dma_info { > unsigned int offset; > unsigned int length; > enum dma_data_direction dir; > -}; > +} __packed __aligned(4); My gcc 4.8 doesn't understand __aligned(). Shouldn't we use #pragma(4) here? > struct ccp_dm_workarea { > struct device *dev; > struct dma_pool *dma_pool; > - unsigned int length; > > u8 *address; > struct ccp_dma_info dma; > + unsigned int length; > }; > > struct ccp_sg_workarea { > struct scatterlist *sg; > int nents; > + unsigned int dma_count; > > struct scatterlist *dma_sg; > struct device *dma_dev; > - unsigned int dma_count; > enum dma_data_direction dma_dir; > > unsigned int sg_used; I'm okay with rearranging, but I'm going to submit an alternative patch.