From nobody Sat May 18 19:24:21 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=outlook.jp); dmarc=fail(p=none dis=none) header.from=outlook.jp ARC-Seal: i=2; a=rsa-sha256; t=1680196452; cv=pass; d=zohomail.com; s=zohoarc; b=SVT/hempUBQAdDW7iosS7+NRWHXRXSbqgGOd6z10fext8KN8pL/zTtM6rkwfwzdYIoCwzpfEX4/0dTAnwWgH4Ou96UPmSZFviSgbxMUXVIe+5hSj3Cp5Y+bm9LLRKxEyARWK+pVmP/0JbyV5UJCzQ+Awh9paH6Xo984jjb6MY8U= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1680196452; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=KcKSB818sAbhow/w7dlFfkvXqb/eBZCpRfXoKCQSzHY=; b=fyNW4GTyulM2XKxC7J43Uwks2Tucb4GzJKdr6uM6eE4UAaxC+BhSiwaqqkR+oIN5ep+Ng5NOuEqQ7J7gpo/5DuQcM+Sxb1l555a9QEed1XXqsJHGU/ANFOIPHDC15sSkuAokk/Y1PdqXsLzsTlbWvkLEi6I6lSxBe4IvyBixxPE= ARC-Authentication-Results: i=2; mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=outlook.jp); dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1680196452532985.7761573021886; Thu, 30 Mar 2023 10:14:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1phvqN-00043P-Aj; Thu, 30 Mar 2023 13:13:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1phvqH-000433-QO for qemu-devel@nongnu.org; Thu, 30 Mar 2023 13:13:42 -0400 Received: from mail-psaapc01acsn20806.outbound.protection.outlook.com ([2a01:111:f400:feae::806] helo=APC01-PSA-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1phvqF-0006hB-Vw for qemu-devel@nongnu.org; Thu, 30 Mar 2023 13:13:41 -0400 Received: from TYZPR06MB5418.apcprd06.prod.outlook.com (2603:1096:400:202::7) by TY0PR06MB5331.apcprd06.prod.outlook.com (2603:1096:400:214::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.33; Thu, 30 Mar 2023 17:13:34 +0000 Received: from TYZPR06MB5418.apcprd06.prod.outlook.com ([fe80::1c39:fb04:b3c2:5a26]) by TYZPR06MB5418.apcprd06.prod.outlook.com ([fe80::1c39:fb04:b3c2:5a26%2]) with mapi id 15.20.6222.034; Thu, 30 Mar 2023 17:13:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S++XMXjEEHBAmpFvwQyd0LMfSD3g/aAlcVU1CnTJTRj6kXJyD8oxbumyajojcHWjkU1aOzMKJj1Qi4908c64VU7aqzMBZWrQPeakCyhhwpaFSJf68FZT13NxDwthKqWkIPAc5cC+b3uksKoNZsFzkMs/GGf0cjYpnjtkpQ2FxZ/8+P3N6a3ME+qtv/YiAkMTd+NSOPUQ6WN43SEi5l5OnK/Zh3sNH6vdvDFtAccu+05f8FyGSCYxvGeepQIfiNQtrkDwT9TaPWTpAsKKDZHIf49J1Y01f4GBCQ/fpPD98rJB2ZFK/SdF683JB9HokvtTmZ4C7Tx0bDftMRasLaaLkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KcKSB818sAbhow/w7dlFfkvXqb/eBZCpRfXoKCQSzHY=; b=PnTuwEwZJ+GTk5fwewstsX60g7j0sY+PCaUFwwheQNfwYEadJ4uxSvzBOZDuFRtYTTrV5ViQNUXs3MfmQSpCqMeKNTTFjNuHtuyTrKh8XnqxEOpv+eXGZFDpvIxO6g3B9Q304h+9mqTzdueNJRNLHSh18zmNSUBLKJ3K9x2V61vgDNEXXSmNq7h8+Xoes8Yt1EXFGAlos7q2N6KbX1ROQ+qkpkKf8r4i5pEINYDksaGCHE83ziffoTDIB0xJuKatoOyRYR5TTp0+OEp2NecL2WbA6BKOvYJ5vvvuJJUFpCWVg5YKfsSEDp25uiENeUJ4jkl3EC6+XSl2oiNw7aF//A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none From: Yohei Kojima To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Yohei Kojima Subject: [PATCH v3 1/4] util: Add thread-safe qemu_strerror() function Date: Fri, 31 Mar 2023 02:13:19 +0900 Message-ID: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-TMN: [5BSn83azn8RjFd0Lqhf4BJwyY/Qun3s6xok93c0dtgzgAeqkGihO9czfKHqRvk38] X-ClientProxiedBy: TYCP286CA0133.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b6::20) To TYZPR06MB5418.apcprd06.prod.outlook.com (2603:1096:400:202::7) X-Microsoft-Original-Message-ID: <1027069ce3aba1a9a8208d0c74e4bb8a073e132e.1680195348.git.y-koj@outlook.jp> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYZPR06MB5418:EE_|TY0PR06MB5331:EE_ X-MS-Office365-Filtering-Correlation-Id: a2263591-20d8-41fa-5ea6-08db314217b6 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8SDgKIQ7Q0W2RwjYdIXyuYabzSu+4ZmR/TkKHd0qwRSST5Zm0bN39nGgdvL6uYXKsBzostAIMMHzi7DTzjoKWlLWeUy/Mm9dQUyHNQ9SicqnV4w4ZMnrKuRrnH2JSRYFck1h1Ro+NVWeTXpLeIlEUmtPmZG3wUVYU+i5AiApdBqP0/EIqVOpc1x1srqbLkZx0LAbJmxRz4TvudY4kY9/1kvAdoOJTV79ma3AxawcdbMiDl8c+11U2RswXGNmqIKgsD177a03xs9UIWUkeXecspDgGG22wJoy26SGrQEGlb7F9MQ1yTNK9jCrPEjn2XA91PqFcybzPc09qVIqDcCmAuKsRNr75PfJX0gb1E8gWfGHhDFqg5mE2R8gcIIpRRUz0kZilsUJ1uA9u6zS0Cql6OXiMJQWIM46G/pN99s/ml2LyzPAzWlLxLdsEEx/Zw44gmJl+duColoZ6iFGtTu95fKF+I/Oyehf5QIUVIkPrzsh/x+z2qBPiKILFAYD6bhN1bnUeJdHNGVppTkz6Ixj2T/wq2FceAR5wir5yRi4TPS9h7lIoRMt1L9I3rBJ68VJy4blI0xYBOCiuiSFw1GK3V9T6l2Kts1bFHglj+apb1A= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UnsWuwc36xoWNn4/hLFOZyCwhcKOSw6s2ncvk9qsvWLv18eKP/OJrfvEDWFH?= =?us-ascii?Q?k/Hz6O1YAx3XkQsfafFm0v1KhOyQZQcdyAB85zR1cCmqLn+M962/MncLn5q7?= =?us-ascii?Q?UH0PZQ6t35wscZ+TFFSs/ok8T4NR/BC8k65ZTW98q3nQLSuJwLpoDlGj9JdF?= =?us-ascii?Q?khylLaMlg7W2Nwi97de9aaflh6m48IjRr+Em/Cpz0l0WaNp7WOGfDTAT1eHo?= =?us-ascii?Q?AtHxEqvSeW6W97urteXDcZOKgVkS55lDk7s4s5eYgUVJ+FYK2SeF7tn5MIwq?= =?us-ascii?Q?I1JPg8QdZBMCelaxqhhaG+r3zU09Q4TQDL7sxOZ/iLp9+G+kyes3V8oXuiyJ?= =?us-ascii?Q?QfX8htt2/NkwME6Lf3/hF0mKRNugIqgAXNBeE22MtH4HBvdEK3VVt685v4FG?= =?us-ascii?Q?cZ86vZveCf7EcNuS9A8iRFbRKxZUl834zjMPptExg8enycBav4EDyeQ6qf3O?= =?us-ascii?Q?B0xohwvEJYnYqD8NSiC8b8vGsCbEzKWNow5M3d9cky2fb6grxwwsVbnQWsQV?= =?us-ascii?Q?l+F8O5Mvky0uCaavUCW/xjf9UsCPEfbiMgSmSo5/QekUjsMgC4iw/dy6ozCV?= =?us-ascii?Q?xWl16mnfp8SzwV7vbQFnwIVIqO37PtFqIvaeALzZOrw11gFv/FlFtCmV0EIA?= =?us-ascii?Q?D03l+wjKvFzEUlPe12RRBr3lGm5cdUqaW+l+SXJzrh7ixh1c+hQzbwNozBuf?= =?us-ascii?Q?5RKA8RU1XX3DyBdo8n5js1zZFsBB4v73lB+guyvqhXpVv7vMD9WX5/PbB8JN?= =?us-ascii?Q?AjxqIVEweQzglHkVNvrHBAVwdqrdpKtiK5h3fxzkhOmR23zMz6qhp4IeQ6/i?= =?us-ascii?Q?n9KX9EykbUf2YB+RSuPXzO+w7h8Qow+xYfdx6e8ijAwA24l1V6gKziG+N3Z4?= =?us-ascii?Q?gHFnGPDDBSoBEalZJNTjhSNwBV6iFW8IUQXvEHC5QBQ7Kys7dG89exeTkEiW?= =?us-ascii?Q?UCfjAEzBJvFo2c+iMPoO0PDH9UKF2vMwAkgHTFGVZShZpT/Izknktw2lKDDv?= =?us-ascii?Q?SlUlAPz6jl9SOD7bpfZr3hk5S6/OwRmpw8z4Ybck71C7XdcLwaNUcx5K4Kcq?= =?us-ascii?Q?MwKlQXaoCclWt1ol/DeYKlqmUZaX19r9aQlAes8o0pDhGv7LdpqQZWOLFCnE?= =?us-ascii?Q?+ifzYaUTD3P3CbA7xo9YVc6t+71+NSzFK2tuXlIh0ueYkcu7OxheK0rTYgW/?= =?us-ascii?Q?H3vLCjntSYOV4uyXQCMkxkYM1kggQGJkwMdaaEIwfNDYE8TDp70GVI+gnm0g?= =?us-ascii?Q?phPOoov9cPwE4unfY5ThxrE/oI8jIPKSbAySuzo0Yw=3D=3D?= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-3208f.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: a2263591-20d8-41fa-5ea6-08db314217b6 X-MS-Exchange-CrossTenant-AuthSource: TYZPR06MB5418.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2023 17:13:34.0089 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY0PR06MB5331 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:feae::806; envelope-from=y-koj@outlook.jp; helo=APC01-PSA-obe.outbound.protection.outlook.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_FROM=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1680196453930100005 Content-Type: text/plain; charset="utf-8" Add qemu_strerror() which follows the POSIX specification for strerror(). While strerror() is not guaranteed to be thread-safe, this function is thread-safe. This function is added to solve the following issue: https://gitlab.com/qemu-project/qemu/-/issues/416 Signed-off-by: Yohei Kojima Reviewed-by: Alex Benn=C3=A9e --- include/qemu/cutils.h | 20 ++++++++++++++++++ util/cutils.c | 49 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/include/qemu/cutils.h b/include/qemu/cutils.h index 92c436d8c7..0bcae0049a 100644 --- a/include/qemu/cutils.h +++ b/include/qemu/cutils.h @@ -117,6 +117,26 @@ int stristart(const char *str, const char *val, const = char **ptr); * Returns: length of @s in bytes, or @max_len, whichever is smaller. */ int qemu_strnlen(const char *s, int max_len); +/** + * qemu_strerror: + * @errnum: error number + * + * Return the pointer to a string that describes errnum, like + * strerror(). This function is thread-safe because the buffer for + * returned string is allocated per thread. + * + * This function is thread-safe, but not reentrant. In other words, + * if a thread is interrupted by a signal in this function, and the + * thread calls this function again in the signal handling, then + * the result might be corrupted. + * + * This function has the same behaviour as the POSIX strerror() + * function. + * + * Returns: the pointer to an error description, or an + * "Unknown error nnn" message if errnum is invalid. + */ +char *qemu_strerror(int errnum); /** * qemu_strsep: * @input: pointer to string to parse diff --git a/util/cutils.c b/util/cutils.c index 5887e74414..571edd768b 100644 --- a/util/cutils.c +++ b/util/cutils.c @@ -131,6 +131,55 @@ int qemu_strnlen(const char *s, int max_len) return i; } =20 +/** + * It assumes the length of error descriptions are at most 1024. + * The concern of write buffer overflow is cared by strerror_r(). + */ +static __thread char qemu_strerror_buf[1024]; + +#if (_POSIX_C_SOURCE >=3D 200112L) && !_GNU_SOURCE +/** + * In POSIX.1-2001 and after, the return type of strerror_r is int, but + * glibc overrides the definition of strerror_r to the old strerror_r + * if _GNU_SOURCE is defined. This condition handles it. + */ + +char *qemu_strerror(int errnum) +{ + int is_error =3D strerror_r(errnum, qemu_strerror_buf, 1024); + + if (is_error =3D=3D 0) { + return qemu_strerror_buf; + } + + /** + * handle the error occured in strerror_r + * + * If is_error is greater than 0, errno might not be updated by + * strerror_r. Otherwise, errno is updated. + */ + if (is_error > 0) { + errno =3D is_error; + } + + strncpy(qemu_strerror_buf, "Error %d occured\n", errno); + return qemu_strerror_buf; +} +#else +/** + * In glibc, the return type of strerror_r is char* if _GNU_SOURCE + * is defined. In this case, strerror_r returns qemu_strerror_buf iff + * some error occured in strerror_r, and otherwise it returns a pointer + * to the pre-defined description for errnum. + * + * This is the same behaviour until POSIX.1-2001. + */ +char *qemu_strerror(int errnum) +{ + return strerror_r(errnum, qemu_strerror_buf, 1024); +} +#endif + char *qemu_strsep(char **input, const char *delim) { char *result =3D *input; --=20 2.39.2 From nobody Sat May 18 19:24:21 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=outlook.jp); dmarc=fail(p=none dis=none) header.from=outlook.jp ARC-Seal: i=2; a=rsa-sha256; t=1680196452; cv=pass; d=zohomail.com; s=zohoarc; b=X+GTIyYZqSaTrvTqHG0tuWsm5qRBAb7bCNbHwJI8Lhgjrw0AA+KG8eLGFzTYgfvUVJpkcmMY2ZDM2f1SwiqCQF6GaxqFna6ycRMRHDmb/ZE99hQRd6ANySGlSh2jaqAikDjcko8XGRqgVw6AcPUe8tMDlNWtIhzeizsg2rBs3BE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1680196452; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=PiJsr9CPrbN55cMeg+aWTS6w64wRE8UZmMfkdXkbFkU=; b=eoV1rF4LLx28B593VTF9XQwf1lNIL5CYle4M+3V8ETOCGwu6yD/d63LtATRhXTrDwtVWjucm2kZBDE24BVhhpXl9WAiMjqpeawBsLVTpbe4B7BuCrR6Vzv20hh+rLjvIrE/SH6OE7IncIN24J9QCxk12RDHuK3IcgNwJaSv3mYI= ARC-Authentication-Results: i=2; mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=outlook.jp); dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1680196452197592.6197222153821; Thu, 30 Mar 2023 10:14:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1phvqc-00044x-4C; Thu, 30 Mar 2023 13:14:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1phvqa-00044i-NB for qemu-devel@nongnu.org; Thu, 30 Mar 2023 13:14:00 -0400 Received: from mail-sgaapc01olkn2082b.outbound.protection.outlook.com ([2a01:111:f400:feab::82b] helo=APC01-SG2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1phvqY-0006kV-Gk for qemu-devel@nongnu.org; Thu, 30 Mar 2023 13:13:59 -0400 Received: from TYZPR06MB5418.apcprd06.prod.outlook.com (2603:1096:400:202::7) by TY0PR06MB5331.apcprd06.prod.outlook.com (2603:1096:400:214::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.33; Thu, 30 Mar 2023 17:13:52 +0000 Received: from TYZPR06MB5418.apcprd06.prod.outlook.com ([fe80::1c39:fb04:b3c2:5a26]) by TYZPR06MB5418.apcprd06.prod.outlook.com ([fe80::1c39:fb04:b3c2:5a26%2]) with mapi id 15.20.6222.034; Thu, 30 Mar 2023 17:13:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VHf9rO2UW3c57NmOzIpy7HpWTreNKUUeWNIgcHbzG+IlvrcEV51mCZuh3VbF739M3IqOiGGNr07uQA+B0qmL1IrvmBf+5p6tHT6sXBbFKtOGRdoG1ycwN9T99YQv6rSa7bFCFPmJ6HLbicUFXnTVbUEGEq64Irap5edyzlnqo7XWSCswoInWi3lLh/iKFTCuuBxd9fA0Zq8IHP9tHmlW2woVeF45yrlkI4tMbqs3DSKe+MxnY33SU7K/+raQfx1yUJNYuxxwlmvptgosXcCDndgexjrJrCMDB1BMIQISTeg7Frdwndc385pDJwbQO7wxx9eE3EF38NT8KMbSWA9RBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PiJsr9CPrbN55cMeg+aWTS6w64wRE8UZmMfkdXkbFkU=; b=T4Ns7eeIv6HIc8a0bj868J5ReXjkp+Q4cerg79W3J0GUdwBMrkRhDqgk35qAq5dESELiNvstc4JNB/KyvecIkOhKyePivcdxEz8U1wHKdTP4Q0ZCDC8o7l+FgMBzH9AwscPYt/j0bhYFN9SjMQEsKzx+e6FWE6ji1I8Xp78nSt9I2IQecp2+8Axvz0v0VRGNP3uAvvPcnm5IfNqRQlahN5AFE3DkMz9Lyt22OIUC8oGSkacp2XQOOsKbDfrMwE8w8drG4wJQ6VstJujQvZfgtTm6wo4npdhYu9d9zhJlW73d7M0XiuXWPvCgPEkTxjJICBXLITXHxzAl2WDHRnqfpg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none From: Yohei Kojima To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Yohei Kojima , Laurent Vivier Subject: [PATCH v3 2/4] linux-user: replace strerror() function to the thread safe qemu_strerror() Date: Fri, 31 Mar 2023 02:13:20 +0900 Message-ID: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-TMN: [VpntekuQoZnCvNyIzfe0fkI/t9Gu42ZzdxCvMZue9n4WrmWxlHn7d79w22JU1BJK] X-ClientProxiedBy: TYCP286CA0133.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b6::20) To TYZPR06MB5418.apcprd06.prod.outlook.com (2603:1096:400:202::7) X-Microsoft-Original-Message-ID: <5c57a76488a9a5607fdbdd750e29478903d98df7.1680195348.git.y-koj@outlook.jp> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYZPR06MB5418:EE_|TY0PR06MB5331:EE_ X-MS-Office365-Filtering-Correlation-Id: f245b35c-a928-4489-3288-08db314222df X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XDuGBUGhqeClUvPbGNmHcBxxnl5A0Vbnzg3vQKufnXtY02QmpIoWV9gTyXUPqBzQW+Mi4zzhmpF3lkZZEZXao8n4rR82w2dMijdUr9yW3H28LV8fPPCu2D/t/gY9BvigiXYsyvbL6chdFMViwKnK7bTIc3rJe0pLfApfcO4ffKskvlyaB1s4M17jrgmkPSRaReFhU/AAqNkjyT+8OkKNZukDRD31iy9NY6LlCTRZ2nOg27mPBoi09WgMHt4a7BZdscTlLLB9qe5ZYrLJCjwFwsSYhQOJK/qoMGmaIfD2a7sL+17yRUemyZrRKvMMIS0xS1dKtbW3+D80zvjiJQiqo+yrU4Zj9znG73jQYsgIE+pH0DU5H+/lfojE6Upiyz/ktDaErE3QVSVVU6JcKGAkkeb9kCndbsru41nvkDXBJtuU12nYJkN7GsrdfaCxNVINk2s6Ny1QvxgR86YGZeC5KmDF0eBJC/It6XGz5NdYw+34pFpcpJoc2kGel9IOZYM9RDxaYIcdo3Cwnu8XkO4KCzzqI89HY8E7HWoVriiP6ky/Wav75R6Dosmdvd6duGZKRNXAXUpNi6RCFm0W0mZboBIp6nopDLc5s5DtCEX/6sM= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SklWZ0JNVERjQTZRQS8vU21qSDZud2tFbHhrbmJueksvRHZXWS9teHRmNEEw?= =?utf-8?B?bGZRRGV1bjJoWDYxZVFnb3BrQWFTOTlBNjRlcllkMVRRbjViY0pGcDVGOStt?= =?utf-8?B?dHNtd3NVQW5xZ3lsSWxtNTNmZGQ2TS93THhWRUR0SU02UGdWaTBoWG9WNDNS?= =?utf-8?B?VzdJY1R2VkprYnNPVUNyci9PM0ZYSEZTUkVvVkdLTXAwa2UwMVJhZHkrWHpo?= =?utf-8?B?NnlYMXhOTGpkR1doTVJ1T0ZxclRuUy8rbjdPL005T0ZMRW9qbG9JOHBabHhw?= =?utf-8?B?V0l5Q053VE4vWU1IakxhcjBLMFBBeTIrNlZtQ2VKdXFVcVBxUkRrSnViajgy?= =?utf-8?B?enozNkFvYWd2Z0hQajcwQURla3RySExiREljRWpaTjNldnYxWUhzbmpldzE0?= =?utf-8?B?OW11Y0FtSytuY09sY1hya096SXdFQVlpRjRoc0R4R0sxdmpXcncvVGpXMXFY?= =?utf-8?B?NDlxd0RuU3BlWEhNSlY0eTh0S2tTRXJYN3h1ekFLZ0U4NEJHQXVxaU5nVUtS?= =?utf-8?B?ejAwTVZzd1o4SUFvQm9Nc3NXMGFUZUo4aGlURjQzZFRicmNSR2k2bGZxV1JF?= =?utf-8?B?TERaSmJlWGpQSnBpaitjTURha3JLK29ZRXVHbGZlZDhyTUtiWjZGWGo4L1lu?= =?utf-8?B?TFNBWGhtcldLNDNFNS9EaWY0V3B4cEZpMGh2WkMzd215Wlp2aVhpQTNIZmdm?= =?utf-8?B?RzlPOG43S0EzNENzTzdiVDMyb29mN1BvZWwwUlJaWWxLeUNIMkxWMytCeDVt?= =?utf-8?B?c2lSL1hpYk12YXErSDBiNk9EQnZEVG9iTmVqQS9NUEhETmF1Sndtb2RpeXph?= =?utf-8?B?WlpkTDJ2TmJjN1paamcvbkd2bWFYUndCVjVlM21vQlpHMlQveEtzU213eTk3?= =?utf-8?B?MEQ1a2pZOFZORnBQYXVqZXFYVDJXVWtuTUVHVDhUNUk3TGRSbmsyRGhjTU95?= =?utf-8?B?UTF0WnNkcXBVenFsV1RlQllsZ1RVUU5Tdmczb0p0Nkhsb0tGV2FQZVF2Qkdx?= =?utf-8?B?T09ZekNucENJMjRuaHNYWUpyZ0xnREJHbnQ4d2Y2VGU1blJYUXlXN3dOR1Jh?= =?utf-8?B?UnNxRFZSL3ZWekJZTWJ3dUN0WGM5cGE3WHZZWHZ0ZllPdm1QREQrbGpOMThO?= =?utf-8?B?R0J3MXpncGNxNVhmOHFMUGIra1R4bGl2dFRiYzJUNEV1c2NJc0RoWThVWWdV?= =?utf-8?B?aXhrcnhxenRGc2JERG1PR2FsV2pPanYwcE05UUIwRUtoR2lQUXNBdVNxRWlo?= =?utf-8?B?azRHZ0RVQlJQaGRhV09RSDdzNU9VNFJjTUptSnBKb01CYnFIbGJxMjd0RzFP?= =?utf-8?B?eWpIRE9PVk9ENjE3V3JRNHgrMW1kTEE4Y3pIb3U1M1J2RS9VN0l1Z3ZPMTd4?= =?utf-8?B?YXBEUUgvR00wdi9TVGtTYnZaeksyL2RlTzg4SCt6WEFTdzIzeGNnSEEzc1lC?= =?utf-8?B?SmNjVFpqbDR5TXpUeFhXYnJBMS9qTm5YMGM0T3pHc21XVDY4eUlPbXh6Nmh4?= =?utf-8?B?Wk41NEhEK0d0Z0hIMFFwMW42VGl1ZFc3Z1FMdTV3UDBBaElnMDd4dGdSTFZU?= =?utf-8?B?Z1hKaVc5ZzNaYkp2enpzVHZKNldIVm1kMVFQMFJxamVvMnRRbVBVcjRiOUlv?= =?utf-8?B?R3BhNHlRNDl1SUVsTjFUeWVGajhSYUU4YkFlOVBVVklTcmVTVFlIa1hFOUhW?= =?utf-8?B?c0ZEM09FRGRIYWNIUVI0MU5BNlNPN2VUQWQzRWM2ajZEeGh3OHA3L0dRPT0=?= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-3208f.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: f245b35c-a928-4489-3288-08db314222df X-MS-Exchange-CrossTenant-AuthSource: TYZPR06MB5418.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2023 17:13:52.6953 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY0PR06MB5331 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:feab::82b; envelope-from=y-koj@outlook.jp; helo=APC01-SG2-obe.outbound.protection.outlook.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_FROM=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1680196453934100006 strerror() is not guaranteed to be thread-safe as described in (https://gitlab.com/qemu-project/qemu/-/issues/416). This commit changes files under /linux-user that call strerror() to call the safer qemu_strerror(). Signed-off-by: Yohei Kojima Reviewed-by: Alex Benn=C3=A9e --- linux-user/elfload.c | 6 ++++-- linux-user/main.c | 5 +++-- linux-user/syscall.c | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index b96b3e566b..0fde7de735 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -17,6 +17,7 @@ #include "qemu/guest-random.h" #include "qemu/units.h" #include "qemu/selfmap.h" +#include "qemu/cutils.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "target_signal.h" @@ -2790,7 +2791,8 @@ static void pgb_reserved_va(const char *image_name, a= bi_ulong guest_loaddr, error_report("Unable to reserve 0x%lx bytes of virtual address " "space at %p (%s) for use as guest address space (che= ck your " "virtual memory ulimit setting, min_mmap_addr or rese= rve less " - "using -R option)", reserved_va + 1, test, strerror(e= rrno)); + "using -R option)", reserved_va + 1, test, + qemu_strerror(errno)); exit(EXIT_FAILURE); } =20 @@ -3583,7 +3585,7 @@ int load_elf_binary(struct linux_binprm *bprm, struct= image_info *info) g_free(scratch); =20 if (!bprm->p) { - fprintf(stderr, "%s: %s\n", bprm->filename, strerror(E2BIG)); + fprintf(stderr, "%s: %s\n", bprm->filename, qemu_strerror(E2BIG)); exit(-1); } =20 diff --git a/linux-user/main.c b/linux-user/main.c index fe03293516..953b8ede65 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -746,7 +746,8 @@ int main(int argc, char **argv, char **envp) if (execfd =3D=3D 0) { execfd =3D open(exec_path, O_RDONLY); if (execfd < 0) { - printf("Error while loading %s: %s\n", exec_path, strerror(err= no)); + printf("Error while loading %s: %s\n", exec_path, + qemu_strerror(errno)); _exit(EXIT_FAILURE); } } @@ -892,7 +893,7 @@ int main(int argc, char **argv, char **envp) ret =3D loader_exec(execfd, exec_path, target_argv, target_environ, re= gs, info, &bprm); if (ret !=3D 0) { - printf("Error while loading %s: %s\n", exec_path, strerror(-ret)); + printf("Error while loading %s: %s\n", exec_path, qemu_strerror(-r= et)); _exit(EXIT_FAILURE); } =20 diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 69f740ff98..f6b4fe8059 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -581,7 +581,7 @@ const char *target_strerror(int err) return "Successful exit from sigreturn"; } =20 - return strerror(target_to_host_errno(err)); + return qemu_strerror(target_to_host_errno(err)); } =20 static int check_zeroed_user(abi_long addr, size_t ksize, size_t usize) --=20 2.39.2 From nobody Sat May 18 19:24:21 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=outlook.jp); dmarc=fail(p=none dis=none) header.from=outlook.jp ARC-Seal: i=2; a=rsa-sha256; t=1680196477; cv=pass; d=zohomail.com; s=zohoarc; b=F3NKnyqW6q5D7hfwc04BqoGDHiKQUdKKWTDVqVmP4RnOSBytUzwm1ey6BHg/+owe6pbGvIfTx/Uei+Ux8Xppm3jxmjonS9eW+AER83XXYwV4rUJ5MB6VMlREVyRa5sFOIsq/SawR8KBpLeYF/qyxDHhh6VC5NSk+DoM/uw0khJg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1680196477; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=MDHqcmQRPGkUdd5Ety8ynIkDpC4OBcxd3mYN7rx0y9U=; b=LmP1N+6ZdbsNR0NUy0xjXWjnx4gTBmx+iWR2Cj1D+G9eBynpPPD5F525+IWHo/278KPQZcQpLvb2rq0fOnebbgMdR9bhm9mN8vlYVU32hRcsKB1REK5KaA1CNR8opZ3ONWA+W42rOGEKXk6Bh+le4knrXwnhlloj3GjBk9bmV7o= ARC-Authentication-Results: i=2; mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=outlook.jp); dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1680196477600588.6199921712184; Thu, 30 Mar 2023 10:14:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1phvqi-00045z-Ne; Thu, 30 Mar 2023 13:14:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1phvqh-00045S-0w for qemu-devel@nongnu.org; Thu, 30 Mar 2023 13:14:07 -0400 Received: from mail-sgaapc01olkn2082b.outbound.protection.outlook.com ([2a01:111:f400:feab::82b] helo=APC01-SG2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1phvqa-0006kV-UG for qemu-devel@nongnu.org; Thu, 30 Mar 2023 13:14:02 -0400 Received: from TYZPR06MB5418.apcprd06.prod.outlook.com (2603:1096:400:202::7) by TY0PR06MB5331.apcprd06.prod.outlook.com (2603:1096:400:214::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.33; Thu, 30 Mar 2023 17:13:53 +0000 Received: from TYZPR06MB5418.apcprd06.prod.outlook.com ([fe80::1c39:fb04:b3c2:5a26]) by TYZPR06MB5418.apcprd06.prod.outlook.com ([fe80::1c39:fb04:b3c2:5a26%2]) with mapi id 15.20.6222.034; Thu, 30 Mar 2023 17:13:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VwWX6cJGrh4MsOwme28nPYP3ij282TC7Ub7VWxh+fR5BC6HNWXCMigclkHSm4aglW0ccS+xVQIOXEwI73uJulqACuKsxsTHIQ3zO1CBM3lbUvnqdrl7MSZHerJk5DbBtV8JL4huJFBF2+fCOr+KCYY0eNKenTteP06cY+u3EpKFcMaF+tVljUI9mnjQnLO4f86uAQCKwCsQ8TkUxjVL/oFWMTHQnLkd7KZ1K8UDdFKZVL6IR7v8keJcNbw+NCn/azmoivF8S+4O+MyVncz3WL1bkNJfhUvhUEr+my9vQaFzwe38HkWzJSk2M5ggQfbB+9B9kX7dIcfOOLArlTXCuAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MDHqcmQRPGkUdd5Ety8ynIkDpC4OBcxd3mYN7rx0y9U=; b=XwhsomZi3tuQg9Smi44wJSAbFetSODPmO+Mm30Ald84oxxTOR1HQMK5QIKWcxpvs+PnCKKinbpKThLixlrw0ECygmddEKsvr4A6YSPXO95N2jkc8MudXOWsFZHkstovIHjVXynnI5xo5tWJoYNdhar34XkbTMreiwiYeTp+Z44VlOtSMX7rA/4vaQfnWyIOsJzOrjt6aWn6xK5E//CppWqIMRa3MOk5bYLp1wGy8H+IBZMwecmPop6vg+PPw4YaYlZNEKxHLiOUc0eeKxjll/njSwUSLbkhuAuZ2nZPknsNk8UNhtjEeoAxeR7lxAc0T5kucWsI6SCr1h5goe28i0w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none From: Yohei Kojima To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Yohei Kojima , Paolo Bonzini , Richard Henderson , kvm@vger.kernel.org (open list:Overall KVM CPUs) Subject: [PATCH v3 3/4] accel: replace strerror() function to the thread safe qemu_strerror() Date: Fri, 31 Mar 2023 02:13:21 +0900 Message-ID: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-TMN: [vH8xj3oNC7xQ1H5dSxnWevjpAJ1zD1NOwxm3XHHcetexZkovbrXZN4/c4I9uAZ9Y] X-ClientProxiedBy: TYCP286CA0133.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b6::20) To TYZPR06MB5418.apcprd06.prod.outlook.com (2603:1096:400:202::7) X-Microsoft-Original-Message-ID: <62bcf6eee9f60dfad0c6fd878e350ee941b4baea.1680195348.git.y-koj@outlook.jp> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYZPR06MB5418:EE_|TY0PR06MB5331:EE_ X-MS-Office365-Filtering-Correlation-Id: 0db8d1f7-076f-43ec-7f01-08db3142230c X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZVJInF9G7VtDIjsZZJkngPjrvHkSS8X686rn4jhlLv2iOOQ/cGPduB6ZE97fQAnHStNwm8jcWhqt6HRmhAxLrIEP0AAedvZUhWLMbJWe3MmagEBVC6Rzt8cyJGk1+1yIHAx3AaWEz8fiIOW2FduL1dt2XHwRJX35tv+ME9hO29f0soGZqxpU01/FFWsMVlIbyfCyuq8kIb4ckykO/a3QloFzVkq3mmXBATT5l+LUKAFghHet1PedSShOuL5SNVoXdiYZCjzY38X1GxD/iARrEQKKBLBeEreUeBeKLK9BObVy9Z9f9lzjgtQGJo+wXdY57/47cCvs6H3Usf5Eh4fxHWBk1TfeZi7YWZmmop4ycCbfjZ6n8SAgBMH/Ud+4qtKwlElpjiF6Tu5MIvknEX3dPLO16180nKLGHwETirJeNFUzi+awmw+nMRRJuz97kVbFj3UxnMAIP9AQX8gyXyBGP/AWYLti+p+sy+poEPgyK7z6b4an7ppAsW2rsZ7zLC3ULoSQerUX3M5iT0m3ArHvLiGFYJGAUlku6fIl1UYqwzaLOdVHKNkKCvqE8YgE3B8NvwHuOUeeUKgjqudnZH/vZHjPHHJoorfgs3pOuj789ms= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5G3ns7+z71PqnY00gAp4d3FH3vJwbXlEiYZnOTp5gyS+qkmNdWtXWc32pvye?= =?us-ascii?Q?UtdWBB88cYDmUDnRXO8fJanq5gyoQU2kWIH+Jy+tg1CihkEA/gSmZfEzwNwx?= =?us-ascii?Q?Wo4GXdtzfxM2yyZxbSFvqJJKDpHXx7jDibyHuSM71Fgxxae3P6jU8qoJ/0MN?= =?us-ascii?Q?h8UJNFam3cjZdmZ6Ngwlu7AbrPqieTsmbztJPXogOvLpE7gYMiVSJeQTDdpH?= =?us-ascii?Q?PQoWjFhvUg8ElOKwZRp7mItN9hjXjvK4WXvDKFkLFgrqCs7eXODmBBASfSL1?= =?us-ascii?Q?46NTjbSdfHJT9zv2/8oce+KGIGBGoNP3HjXV8O3mmL6cgniBYl0HuyFA64Vy?= =?us-ascii?Q?i8rkJkfWfDDh/hkPS0gOjF3ZNNg50AOIgM6J6Wgkl/Hbknr8HkcI+FBOqfqM?= =?us-ascii?Q?jFI4GgKoAuZOOKkzX9rgYcYgq5t4Z/v+Y/S1tqNctiEOthhMDzuCvvxKq7AO?= =?us-ascii?Q?4kcz3Jp/0E2xbNi8xMXNmcSc2/4JZvfIbSW/sqSoTARGjztrn+lTH8MbGstg?= =?us-ascii?Q?BKB5qfWJsMGqeqbcIvWMqYPRLi0s8lgE1+aJemz9crzz7kcc1e08GKPZflDN?= =?us-ascii?Q?mRGaQJn37Zeurw9K99iwB8+cHblUvbYTchWEdsXOx6KJ2yAgAMire1P3lkUf?= =?us-ascii?Q?Jne+ijmzGK82OzNS843KmnuusJwoA9m3zSBAxDDDCZYFiZBYwafwhoutm5Bm?= =?us-ascii?Q?2JCWP1O7lQQfkks59aWiNmCAS0RKNW4hwGEh7jIW+uGAMyyTgGDk3qUpPRJi?= =?us-ascii?Q?S4jrvY5RdhMrJQ45B3LSJjcz2dzkm1oSurUrlw46UAhNgIsKeNR4QAQZ3RTl?= =?us-ascii?Q?Njq+yrG453b2bBpjvecV39o4nKpatE/zUSSZNsNRRnvJdxTnCgDbdk6jAciY?= =?us-ascii?Q?R0bIJSOz751jOlNP83YfHWNNAESSxjvIjZWiaGAPYTBhF6TQXrWcDj9Ezk7K?= =?us-ascii?Q?owYQwvwXdp8FxjibBPfQOcx5MO54gkMVswWo2l2lPhy2hVkAxdEaDpLbcKGs?= =?us-ascii?Q?phyNfVehz/qN+lLIOb9EoQWcbR4Gh++M9CgkkuLjPqY/eUyuwbFqoIRleKZK?= =?us-ascii?Q?mYi/QlOtdNRZVOD90bqX3aDZs4ycrJ3gXYIDknkr3voeODVKKhfe4E0imSFM?= =?us-ascii?Q?cjflmRZqd9KafGwLncEHDIKdRla1FvZp9LPAYzndnreuZACM5P/lYK+HsEKd?= =?us-ascii?Q?TeD6xaz4ZEZlOMVko1zCTCdhEK2nLdA/Jub/7CJLopi1Nxry9LU0Y+Wqzwos?= =?us-ascii?Q?IQdYEs8AlTeaBWqHf7jInfSo9gs1+pyZz33lomvNWw=3D=3D?= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-3208f.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: 0db8d1f7-076f-43ec-7f01-08db3142230c X-MS-Exchange-CrossTenant-AuthSource: TYZPR06MB5418.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2023 17:13:52.9980 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY0PR06MB5331 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:feab::82b; envelope-from=y-koj@outlook.jp; helo=APC01-SG2-obe.outbound.protection.outlook.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_FROM=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1680196477896100001 Content-Type: text/plain; charset="utf-8" strerror() is not guaranteed to be thread-safe as described in (https://gitlab.com/qemu-project/qemu/-/issues/416). This commit changes files under /accel that call strerror() to call the safer qemu_strerror(). Signed-off-by: Yohei Kojima --- accel/kvm/kvm-all.c | 32 ++++++++++++++++++-------------- accel/tcg/cputlb.c | 3 ++- accel/tcg/perf.c | 7 ++++--- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index f2a6ea6a68..b3dc7743db 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -22,6 +22,7 @@ #include "qemu/atomic.h" #include "qemu/option.h" #include "qemu/config-file.h" +#include "qemu/cutils.h" #include "qemu/error-report.h" #include "qapi/error.h" #include "hw/pci/msi.h" @@ -315,7 +316,7 @@ err: error_report("%s: KVM_SET_USER_MEMORY_REGION failed, slot=3D%d," " start=3D0x%" PRIx64 ", size=3D0x%" PRIx64 ": %s", __func__, mem.slot, slot->start_addr, - (uint64_t)mem.memory_size, strerror(errno)); + (uint64_t)mem.memory_size, qemu_strerror(errno)); } return ret; } @@ -1366,7 +1367,7 @@ static void kvm_set_phys_mem(KVMMemoryListener *kml, err =3D kvm_set_user_memory_region(kml, mem, false); if (err) { fprintf(stderr, "%s: error unregistering slot: %s\n", - __func__, strerror(-err)); + __func__, qemu_strerror(-err)); abort(); } start_addr +=3D slot_size; @@ -1389,7 +1390,7 @@ static void kvm_set_phys_mem(KVMMemoryListener *kml, err =3D kvm_set_user_memory_region(kml, mem, true); if (err) { fprintf(stderr, "%s: error registering slot: %s\n", __func__, - strerror(-err)); + qemu_strerror(-err)); abort(); } start_addr +=3D slot_size; @@ -1613,7 +1614,7 @@ static void kvm_mem_ioeventfd_add(MemoryListener *lis= tener, match_data); if (r < 0) { fprintf(stderr, "%s: error adding ioeventfd: %s (%d)\n", - __func__, strerror(-r), -r); + __func__, qemu_strerror(-r), -r); abort(); } } @@ -1649,7 +1650,7 @@ static void kvm_io_ioeventfd_add(MemoryListener *list= ener, match_data); if (r < 0) { fprintf(stderr, "%s: error adding ioeventfd: %s (%d)\n", - __func__, strerror(-r), -r); + __func__, qemu_strerror(-r), -r); abort(); } } @@ -1668,7 +1669,7 @@ static void kvm_io_ioeventfd_del(MemoryListener *list= ener, match_data); if (r < 0) { fprintf(stderr, "%s: error deleting ioeventfd: %s (%d)\n", - __func__, strerror(-r), -r); + __func__, qemu_strerror(-r), -r); abort(); } } @@ -2278,7 +2279,8 @@ static void kvm_irqchip_create(KVMState *s) } else if (kvm_check_extension(s, KVM_CAP_S390_IRQCHIP)) { ret =3D kvm_vm_enable_cap(s, KVM_CAP_S390_IRQCHIP, 0); if (ret < 0) { - fprintf(stderr, "Enable kernel irqchip failed: %s\n", strerror= (-ret)); + fprintf(stderr, "Enable kernel irqchip failed: %s\n", + qemu_strerror(-ret)); exit(1); } } else { @@ -2297,7 +2299,8 @@ static void kvm_irqchip_create(KVMState *s) } } if (ret < 0) { - fprintf(stderr, "Create kernel irqchip failed: %s\n", strerror(-re= t)); + fprintf(stderr, "Create kernel irqchip failed: %s\n", + qemu_strerror(-ret)); exit(1); } =20 @@ -2446,7 +2449,7 @@ static int kvm_init(MachineState *ms) =20 if (ret < 0) { fprintf(stderr, "ioctl(KVM_CREATE_VM) failed: %d %s\n", -ret, - strerror(-ret)); + qemu_strerror(-ret)); =20 #ifdef TARGET_S390X if (ret =3D=3D -EINVAL) { @@ -2532,7 +2535,8 @@ static int kvm_init(MachineState *ms) ret =3D kvm_vm_enable_cap(s, KVM_CAP_DIRTY_LOG_RING, 0, ring_b= ytes); if (ret) { error_report("Enabling of KVM dirty ring failed: %s. " - "Suggested minimum value is 1024.", strerror(= -ret)); + "Suggested minimum value is 1024.", + qemu_strerror(-ret)); goto err; } =20 @@ -2949,7 +2953,7 @@ int kvm_cpu_exec(CPUState *cpu) break; } fprintf(stderr, "error: kvm run failed %s\n", - strerror(-run_ret)); + qemu_strerror(-run_ret)); #ifdef TARGET_PPC if (run_ret =3D=3D -EBUSY) { fprintf(stderr, @@ -3455,7 +3459,7 @@ void kvm_init_cpu_signals(CPUState *cpu) r =3D kvm_set_signal_mask(cpu, &set); } if (r) { - fprintf(stderr, "kvm_set_signal_mask: %s\n", strerror(-r)); + fprintf(stderr, "kvm_set_signal_mask: %s\n", qemu_strerror(-r)); exit(1); } } @@ -3538,7 +3542,7 @@ int kvm_set_one_reg(CPUState *cs, uint64_t id, void *= source) reg.addr =3D (uintptr_t) source; r =3D kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, ®); if (r) { - trace_kvm_failed_reg_set(id, strerror(-r)); + trace_kvm_failed_reg_set(id, qemu_strerror(-r)); } return r; } @@ -3552,7 +3556,7 @@ int kvm_get_one_reg(CPUState *cs, uint64_t id, void *= target) reg.addr =3D (uintptr_t) target; r =3D kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, ®); if (r) { - trace_kvm_failed_reg_get(id, strerror(-r)); + trace_kvm_failed_reg_get(id, qemu_strerror(-r)); } return r; } diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c index e984a98dc4..6cf888cdf1 100644 --- a/accel/tcg/cputlb.c +++ b/accel/tcg/cputlb.c @@ -40,6 +40,7 @@ #include "qemu/plugin-memory.h" #endif #include "tcg/tcg-ldst.h" +#include "qemu/cutils.h" =20 /* DEBUG defines, enable DEBUG_TLB_LOG to log to the CPU_LOG_MMU target */ /* #define DEBUG_TLB */ @@ -215,7 +216,7 @@ static void tlb_mmu_resize_locked(CPUTLBDesc *desc, CPU= TLBDescFast *fast, */ while (fast->table =3D=3D NULL || desc->fulltlb =3D=3D NULL) { if (new_size =3D=3D (1 << CPU_TLB_DYN_MIN_BITS)) { - error_report("%s: %s", __func__, strerror(errno)); + error_report("%s: %s", __func__, qemu_strerror(errno)); abort(); } new_size =3D MAX(new_size >> 1, 1 << CPU_TLB_DYN_MIN_BITS); diff --git a/accel/tcg/perf.c b/accel/tcg/perf.c index 65e35ea3b9..0c7a3a8822 100644 --- a/accel/tcg/perf.c +++ b/accel/tcg/perf.c @@ -13,6 +13,7 @@ #include "exec/exec-all.h" #include "qemu/timer.h" #include "tcg/tcg.h" +#include "qemu/cutils.h" =20 #include "debuginfo.h" #include "perf.h" @@ -54,7 +55,7 @@ void perf_enable_perfmap(void) perfmap =3D safe_fopen_w(map_file); if (perfmap =3D=3D NULL) { warn_report("Could not open %s: %s, proceeding without perfmap", - map_file, strerror(errno)); + map_file, qemu_strerror(errno)); } } =20 @@ -201,7 +202,7 @@ void perf_enable_jitdump(void) jitdump =3D safe_fopen_w(jitdump_file); if (jitdump =3D=3D NULL) { warn_report("Could not open %s: %s, proceeding without jitdump", - jitdump_file, strerror(errno)); + jitdump_file, qemu_strerror(errno)); return; } =20 @@ -214,7 +215,7 @@ void perf_enable_jitdump(void) MAP_PRIVATE, fileno(jitdump), 0); if (perf_marker =3D=3D MAP_FAILED) { warn_report("Could not map %s: %s, proceeding without jitdump", - jitdump_file, strerror(errno)); + jitdump_file, qemu_strerror(errno)); fclose(jitdump); jitdump =3D NULL; return; --=20 2.39.2 From nobody Sat May 18 19:24:21 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=outlook.jp); dmarc=fail(p=none dis=none) header.from=outlook.jp ARC-Seal: i=2; a=rsa-sha256; t=1680196477; cv=pass; d=zohomail.com; s=zohoarc; b=KM3eMISq1Lujskx2/7SHbSXzywhxqTkp7eq1TAVYIygY3YAr78O7iz4xwRkzo+934Um/nx+oxIhPrEwdum5N4VE4lRfpB6y/jhevR3SLVlkpyfokFprTqSp5MlR5A8QTDk0GTd4cEYlHqRPcjLDHuW9wgLauKoDX7N3/mjtcdXw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1680196477; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=fG5SDjiuVVhnlTF1nIrshKxcRESD8BJ2GE+gdl4vSUg=; b=QU7BRM4Ms2lWvo4bCo10vBoy9B93+gQmwHQAx86OHmO89jX9AVB6Klz6xtWLtDxWhZ2vgpzXoSYlrlXr4fC6W+OvvOOdOsc2oma454otptSQxLIHQCHomIsXCn27PAMxEkl+9E2rmpvGYNFQVKY4G+cMuPOkJb85mdXj9UsmS4A= ARC-Authentication-Results: i=2; mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=outlook.jp); dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1680196477658300.4339225266716; Thu, 30 Mar 2023 10:14:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1phvqm-0004A0-Jo; Thu, 30 Mar 2023 13:14:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1phvqj-00046I-Qw for qemu-devel@nongnu.org; Thu, 30 Mar 2023 13:14:09 -0400 Received: from mail-sgaapc01olkn2082b.outbound.protection.outlook.com ([2a01:111:f400:feab::82b] helo=APC01-SG2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1phvqh-0006kV-O1 for qemu-devel@nongnu.org; Thu, 30 Mar 2023 13:14:09 -0400 Received: from TYZPR06MB5418.apcprd06.prod.outlook.com (2603:1096:400:202::7) by TY0PR06MB5331.apcprd06.prod.outlook.com (2603:1096:400:214::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.33; Thu, 30 Mar 2023 17:13:53 +0000 Received: from TYZPR06MB5418.apcprd06.prod.outlook.com ([fe80::1c39:fb04:b3c2:5a26]) by TYZPR06MB5418.apcprd06.prod.outlook.com ([fe80::1c39:fb04:b3c2:5a26%2]) with mapi id 15.20.6222.034; Thu, 30 Mar 2023 17:13:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Xup6gnUagzRneR4yaqeu1d2gEWWnEQCbz//6o3WnZZM0rWBgJHcF3q3Bk9dG3D/832QcuVy79+j4Rwg9ItaD5m3pyQXbJn0WulYBnzJM7FnzHVsKYGHFI4Jd3gHL69bbflrTqg4qrRzCYwASDfWJJLgKlQmvwFY5hubbCpIQ7fZRX78nV3A29HyrjfKMDVN5j8/59EY5WBeycPL6/Wjj8h6n0mgIKchyPGdWbTDi90Unvrmqkoc5//QN3B69p0NX7qGkCT0X3yWZuIplB/1nia7G+ABRKnqVuQ9fdSulEuJ59Uh8BpY/Q9picvfdWp2ATiTCxv7ro3+zxhGZNn194w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fG5SDjiuVVhnlTF1nIrshKxcRESD8BJ2GE+gdl4vSUg=; b=eWarKXNyAXNXwn15o9yYb6edjZXe5RnMKAej2Rm9ASMZj6HkFtEHefOuAgczqpjhcQera3HMGCWsc2CvU0hrK6sxF1ECLKDwCpnQ7GYGjD6XsarRei7zuflyoiwJKxnwJJDgpu9sAv3/FCQ8fk90feM+LFtb+k/J+qNM1zlqdCNflc0sfLeT4O7bz73GHMKD+wLW0+KZeqSA0A7pL+OK2eP67b+gUkKSyKwQsC8RlHcSoCj8dW3c8LoYnKgqJvBdiOhZ422UHnGRTnTccsDqoUSCC7wOm5nDpbPGXF+wh6dE+CGrBq6ZCibq82ZioFI/eBIKZN2JGmnqO7nbrsefpQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none From: Yohei Kojima To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Yohei Kojima , Paolo Bonzini , Marcelo Tosatti , David Woodhouse , Paul Durrant , Reinoud Zandijk , Sunil Muthuswamy , kvm@vger.kernel.org (open list:X86 KVM CPUs) Subject: [PATCH v3 4/4] target/i386: replace strerror() function to the thread safe qemu_strerror() Date: Fri, 31 Mar 2023 02:13:22 +0900 Message-ID: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-TMN: [UzUmQXPXUXzI9Crkq/QWU5gbtawtcj26GTvpBxxNX9+QaGbt7HV1TiV9FfOwAJSG] X-ClientProxiedBy: TYCP286CA0133.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b6::20) To TYZPR06MB5418.apcprd06.prod.outlook.com (2603:1096:400:202::7) X-Microsoft-Original-Message-ID: <4594055207c9fd24c2429059cd8b300b3675b93d.1680195348.git.y-koj@outlook.jp> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYZPR06MB5418:EE_|TY0PR06MB5331:EE_ X-MS-Office365-Filtering-Correlation-Id: 9081d0cd-54d5-4ddd-a555-08db3142234a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lkJ0i8v9Kp7AMJp/JtNMzZpm4I8Z9+8uvl44+Xi5387v4AdlL5wANexy0azBV3wM1muGNu7UMc4FePNE2CGvQbOt/pCTqN36ifzuDkfvqOOVJQMM4DY+U3LZWq5GSKU7qZ35itE7Uvu49liFSr+IBSDhjmeW3t8nwzmoLqQm4WPUIE5TQ07aV4mRHi4wY5bZ9xWVfXaf3HoqNmU0+lzdtfsMSRruTCxT7leJcx8EVmPP1dbe9hQnPhQDtTBjaRfElIPM7caj1ly9g9SfySqlw0z1RGsDKMziXCjOsNBmlLB8amg3DeQ4sSIsg9zrClJjuMbdGPnzwcDpbfxjL6mpNxP39yo1o0zMVWaMXnF9+fff9m5Ho9tHrifgrOl3kPvkDvZPs1IZzokFET3zC/uWsED3+TSoI9xr7kAqCsjKb1gvubEN/Owy2yCUq0Unefxp5qBF4gpJDw8gnvYfnJpXyyvjw/GbUQ0uUKWM6RLK/H7c9aFHAeL8hhmUvxcsCZWHOz3ibuHLHo7EvkAwInsK+oXgsElfgrnDweqnIpNuJlWb206rRhJRuYE+ClgOz5JUXzQdsz3Wo5RvCMI1cwBsZEAiTWF5EutYxSv1DF4jG/8= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bbuyvUCq37LdVMbBgefO3xx5JoRBFFDzUASGWhLom69e/nY/J0x33KTt8ycI?= =?us-ascii?Q?QygD7xl26Ag2JKnVA95i6ojfEF/5KvnU6WI1jHFLJnn2xNqmGpOmbi1Z9R3H?= =?us-ascii?Q?7tORjJqevjuvl17INHVr1HgOxM2DMnZCWDdspJP7GWrmQHOtYs3niOlOuKM5?= =?us-ascii?Q?4NEyi3GhEgrC8sd11f6go50CTXqwT/qhkiMSXNUP5m9iEYNW+Yh/dwpcoyQi?= =?us-ascii?Q?nCP/TQ2K0HHtiuH+pQlRoIsrSRHhP7JLOr3t2rTpB5M7FHT9zwYM91taZD8x?= =?us-ascii?Q?gZtMlX0RRD0CISk56pSLNgusVxlG+0l+ohRobd3+udN5t3H2+IybczglQP3J?= =?us-ascii?Q?rgsH2RtrQsOS3KrfsMCvodl8kccvzGMZVS+I8hS5+Y3hrl9gTgWTlzJhmHC3?= =?us-ascii?Q?9kfNhhe+LNQCgIuHONGoptP/jShs/8ExL2ztjWyqXC7BXitVjsSlu3+qfHev?= =?us-ascii?Q?M9D/S/iN+5q5IXSnf5LGpCk9PFwJmdh+tS+sSPGOreKqIZiv4BRJ7G2XOWWC?= =?us-ascii?Q?2A3hI+/s9KWkm4N7yadwDW4rB5HLjVzpC4yMVqRORCsx1oS7+CHlZBX7HDOm?= =?us-ascii?Q?3/+eC57f6piQEvJOE+6W6KEf76gdTtMHZoE0xKuoz9wJ+NzftLDU7PeANv6r?= =?us-ascii?Q?tpeH17A6ycICTJFm7RcQPkWpWexrihCjgdTSK73PMFLHXKhc6elcZhpZHrc/?= =?us-ascii?Q?SNTB1JOrTk46Ol8XF8BL6cUR1KrlcJG5ZI9Y8Ci3KT178t+gxw8ncMNROkPH?= =?us-ascii?Q?XpSALAgxTkJ4NN4c9tmafcmpa1qaeoBkHkQqIsuRnUn5EzS6H26vEyE/qQxE?= =?us-ascii?Q?yYTNRnJA7Ig8OjqYLS3QdRSl/apCxIP7JdAQAYDCsN+Kos5FRmNA9w+fPhEY?= =?us-ascii?Q?eTjfrCm56WWFpXNnZKzFSJ+YXYG9TzqhBdkZMOV1aUQYGBnVsyTnivl551sa?= =?us-ascii?Q?HxcqGNpMO3PElhmoWz6Ors6c6noVO1qx2XDlXQ9eZJ+vFmXkPOfZhBo/NRSo?= =?us-ascii?Q?yt9nvCyvd9WDPV+gbrr9b27fo9WupydN8W8U0Vp2x28iQdwbQwIjtuySdygw?= =?us-ascii?Q?8CEzA+7ZAIE5mSLZjiBCb43MyenpFVroGbaHspwWfXw6z2RIp43+8QyXYe0a?= =?us-ascii?Q?9rWS7UxzyUIP1hx78N1MlU/gJRSI7Um06uCqkyYWlM5qftO6GWGvW0aabmTq?= =?us-ascii?Q?AcS+nqJUBa8eY7E7AmPYb4bbIf6YcLCQ0t5XzqRdWpfmdNx+yK3elQJBygf2?= =?us-ascii?Q?O9XuZc0ytkqXA6rgrCUGPBPk45S5ZVJyy1+nEMuDDg=3D=3D?= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-3208f.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: 9081d0cd-54d5-4ddd-a555-08db3142234a X-MS-Exchange-CrossTenant-AuthSource: TYZPR06MB5418.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2023 17:13:53.3973 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY0PR06MB5331 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:feab::82b; envelope-from=y-koj@outlook.jp; helo=APC01-SG2-obe.outbound.protection.outlook.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_FROM=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1680196479977100007 Content-Type: text/plain; charset="utf-8" strerror() is not guaranteed to be thread-safe as described in (https://gitlab.com/qemu-project/qemu/-/issues/416). This commit changes files under /target/i386 that call strerror() to call the safer qemu_strerror(). Signed-off-by: Yohei Kojima --- target/i386/kvm/kvm.c | 49 ++++++++++++++++--------------- target/i386/kvm/xen-emu.c | 7 +++-- target/i386/nvmm/nvmm-accel-ops.c | 2 +- target/i386/sev.c | 5 ++-- target/i386/whpx/whpx-accel-ops.c | 2 +- 5 files changed, 35 insertions(+), 30 deletions(-) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index de531842f6..b31810f108 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -41,6 +41,7 @@ #include "qemu/main-loop.h" #include "qemu/ratelimit.h" #include "qemu/config-file.h" +#include "qemu/cutils.h" #include "qemu/error-report.h" #include "qemu/memalign.h" #include "hw/i386/x86.h" @@ -275,7 +276,7 @@ static struct kvm_cpuid2 *try_get_cpuid(KVMState *s, in= t max) return NULL; } else { fprintf(stderr, "KVM_GET_SUPPORTED_CPUID failed: %s\n", - strerror(-r)); + qemu_strerror(-r)); exit(1); } } @@ -519,7 +520,7 @@ uint64_t kvm_arch_get_supported_msr_feature(KVMState *s= , uint32_t index) ret =3D kvm_ioctl(s, KVM_GET_MSRS, &msr_data); if (ret !=3D 1) { error_report("KVM get MSR (index=3D0x%x) feature failed, %s", - index, strerror(-ret)); + index, qemu_strerror(-ret)); exit(1); } =20 @@ -1055,7 +1056,7 @@ static struct kvm_cpuid2 *try_get_hv_cpuid(CPUState *= cs, int max, return NULL; } else { fprintf(stderr, "KVM_GET_SUPPORTED_HV_CPUID failed: %s\n", - strerror(-r)); + qemu_strerror(-r)); exit(1); } } @@ -1642,7 +1643,7 @@ static int hyperv_init_vcpu(X86CPU *cpu) ret =3D kvm_vcpu_enable_cap(cs, synic_cap, 0); if (ret < 0) { error_report("failed to turn on HyperV SynIC in KVM: %s", - strerror(-ret)); + qemu_strerror(-ret)); return ret; } =20 @@ -1650,7 +1651,7 @@ static int hyperv_init_vcpu(X86CPU *cpu) ret =3D hyperv_x86_synic_add(cpu); if (ret < 0) { error_report("failed to create HyperV SynIC: %s", - strerror(-ret)); + qemu_strerror(-ret)); return ret; } } @@ -1689,7 +1690,7 @@ static int hyperv_init_vcpu(X86CPU *cpu) ret =3D kvm_vcpu_enable_cap(cs, KVM_CAP_HYPERV_ENFORCE_CPUID, 0, 1= ); if (ret < 0) { error_report("failed to enable KVM_CAP_HYPERV_ENFORCE_CPUID: %= s", - strerror(-ret)); + qemu_strerror(-ret)); return ret; } } @@ -1918,7 +1919,7 @@ int kvm_arch_init_vcpu(CPUState *cs) if (r < 0) { fprintf(stderr, "failed to enable KVM_CAP_ENFORCE_PV_FEATURE_CPUID: %s= ", - strerror(-r)); + qemu_strerror(-r)); abort(); } } @@ -2156,7 +2157,8 @@ int kvm_arch_init_vcpu(CPUState *cs) =20 ret =3D kvm_get_mce_cap_supported(cs->kvm_state, &mcg_cap, &banks); if (ret < 0) { - fprintf(stderr, "kvm_get_mce_cap_supported: %s", strerror(-ret= )); + fprintf(stderr, "kvm_get_mce_cap_supported: %s", + qemu_strerror(-ret)); return ret; } =20 @@ -2179,7 +2181,7 @@ int kvm_arch_init_vcpu(CPUState *cs) env->mcg_cap &=3D mcg_cap | MCG_CAP_BANKS_MASK; ret =3D kvm_vcpu_ioctl(cs, KVM_X86_SETUP_MCE, &env->mcg_cap); if (ret < 0) { - fprintf(stderr, "KVM_X86_SETUP_MCE: %s", strerror(-ret)); + fprintf(stderr, "KVM_X86_SETUP_MCE: %s", qemu_strerror(-ret)); return ret; } } @@ -2354,7 +2356,7 @@ static int kvm_get_supported_feature_msrs(KVMState *s) ret =3D kvm_ioctl(s, KVM_GET_MSR_FEATURE_INDEX_LIST, &msr_list); if (ret < 0 && ret !=3D -E2BIG) { error_report("Fetch KVM feature MSR list failed: %s", - strerror(-ret)); + qemu_strerror(-ret)); return ret; } =20 @@ -2367,7 +2369,7 @@ static int kvm_get_supported_feature_msrs(KVMState *s) =20 if (ret < 0) { error_report("Fetch KVM feature MSR list failed: %s", - strerror(-ret)); + qemu_strerror(-ret)); g_free(kvm_feature_msrs); kvm_feature_msrs =3D NULL; return ret; @@ -2595,7 +2597,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) ret =3D kvm_vm_enable_cap(s, KVM_CAP_EXCEPTION_PAYLOAD, 0, true); if (ret < 0) { error_report("kvm: Failed to enable exception payload cap: %s", - strerror(-ret)); + qemu_strerror(-ret)); return ret; } } @@ -2605,7 +2607,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) ret =3D kvm_vm_enable_cap(s, KVM_CAP_X86_TRIPLE_FAULT_EVENT, 0, tr= ue); if (ret < 0) { error_report("kvm: Failed to enable triple fault event cap: %s= ", - strerror(-ret)); + qemu_strerror(-ret)); return ret; } } @@ -2707,7 +2709,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) disable_exits); if (ret < 0) { error_report("kvm: guest stopping CPU not supported: %s", - strerror(-ret)); + qemu_strerror(-ret)); } } =20 @@ -2724,7 +2726,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) KVM_BUS_LOCK_DETECTION_EXIT); if (ret < 0) { error_report("kvm: Failed to enable bus lock detection cap= : %s", - strerror(-ret)); + qemu_strerror(-ret)); return ret; } ratelimit_init(&bus_lock_ratelimit_ctrl); @@ -2743,7 +2745,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) notify_window_flags); if (ret < 0) { error_report("kvm: Failed to enable notify vmexit cap: %s", - strerror(-ret)); + qemu_strerror(-ret)); return ret; } } @@ -2754,7 +2756,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) KVM_MSR_EXIT_REASON_FILTER); if (ret) { error_report("Could not enable user space MSRs: %s", - strerror(-ret)); + qemu_strerror(-ret)); exit(1); } =20 @@ -2762,7 +2764,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) kvm_rdmsr_core_thread_count, NULL); if (!r) { error_report("Could not install MSR_CORE_THREAD_COUNT handler:= %s", - strerror(-ret)); + qemu_strerror(-ret)); exit(1); } } @@ -4889,7 +4891,7 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *= run) ret =3D kvm_vcpu_ioctl(cpu, KVM_NMI); if (ret < 0) { fprintf(stderr, "KVM: injection failed, NMI lost (%s)\n", - strerror(-ret)); + qemu_strerror(-ret)); } } if (cpu->interrupt_request & CPU_INTERRUPT_SMI) { @@ -4900,7 +4902,7 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *= run) ret =3D kvm_vcpu_ioctl(cpu, KVM_SMI); if (ret < 0) { fprintf(stderr, "KVM: injection failed, SMI lost (%s)\n", - strerror(-ret)); + qemu_strerror(-ret)); } } } @@ -4941,7 +4943,7 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *= run) if (ret < 0) { fprintf(stderr, "KVM: injection failed, interrupt lost (%s)\n", - strerror(-ret)); + qemu_strerror(-ret)); } } } @@ -5414,7 +5416,8 @@ static bool __kvm_enable_sgx_provisioning(KVMState *s) =20 ret =3D kvm_vm_enable_cap(s, KVM_CAP_SGX_ATTRIBUTE, 0, fd); if (ret) { - error_report("Could not enable SGX PROVISIONKEY: %s", strerror(-re= t)); + error_report("Could not enable SGX PROVISIONKEY: %s", + qemu_strerror(-ret)); exit(1); } close(fd); @@ -5580,7 +5583,7 @@ int kvm_arch_irqchip_create(KVMState *s) ret =3D kvm_vm_enable_cap(s, KVM_CAP_SPLIT_IRQCHIP, 0, 24); if (ret) { error_report("Could not enable split irqchip mode: %s", - strerror(-ret)); + qemu_strerror(-ret)); exit(1); } else { DPRINTF("Enabled KVM_CAP_SPLIT_IRQCHIP\n"); diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c index d7c7eb8d9c..f7837ff95a 100644 --- a/target/i386/kvm/xen-emu.c +++ b/target/i386/kvm/xen-emu.c @@ -12,6 +12,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qemu/main-loop.h" +#include "qemu/cutils.h" #include "qemu/error-report.h" #include "hw/xen/xen.h" #include "sysemu/kvm_int.h" @@ -135,7 +136,7 @@ int kvm_xen_init(KVMState *s, uint32_t hypercall_msr) ret =3D kvm_vm_ioctl(s, KVM_XEN_HVM_CONFIG, &cfg); if (ret < 0) { error_report("kvm: Failed to enable Xen HVM support: %s", - strerror(-ret)); + qemu_strerror(-ret)); return ret; } =20 @@ -209,7 +210,7 @@ int kvm_xen_init_vcpu(CPUState *cs) err =3D kvm_vcpu_ioctl(cs, KVM_XEN_VCPU_SET_ATTR, &va); if (err) { error_report("kvm: Failed to set Xen vCPU ID attribute: %s", - strerror(-err)); + qemu_strerror(-err)); return err; } } @@ -964,7 +965,7 @@ static uint64_t kvm_get_current_ns(void) =20 ret =3D kvm_vm_ioctl(kvm_state, KVM_GET_CLOCK, &data); if (ret < 0) { - fprintf(stderr, "KVM_GET_CLOCK failed: %s\n", strerror(ret)); + fprintf(stderr, "KVM_GET_CLOCK failed: %s\n", qemu_strerror(ret)); abort(); } =20 diff --git a/target/i386/nvmm/nvmm-accel-ops.c b/target/i386/nvmm/nvmm-acce= l-ops.c index 6c46101ac1..97d9daacea 100644 --- a/target/i386/nvmm/nvmm-accel-ops.c +++ b/target/i386/nvmm/nvmm-accel-ops.c @@ -32,7 +32,7 @@ static void *qemu_nvmm_cpu_thread_fn(void *arg) =20 r =3D nvmm_init_vcpu(cpu); if (r < 0) { - fprintf(stderr, "nvmm_init_vcpu failed: %s\n", strerror(-r)); + fprintf(stderr, "nvmm_init_vcpu failed: %s\n", qemu_strerror(-r)); exit(1); } =20 diff --git a/target/i386/sev.c b/target/i386/sev.c index 859e06f6ad..9f19fc5469 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -38,6 +38,7 @@ #include "exec/confidential-guest-support.h" #include "hw/i386/pc.h" #include "exec/address-spaces.h" +#include "qemu/cutils.h" =20 #define TYPE_SEV_GUEST "sev-guest" OBJECT_DECLARE_SIMPLE_TYPE(SevGuestState, SEV_GUEST) @@ -247,7 +248,7 @@ sev_ram_block_added(RAMBlockNotifier *n, void *host, si= ze_t size, r =3D kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_REG_REGION, &range); if (r) { error_report("%s: failed to register region (%p+%#zx) error '%s'", - __func__, host, max_size, strerror(errno)); + __func__, host, max_size, qemu_strerror(errno)); exit(1); } } @@ -948,7 +949,7 @@ int sev_kvm_init(ConfidentialGuestSupport *cgs, Error *= *errp) sev->sev_fd =3D open(devname, O_RDWR); if (sev->sev_fd < 0) { error_setg(errp, "%s: Failed to open %s '%s'", __func__, - devname, strerror(errno)); + devname, qemu_strerror(errno)); g_free(devname); goto err; } diff --git a/target/i386/whpx/whpx-accel-ops.c b/target/i386/whpx/whpx-acce= l-ops.c index e8dc4b3a47..bf16c8e643 100644 --- a/target/i386/whpx/whpx-accel-ops.c +++ b/target/i386/whpx/whpx-accel-ops.c @@ -32,7 +32,7 @@ static void *whpx_cpu_thread_fn(void *arg) =20 r =3D whpx_init_vcpu(cpu); if (r < 0) { - fprintf(stderr, "whpx_init_vcpu failed: %s\n", strerror(-r)); + fprintf(stderr, "whpx_init_vcpu failed: %s\n", qemu_strerror(-r)); exit(1); } =20 --=20 2.39.2