From nobody Sat Oct 17 10:21:54 2026 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 4j6Hsv18cdz6vqPd for ; Sat, 17 Oct 2026 10:21:55 +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) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4j6Hst6pflz4bWF for ; Sat, 17 Oct 2026 10:21:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792232515; 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=uGkiPkd1pqgook7b40/FGsZVxPvMUGToZ8y99dOfJfA=; b=vJMBC2Ubyb9nS55U0siBe1rq53NmFvDJWOFmrHQQxJl7x2lvwVnKq+xgjGMKnuqS+qPphU Wqm0i7ZR8OD7jjs+pQMsjZTu1XS22jSLMzPZK+rcHEMr9Fl6hLfm8mDLX3vN/ontzGh19S /biO1J0C0QGpyRyms8v01SoKKYH9ELhRwT+gOJeo4gaNvwCWNIbGklRVr+awGYjWRqc8pH JBBwp3jJn8vH5otD69WXXrcqgiFn/ex65v0jbYlJvnsdqb9wevKc2Eutx5FeBlf3ssmUug GnAHsLQ90ODqGPK7JYEMt2SCLHddbmw67wMOCt08w61U+RkqMnHnGPqC8LkknA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1792232515; b=qzjCVV1Wu4zoPWVOLFFs6BcstTDfUY/2U/QR0ca4cHnmvk3DnlVu/K5nkA07NMcJCAVPPC OUJ1PBCESfpOwIymYDV7nnh/4OZeGrkUIfzx/bUSpsrZTvvF+6vPJLZDKO32V6P4pigxXe JRjyetA3g5L4C9vGDdhuVN05shqkJODWMFIeLHBKmycENGBXqB7FHXg9wykVXZQ5TRTyh1 sFutv/NU1EHNSg56dU1B/g/m1IDsd+qMRSJ+9/CRZaGJHhgzzTUmDR8TB8veZ5ellVlKzq ojhW7J8DKVaB7qgorPlVJLW9KGXSKae+BiKcg8lZuJXVGHDnsvB6k+IsH6sZvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792232515; 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=uGkiPkd1pqgook7b40/FGsZVxPvMUGToZ8y99dOfJfA=; b=o7wKKow/jH+Z4Jcjg2qV1PhRW754p7jSznhY4zELWKaSQwJRhwEJ9oWQ8aqNqYRwAQMrZX unACqYn6Zua/NQiaBrQleR1BkwgtGGrS09u9hOjnJiIe9Dex/8PH6qTFiJ1gEuhRmpHNpL GKXBcXtEqWWTawat8CRPANG/fOCAVjy5AjgcIkqN6NfDMSVsRVbdteHbfRBXSJocEJ34fi wvtqlawjnSzovteDweNOxdEaLkElvhRhO9+ho8Z0Tw/wFditJlFkQ7dedeHHj88M/l38a1 Zcpv0cSzyKdCXSwDm6bSFnsMQNzjIvaqIAViEt/kqgAux3pa5DfrqFCk82rs8A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4j6Hst6H7Bz11d0 for ; Sat, 17 Oct 2026 10:21:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 4248a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 17 Oct 2026 10:21:54 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dimitry Andric Subject: git: 025393b094fd - stable/14 - Merge commit a5fa4dba6e2e from llvm-project (by PiJoules): List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: Commit messages for all branches of the src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 025393b094fdd1d68f6544c8d41eaf66d2b79847 Auto-Submitted: auto-generated Date: Sat, 17 Oct 2026 10:21:54 +0000 Message-Id: <6ad34c42.4248a.5a0a25c8@gitrepo.freebsd.org> The branch stable/14 has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=025393b094fdd1d68f6544c8d41eaf66d2b79847 commit 025393b094fdd1d68f6544c8d41eaf66d2b79847 Author: Dimitry Andric AuthorDate: 2026-10-10 21:47:47 +0000 Commit: Dimitry Andric CommitDate: 2026-10-17 10:21:19 +0000 Merge commit a5fa4dba6e2e from llvm-project (by PiJoules): [compiler-rt] Add interceptors for free_[aligned_]sized for asan+hwasan (#189109) This avoids a jemalloc assertion when running sanitized applications against glib, which uses free_sized(3). PR: 298943 MFC after: 1 week (cherry picked from commit a3fbf20c0558ee3c2b88adc0c944e66d074cab7b) --- .../compiler-rt/lib/asan/asan_allocator.cpp | 13 +++++++++ .../compiler-rt/lib/asan/asan_allocator.h | 3 ++ .../compiler-rt/lib/asan/asan_malloc_linux.cpp | 22 +++++++++++++++ .../lib/hwasan/hwasan_allocation_functions.cpp | 32 ++++++++++++++++++++++ 4 files changed, 70 insertions(+) diff --git a/contrib/llvm-project/compiler-rt/lib/asan/asan_allocator.cpp b/contrib/llvm-project/compiler-rt/lib/asan/asan_allocator.cpp index 9ebe4d08ec8c..377c6a77f4d0 100644 --- a/contrib/llvm-project/compiler-rt/lib/asan/asan_allocator.cpp +++ b/contrib/llvm-project/compiler-rt/lib/asan/asan_allocator.cpp @@ -1011,6 +1011,19 @@ void asan_free(void *ptr, BufferedStackTrace *stack) { instance.Deallocate(ptr, 0, 0, stack, FROM_MALLOC); } +// TODO: Both the size and alignment arguments of Allocator::Deallocate +// are actually unused when the alloc type is FROM_MALLOC. We should look +// into why this is the case, but for now passing the arguments like so +// is the correct thing to do. +void asan_free_sized(void* ptr, uptr size, BufferedStackTrace* stack) { + instance.Deallocate(ptr, size, /*delete_alignment=*/0, stack, FROM_MALLOC); +} + +void asan_free_aligned_sized(void* ptr, uptr alignment, uptr size, + BufferedStackTrace* stack) { + instance.Deallocate(ptr, size, alignment, stack, FROM_MALLOC); +} + void *asan_malloc(uptr size, BufferedStackTrace *stack) { return SetErrnoOnNull(instance.Allocate(size, 8, stack, FROM_MALLOC, true)); } diff --git a/contrib/llvm-project/compiler-rt/lib/asan/asan_allocator.h b/contrib/llvm-project/compiler-rt/lib/asan/asan_allocator.h index fdf456473fb0..4957c61243fb 100644 --- a/contrib/llvm-project/compiler-rt/lib/asan/asan_allocator.h +++ b/contrib/llvm-project/compiler-rt/lib/asan/asan_allocator.h @@ -272,6 +272,9 @@ struct AsanThreadLocalMallocStorage { void *asan_memalign(uptr alignment, uptr size, BufferedStackTrace *stack); void asan_free(void *ptr, BufferedStackTrace *stack); +void asan_free_sized(void* ptr, uptr size, BufferedStackTrace* stack); +void asan_free_aligned_sized(void* ptr, uptr alignment, uptr size, + BufferedStackTrace* stack); void *asan_malloc(uptr size, BufferedStackTrace *stack); void *asan_calloc(uptr nmemb, uptr size, BufferedStackTrace *stack); diff --git a/contrib/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp b/contrib/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp index add57318785b..ae1bb7617bcc 100644 --- a/contrib/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp +++ b/contrib/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp @@ -61,6 +61,28 @@ INTERCEPTOR(void, cfree, void *ptr) { } #endif // SANITIZER_INTERCEPT_CFREE +# if SANITIZER_INTERCEPT_FREE_SIZED +INTERCEPTOR(void, free_sized, void* ptr, uptr size) { + if (UNLIKELY(!ptr)) + return; + if (DlsymAlloc::PointerIsMine(ptr)) + return DlsymAlloc::Free(ptr); + GET_STACK_TRACE_FREE; + asan_free_sized(ptr, size, &stack); +} +# endif // SANITIZER_INTERCEPT_FREE_SIZED + +# if SANITIZER_INTERCEPT_FREE_ALIGNED_SIZED +INTERCEPTOR(void, free_aligned_sized, void* ptr, uptr alignment, uptr size) { + if (UNLIKELY(!ptr)) + return; + if (DlsymAlloc::PointerIsMine(ptr)) + return DlsymAlloc::Free(ptr); + GET_STACK_TRACE_FREE; + asan_free_aligned_sized(ptr, alignment, size, &stack); +} +# endif // SANITIZER_INTERCEPT_FREE_ALIGNED_SIZED + INTERCEPTOR(void*, malloc, uptr size) { if (DlsymAlloc::Use()) return DlsymAlloc::Allocate(size); diff --git a/contrib/llvm-project/compiler-rt/lib/hwasan/hwasan_allocation_functions.cpp b/contrib/llvm-project/compiler-rt/lib/hwasan/hwasan_allocation_functions.cpp index 25ca0a3b0b68..ee2794f4cfbf 100644 --- a/contrib/llvm-project/compiler-rt/lib/hwasan/hwasan_allocation_functions.cpp +++ b/contrib/llvm-project/compiler-rt/lib/hwasan/hwasan_allocation_functions.cpp @@ -17,6 +17,7 @@ #include "sanitizer_common/sanitizer_allocator_dlsym.h" #include "sanitizer_common/sanitizer_allocator_interface.h" #include "sanitizer_common/sanitizer_mallinfo.h" +#include "sanitizer_common/sanitizer_platform_interceptors.h" using namespace __hwasan; @@ -96,6 +97,30 @@ void __sanitizer_cfree(void *ptr) { hwasan_free(ptr, &stack); } +#if SANITIZER_INTERCEPT_FREE_SIZED +SANITIZER_INTERFACE_ATTRIBUTE +void __sanitizer_free_sized(void* ptr, uptr size) { + if (!ptr) + return; + if (DlsymAlloc::PointerIsMine(ptr)) + return DlsymAlloc::Free(ptr); + GET_MALLOC_STACK_TRACE; + hwasan_free(ptr, &stack); +} +#endif + +#if SANITIZER_INTERCEPT_FREE_ALIGNED_SIZED +SANITIZER_INTERFACE_ATTRIBUTE +void __sanitizer_free_aligned_sized(void* ptr, uptr alignment, uptr size) { + if (!ptr) + return; + if (DlsymAlloc::PointerIsMine(ptr)) + return DlsymAlloc::Free(ptr); + GET_MALLOC_STACK_TRACE; + hwasan_free(ptr, &stack); +} +#endif + SANITIZER_INTERFACE_ATTRIBUTE uptr __sanitizer_malloc_usable_size(const void *ptr) { return __sanitizer_get_allocated_size(ptr); @@ -170,6 +195,13 @@ INTERCEPTOR_ALIAS(void *, aligned_alloc, SIZE_T alignment, SIZE_T size); INTERCEPTOR_ALIAS(void *, __libc_memalign, SIZE_T alignment, SIZE_T size); INTERCEPTOR_ALIAS(void *, valloc, SIZE_T size); INTERCEPTOR_ALIAS(void, free, void *ptr); +# if SANITIZER_INTERCEPT_FREE_SIZED +INTERCEPTOR_ALIAS(void, free_sized, void* ptr, SIZE_T size); +# endif +# if SANITIZER_INTERCEPT_FREE_ALIGNED_SIZED +INTERCEPTOR_ALIAS(void, free_aligned_sized, void* ptr, SIZE_T alignment, + SIZE_T size); +# endif INTERCEPTOR_ALIAS(uptr, malloc_usable_size, const void *ptr); INTERCEPTOR_ALIAS(void *, calloc, SIZE_T nmemb, SIZE_T size); INTERCEPTOR_ALIAS(void *, realloc, void *ptr, SIZE_T size);