From patchwork Fri Aug 23 07:16:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 13774699 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5D684C52D7C for ; Fri, 23 Aug 2024 07:17:21 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.782167.1191631 (Exim 4.92) (envelope-from ) id 1shOXg-0007AL-Uc; Fri, 23 Aug 2024 07:17:04 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 782167.1191631; Fri, 23 Aug 2024 07:17:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1shOXg-0007AE-QQ; Fri, 23 Aug 2024 07:17:04 +0000 Received: by outflank-mailman (input) for mailman id 782167; Fri, 23 Aug 2024 07:17:03 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1shOXf-0007A8-SV for xen-devel@lists.xenproject.org; Fri, 23 Aug 2024 07:17:03 +0000 Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [2a00:1450:4864:20::535]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id b10f11c6-611f-11ef-8776-851b0ebba9a2; Fri, 23 Aug 2024 09:17:01 +0200 (CEST) Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-5befe420fc2so2328256a12.3 for ; Fri, 23 Aug 2024 00:17:01 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a868f28f109sm218007166b.55.2024.08.23.00.17.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 23 Aug 2024 00:17:00 -0700 (PDT) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: b10f11c6-611f-11ef-8776-851b0ebba9a2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1724397421; x=1725002221; darn=lists.xenproject.org; h=content-transfer-encoding:autocrypt:subject:from:cc:to :content-language:user-agent:mime-version:date:message-id:from:to:cc :subject:date:message-id:reply-to; bh=Bz8CLLgWlV/7bck03wIYDrH4mmRVyA4EByfbd2a1BD8=; b=RxtdgcH21nWHYnk7UowmFYA/ewqPLXVW5F6PnjmesaIXb3M5krDemgcwZV9TxKiwVk IT66rXiMTolGYFXWkPdDWWftBX8RA7JMRm6rSDXrpLisFexRj2v7Gc0FCqFjwwXPxBGh 21a5zI9KliGMnON2/44ok2W7ayWYK44gH6FNz1DZPJ75oa6+TRfjLpD6lr40ShKA7otR pl7NLPy6vdillyzczZXwZW0oWFUk3cXFGAviV0x16JzoP3l1+wOp7l3lHMuRD3WUh3pn y5Zoum8IvfjB6x8xU6lqpZAkQaxMtaLJelvgTaUIIPnczfE3cDFIIXDbP4SRQSJHJHIn ad5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724397421; x=1725002221; h=content-transfer-encoding:autocrypt:subject:from:cc:to :content-language:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Bz8CLLgWlV/7bck03wIYDrH4mmRVyA4EByfbd2a1BD8=; b=t2rV3NtceQK7PjG9QNn/vodB5Oc7Cr8U0OwMUM6ZkqAFJ/YmpSzrij1HppcI4ayJcs lgHhZnLqtctmHmmrVrWBAkLfMm5CVaJasN2PspepLXphMvjtsXtJgZBFYAlj+yT/hqHj 1vssVz0KIoTPg4PjCez3sATQ5Uz4foOFEAJiwrDTOmSq9w+HG4bIZsLMdLKGwoShz2hk 9nvt9qmCS5rovh/cwcyZhYE9WfA9ajh5byFK3T6VP5+xI9DBDzYcDAJTWOwx6FfZH5IO yr1qt+UJ/9uSuyenXaYnpYctlfl1+696Pn5JRCy90qB4BekSqn8sdNQPi2tmqrmpq4Fu Z+hw== X-Gm-Message-State: AOJu0YzE/3hMhXdE1N+RXMxC7IlfJ+lxgRE6uZLuwWHSfJZ8h6uCEbwp DkWPv6u03C8y1qIYkLeuDWduXPVcU8CU68m7u3QXaQH6GDPKc9ETEofEL9UG98QHZA1QQmNDaX0 = X-Google-Smtp-Source: AGHT+IG6YXoZYsN7K394mX6/9pAnXMXC5oc1cSLkNpCZpRwHB/KvO3WusqsXipCrDyIjKz3v7yLuNA== X-Received: by 2002:a17:907:e245:b0:a86:85eb:bdd1 with SMTP id a640c23a62f3a-a86a52de2e2mr90380166b.31.1724397420881; Fri, 23 Aug 2024 00:17:00 -0700 (PDT) Message-ID: Date: Fri, 23 Aug 2024 09:16:59 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , =?utf-8?q?Roger_Pau_Monn?= =?utf-8?q?=C3=A9?= From: Jan Beulich Subject: [PATCH] x86emul: drop and avoid use of BUG() Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL Generally it is not a good idea to use BUG() in emulator code. Even for internal flaws we're better off returning errors to callers, rather than crashing the system. Replace the sole remaining use and remove the test / fuzzing harness surrogate. Put in place a declaration pleasing the compiler when finding uses in Xen headers, while at the same time breaking the build (at linking time) in case an active reference would newly appear. Suggested-by: Andrew Cooper Signed-off-by: Jan Beulich Acked-by: Andrew Cooper --- The #undef and override may be going a little too far, but I guess we can revisit this if and when it actually gets in the way. While BUG_ON() references BUG() and is hence covered, we may want to consider to #undef/declare that separately. That way the linker error would make clear which one it is that was referenced. I could use EXPECT() instead of kind of open-coding it, but I don't really like EXPECT(false) or variations thereof. --- a/tools/tests/x86_emulator/x86-emulate.h +++ b/tools/tests/x86_emulator/x86-emulate.h @@ -42,7 +42,6 @@ #include -#define BUG() abort() #define ASSERT assert #define ASSERT_UNREACHABLE() assert(!__LINE__) --- a/xen/arch/x86/x86_emulate/decode.c +++ b/xen/arch/x86/x86_emulate/decode.c @@ -1122,7 +1122,9 @@ int x86emul_decode(struct x86_emulate_st switch ( def_ad_bytes ) { default: - BUG(); /* Shouldn't be possible. */ + ASSERT_UNREACHABLE(); /* Shouldn't be possible. */ + return X86EMUL_UNHANDLEABLE; + case 2: if ( ctxt->regs->eflags & X86_EFLAGS_VM ) break; --- a/xen/arch/x86/x86_emulate/private.h +++ b/xen/arch/x86/x86_emulate/private.h @@ -15,6 +15,9 @@ # include # include +# undef BUG /* Make sure it's not used anywhere here. */ +void BUG(void); + # ifndef CONFIG_HVM # define X86EMUL_NO_FPU # define X86EMUL_NO_MMX