Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp7056773pxu; Fri, 25 Dec 2020 00:02:05 -0800 (PST) X-Google-Smtp-Source: ABdhPJwEd3hMWu157o31314gs5T4MEYmYNtZ0q2s+wnVRTxErsjd6OKS7FhdPHnzQCDiDy2tmOxC X-Received: by 2002:a17:906:af49:: with SMTP id ly9mr29707740ejb.38.1608883325270; Fri, 25 Dec 2020 00:02:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608883325; cv=none; d=google.com; s=arc-20160816; b=EdL9zpAvOVUY270wooL2crOR/CIF0PpudGabi4hXubPk9YXLj6jFS/QvuISTNb4t5v schG7nIfBapc8vE+VOxRVhZ2JOCKE1Q//uidmCqJgCNcLLv/J2AGYOEkn33RjuSKTSz1 TLA0aH7i7gz/XqVRmKUsVhOM+hrYUwUYc3DjP9SsLuNNphG9+N3JfrTsR+o9xHcEhFFc FnmxPqEosEw+5CaXVy9HdbdZ9bNvo1tn39gzU8xalgHMEaRJ1lxcqCmpjrn7YazqKo28 lTOLY5PuAiUrUga0GvHpYnEqUAVjk3bMrniC0fsqE7L+sNP7Jdm/5EcMF9vFRUTNiHpV kg4Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=Rz1yPxilfyeOS/fWdXVHJ0Pf1RGje5N+4qDpT9YAyhs=; b=L5YUq9t+Qpf6jGd/NgxJ5Q8N00hLLKmHiM7cZy4Je+gNCgaip0IqwQVbjPFZOXnCtu Ba3FW26ChYrc6deGOVYC7QxABKiVfUDwH2jY6ms7xabYlmFH7fwUisyzAeH2oMzAzQA+ YNgMq7/YKz/0LafPtefYggGl5hjSLOd7o9VTb5L2X+dzwCtj3q/JKRfWbd2Q0PLA/n27 wX3TwB9U3HdF1AdbxulaxOrMdOCb4ZHovAYdy0ebp/6C66WyrTx51VJK7qsCbakaqkHM 3yx2J8EfWn8nN1wBKej/+hzf6aQu4HC8Ur+oUnziq41adF90TzMHTxvApdSdxlUOHalX Y3Kw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u26si15992552eda.115.2020.12.25.00.01.42; Fri, 25 Dec 2020 00:02:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726184AbgLYH7S (ORCPT + 99 others); Fri, 25 Dec 2020 02:59:18 -0500 Received: from szxga04-in.huawei.com ([45.249.212.190]:9650 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727200AbgLYH7R (ORCPT ); Fri, 25 Dec 2020 02:59:17 -0500 Received: from DGGEMS409-HUB.china.huawei.com (unknown [172.30.72.60]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4D2K6y53PWz15hnb; Fri, 25 Dec 2020 15:57:46 +0800 (CST) Received: from [10.174.177.80] (10.174.177.80) by DGGEMS409-HUB.china.huawei.com (10.3.19.209) with Microsoft SMTP Server id 14.3.498.0; Fri, 25 Dec 2020 15:58:22 +0800 Subject: Re: [PATCH v9 11/12] mm/vmalloc: Hugepage vmalloc mappings To: Nicholas Piggin , , Andrew Morton CC: , , , Zefan Li , "Jonathan Cameron" , Christoph Hellwig , Christophe Leroy , Rick Edgecombe References: <20201205065725.1286370-1-npiggin@gmail.com> <20201205065725.1286370-12-npiggin@gmail.com> From: Ding Tianhong Message-ID: <7db7564c-0600-33d9-68d9-61fa6fc1bc0d@huawei.com> Date: Fri, 25 Dec 2020 15:58:23 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.3.2 MIME-Version: 1.0 In-Reply-To: <20201205065725.1286370-12-npiggin@gmail.com> Content-Type: text/plain; charset="utf-8" Content-Language: en-GB Content-Transfer-Encoding: 7bit X-Originating-IP: [10.174.177.80] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > +again: > + size = PAGE_ALIGN(size); > + area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNINITIALIZED | > vm_flags, start, end, node, gfp_mask, caller); > if (!area) > goto fail; > > - addr = __vmalloc_area_node(area, gfp_mask, prot, node); > + addr = __vmalloc_area_node(area, gfp_mask, prot, shift, node); > if (!addr) > - return NULL; > + goto fail; > > /* > * In this function, newly allocated vm_struct has VM_UNINITIALIZED > @@ -2788,8 +2878,19 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align, > return addr; > > fail: > - warn_alloc(gfp_mask, NULL, > + if (shift > PAGE_SHIFT) { > + free_vm_area(area); > + shift = PAGE_SHIFT; > + align = real_align; > + size = real_size; > + goto again; > + } > + Hi, Nicholas: I met a problem like this: [ 67.103584] ------------[ cut here ]------------ [ 67.103884] kernel BUG at vmalloc.c:2892! [ 67.104387] Internal error: Oops - BUG: 0 [#1] SMP [ 67.104942] Process insmod (pid: 1161, stack limit = 0x(____ptrval____)) [ 67.105356] CPU: 2 PID: 1161 Comm: insmod Tainted: G O 4.19.95+ #9 [ 67.105702] Hardware name: linux,dummy-virt (DT) [ 67.106006] pstate: a0000005 (NzCv daif -PAN -UAO) [ 67.106285] pc : free_vm_area+0x78/0x80 [ 67.106549] lr : free_vm_area+0x58/0x80 it looks like when __vmalloc_area_node failed, the area is already released, and the free_vm_area will release the vm area again, so trigger the problem. 3405 ret = remove_vm_area(area->addr); 3406 BUG_ON(ret != area); 3407 kfree(area); Ding > + if (!area) { > + /* Warn for area allocation, page allocations already warn */ > + warn_alloc(gfp_mask, NULL, > "vmalloc: allocation failure: %lu bytes", real_size); > + } > return NULL; > } > >