From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751980AbdI2KRM (ORCPT ); Fri, 29 Sep 2017 06:17:12 -0400 Received: from mail-eopbgr00060.outbound.protection.outlook.com ([40.107.0.60]:16087 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750996AbdI2KRK (ORCPT ); Fri, 29 Sep 2017 06:17:10 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Volodymyr_Babchuk@epam.com; Subject: Re: [PATCH v1 04/14] tee: shm: add page accessor functions To: Yury Norov Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, tee-dev@lists.linaro.org, Jens Wiklander , Volodymyr Babchuk References: <1506621851-6929-1-git-send-email-volodymyr_babchuk@epam.com> <1506621851-6929-5-git-send-email-volodymyr_babchuk@epam.com> <20170928221446.s4qdrzfaurzus76d@yury-thinkpad> From: Volodymyr Babchuk Message-ID: <856145cd-2edb-d692-4459-9a1b0c57ce80@epam.com> Date: Fri, 29 Sep 2017 13:17:03 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: <20170928221446.s4qdrzfaurzus76d@yury-thinkpad> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [85.223.209.59] X-ClientProxiedBy: VI1P189CA0018.EURP189.PROD.OUTLOOK.COM (2603:10a6:802:2a::31) To AM4PR0301MB2129.eurprd03.prod.outlook.com (2603:10a6:200:4d::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9b4fbc29-c853-4f7f-a333-08d507233d74 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:AM4PR0301MB2129; X-Microsoft-Exchange-Diagnostics: 1;AM4PR0301MB2129;3:Uf7OtXxGl0465UzkJkAcwRehpfakmTyFr3/6Cag0+ACHWnNNzUOAVcF5vu5ZCgFh9f+Rwobk7r6xlDTxjB9bqJhHh11MUsEc/swqVQBdxyV/8nhqw9o/AaF8OjDw4hCPOmQQfVOvmdTUf/IFlitf69HX/I7SVWMaGZdnIr3IXlPhZONmVMnOBdKnvoT9BltUq6qQyilGZZF0IAadhIRofCjxMfXpbK8XQmRdCHNSO7H/znnETEui447Bn8UN3SeM;25:8iGsqj0ehlHLy6gsMkAonQdVj2J1ZtoLmdRpakQERnk2QH1b8UvvHZ5et8wluLvRP0EiQRpef8sZD0DXe544rALtI27uzYVDbPY2KZcPPVPfuSRoLt44ka8m2wfiW7nEUXl0NgHqzDT9BylRT+JUx8x+g+Std8NEUytStw3qDqetZwsmRsnGSHOQ4Hf0Lip8jxG2OVQmdRdj3EMjkcmP2tFWGIYIJR3Vj1s7k2s9TkT0MglFiPI0LJoj/swmEqvDx9eKomYNLzyGiZQXQgIotkHw7ciO93LhxybtgDALv0gHfMZZ7P4V31ZN9Gx/IH0TlznnSIag6SUF/N1zu7kRig==;31:mP9Ufam+tgL3bQPKLML6tDtO7/l2VIc21CZxv80V/HZaAdi5OvG9pCv/3T61fR+DEob6GerapzEL3CFLfXl2Nv+M+pVZireEcxkZ3868wtCFJLgu+hgYqDLvisNf39TQeWWsYjtKqMLkc9mGF/Wovxf3uwph87CfO/Iz7UzFrpRzamiJbNkYDYOr6z6AugJGjcgv2t+VYoyX9ON8fxXsgCLaYv2Sp6jMn8rcgWCJjuk= X-MS-TrafficTypeDiagnostic: AM4PR0301MB2129: X-Microsoft-Exchange-Diagnostics: 1;AM4PR0301MB2129;20:gLd0xVwkwjbvtdjD51+AEKzty00xRWasqaGN/oI8vHJw7343hvbG1fj61Vtd+fE2uJrWCf5W486Ux9osVrh2PbmMRZ1pW/I1nqpIOHmtY3EREIUHV2fub6Xn883VmzEMj/d7quV5kr/+KX32qM/ijlCuK86+QUc+WcniYOudG5F3MCZY40Ps4MPvfjPTiOkGHeB2yPmNbT3IaP16bC9k8/2AihuUaBHN4EVDs6AUppQstsD0niLKMrZJEn92IsNnUelgbehQ04+BiydHl+m/cZdrdz+4fzKOPfb6lxKKxyV76euzPCOsD/w4uuc3D8N/5dWAJt2qsZlb0SBJi2MwPtuqLv8EHu8Um6eXg+CDGzN9eNApbBAfhEVJix575LpoE5qXBG6yovJOoVcNFOWauHkUNFfgeBcuBRqOaEXoCnkm4pPo2CIBTkIf6EEsIdZu9eTgrWIySfqoEmlhQnlRUdQi8ooEICwH5Jn8MpELvQV3da2GSjt22LxGa9HMMAF5;4:VdFvV4ekvjewxO+fOZMz3Cf8LOzNLDKgy72oexh8h/cGMcb4+gm0Ql4aGp7vNSzYJy0e11Hf7lH19YZn71oXA+Tf6FPD/riYcNv9k+YC5CQz3LiBzNbI5q3BJ0lp0OVl6mi8zGv2pMeZfbVHpmcBeKOwGYAcWg/qXygk7dF1/1IkTR7jbO0csRr4aKxq9MHJwub9MBBwjVCSQBfO/tuwe2+YRANS/9WeHJdKhvOJWnJIz1fgCSUiGrfXeXSny282 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)(10201501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(6041248)(20161123562025)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:AM4PR0301MB2129;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:AM4PR0301MB2129; X-Forefront-PRVS: 0445A82F82 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(6009001)(376002)(346002)(199003)(189002)(24454002)(31696002)(66066001)(64126003)(6486002)(101416001)(229853002)(189998001)(47776003)(230700001)(36756003)(65956001)(6916009)(65806001)(2950100002)(6666003)(6116002)(68736007)(39060400002)(23676002)(31686004)(33646002)(53546010)(3846002)(106356001)(77096006)(6246003)(105586002)(305945005)(345774005)(7736002)(65826007)(53936002)(83506001)(81156014)(5660300001)(4326008)(8676002)(8936002)(97736004)(81166006)(2906002)(50466002)(25786009)(478600001)(54356999)(54906003)(72206003)(50986999)(58126008)(86362001)(316002)(80792005)(76176999)(16576012);DIR:OUT;SFP:1101;SCL:1;SRVR:AM4PR0301MB2129;H:[10.17.182.79];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTRQUjAzMDFNQjIxMjk7MjM6QmFyemIwdGZCSjlCOHpkQ2g3aElXZ3VT?= =?utf-8?B?RkJPZjNxSnAwRFQwVHQ3WVppRmVRaVBKczZ4NkovQzVNdkVick5qY1FENklX?= =?utf-8?B?dE9IQkJ2clhuR0FNVEdVUVBaTGhMMGh5OE9zV3lOOHRoSzM0QllOYW04RjZ1?= =?utf-8?B?SEFiaVpkKzA0dzJ4eUd2emx4QmFqdUlmalM5VHY0WDVZNk5ycWRhZTdBdjh3?= =?utf-8?B?eHVPUnZ3UkVoWHhidGQvZjYwTDhzdDdRNHNmZFczZitQM1ZrZWFFaE5vNHBh?= =?utf-8?B?NGlCRUZTblY3SXQxRDQ1ZUdJMjdHS3VLeHRzNzVML1FNOUNGODBRdW1sQkZu?= =?utf-8?B?R3Z1UmJubDUvT1JHTktiYjBTYXEwUDkxTVAwK2g5c2k2RFlCa0pQM21yK1dm?= =?utf-8?B?aFlmU0xLaHN4eWFtSXlUdEhjcDlEcXpabXhYV3lVZC96b2VMd1pweVlrMHdl?= =?utf-8?B?TDl1NjZRb0ZpODBNUlI2YXV2VG91RGlvcSs3WENSc0VRWWJ1OE5rVmNSdG5t?= =?utf-8?B?YzRxNndkSllQcER4OUU3Z0Z5eHVDNDd0b3NxZTkxaHd1cmJac2RUU2VXc09r?= =?utf-8?B?amQxWGJ1dTJGTlpWWXBjekhxRHdBY0E4dlRNOGNlSFJnRllOYWNnSVlvS3pW?= =?utf-8?B?bUUwQm9yV0VZYkw5L3dFOCtTZGsramxIV3VjZmNmbEZFeGZWbXFNajUyQndO?= =?utf-8?B?MjBiY2FUVEkyZlVvdFZjNEVudFhnbG0vZjB0Mldtak4vZXNYMW9zS0VZRmpa?= =?utf-8?B?dk5qRU9OWEdXeTkrNzNvaUpsRFR1bXJiWDRMd2RwT1J2Tnd0ZnFOT09ITnpM?= =?utf-8?B?NHdkT2NxdTR5V1ViWGJIOW8wWm5VMXhrazQyMkxhcVM3VXhaRjRlUGFqMVEy?= =?utf-8?B?dHFHVXpwZnRSbmtCVjVObkVWcVI3SDEzdDhHR3FnNHFUMTFjY3pMdFdWdmFI?= =?utf-8?B?Zk14cFBmOWVRTkYvdWpyTTkvZHdhL0pqU2UwZ3FxaWFhREk4NTNGVzdkUHB0?= =?utf-8?B?bmFqWm1hV2FXcTR6ZzNWa2ZrTnluNHVjbVpSRmpOWXM0Yk04Y29aOWVFc25S?= =?utf-8?B?TEY3WFJEZU9HcTRXaHRSd0NtQ3h6MmNJSTJjUmlvOU1qNXpPaS9qYTZuUmhP?= =?utf-8?B?Rys4WmVYTDhqdCt4Y2FOSXJpWE9kV3VtQUI3THJPelZPSEwvLzNCYzVmTWxS?= =?utf-8?B?UTFLM0tyNkR5L3J0ODFqcEJpOCtnM1Y4Zzc5MEI0eUtwNVRKeU4wM1hJamdr?= =?utf-8?B?MDEzdUN1R2ZlWjZ6RVFkNFVKa1dPeExRY2QwVXVyWnN6Q1NWUUo5ZUFQanNr?= =?utf-8?B?dSs0TFY0WmpHTzdTQTlBTG9yVlAyaFExSXFacFdqWG14ZHcvOHBKNzdmdjA3?= =?utf-8?B?K0FkWUNUQlJZbzB0ZE9CbUNBdnhjN2dYQ2k4aUNPQ1ZTVERTUU1URWFFOWpw?= =?utf-8?B?ZzdLMTQ3dWdpcjZLdy8xVmZzbnJoNURKNjd2TC9FaFp4QTY5dXpjN1BSUXkr?= =?utf-8?B?Vkw0R29VVnRMSGIvZ29xVnNNbHdaVTFINENDUlhqb2ZNRk9XUzM0c0JFRTQr?= =?utf-8?B?KzlKc1BaSS9qZ0pvVmlyZGEwZmN5R3RhWXNYU0NvTEIxd1VIYkFVRzFzT0xz?= =?utf-8?B?TmdCdUIzSXJkYWpnekRvWjRMbmdna0toQUY5U1ZuTVhpcGlpSktWYU0ycjF4?= =?utf-8?B?d0VvWE5ZZC9lRWhaS0Vhc2h3aVVsTE9oSVdHK2dtQmdBR0o2TTMwYURXVWtu?= =?utf-8?B?WXBYcDZuVW1qZEo3Tno2ZFhQK00xdit2MVlRdEIvOWtiMWJWUklNU21hSGht?= =?utf-8?B?VllLWFlpejBsR0k2bWRsZE5NVzV6QS9wajVYL0UrWHplMnIvK2M4WkwrMmxa?= =?utf-8?Q?CDQYfvTCeCEt/3EXn3xLWw3lqecq+dq75u?= X-Microsoft-Exchange-Diagnostics: 1;AM4PR0301MB2129;6:Ddyp0YEVBOVpLJ3R9rS/xDFZgM9UkxHUxm5X/nAaRgf5SmCpYCFxFPMvxOlP0e04qWkP6E0yTdkukessgXYtiI9PF3B88j80GSsxuEngPPeuRwq9lwnIGjTQW6nmx2224NW2uCmWpKsFvLHwXga8PCXsd6hDdhjPTCc+x1WJ4jDb6+SKbMW3V7XWwYqAkGm/KYG4gWxXmOSGoJgrMIfVmyaYOyvJkqXGzOMGFqlObBpfpslBXXcK7qfG57iz1okz4vm3/KGRce64W83prH+uwbV9qKu0OqFcNgIMlLuZ7WTPSCVDkZk+utBn/VeKThxashk7K8BxdQkU17Xs3dgsyQ==;5:Na7Dq0S052wzw6f9BVYQseO0pPC8zuO5ah3sJzZc16r9yKcVWjFRlWd+afUyS1OBOwUuYsT8LZpOdT0GFY0NKMpWWWZqGHFe6gwQomyjcKs2a2RmAcxHNS0Tw0Db+OLgGHuLyX/fglONonF0OAUI5g==;24:9wZwnO2ogxQSbxJ+tyaBNL2ZhPkOBvJqsJBoIFZe/qD1N9R9jRoxi8TueQKHGnOGeZsvUWIvGJNwqMoVT158FfLj00CojuF01SphBMxkLeg=;7:SuZ5vmOn2Vk2xoFjjxn4y92QnyOiOuAunA7wy8ztzHUA0yuF6Vgemgu8SzEZhZkXynokejpISMYOYlrsLFF5b4jLpMXUtF+zBIb7bUU4mnPvW1H9z/jkmQ/mrRakEWT0c7usSD2Iy4Io0MrAVxQSUzcWSdw3Gz/UF3Qf6SC6pfgvljHvDqpHXwhEFmnekfr453lVDP59IjHoajy8RiV4IJU4eNCucE8FgBKkmIrMfTE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2017 10:17:07.3784 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR0301MB2129 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Yury, On 29.09.17 01:14, Yury Norov wrote: > Hi Volodymyr, > > On Thu, Sep 28, 2017 at 09:04:01PM +0300, Volodymyr Babchuk wrote: >> From: Volodymyr Babchuk >> >> In order to register a shared buffer in TEE, we need accessor >> function that return list of pages for that buffer. >> >> Signed-off-by: Volodymyr Babchuk >> --- >> include/linux/tee_drv.h | 14 ++++++++++++++ >> 1 file changed, 14 insertions(+) >> >> diff --git a/include/linux/tee_drv.h b/include/linux/tee_drv.h >> index 6ba8b76..d773827 100644 >> --- a/include/linux/tee_drv.h >> +++ b/include/linux/tee_drv.h >> @@ -394,6 +394,20 @@ static inline size_t tee_shm_get_size(struct tee_shm *shm) >> } >> >> /** >> + * tee_shm_get_pages() - Get list of pages that hold shared buffer >> + * @shm: Shared memory handle >> + * @num_pages: Number of pages will be stored there >> + * @returns pointer to pages array >> + */ >> +static inline struct page **tee_shm_get_pages(struct tee_shm *shm, >> + size_t *num_pages) >> +{ >> + if (num_pages) >> + *num_pages = shm->num_pages; > > My concern is about this check > > The only use of the tee_shm_get_pages() I found is in patch #9: > + size_t page_num; > + > + pages = tee_shm_get_pages(shm, &page_num); > > So there's no any valid scenario where you should pass NULL to the > function. And I don't understand why you do this check. > > Even more, if in future there will be an occasion when function will > be passed with NULL, the error will become hidden by this code. Yes, I think you are right. I added that check in case someone want to get only pointer to pages. But this is semantically invalid. I'll remove that check. Thank you for review. From mboxrd@z Thu Jan 1 00:00:00 1970 From: volodymyr_babchuk@epam.com (Volodymyr Babchuk) Date: Fri, 29 Sep 2017 13:17:03 +0300 Subject: [PATCH v1 04/14] tee: shm: add page accessor functions In-Reply-To: <20170928221446.s4qdrzfaurzus76d@yury-thinkpad> References: <1506621851-6929-1-git-send-email-volodymyr_babchuk@epam.com> <1506621851-6929-5-git-send-email-volodymyr_babchuk@epam.com> <20170928221446.s4qdrzfaurzus76d@yury-thinkpad> Message-ID: <856145cd-2edb-d692-4459-9a1b0c57ce80@epam.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Yury, On 29.09.17 01:14, Yury Norov wrote: > Hi Volodymyr, > > On Thu, Sep 28, 2017 at 09:04:01PM +0300, Volodymyr Babchuk wrote: >> From: Volodymyr Babchuk >> >> In order to register a shared buffer in TEE, we need accessor >> function that return list of pages for that buffer. >> >> Signed-off-by: Volodymyr Babchuk >> --- >> include/linux/tee_drv.h | 14 ++++++++++++++ >> 1 file changed, 14 insertions(+) >> >> diff --git a/include/linux/tee_drv.h b/include/linux/tee_drv.h >> index 6ba8b76..d773827 100644 >> --- a/include/linux/tee_drv.h >> +++ b/include/linux/tee_drv.h >> @@ -394,6 +394,20 @@ static inline size_t tee_shm_get_size(struct tee_shm *shm) >> } >> >> /** >> + * tee_shm_get_pages() - Get list of pages that hold shared buffer >> + * @shm: Shared memory handle >> + * @num_pages: Number of pages will be stored there >> + * @returns pointer to pages array >> + */ >> +static inline struct page **tee_shm_get_pages(struct tee_shm *shm, >> + size_t *num_pages) >> +{ >> + if (num_pages) >> + *num_pages = shm->num_pages; > > My concern is about this check > > The only use of the tee_shm_get_pages() I found is in patch #9: > + size_t page_num; > + > + pages = tee_shm_get_pages(shm, &page_num); > > So there's no any valid scenario where you should pass NULL to the > function. And I don't understand why you do this check. > > Even more, if in future there will be an occasion when function will > be passed with NULL, the error will become hidden by this code. Yes, I think you are right. I added that check in case someone want to get only pointer to pages. But this is semantically invalid. I'll remove that check. Thank you for review.