From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932472AbdJ3QeC (ORCPT ); Mon, 30 Oct 2017 12:34:02 -0400 Received: from mail-cys01nam02on0062.outbound.protection.outlook.com ([104.47.37.62]:6812 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932252AbdJ3QeA (ORCPT ); Mon, 30 Oct 2017 12:34:00 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Cc: brijesh.singh@amd.com, kvm@vger.kernel.org, Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Joerg Roedel , Tom Lendacky , x86@kernel.org, linux-kernel@vger.kernel.org Subject: Re: [Part2 PATCH v6 32/38] KVM: SVM: Add support for SEV DEBUG_DECRYPT command To: Borislav Petkov References: <20171020023413.122280-1-brijesh.singh@amd.com> <20171020023413.122280-33-brijesh.singh@amd.com> <20171027202518.GS12039@nazgul.tnic> <5e041a3f-823f-08ce-a653-a02b71e2cb6b@amd.com> <20171030151223.vdxb6oc3cttw74zm@pd.tnic> From: Brijesh Singh Message-ID: <2b5499db-7752-7919-5e12-25475fe6372f@amd.com> Date: Mon, 30 Oct 2017 11:33:54 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171030151223.vdxb6oc3cttw74zm@pd.tnic> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Language: en-US X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CY4PR1801CA0035.namprd18.prod.outlook.com (2603:10b6:910:74::48) To DM2PR12MB0154.namprd12.prod.outlook.com (2a01:111:e400:50ce::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 92a25b16-3d2b-4c26-6def-08d51fb403b1 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(4534020)(4602075)(2017052603199);SRVR:DM2PR12MB0154; X-Microsoft-Exchange-Diagnostics: 1;DM2PR12MB0154;3:+JEgYRDn8vmCd2lf8/l1kiUmkhTgQ+Vwwg/oXolAGad9XJls1AU5hrVMfbz8HsjpndDX50mJTnLGvDFzWmcqaDhNt9AHUo1sfTc/aK+pDxJ54qEim+eZm2196KzqVcfaf6QwiAi1VpMsvdszeLX/zFm3pcyKMhI5i+AYPwXiEiA10MH8lmD7R2Gqw6VE1UPeNOl6xYXE4lia508Uy0rkbxb+b0cC6NK07Dd7iK5sovUL/wNaEYjFTp1xjGD3c8p2;25:MEKwVBilPcflS4vyZM1wV8P/fplU+uvILTJdMMkJNUWrhGoS4Qv7FcOZITjrAkEResuYhWTk1+MCdZv0DXySW26Sfth9vTZYnYCCIDf6H0UFgOu7fZ0q1tFNXI7UNjUb0ghgIukS+jFJNS+725krQRbfVCEc54e+JwVhZoDy5Piq3rML50hj3adRqarDotr96XsnqjN2F6ShaaAFd9i2Evh9dst9oj8zW7hQdlFIei6OUiLwQwzCF5bdi+D/zNrqv9A8a1WI5KnkJLyBCgvL9/1xufJ1JcVaRYQ54CtSZf0rHalUE5LYm9UyOC3chRjmwLJ7lActtoPl5R0lQOTkaA==;31:Z9k+541EXaNwddat+YyvX4AiXuYtXo9Gx41bVWCs2YJo9KWhyVHZZSJd9mzuBFhb27TdeRqFC38nC0KGdn3x5t9RCIHPSVXTm2L/KgJvrVHZ+N9bhJVklADV0+wwm0thBcETb+bR63OYa9lD3KFvXR7wK8lAyYSgxVZYnW9DEtgE57AIYlbQpp+TJeuhwOXHscsULXxVlQZw+f1cAXHawKstwggqugWN9HDNYnIRVgs= X-MS-TrafficTypeDiagnostic: DM2PR12MB0154: X-Microsoft-Exchange-Diagnostics: 1;DM2PR12MB0154;20:kSLCOOVGp4I3egxip6Qkq7SszsxiF8SrR0Fxkc/uCoPplYkMc5kBMrBJZzhsIi+R7ROTn5iOkjraCV8ze6fsyxMyiGCDYWAJ98qeG5bu+nlPiUNTMTWh3DbQruLfc2eKK4FJi5RqQvYkPTult/PuR0vCwmuNljUFd5bbWp74cyOoHUn34O96rwpK5vD4DbKEroCZAmKGp1oNtJRW9Fw9qhddoZRIlQh3/+urA0+r9Z5GUDGt7YLQIyxW7YZjFnJteLG0hW32zlMihBG0WSeNYhg2mgw8/Ja1G8CTLz6e22b82Zo65aKShpnMkaaFWRmdRE9z2V1euSsQnyumito+au83gTD3FVIpBPt29C9/93N3Mfl1IfABTsbNGOY9h8FH+nv7G0e144yX7FXHN+E6GXB7dP5P4n6CsuPlMBachdPZah6JGBhVDbOyolYMba/WTB0x295H2jqPSmcFusQI9CGb+onji15f5kE7TAFoiQFDaYv01PbRMcwyIImqGlHC;4:1yYjByYGeGeAhnuQ+cMu4n79OwFEUSFJcyYMS0obdiDZ1iMrtMklOhE2dRMlHQ/KRnM+NTKYkP73b5NBdtM78sxfX9Fzo0p/BvENxZVohV9xaK5ggbTHlq7UEY/GYHhOA9piskIidxKNdG9Jp3/PY1Ohvg+b3EiMbTR6iWB0yPeKa5l9FQS08JWcAsJAJO1keozdr8pYzfSkIkV/zQwmVxQQ1okUQravV6739/+9SuNRR6bRelIGT7vgvKy0It5lAv0hs/dtea6rObVllsetXg== X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3002001)(3231020)(6055026)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123555025)(20161123558100)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DM2PR12MB0154;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DM2PR12MB0154; X-Forefront-PRVS: 0476D4AB88 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(39860400002)(376002)(346002)(189002)(199003)(24454002)(31686004)(93886005)(105586002)(106356001)(65806001)(65956001)(53416004)(5660300001)(97736004)(25786009)(65826007)(478600001)(33646002)(6486002)(4326008)(305945005)(66066001)(6116002)(23676003)(3846002)(6916009)(316002)(86362001)(7736002)(7416002)(229853002)(2950100002)(76176999)(54356999)(53546010)(58126008)(83506002)(189998001)(50986999)(31696002)(16526018)(50466002)(53936002)(54906003)(36756003)(2906002)(6246003)(47776003)(2870700001)(68736007)(81166006)(8936002)(8676002)(101416001)(64126003)(81156014);DIR:OUT;SFP:1101;SCL:1;SRVR:DM2PR12MB0154;H:wsp101151wss.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTJQUjEyTUIwMTU0OzIzOkN4dHFlWDFOZ09WeHduZ3ByQkdJVlFyU2RG?= =?utf-8?B?aUp5bjYzZ1g5bldhdXo2bnNWVVZIZjd3RGlRa1JNR3hGL1dTMjlKNFpqdU16?= =?utf-8?B?U3N1MkhLMWJXRzlBMjZvLzBNN3VaUFhaNksxN1ZybGJ1UDFNRVNtcnJiLy8r?= =?utf-8?B?TmUrWUZiV2RqUTZOZ2lHcWFjbXpZNnFTbWl6aTZycmVTZVJJdW1qbkdVY0ps?= =?utf-8?B?aU5ncG5nNUtXSWdPeERCbkRtMTNnTFVPd1pSSTlBMnByYUhvYWVwVVR1eGVC?= =?utf-8?B?NzB0c2duc3h5SXF6MmM4UXBnQVZhMzZxaHpPbXdITEtzT1NPWkJTazh1VDhL?= =?utf-8?B?eStCbFpBTlJQazFYZFh1eFpta1Y1eVhyZHFhZlFHVVBQNXVNb0Y5eGZwVWlu?= =?utf-8?B?UjJlTTNJcGxmVHZNWmpsdmd1dTdzTkhuRFNHNVZ4NE51UlpzZTVraXNDeDVh?= =?utf-8?B?UFhUNjQyN3h0aW03TjJTT3Erb29SNDc4NEE4Y3NTS1hUUDdlRThKNmZaMUlY?= =?utf-8?B?a0R2SmcraGVjSjdaWEhwWUFjZ0hSMFFrRi9acHpLcm1EbDh4NnhRU0t4M25W?= =?utf-8?B?a2NUM3FGK1pDUXhTRndDdWNpTmNRQS9yUkZFbjg1MjZZM1l5VVNLOWRFMStw?= =?utf-8?B?UzBHTzFjMmdZUHdNMlVTMG51c0tnS1hMaG1panJvcEFvT3IvMW14UmMzaVow?= =?utf-8?B?b0RoamEvcXMxMXh0Q3ErZVVsM1NHSWpQRWdUU3BBKzRFWk1KUkVkY3R4cUZB?= =?utf-8?B?T09qZmRTVkd1MGVyL1lUSDdFMm5tdjZRVjUydEh4czM0d29xMFVoNEEyVUdr?= =?utf-8?B?Qlh1SUVBL1AxUktZOEU1RlVvb1lhV3k4TEZ3c3YvVTViNElUcFV2M2dZSG5E?= =?utf-8?B?Q2xXcGxjUmpSSGk4eEQ4cnZOQ3dHY3pEK0s0TU9KNlVxZU5ONU00K2FWSjh6?= =?utf-8?B?MC81ZjQrVzFGODhlYnRSQTJwaDhmMXF2Zjd4N01JcnVzMktDcVJyeGVwQW1B?= =?utf-8?B?M2VyRGZycmZURktYam5KSFdHWFJkSURjWTFwaWl4cTZDY3lnVnVNNjlLTzNi?= =?utf-8?B?SEJ3NGpxclRab2wxUklYMTRIRHBpR2pqdzU4NWFGbW5ONzhkT0xKS0VHcUZ1?= =?utf-8?B?ZFIvTngrSjZ1bkUwUmZvY1pQUVhHY21jQzd5MmptNFIzMFZkU0lYWHcyUzVr?= =?utf-8?B?bENMQUJmaTB0dW02K05FVnVnV01xelA4dDF4WDlHRUxJelIzeHk3eGlFMXVB?= =?utf-8?B?Uk42SU1zYUI4NzE4R1AvQ0JxVzh5NmhrUS9IT0hYM1YrVVV1VExDS3VSNEVZ?= =?utf-8?B?Rk52MGkyUzd1Ky9WVTFGOUJDOUYwV3FhUEtPQlhaQXdXWmF6aUZpWE5tYzJn?= =?utf-8?B?RnVaRnpPeG9JYklGSVNnaFowTG9HeVl5SkFTQmdwTFlpN0FobjZxdW9UVW5K?= =?utf-8?B?NEVidnZ3YXNoK3ppLzFEVXJKZnRYTHRLODlxSFlBNEw3SGJYQmFQY1NjKzlC?= =?utf-8?B?U1JSREFOemx3UklSNTlhU0Ywd0ZxM2xtOFJyVmQ1VkttV1JyUzNZNGZYbFBV?= =?utf-8?B?dGlkLzlJdHl1TEtCM0o4d1E5aUlRazI5Rys1dk5UYmNEMUtHNUZNamkwdWsv?= =?utf-8?B?ZWZsOTdHOW1wY3NFVWRRTVJORnMrMHBUT3VDWXFNQUlYRENFYndrVkFCTlVk?= =?utf-8?B?c0NodDZTRmpjeFUvelhMOU1pT2Yrbkx3a2l1ZStUNTlJaEk1blM4TmlwdTZT?= =?utf-8?B?dS84Qml3VFJSMHp3citrNG41bkUwQk1od0lWQTFGRjIvSFBYSHNtNVF0Vis0?= =?utf-8?B?djJ1STBiS1AzN0hUSzJXeml1K3k4V1Jxa1VIcWRmaEx1Snc9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR12MB0154;6:0DeyxAqxJcR1Cm6WIWNVxN3nM/eEpFBA1pFOKFqg1R3Ge3r/VE7OxaX5cwfNomOKnFuv5CTFXfoRqvAIm4ftZCel3A3+fvg4YXPZbGjw7AxgUtIgIQ8n7M7smDtg51bvFPAld9vRMG80q9QZIiL+NAO/dXBE5ds5niwSV5LR5o6uCN9pp/YSBlY2lOI6QF/UAu1dDIMq9LqrEPqlyh1DAvAG2cB+45Xudkbb3J1f9LGNWk2iV27O2IRmm396DwFbnSlweDIlWMtRJavE0dEyeIU1qlzW9LNCx6C7ban5GLTFaWQH3rUXO3ErfX0AkTcRKNBHDXAKpMm/N/eHU2DMkanwCY3h2adyoU7UU0d8ECw=;5:zEzdfLF1BXZfDbOwoHEbjhwJzpa8WadlH8yKDxtYsCBdSHb3BVt/E9e/QGlxUKfd4W2E/gp3PhyPYGmHyAuAAa4XuRg8+TrtKgvWBO2afCWdxuXaaMRth/mzUHeI9FflLAFeB3DWsB9GUh4xR+9dVphEAfKx80wHxGs8D2ullPA=;24:WO4yNZzKbPhhggT3N0hSP4PqeE00lloy/vRR8y+976jaAPrn2nZ4Pc5lUFmYLuP00oIkaeeFxGZLgdxCXBHdmKdHk9f3Dzl4TYREVrGrdhU=;7:9zht8BdPnClyjAb4xEnf2etR23wtunedA+dsPupNVtjpd59GJmXRQfeb2MByG6rwVjdLBz5lyV0agKuKZ2FcN/oUC71EfFbgUXcTPjeft50zW5OTxKFUaU0BqJHTu0bWiimFkXiP74HKyh0y1dcQCCLUZ55HilJudGqUTnd6VaJap29hjQB8Ml1bVJjJunRCeWpAQI7vs6aVqz1CaFajUzyDL10gTHVjKb/3gtFJh/mFOOdrdm1uDnAvOAjoRl6N SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM2PR12MB0154;20:BWVBgSSzBOdAGCg5r9I1WrDZYfZBbo3cEZmsqvx9cwrZmgDgUIQRYBiNsb6Aj9A3LkNj+JfYW6qh0Kf0J7KYNElnewpN6LP91y2RzRE0+5vvn+M1utifipon5erP6c08pq1bgbKsJVDXI9gR4lfjzlVb791/TgzXS3lE5FSo81IilmaOlqWusOZbPRqcPrbi1ghSN/RSR2MLHzyBb6hPFmIwKPb+D1Y2cFO8jip+CousBelAZnfalymGY8PvoUDu X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2017 16:33:54.7765 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 92a25b16-3d2b-4c26-6def-08d51fb403b1 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0154 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/30/17 10:12 AM, Borislav Petkov wrote: ... > Lemme see: > > sev_dbg_crypt() does > > ret = __sev_dbg_decrypt(kvm, > __sme_page_pa(src_p[0]) + s_off, > dst_vaddr, 0, > __sme_page_pa(dst_p[0]) + d_off, > len, &argp->error); > > and that 4th argument is 0. IINM, that's dst_kaddr and you're doing > > memcpy((void *)dst_kaddr, page_address(tpage) + offset, size); > ^^^^^^^^^^^^^^^^ The 3rd argument 'dst_uaddr' should always contain a valid value and 4th argument should not be used. The else statement should not be used during DBG_DECRYPT command.                  /*                   * If destination buffer is a userspace buffer then use                   * copy_to_user otherwise memcpy.                   */                  if (dst_uaddr) {                          if (copy_to_user((void __user *)(uintptr_t)dst_uaddr,                                           page_address(tpage) + offset, size))                                  ret = -EFAULT;                  } else {                          memcpy((void *)dst_kaddr, page_address(tpage) + offset, size);                  } Here is sequence sev_dbg_crypt() does:       dst_vaddr = params.dst_uaddr;       .......       for(...) {             dst_p = sev_pin_memory(..., dst_vaddr ...)             if (!dst_p) {                     return -EFAULT;              }             ret = __sev_dbg_decrypt(kvm, __sme_page_pa(src_p[0]) + s_off, dst_vaddr, 0, __sme_page_pa(dst_p[0]) + d_off, len, &argp->error); .... The 3rd argument will be zero when we are handling the  DBG_ENCRYPT  with length not aligned to 16-byte boundary.  In that case we allocate a intermediate buffer (dst_kaddr). I will try with gcc7 and  look into restructure code to fix the compiler warning.