From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.contemporary.net.au (msc1401703.lnk.telstra.net [139.130.245.200]) by sourceware.org (Postfix) with ESMTPS id 7E5233858D28 for ; Thu, 16 Nov 2023 21:17:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7E5233858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rtems.org Authentication-Results: sourceware.org; spf=none smtp.mailfrom=rtems.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7E5233858D28 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=139.130.245.200 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700169451; cv=none; b=UVKrv1mimY0ZcbWJq1LM9U5AtxV3Jv4yv0sqcXnk0jcQFzw6ceMR7r8eMgkMdq9vbu0oIT+x1PFOe1nMWRLkdLY9v6PuOEHba3OZ5rsoSdm0Qd2RENAMCSIKKqbo5pZDsLg75w3D0W+giEYpFJHMRQ9MSqhl+vZoc6lfrol+Me0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700169451; c=relaxed/simple; bh=f3avkBPcBMriQ8uBZWsDPO6xKzxwZO5vEn8KUnsQZlM=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=UMTy6L9mP1O+uXNbzRu32HL9d2P/fDrU9/qnS3Q57IaTeytlMDTvq4oYdeCRpfjte6i/nwDI7bLWWJ+hY9BAh7BS94tT6O0yMHD6vaQNEdOdCnBLNG4t077EHt3CjHqAiyQhsgQ1Y1KBjqdCoVc9328QY05seDxMlvwFE7/+OgA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from [10.10.11.7] ([10.10.11.7]) (authenticated bits=0) by mail.contemporary.net.au (8.15.2/8.15.2) with ESMTPSA id 3AGLHPdx099457 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO) for ; Fri, 17 Nov 2023 08:17:26 +1100 (EST) (envelope-from chrisj@rtems.org) Message-ID: Date: Fri, 17 Nov 2023 08:17:25 +1100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] Reclaim _REENT_MP_P5S in _reclaim_reent To: newlib@sourceware.org References: <20231116011215.21144-1-chrisj@rtems.org> Content-Language: en-AU From: Chris Johns Organization: https://www.rtems.org/ In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-9.8 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,KAM_LAZY_DOMAIN_SECURITY,KHOP_HELO_FCRDNS,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 16/11/2023 8:15 pm, Corinna Vinschen wrote: > On Nov 16 12:12, chrisj@rtems.org wrote: >> From: Chris Johns >> >> The change fixes a memory leak in threads that clean up using >> _reclaim_reent. >> >> RTEMS: Closes #4967 >> --- >> newlib/libc/reent/reent.c | 11 +++++++++++ >> 1 file changed, 11 insertions(+) >> >> diff --git a/newlib/libc/reent/reent.c b/newlib/libc/reent/reent.c >> index db80ca06e..6bb271b9a 100644 >> --- a/newlib/libc/reent/reent.c >> +++ b/newlib/libc/reent/reent.c >> @@ -59,6 +59,17 @@ _reclaim_reent (struct _reent *ptr) >> } >> if (_REENT_MP_RESULT(ptr)) >> _free_r (ptr, _REENT_MP_RESULT(ptr)); >> + if (_REENT_MP_P5S(ptr)) >> + { >> + struct _Bigint *thisone, *nextone; >> + nextone = _REENT_MP_P5S(ptr); >> + while (nextone) >> + { >> + thisone = nextone; >> + nextone = nextone->_next; >> + _free_r (ptr, thisone); >> + } >> + } > > The p5s data is allocated using Balloc, so the pointers are in freelist > and should already be free'd at this point, starting at line 42. Yes however P5S blocks allocated by Balloc via i2b are not passed to Bfree. > Please explain what happens and why free'ing the freelist is not > sufficient in this case, preferredly as part of the commit message. Yes good idea. How about: The _REENT_MP_P5S blocks are allocated using Balloc via i2b and linked in the pow5mult call. As a result these blocks are not on the freelist managed by the Bfree call. This change fixes a memory leak in threads that clean up using _reclaim_reent. Chris