From nobody Sat Oct 17 10:21:37 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 4j6HsZ2Csfz6vpx3 for ; Sat, 17 Oct 2026 10:21:38 +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 4j6HsZ0CmKz4ZcQ for ; Sat, 17 Oct 2026 10:21:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792232498; 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=wDjPHwj7bMOTOnzTK1ZW1G8lUjHW/ol0gkUVuuR0ufY=; b=jRjwrHxbJVtuxmFvSG0N2q730sRll2cqJa40gRUBgpKfVl09s5IIp3bDn3Kjg4AS0OvAc+ uKVeta/SVaJjLd+VozELWQt2TDmx2Fmmx5JziOOQEtbACv7NaFcUsmrmqX8YiERSSYCMtf MrvLPqxVk5r9g5PmBOPepVZQ53ENKcrfgyLqmHuqbGk9b5/4V0z+sYr1f/xm4XRuyRBkZm IQZwAQGW9h09mo63VlQGkrxbv+Gm/3Cxm1JHhdLr0tc+0oZ4dmWfYgvb/zm1LRvFfYkymG fj3r40iVGQwfY2pkgP+649EncXcjbnwR/0kYZDK6T8CMKSuQOjr5zL5ulgkbvQ== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1792232498; b=TD5+MDrnk9sPHJ+LdWty4DXUzNshlgLcZiMU/OSDXQDAdWSqzTt4LWcxHO5RSmCLR28gkP Y7SmKSNfthVXXKgmoHQwz82JegdCgYn+/Ni/j1NuyujmLrQHDJb/cXOOX1uPCqQi1lbIOG TFTeWL1l0OlJRPkBIkaEyx7RxTons/4g6q+xKQvOY9zeaZWqolkQBCNuv9t/j8DZOHZfGT 1iek4q297ie+Xus+yWaPRWJyRLR1ijymNlL6RkSdC5zdBP14d6veFYf0OC4VpmSs0GvK0v auwAzIdQ3QdukMoS64bW7jXBYnw5S/c98gYywytDZZeCWZU2z5k8c4lvBWlCDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792232498; 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=wDjPHwj7bMOTOnzTK1ZW1G8lUjHW/ol0gkUVuuR0ufY=; b=C4Xr2+P1SkjdlyaPM8fIAU8FrsyIx/JMSsO5KrsERcI1fcRaz6lpEghswvVwvZ37KxiRRE tvQpPLnwtvRfnJGospWG7sjWNNkC+XEjptEtC/HZL4RbJvmnrY6MB5Eh501Df4BIB8ycSk RiKgWUCglJq3mdunuPVxDhp8VDFjlMg4xxPjuC9iyE3PTudKi1NWkWDO+u5zBVCJANE23R x6hL0+ZxjaaHQc9Q1q7Ng4KzFinmea1/RlSlhGKA2s3B7N+u65hGqK6ZSCYE0m9E44gfYc VyH3dq3h4y1sG9Eh4SBlsD4F5Od8/T6YeAZ+cPYQpNcHuueOTJKRCVVhLMsV8Q== 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 4j6HsY6d4dz11rM for ; Sat, 17 Oct 2026 10:21:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 42237 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 17 Oct 2026 10:21:37 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dimitry Andric Subject: git: d526521ef519 - stable/15 - 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/15 X-Git-Reftype: branch X-Git-Commit: d526521ef519b15bc5f4730d73023c9748082993 Auto-Submitted: auto-generated Date: Sat, 17 Oct 2026 10:21:37 +0000 Message-Id: <6ad34c31.42237.6bfb84f9@gitrepo.freebsd.org> The branch stable/15 has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=d526521ef519b15bc5f4730d73023c9748082993 commit d526521ef519b15bc5f4730d73023c9748082993 Author: Dimitry Andric AuthorDate: 2026-10-10 21:47:47 +0000 Commit: Dimitry Andric CommitDate: 2026-10-17 10:21:07 +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);