From nobody Sat Oct 10 22:44:56 2026 X-Original-To: dev-commits-src-main@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 4j2JhT0dDRz6vyMl for ; Sat, 10 Oct 2026 22:44:57 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4j2JhS57kTz4gd3 for ; Sat, 10 Oct 2026 22:44:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791672296; 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=lD89EaZx5KiX3Y/ey9SVM1XgPBX94l0toup+x388NiE=; b=kVOVPYZSW2eIkFqCUBUZpKw8kru2F1h3KIm5WM9fN19vprLzbM4S9K8JvdIKGGwpqrfJJx /TEyJhJTRXboFBquVX0++JhQnIaGk6w0Q+OB4jAuN7DA9fMSH8wdBioI5wt+q4KRvvib91 AO9hed/4njgJ4cE4UBFq01eUZaTSO9IWPWt8H2NkCCJkGy/9wydTiCTKNpdGapJO5RYv8e NEto5WapxHzGqwAMdNXzlrX2zm9FRKxvqOFFxSEvKIHVe+07DumRtpo3M5Emp+2bjoxR7D t/EFQTUdKqinUOMd+jHfltQSqA0bg6pppJxbkDiOg1bm5ifa8/5Vnp0e8cHt9g== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791672296; b=Xcpn5adZ63fQrEAddGxex+mbUJTGdxo3cFpc+D03yNFW1Pj6Jbc4KhS1NM96A3xXiB0Ibu rAPWv3YBXrg7HG2P4gPlrnS65d9E98/IlChQ8WMD7db7RUi+I9pV4RsutUY0QnIi/J4Ujy 5pFaNrm+IREgmGpt+G/7je71QcvTQ5vSlwsJcFoZnugaEle+TbeA+DbU/8xBZSiNVjnvJt cR5lkbJA9SE9mxbPT756o3v4uiVa5Zt7ah+H81GI9k4sUop2gbjAwuoDFcQebq0plhCP7O Id0ZjpDWH+LHXvc+tzqBNv5Ar0bi545RyyuLbMASC+8YfY4GaOeN0Gde2nuEYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791672296; 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=lD89EaZx5KiX3Y/ey9SVM1XgPBX94l0toup+x388NiE=; b=sdAr6DCmEzYZNmkZumkDNS2Eoa9+4mrwdX0mgtmjxMsvbvpC6zotu3KyNCx434lRYTwDUQ KCq/Yvd+N4sjsmgo10FujURh/1pvD+c5+tnBuJVj8wd5sMkK4oGliqyO7sgAJsSWmv/cdi omsPmZ5W0ThzVjD0Bz9NrrtgVZm6j2CZHq6Dk1vQztmds8qdG98jLkdQzxU3DGSAzW4ZX5 VQv9OLVsqXJpGb7W9CLeO6NhW+EbK64CP6EP7KhIoJ2diCTEbqOIrIv4iEv03mYpGWguyp rV7jCYUGTHGKeLmwR1rjoJ2i/O0SP9vEIOjcgjYg4oR1xjWBg9MPWn7V6Ht2tg== 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 4j2JhS44tJz1Cm1 for ; Sat, 10 Oct 2026 22:44:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1bfb8 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 10 Oct 2026 22:44:56 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dimitry Andric Subject: git: a3fbf20c0558 - main - Merge commit a5fa4dba6e2e from llvm-project (by PiJoules): List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: Commit messages for the main branch 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/main X-Git-Reftype: branch X-Git-Commit: a3fbf20c0558ee3c2b88adc0c944e66d074cab7b Auto-Submitted: auto-generated Date: Sat, 10 Oct 2026 22:44:56 +0000 Message-Id: <6acabfe8.1bfb8.18366a8c@gitrepo.freebsd.org> The branch main has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=a3fbf20c0558ee3c2b88adc0c944e66d074cab7b commit a3fbf20c0558ee3c2b88adc0c944e66d074cab7b Author: Dimitry Andric AuthorDate: 2026-10-10 21:47:47 +0000 Commit: Dimitry Andric CommitDate: 2026-10-10 22:44:17 +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 --- .../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);