From nobody Sun Mar 23 21:06:04 2025 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 4ZLTHd0t2Hz5rpdb; Sun, 23 Mar 2025 21:06:05 +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 4ZLTHc6kzkz3TfQ; Sun, 23 Mar 2025 21:06:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1742763965; 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=FclhPRhhQxXocLejqIwJ7LgOlgZMY/DCWeA59eIPvGk=; b=cii9+jnf1IK0d9A72KyFHVl+kPyyJdtoEcsxDs3kgRj6w6GIFg8kAR0M/XyIMozwNSK2mQ yW0zuGbBUKycbZBJ8P3L96T0BtpCkoc03X2IC8VMhhK1P/ayL9miJD+CowQZ5kuK3CT6un f4Spvl7d3WQuCOPvGQsVx4YUjEYPwvE/LtHMhoMSoAI7Qkn4d4BUyQ5Pr3+uVnjrz/JnEI cq4IKWY/9+OI6vNTBxmlGADfeDCIT66rPJaNobunHFTXgjjrcu+6Hr5pbQxNQWnewrVlUR uT/yPY/yArD0tze5F7cAIDMjoN7J/16Lxzu2YJus5CKkimMgprCXXXFVC0KkQA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1742763965; a=rsa-sha256; cv=none; b=AWYWjFvXiYfDKGqf09qD/oyCLrjLYiF2TFcyOGUT3+HxNO7REku9PBMOrXsQxAfh1IEU1N 6FHO+eLb8waJgaLOAmDSZyLkmMqTKciZKH+pLtjTHL6NeyUHDz41AOnhy4E9HpE6VOEU45 qeItgGzuI7048mvayBqA51POsmaoYyld4vPbjVpg3c4ZRtrgdjxBiqqcKbg4JnbLR3mxeL pK2whsw+IkmzIWVWGSyOMfSdX8lpaGHOXI3q11m1fATebuxCRw+8691juog0jwpKH2yTua Nc/51M4Iftdu6Y5wGTmioPZttUp6XB55kVlu/2tSYt5qZizYZg9Tde7qyoa++g== 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=1742763965; 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=FclhPRhhQxXocLejqIwJ7LgOlgZMY/DCWeA59eIPvGk=; b=TfAL1fC0vVbtA+EtIJQBFa8tnppbCQf0cqh+sP5vRDl9vZLFv0F65cdBQRxWoajOkAC2+p o8yynPzEr65Qqc9x0eKijNBxrD9rpARcbwuaivmuMj8C50QO1jCUoW4Teeowhl8wFlZcna IhZtaGBUGUbDPcc/vA0sbqJsik+zLHN7S4KFn7CW/aAPn6V1TVrl5h/VmcIOShyiJKgZuI MW61kL0uR1geV/Bt8sH8hwmUcg/+Ub6VaZNftQQOe9GUp1h8cvstpt9IWSgt/nqwMLTArI 3cGUzdcYVCJtlgj8jk0vM4DF1ow6wqSFZClAf4jqyxe5SEeZ5MRME6oygtJzkg== 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 4ZLTHc6CtCz8fl; Sun, 23 Mar 2025 21:06:04 +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 52NL64bA071899; Sun, 23 Mar 2025 21:06:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52NL64MG071896; Sun, 23 Mar 2025 21:06:04 GMT (envelope-from git) Date: Sun, 23 Mar 2025 21:06:04 GMT Message-Id: <202503232106.52NL64MG071896@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: 74361d693aec - main - malloc: Fix DEBUG_REDZONE for contigmalloc() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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: 74361d693aec892b01c1553bda7176f8d341b2ff Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=74361d693aec892b01c1553bda7176f8d341b2ff commit 74361d693aec892b01c1553bda7176f8d341b2ff Author: Mark Johnston AuthorDate: 2025-03-23 13:42:40 +0000 Commit: Mark Johnston CommitDate: 2025-03-23 13:50:41 +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"") --- 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 b1347b15e651..0b76e633b04a 100644 --- a/sys/kern/kern_malloc.c +++ b/sys/kern/kern_malloc.c @@ -477,11 +477,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); @@ -489,16 +496,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); @@ -506,6 +523,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); }