From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755027AbeAOJ1m (ORCPT + 1 other); Mon, 15 Jan 2018 04:27:42 -0500 Received: from mail-eopbgr60045.outbound.protection.outlook.com ([40.107.6.45]:38064 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752073AbeAOJ1k (ORCPT ); Mon, 15 Jan 2018 04:27:40 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; From: Peng Fan To: jens.wiklander@linaro.org Cc: linux-kernel@vger.kernel.org, linux-imx@nxp.com, van.freenix@gmail.com, Peng Fan Subject: [PATCH] tee: correct max value for id allocation Date: Mon, 15 Jan 2018 17:27:35 +0800 Message-Id: <20180115092735.20969-1-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR02CA0138.apcprd02.prod.outlook.com (2603:1096:202:16::22) To AM5PR04MB3220.eurprd04.prod.outlook.com (2603:10a6:206:7::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: a5168c09-c80d-44fe-f5b8-08d55bfa3719 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020);SRVR:AM5PR04MB3220; X-Microsoft-Exchange-Diagnostics: 1;AM5PR04MB3220;3:DWVVtQxgoqX95y0rnLfQihhgWzAKUwHwt/uHRgZRphG8HzsIJGIbRqSnBgiLzn72SmljlCsb17IdLHYJgHvGntNcDZ5X7IvHz1oHxYlTxAE+/PgQmZqzyMVj9X2xlUaCDwfJ7C4umx63Fph+H+Qg3u31rZgpx+FHTaOYxlKeSsyqf8KTRGJJmYjWWTL4ZH84ZXyHNQ/zyf53aHtKPngznWg7g6Xeckeg8VCRUyhYvUZrvYAtnPs3z8GwbRS7B2iK;25:sTgvjovTQukFjofjN/GuD/XQ6zU9VomWNjUn5FafJg6Zr2Gxl0wPm5esUE4nHGRdChUsEqPVjGJbFnXu12QUzvE/q8jlWbMuFvHxGsf1Bd4ouqRr/hf4cPks6JnHTStZFt9Mmijse5Iyz25nGb7sfN+i4oCQoH6iPeBXSO4ahZT8HxSa8+H7AKKx/LPfYKqy5KyKUOosYY42rIYLNu0/oFm7ypdCj5P7w6ikn5yMtTddC0jz8/imX9V+05A/7PbsqnyEPTUHmmX4kJ/Htt8MhDJlpahJ1f0g39WgdjXtesI/1qX4d6uHj6TixhkRYdmfRS23JXs1CiiT1NItR3nJ+A==;31:Pbww7eqbFVDRWHhJSb4an20mRQHnPXrok3MoGSd8RNFa7IaTZeECYd+/33bzFPiajVt0cQXHLtvdecMJcnOf/nrKKNIZYD15D5BQT72RVAePPsEslE2H33akgz1+oEIAaEBczwJEhGbMuP/v9yyFiQNHKiGZHLnz0r89Jy5wr74aQqlwT7VsEfvUAur+/QXTgWScy60uJNk9TZlJNKTaIBUnhDL3VbQ5Os0sNwfmE6U= X-MS-TrafficTypeDiagnostic: AM5PR04MB3220: X-Microsoft-Exchange-Diagnostics: 1;AM5PR04MB3220;20:0F/5NzCw/R+D2qvScejWbugPkH3uWL+b+4bI8CBAt5jqhAQGkcnANZgDaPTN/kwRBhUSNGaPkLQFz/QruerBRLlQu87RnFcJg5E1sKcaKapW47ksfAWKkCEKwjl9k2cL7ijBb4gyvvCumbB+AIN4dcuOSqfFW41RZkYCniIldktE3aq6TX0+7VWepkay3HQFm+n9iUoSPRlcqXvPnp7NsZc9lPO6NRXiXvYDJpgkUTF7qKt93ZDLIlHUS7r30UytTiGZ3t1b6hPnH7KyaY2g4J6d6jNEI9b9QFaVIvGyxcJgvQ0+jOAMXGQTi8d45qqjw7wZtfIox/sGuIlkTK2hVh1OJi4Rafvpbx0sTvXLr2wv6AUv2PpIXEcyFi1Ouw/y0f7Fsrp2aiwg+7U7ISzKP7O+Z/sTlsFfE0iv5S5gpXScT3cYVA7yodRlAaNhqAJm9Q65PDluywAPk5ak9R6pybWmBf19rg6YSxRS1v9KOdGUIHrxPgGwzYsC+w/ABCO/;4:uP+3fqBuYlywAkuIidsJJOQrfdpv3lzQ7nzuaJGcXQAmiPzG/SEgn1NwXLFRcu7FgAWau4k7Z6NiCWz4W0AyK/Kc/DlpBVt84lcXGaF0w4VothVM4uzcrjQ+lniCcF+MpZpmDcJCEaGmP4+AyQOM7GkcScmp7BBvIr+/Z+9Y9MX3vDBrU8g+++SPvk788JUtJGCCylTDwOJBspsZM5GjRjl/FsuiihprbMT18P18eB5HvfliFRZFuoMB0sEVbUXFE3kU6fR97OHMFomwZlRQjzz07risMg5lDYzLLXLf4W0inDl7N877FxesiI0j4Ctb X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040470)(2401047)(8121501046)(5005006)(10201501046)(3231023)(944501161)(3002001)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011);SRVR:AM5PR04MB3220;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:AM5PR04MB3220; X-Forefront-PRVS: 0553CBB77A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(39860400002)(39380400002)(346002)(396003)(376002)(366004)(199004)(189003)(106356001)(6116002)(3846002)(6486002)(478600001)(1076002)(6512007)(5660300001)(53936002)(47776003)(50466002)(86362001)(2906002)(2351001)(39060400002)(6916009)(66066001)(4326008)(105586002)(16526018)(2361001)(25786009)(8936002)(8676002)(81156014)(51416003)(52116002)(316002)(50226002)(7736002)(68736007)(16586007)(97736004)(48376002)(305945005)(59450400001)(6506007)(386003)(36756003)(81166006);DIR:OUT;SFP:1101;SCL:1;SRVR:AM5PR04MB3220;H:linux-u7w5.ap.freescale.net.net;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM5PR04MB3220;23:u4UILN0J9ZcJDnxmzCnOniztvMv33nLHdg+NtDcJz?= =?us-ascii?Q?GVlT/ldJNBszdy1z61i+CEWq0AClkMLVLVn2F8DLMmLsxYf1Gc3sXE+WKI6b?= =?us-ascii?Q?wQ85Fx2uth4rUJCZxADbsz+Ukf9CQJEPxyLC9rLs90CvgFm5hZwf9jIl7OhA?= =?us-ascii?Q?n7ECaYe0IAaXbkSIeMqNvQwyzS5FYaSoEQUYKa5KvFOBWcs8qZhwmFwxYEXn?= =?us-ascii?Q?mpVvZDIm8popMIDHTSTkAqUnK3C1Tv9coHF0mhY3jGRM8kArepbkyJrIbr7+?= =?us-ascii?Q?75BlD2Mz2W50K5/LN+4Fk1059WCu7vmdgF9fMz1fcMRLFlYG+kVZzeWRe/tg?= =?us-ascii?Q?1O9FwowDzSyI+mVz8LoZTcVdZfNj8glX0yHb/zdw9SXQbdWJV4OK8zDEdt2A?= =?us-ascii?Q?OLMdHP1ZjK+Ee3q/JqtxWBnRtrw5/94I9OBl2irz/hi9tX0uiD/tHGjJml3E?= =?us-ascii?Q?MQKb/cqeqoedbqd1OTlyiEgdXGtYWy9re6VpfYlq2Mq2BgctmAoy4LDA/R49?= =?us-ascii?Q?fVAn/76d/zeHCfWU+NhUYHdkmOTQwEUaBtzskJ8THHuvfpMeezIGejxH4zWl?= =?us-ascii?Q?BrVZT6MFBT0Q3msYst3qENABJwepL4nf57rR7Aq1v6BV8uyoE3YrWmCk6Zdf?= =?us-ascii?Q?IvWS1qbSv6xFLTX5HKjSahm/1MrIseu9jSrf/Ao43aE0LM7MXsGK0MrpzS9a?= =?us-ascii?Q?E8tY6F+ZSOBLRjXxVUKCH3VEJawfRShReI/q7Vb+N2y0BFqh2MrCvStDiC/Y?= =?us-ascii?Q?NOx447ADfxS1HMWsWVuTA3GVbckoskw65xcpZTRLgBaHYjUPVSqqPlB7qy/4?= =?us-ascii?Q?P7wCcwRgz1vgVMfPsTmRyJM3b6yjczfgPyjYsftR87AAIQVQnd6lXaJw5BqR?= =?us-ascii?Q?PdALy+Usy3hW7JSvBLhhcl+kNRN5QJz+48AbIh9A4h7UVNb2vJNavTlqkBTl?= =?us-ascii?Q?QgrEcr0tvka7k3aeSRT6mxe8OAOxUx1ellRZwRwkp9sp0ad3AU67qEVd/Sss?= =?us-ascii?Q?Y+1R8ko70gRRsSqH14fwrCUMrbaCcD6JwN0QbVDfEu8rCCeGb0DyuH+XG1Uz?= =?us-ascii?Q?jeYNMa/39ZwNJwVxAt5stkUJXfqJSO7Mt2PuG8C1FfG0UEJaigzxgHAo9Wrb?= =?us-ascii?Q?+TVN9LQdok=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR04MB3220;6:gnUEKX6GVJUXxXuIYv9q5H8o4dCW2WxHsUShWeGm74v3WvPquhTf/wpO1z3ot7jkdfSZCdIFRWaHrrR3IGYkWLIEPauRYM+MQ62ufr+9lLrEBMXMTbupMmyNjhkKD3hEZkZA1+tR/4G/jSIkF1gXQPTDAgzoEmTc203zxLuzlwaB6UrWhntxK4OSJFeOtgD7Y1l+LhDnwYsWiJmyYg5BPA3XnPL/WlhF7umXwcIWGUocQEg/OPBeqbCjY3N7zmbV44LQCJKpl5I0Jh0FwqZ+3X+tnSoqERox0sYVh3axhO7+aCksZk+wGLecX6FLsSAMR7nyAIYS/f4eQJty28wbLjL52jZsV2GnB3s+GAnUGzE=;5:2t6mX0F9MDGpm8lCnMtM37KAxnAG9SwfckyyqYDi6i2BM3xHzIUasoiLBBUvfASV4MLhi4yRsnHY73ZUrdNgPxxOAqGX+ryptemniI6VYNSoSiBrzVY5KTHQP/7wD9H1FkKfe1Qd/+m/4O4S0veUS81FQSzF9G4VetgYIaz7wAY=;24:C+FqKR72UE1dFYW3t0R1p8KoH9MPH62L8tT9wl1+Hb58CiAi6mEtc5S/vqVSHwXCuUWd9aKVqLzmriBU8VdrkUGiraKcC7inyERGPZxbkUk=;7:CzfrR/Pi1jO1Smtq2iNwvB6oofS0ZdhnexJfbwg0cInQrRpXU0HctYe04CJFMrS5CjKFuqOELjksPkZ6SEls9W9XaAaOVETg8Ht0J0V5GGC7LMbO4vgzaJcJ662q7BX68DRim6tx3xUbiZTCgefjOppDh/NL5XZLcpZ0REeXMBEcMnbE0h59sMaFKxV9V/mnt/nhSMiv5tEffKuASjMwXfNuo7/iv57fJFfFxUPzI8Krotj5QeDoz/++K++PtIM8 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2018 09:27:34.4380 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a5168c09-c80d-44fe-f5b8-08d55bfa3719 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR04MB3220 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: The privileged dev id range is [TEE_NUM_DEVICES / 2, TEE_NUM_DEVICES). The non-privileged dev id range is [0, TEE_NUM_DEVICES / 2). So when finding a slot for them, need to use different max value. Signed-off-by: Peng Fan Cc: Jens Wiklander --- drivers/tee/tee_core.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/tee/tee_core.c b/drivers/tee/tee_core.c index 3d49ac2e3c84..d1f4ecdbc8cc 100644 --- a/drivers/tee/tee_core.c +++ b/drivers/tee/tee_core.c @@ -701,7 +701,7 @@ struct tee_device *tee_device_alloc(const struct tee_desc *teedesc, { struct tee_device *teedev; void *ret; - int rc; + int rc, max_id; int offs = 0; if (!teedesc || !teedesc->name || !teedesc->ops || @@ -715,16 +715,20 @@ struct tee_device *tee_device_alloc(const struct tee_desc *teedesc, goto err; } - if (teedesc->flags & TEE_DESC_PRIVILEGED) + max_id = TEE_NUM_DEVICES / 2; + + if (teedesc->flags & TEE_DESC_PRIVILEGED) { offs = TEE_NUM_DEVICES / 2; + max_id = TEE_NUM_DEVICES; + } spin_lock(&driver_lock); - teedev->id = find_next_zero_bit(dev_mask, TEE_NUM_DEVICES, offs); - if (teedev->id < TEE_NUM_DEVICES) + teedev->id = find_next_zero_bit(dev_mask, max_id, offs); + if (teedev->id < max_id) set_bit(teedev->id, dev_mask); spin_unlock(&driver_lock); - if (teedev->id >= TEE_NUM_DEVICES) { + if (teedev->id >= max_id) { ret = ERR_PTR(-ENOMEM); goto err; } -- 2.14.1