From nobody Sat Oct 29 15:11:19 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4N02tc1FK3z4g3rS; Sat, 29 Oct 2022 15:11:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4N02tc0mdYz3lQZ; Sat, 29 Oct 2022 15:11:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1667056280; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=edav94+gNa2rsIh/yCSdz9iXUBmvgPZz6+7giY/6t2g=; b=W8oiKL3pUp55BXSioULHLaSj3kSWzsX6MHrqDVqT0PsknHzHFuQKkU3ydgv8Fmvg2ObX0/ bh64XyBwWGNpJ92Onwy0onPhZOoAEqjIdmH6I2f2JldR6KfelnBKrRaicDsWkxl53hum+7 TyyfCjLy1Qv0mboN72sI3wrZGRcY8/mZgMKMIkanwMiog+ZDO+AtETCq0ebGC42mtWbK26 ZYBmGqYFJyNOJJsSraRZV0Xc4FvkGU3dXTCYlV4KEInl3LTwe+vwhrxYDu2lgVl4TDOMAX LsR3HnlUzxbgFImcKsDZuw8Y2B6KZubMIIK/NFh01dMWdpoZtoRzMOn/EO539Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4N02tb6fLczMRT; Sat, 29 Oct 2022 15:11:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 29TFBJJ6059875; Sat, 29 Oct 2022 15:11:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 29TFBJAf059860; Sat, 29 Oct 2022 15:11:19 GMT (envelope-from git) Date: Sat, 29 Oct 2022 15:11:19 GMT Message-Id: <202210291511.29TFBJAf059860@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 1f6b6cf1774c - main - atomic: Intercept atomic_(load|store)_bool for kernel sanitizers List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1f6b6cf1774c4f173df1cde3e5cff459f340c95f Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1667056280; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=edav94+gNa2rsIh/yCSdz9iXUBmvgPZz6+7giY/6t2g=; b=SfdGWF6vCVtect7Qpv0F289aKxd0Q/jbGhleXkLnLBAZVRtYzZzbBIi2+gi50JhpgS1VG+ qdN03sxN1knPJYJ3ChjoevNKoAlzMPreDk2eMcbvjeYjG2Q+Myreo/AlaEUEqNQXQ7GP7q grLypTRSQ7LYSWWPjC0LAuriLv23PHNaK55tw8ycXSwi/E/MYIQpqeAGf8ah1HO8LqSfpd LV6rwBuPPv4OsLtSAytIukkuu1+YW62JeR+5kks+zsE2Vn2XCpnJ+ksQUFHQPGJGsvOiGf pgf60oF4FeKvopgDpyDoY8Q9K7vxoYlVO1rUv7aRzLyYEv69+qVoW9ARswaHfg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1667056280; a=rsa-sha256; cv=none; b=fcfs/36X79ElELMkA+altiBpqkRBEbuWwR11bEh3lkuudX9piVRt6TdT+T73C7Z4ehkAj4 8dBT2Pb+AajMIZdcy4+Tu0cIzP08WxRs6wffp9tf8VLdwCWSvLK9n/FJDtFGtDt7lc9L+a SBfD3fKCvSU6I0PCXpUZC0uaLpNcjkbewVxXoIAfQ/jeoYVelvobk65gKNVs1DyGrSYKvP X4pdFOf3CrjaB4krK128tJDa/5zrfkq1eWcz0IIlDp4XTs6Zbeq3BxJIeu8vnjIiobIUBs ajDKkM2G1bABZMxi1RJD0XL5YvoyA1fUAmzsbdSLMqK7FU/W363m4X4e/y5Hhg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=1f6b6cf1774c4f173df1cde3e5cff459f340c95f commit 1f6b6cf1774c4f173df1cde3e5cff459f340c95f Author: Mark Johnston AuthorDate: 2022-10-29 15:02:02 +0000 Commit: Mark Johnston CommitDate: 2022-10-29 15:10:58 +0000 atomic: Intercept atomic_(load|store)_bool for kernel sanitizers Fixes: 2bed73739aac ("atomic: Add plain atomic_load/store_bool()") --- sys/kern/subr_asan.c | 2 ++ sys/kern/subr_csan.c | 3 +++ sys/kern/subr_msan.c | 2 ++ sys/sys/atomic_san.h | 18 ++++++++++++++++-- 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/sys/kern/subr_asan.c b/sys/kern/subr_asan.c index e727c1d03dd7..8a70b525648b 100644 --- a/sys/kern/subr_asan.c +++ b/sys/kern/subr_asan.c @@ -843,6 +843,7 @@ ASAN_ATOMIC_FUNC_FCMPSET(int, u_int); ASAN_ATOMIC_FUNC_FCMPSET(long, u_long); ASAN_ATOMIC_FUNC_FCMPSET(ptr, uintptr_t); +_ASAN_ATOMIC_FUNC_LOAD(bool, bool); ASAN_ATOMIC_FUNC_LOAD(8, uint8_t); ASAN_ATOMIC_FUNC_LOAD(16, uint16_t); ASAN_ATOMIC_FUNC_LOAD(32, uint32_t); @@ -853,6 +854,7 @@ ASAN_ATOMIC_FUNC_LOAD(int, u_int); ASAN_ATOMIC_FUNC_LOAD(long, u_long); ASAN_ATOMIC_FUNC_LOAD(ptr, uintptr_t); +_ASAN_ATOMIC_FUNC_STORE(bool, bool); ASAN_ATOMIC_FUNC_STORE(8, uint8_t); ASAN_ATOMIC_FUNC_STORE(16, uint16_t); ASAN_ATOMIC_FUNC_STORE(32, uint32_t); diff --git a/sys/kern/subr_csan.c b/sys/kern/subr_csan.c index 1ae8dd614222..8723777ce84b 100644 --- a/sys/kern/subr_csan.c +++ b/sys/kern/subr_csan.c @@ -520,6 +520,9 @@ kcsan_copyout(const void *kaddr, void *uaddr, size_t len) return (atomic_testandset_##name(ptr, val)); \ } +_CSAN_ATOMIC_FUNC_LOAD(bool, bool) +_CSAN_ATOMIC_FUNC_STORE(bool, bool) + CSAN_ATOMIC_FUNC_ADD(8, uint8_t) CSAN_ATOMIC_FUNC_CLEAR(8, uint8_t) CSAN_ATOMIC_FUNC_CMPSET(8, uint8_t) diff --git a/sys/kern/subr_msan.c b/sys/kern/subr_msan.c index 816f38fc74cb..236693cfd841 100644 --- a/sys/kern/subr_msan.c +++ b/sys/kern/subr_msan.c @@ -1375,6 +1375,7 @@ MSAN_ATOMIC_FUNC_FCMPSET(int, u_int); MSAN_ATOMIC_FUNC_FCMPSET(long, u_long); MSAN_ATOMIC_FUNC_FCMPSET(ptr, uintptr_t); +_MSAN_ATOMIC_FUNC_LOAD(bool, bool); MSAN_ATOMIC_FUNC_LOAD(8, uint8_t); MSAN_ATOMIC_FUNC_LOAD(16, uint16_t); MSAN_ATOMIC_FUNC_LOAD(32, uint32_t); @@ -1385,6 +1386,7 @@ MSAN_ATOMIC_FUNC_LOAD(int, u_int); MSAN_ATOMIC_FUNC_LOAD(long, u_long); MSAN_ATOMIC_FUNC_LOAD(ptr, uintptr_t); +_MSAN_ATOMIC_FUNC_STORE(bool, bool); MSAN_ATOMIC_FUNC_STORE(8, uint8_t); MSAN_ATOMIC_FUNC_STORE(16, uint16_t); MSAN_ATOMIC_FUNC_STORE(32, uint32_t); diff --git a/sys/sys/atomic_san.h b/sys/sys/atomic_san.h index b0790962d8bd..1f7d615ebd11 100644 --- a/sys/sys/atomic_san.h +++ b/sys/sys/atomic_san.h @@ -65,11 +65,15 @@ type sp##_atomic_readandclear_##name(volatile type *) #define ATOMIC_SAN_LOAD(sp, name, type) \ - type sp##_atomic_load_##name(volatile type *); \ + type sp##_atomic_load_##name(volatile type *) + +#define ATOMIC_SAN_LOAD_ACQ(sp, name, type) \ type sp##_atomic_load_acq_##name(volatile type *) #define ATOMIC_SAN_STORE(sp, name, type) \ - void sp##_atomic_store_##name(volatile type *, type); \ + void sp##_atomic_store_##name(volatile type *, type) + +#define ATOMIC_SAN_STORE_REL(sp, name, type) \ void sp##_atomic_store_rel_##name(volatile type *, type) #define ATOMIC_SAN_TEST(sp, op, name, type) \ @@ -86,6 +90,10 @@ #define ATOMIC_SAN_THREAD_FENCE(sp) \ _ATOMIC_SAN_THREAD_FENCE(sp) +#define ATOMIC_SAN_LOAD_STORE(sp, name, type) \ + ATOMIC_SAN_LOAD(sp, name, type); \ + ATOMIC_SAN_STORE(sp, name, type) + #define _ATOMIC_SAN_FUNCS(sp, name, type) \ ATOMIC_SAN_FUNC_1(sp, add, name, type); \ ATOMIC_SAN_FUNC_1(sp, clear, name, type); \ @@ -93,10 +101,12 @@ ATOMIC_SAN_FCMPSET(sp, name, type); \ ATOMIC_SAN_READ(sp, fetchadd, name, type); \ ATOMIC_SAN_LOAD(sp, name, type); \ + ATOMIC_SAN_LOAD_ACQ(sp, name, type); \ ATOMIC_SAN_READANDCLEAR(sp, name, type); \ ATOMIC_SAN_FUNC_1(sp, set, name, type); \ ATOMIC_SAN_FUNC_1(sp, subtract, name, type); \ ATOMIC_SAN_STORE(sp, name, type); \ + ATOMIC_SAN_STORE_REL(sp, name, type); \ ATOMIC_SAN_READ(sp, swap, name, type); \ ATOMIC_SAN_TEST(sp, testandclear, name, type); \ ATOMIC_SAN_TEST(sp, testandset, name, type) @@ -113,6 +123,7 @@ ATOMIC_SAN_FUNCS(8, uint8_t); ATOMIC_SAN_FUNCS(16, uint16_t); ATOMIC_SAN_FUNCS(32, uint32_t); ATOMIC_SAN_FUNCS(64, uint64_t); +ATOMIC_SAN_LOAD_STORE(SAN_INTERCEPTOR_PREFIX, bool, bool); ATOMIC_SAN_THREAD_FENCE(SAN_INTERCEPTOR_PREFIX); #ifndef SAN_RUNTIME @@ -125,6 +136,9 @@ ATOMIC_SAN_THREAD_FENCE(SAN_INTERCEPTOR_PREFIX); #define ATOMIC_SAN(func) \ __CONCAT(SAN_INTERCEPTOR_PREFIX, __CONCAT(_atomic_, func)) +#define atomic_load_bool ATOMIC_SAN(load_bool) +#define atomic_store_bool ATOMIC_SAN(store_bool) + #define atomic_add_char ATOMIC_SAN(add_char) #define atomic_add_acq_char ATOMIC_SAN(add_acq_char) #define atomic_add_rel_char ATOMIC_SAN(add_rel_char)