From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 66184C369C9 for ; Fri, 18 Apr 2025 22:37:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4FFA4280008; Fri, 18 Apr 2025 18:37:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4868A280004; Fri, 18 Apr 2025 18:37:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 302E4280008; Fri, 18 Apr 2025 18:37:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 0E7EF280004 for ; Fri, 18 Apr 2025 18:37:32 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 58666120FE8 for ; Fri, 18 Apr 2025 22:37:33 +0000 (UTC) X-FDA: 83348627586.16.0C83FDD Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf10.hostedemail.com (Postfix) with ESMTP id 8AAAAC0008 for ; Fri, 18 Apr 2025 22:37:31 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=idXtt3YN; spf=pass (imf10.hostedemail.com: domain of bhe@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=bhe@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745015851; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=pgvL41QdbZrb/DItLyL8hX9WAHY/XF9TJNGkmiBOQ9k=; b=m+faRRxDWUBTTaEoRJR/lxYsOFD1dfzGn2V1ND4HfF6mG+mjlRNXBfuCpeB63BA+vIQTCI 6ts64wA8SnCY84V1UpIaBI/NnvfuWgCVyXfbXMegVndHh4cxm2iOqQFvCE+Wc+IqgL9HyD EtSV49HME0ONwjxCok//YO1pkB2vpo4= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=idXtt3YN; spf=pass (imf10.hostedemail.com: domain of bhe@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=bhe@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745015851; a=rsa-sha256; cv=none; b=cExrPioqZe6g7nMtdlk/zxWFY49sOPoXmiQu12f8BrSnpYHVvdLxU1gLAmBmIEODaNzbDj AAk1GyX/b3lA/373bW5fMU4blRucjDc0vUdek5+0dc17pAGBYNZspwx253CtQtOJVxaNEQ dGuzQLg/Vh5l8tcWheNHU5cJVbGu9mc= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1745015851; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pgvL41QdbZrb/DItLyL8hX9WAHY/XF9TJNGkmiBOQ9k=; b=idXtt3YNWzbt0MEkvh/eFxmVszWWJlzQ4CIknBB2/ZG4xDbcmP+dDfchVkwFK6BOM6nXs/ QRpEJjCb0v7ABQW3E0A9vxyCzaZ0bItSQKqTgnrr+XBmncMchtuU1Y0YuihTX3p2vxQtc3 QYieFhu5EghKTJziyhXE0VhwOUYdTOo= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-41-eG8EADjgPq2JGZadomQzNg-1; Fri, 18 Apr 2025 18:37:27 -0400 X-MC-Unique: eG8EADjgPq2JGZadomQzNg-1 X-Mimecast-MFC-AGG-ID: eG8EADjgPq2JGZadomQzNg_1745015846 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 49E7119560A6; Fri, 18 Apr 2025 22:37:26 +0000 (UTC) Received: from MiWiFi-R3L-srv.redhat.com (unknown [10.72.112.18]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 9C4D81801770; Fri, 18 Apr 2025 22:37:22 +0000 (UTC) From: Baoquan He To: linux-mm@kvack.org Cc: akpm@linux-foundation.org, urezki@gmail.com, shivankg@amd.com, vishal.moola@gmail.com, linux-kernel@vger.kernel.org, Baoquan He Subject: [PATCH v2 5/5] mm/vmalloc.c: return explicit error value in alloc_vmap_area() Date: Sat, 19 Apr 2025 06:36:53 +0800 Message-ID: <20250418223653.243436-6-bhe@redhat.com> In-Reply-To: <20250418223653.243436-1-bhe@redhat.com> References: <20250418223653.243436-1-bhe@redhat.com> MIME-Version: 1.0 Content-type: text/plain Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 8AAAAC0008 X-Stat-Signature: pop3p9ouby1xo4b8ko6feaw4ojwh7a8g X-HE-Tag: 1745015851-118850 X-HE-Meta: U2FsdGVkX19V/alKBMFiVgBWdsVnij6d6PY0x0PhCBKFt3jFxmAh79y7veNC0oyleGMcxnrLXBXTkSHQB+zAvrFWSVjiBLY2uhxCq93GoEijU0zmJPqR/QQ+6QQJYURC6JtgHZTHBqA+rpTa7NWFHpVae6L2f96zGP9iPSxDbgpHVaubk0sdGKnVhpUljEDVOiPHFwCR0SSvGQW7ifMhykDJMWCw6XYorEE2kxA4CEMdfkZhelekNIAO0SR4X4cUHLD82ceFuZF+KsLW6NfY37dpdhIQjXFzkzSi+31R0h2xhuMgEQYNFXmdv2MfLo8WeO457xhW0Z0P+kxeRAsC4m4XCY29iC4gyJr0cVehFZihfeuCA7z9VebigKiFK1atwIbVneyhh0wapraL+JQJsTuf36/VIjFKCNxju+d1/BFP6t2E9mcCMiD6Ie9HwvJW87WW9pGkPIIOCA8Hcyh9wOfGkFaZnQbkWyK0iqrrOff1xFX1IA61pkNoSy0Ntx+IcptAkz+r9fRWJqmbCODaPlxSa3VGp60u5e77K3aI9TM6lwnJm2wwA/+gA6hegoiANDNaJHgMpepsAzNEq+qnnpWvYEqQI8Re36vaRoIGMldeZ+v2sihoc8D1kcJK1U37Ex6ydzGOiwTleJJ8BxxPTObHpnnJ72D9CmJYrSKoUOAX77cVZNh7g1G9+w7YFsFLjmpaPRikpirWFCYSFI0K2paPqk9A6E2W3utSlovZfCRd1W1TF8/SAAZCx6TWbNjjwb6qzeembltDWpVtHlo0hGzRY0Op+qr4ugxuGVEAUpXw23gJqS6f4IZbSvhyQ0FNRmw2d8V/VsBDPSZRIYwplb6OqUUZ9sUdPttxuxibx6bHBJs8Ecm0t5xwZVnAh3N3ywEy59WfBPdAZIRlhUAGqcnlcYHm40QvKQpIZxdOCIcqYv8W0bMK0xXSTz1z0NJpPXXNRYlRKdogQZeWcl7 r7oaRBu6 jSdELhJMiGSs+A06xSwJ0y4N037rQ3OWQdoHo174RtIfHA7NF83lu5rvKreFl9/9QmuMmRGLHNsbU6K6HLqCFFBXlqomLDQPPkxmTCtkeSMFRd1t+EJ3l6oYVp1kRpxRZvfC0yFYdw83kZffw36D5+2OzjbfSWVafXm1srQEB9zujjL1iWQmPZwHrv80bF2suU9hY00tnxPZWAjR0WbGqVXbGanLLwQORW/Lfkhbzn/p3qAu1J4UOYhyWj2KLt7evxcadcuYa9FUVZfujbdqJvTE7R7YyxCzQ7H9tbAM8DCXgjEBFl80HF/WUVVEKnwrjxpW/WDl8WfnOWZ/LYGzzb0PwXNEfRTYVR1Cr0wiEPxK66gSZ8Ku0ezwx3mtTaeHcPdhnvzBbcPBDs3UWK9tmYDpqcXqehszo9VKZEaF4uEOaW5Xv50BAH2kJnftIyeD82aJI X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: In codes of alloc_vmap_area(), it returns the upper bound 'vend' to indicate if the allocation is successful or failed. That is not very clear. Here change to return explicit error values and check them to judge if allocation is successful. Signed-off-by: Baoquan He --- mm/vmalloc.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 39e043ba969b..0251402ca5b9 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -1698,7 +1698,7 @@ va_clip(struct rb_root *root, struct list_head *head, */ lva = kmem_cache_alloc(vmap_area_cachep, GFP_NOWAIT); if (!lva) - return -1; + return -ENOMEM; } /* @@ -1712,7 +1712,7 @@ va_clip(struct rb_root *root, struct list_head *head, */ va->va_start = nva_start_addr + size; } else { - return -1; + return -EINVAL; } if (type != FL_FIT_TYPE) { @@ -1741,19 +1741,19 @@ va_alloc(struct vmap_area *va, /* Check the "vend" restriction. */ if (nva_start_addr + size > vend) - return vend; + return -ERANGE; /* Update the free vmap_area. */ ret = va_clip(root, head, va, nva_start_addr, size); if (WARN_ON_ONCE(ret)) - return vend; + return ret; return nva_start_addr; } /* * Returns a start address of the newly allocated area, if success. - * Otherwise a vend is returned that indicates failure. + * Otherwise an error value is returned that indicates failure. */ static __always_inline unsigned long __alloc_vmap_area(struct rb_root *root, struct list_head *head, @@ -1778,14 +1778,13 @@ __alloc_vmap_area(struct rb_root *root, struct list_head *head, va = find_vmap_lowest_match(root, size, align, vstart, adjust_search_size); if (unlikely(!va)) - return vend; + return -ENOENT; nva_start_addr = va_alloc(va, root, head, size, align, vstart, vend); - if (nva_start_addr == vend) - return vend; #if DEBUG_AUGMENT_LOWEST_MATCH_CHECK - find_vmap_lowest_match_check(root, head, size, align); + if (!IS_ERR_VALUE(nva_start_addr)) + find_vmap_lowest_match_check(root, head, size, align); #endif return nva_start_addr; @@ -1915,7 +1914,7 @@ node_alloc(unsigned long size, unsigned long align, struct vmap_area *va; *vn_id = 0; - *addr = vend; + *addr = -EINVAL; /* * Fallback to a global heap if not vmalloc or there @@ -1995,20 +1994,20 @@ static struct vmap_area *alloc_vmap_area(unsigned long size, } retry: - if (addr == vend) { + if (IS_ERR_VALUE(addr)) { preload_this_cpu_lock(&free_vmap_area_lock, gfp_mask, node); addr = __alloc_vmap_area(&free_vmap_area_root, &free_vmap_area_list, size, align, vstart, vend); spin_unlock(&free_vmap_area_lock); } - trace_alloc_vmap_area(addr, size, align, vstart, vend, addr == vend); + trace_alloc_vmap_area(addr, size, align, vstart, vend, IS_ERR_VALUE(addr)); /* - * If an allocation fails, the "vend" address is + * If an allocation fails, the error value is * returned. Therefore trigger the overflow path. */ - if (unlikely(addr == vend)) + if (IS_ERR_VALUE(addr)) goto overflow; va->va_start = addr; -- 2.41.0