From nobody Sun Apr 6 22:51:11 2025 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 4ZW6yS4q5tz5s8PX; Sun, 06 Apr 2025 22:51:12 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZW6yS2x8qz3KKN; Sun, 06 Apr 2025 22:51:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979872; 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=O9o7Y++KGS6Fg9xEGyARmZkQZT53/a1igPZPYNM9BgI=; b=wu5uxmrZAodvpmozmQTEJq8QmrJE5ibkrJQ/bangJ8zTvjz0Ian3rDKPVBazfzLZHBrUaR 9isB/ysdELotb4sgacrCowLxkIZfZTHsdXvDn9jTw98kZ8x3Y2OQJGvrw0hzpcKh7//Dec RmmrZR/A19/7KykQ95pq7QTegFXWZKyPu1N+Sb0TyQK89GunWlDVaUECodCB1wRnTqJbpu ZRsv8kLDGXbFypF3dlrLfv0c/GWmPSufOdMCILlWMThFEm491zrC+P+xLV6UEVnOhga+su F1g5uSgCtYORwP6AMXNdZ8Zyzd68FtZ59NnJQAFkX63fkuMq+AkdAv6cTGcwXg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743979872; a=rsa-sha256; cv=none; b=sORpsmwYbxVp+sO3qPVefpG2DpqU1Ws2egEtjMZDBKdlLLqhpbfPDnHieovsH8SFcXrbx4 9GUSNmbxZ52drgQxtAmwuNMX96/6m3/YOCW9JTo8XiqDRzIHJ5z9McNs9ZESbw9HODEkk0 4thVkoiwr8UYqD3P0kXAwSs+LVvmByZCyRQLWdsd3y6wpr6JD1RRTJVM1BPhJDRId4sOOa IQY37S/U6rZX02xFzhWoEz9uLR7P0eYnWkyrLIAgrv6jVWoi7RhY2x6OHJF0m/qwZf4rmS 6inQzzkzqp+eLPqNhUL4bQWS73YFWtCoCGZOxdfOhCsxq2LsL8zeyE662KEOGQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743979872; 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=O9o7Y++KGS6Fg9xEGyARmZkQZT53/a1igPZPYNM9BgI=; b=nR7dm5TJHGjLOV7uhv2+5r7+06cQacjAZKKQOSweuZJ64vqI3i1acRk+F7n/VbtlcDvYIR cK1gHseLqtAOG71R4IvXfjAzyBZdNhw0bLpy6zluBpBBzbcECRGhPCQ9172bLiMWPIxwZn Qw/RPOQDeH5kdPOU1gNJQ/E3FtVtXANImCmeEo426Nx7Te0gS6jnXt2NQxR16LjssTgA6P zgQqXiNjqD6Etq8adX+2D1bxzA+kHb5GTQelqvlzwWfWluEJvlkR1A58vt1senNoMalTuD cESNHT0Fzf5DP6icsXDdWorPTNanVcC+huekqQ3N8GwAa3i9l8m3OjQLEgcFsQ== 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 4ZW6yS04mfz579; Sun, 06 Apr 2025 22:51:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 536MpBBZ077118; Sun, 6 Apr 2025 22:51:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 536MpBtB077115; Sun, 6 Apr 2025 22:51:11 GMT (envelope-from git) Date: Sun, 6 Apr 2025 22:51:11 GMT Message-Id: <202504062251.536MpBtB077115@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 43a32f790bc5 - stable/14 - malloc: Fix DEBUG_REDZONE for contigmalloc() 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: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-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/stable/14 X-Git-Reftype: branch X-Git-Commit: 43a32f790bc5c79b1557a14f9540c8cc02ef5028 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=43a32f790bc5c79b1557a14f9540c8cc02ef5028 commit 43a32f790bc5c79b1557a14f9540c8cc02ef5028 Author: Mark Johnston AuthorDate: 2025-03-23 13:42:40 +0000 Commit: Mark Johnston CommitDate: 2025-04-06 13:54:05 +0000 malloc: Fix DEBUG_REDZONE for contigmalloc() When free() was adapted to support allocations originating from contigmalloc(), redzone(9) support was not included. redzone(9) involves adjusting the pointer to freed memory before looking up the slab cookie, so it's not straightforward to make contigmalloc() opt out of redzone support. Thus, augment contigmalloc() to support redzone. Reported by: glebius Tested by: dhw MFC after: 2 weeks Fixes: 9e6544dd6e02 ("malloc(9): extend contigmalloc(9) by a "slab cookie"") (cherry picked from commit 74361d693aec892b01c1553bda7176f8d341b2ff) --- sys/kern/kern_malloc.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/sys/kern/kern_malloc.c b/sys/kern/kern_malloc.c index 3fef90b5fa82..f31fc2a76a07 100644 --- a/sys/kern/kern_malloc.c +++ b/sys/kern/kern_malloc.c @@ -479,11 +479,18 @@ contigmalloc_size(uma_slab_t slab) } void * -contigmalloc(unsigned long size, struct malloc_type *type, int flags, +contigmalloc(unsigned long osize, struct malloc_type *type, int flags, vm_paddr_t low, vm_paddr_t high, unsigned long alignment, vm_paddr_t boundary) { void *ret; + unsigned long size; + +#ifdef DEBUG_REDZONE + size = redzone_size_ntor(osize); +#else + size = osize; +#endif ret = (void *)kmem_alloc_contig(size, flags, low, high, alignment, boundary, VM_MEMATTR_DEFAULT); @@ -491,16 +498,26 @@ contigmalloc(unsigned long size, struct malloc_type *type, int flags, /* Use low bits unused for slab pointers. */ vsetzoneslab((uintptr_t)ret, NULL, CONTIG_MALLOC_SLAB(size)); malloc_type_allocated(type, round_page(size)); +#ifdef DEBUG_REDZONE + ret = redzone_setup(ret, osize); +#endif } return (ret); } void * -contigmalloc_domainset(unsigned long size, struct malloc_type *type, +contigmalloc_domainset(unsigned long osize, struct malloc_type *type, struct domainset *ds, int flags, vm_paddr_t low, vm_paddr_t high, unsigned long alignment, vm_paddr_t boundary) { void *ret; + unsigned long size; + +#ifdef DEBUG_REDZONE + size = redzone_size_ntor(osize); +#else + size = osize; +#endif ret = (void *)kmem_alloc_contig_domainset(ds, size, flags, low, high, alignment, boundary, VM_MEMATTR_DEFAULT); @@ -508,6 +525,9 @@ contigmalloc_domainset(unsigned long size, struct malloc_type *type, /* Use low bits unused for slab pointers. */ vsetzoneslab((uintptr_t)ret, NULL, CONTIG_MALLOC_SLAB(size)); malloc_type_allocated(type, round_page(size)); +#ifdef DEBUG_REDZONE + ret = redzone_setup(ret, osize); +#endif } return (ret); }