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 75105C04FFE for ; Wed, 8 May 2024 15:11:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D99646B0088; Wed, 8 May 2024 11:10:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D49246B0089; Wed, 8 May 2024 11:10:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C38316B008C; Wed, 8 May 2024 11:10:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id A61E96B0088 for ; Wed, 8 May 2024 11:10:59 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id D64F2120994 for ; Wed, 8 May 2024 15:10:58 +0000 (UTC) X-FDA: 82095566196.15.17E899B Received: from out30-110.freemail.mail.aliyun.com (out30-110.freemail.mail.aliyun.com [115.124.30.110]) by imf17.hostedemail.com (Postfix) with ESMTP id DFBE24001A for ; Wed, 8 May 2024 15:10:53 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=xsMIZ9H0; dmarc=pass (policy=none) header.from=linux.alibaba.com; spf=pass (imf17.hostedemail.com: domain of hsiangkao@linux.alibaba.com designates 115.124.30.110 as permitted sender) smtp.mailfrom=hsiangkao@linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1715181055; 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=smDSBA/vyUQe6K9lPTzzQscaImTQDfcc0mDn2ZJNNyw=; b=Pi7cOV+PCf08L9GqXCNwAAXKNbZl549D9GKfZBRDuR3o/nrdQB1k6Fchpw+nxEigGBmGhr K0sywNFVLrJLV0KBE0VGqEYb76TCh3Tkg2fmCLmoVK3O/snUxDw1YVuYEBQhSruN5Bp4Rd dt07xWaeeyXplUc9JUDswUaYx1uURzQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1715181055; a=rsa-sha256; cv=none; b=AYgC3r4qhPjsSzIckDDV7orfOxBi57OdZ/fIMkzhykD2d3iz5smuxd6iqfPmGIj+jHSRhj PcZgRXodg0uiM+R2WT/ieyXGiVk5pHU8CV/GGilS1Brzwx+jLz52NFsFUPvnU9WgGwMEhG WeNK8tVhvi4/WeCRoaDraIGDu1j3HS4= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=xsMIZ9H0; dmarc=pass (policy=none) header.from=linux.alibaba.com; spf=pass (imf17.hostedemail.com: domain of hsiangkao@linux.alibaba.com designates 115.124.30.110 as permitted sender) smtp.mailfrom=hsiangkao@linux.alibaba.com DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1715181051; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; bh=smDSBA/vyUQe6K9lPTzzQscaImTQDfcc0mDn2ZJNNyw=; b=xsMIZ9H0x9Ute4c2yOZu0YlcPWRRr3eg98VFOblAsp7RGNqy/AKWu+IZdU81LVNOWN+t5YRmexHiNS3MsWe4jlVUmNwkEGgM5MFZAiN1huSOzWyukCp2Q6V+0opA/tNB6wpTTB2DaA/7V2tOBZi5kcjHlxNsC3yDyswOfsHrlsw= X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R891e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033037067110;MF=hsiangkao@linux.alibaba.com;NM=1;PH=DS;RN=12;SR=0;TI=SMTPD_---0W63z.gB_1715181046; Received: from 30.25.222.148(mailfrom:hsiangkao@linux.alibaba.com fp:SMTPD_---0W63z.gB_1715181046) by smtp.aliyun-inc.com; Wed, 08 May 2024 23:10:49 +0800 Message-ID: <90a127e5-d884-44b5-bb76-773a7485c2f1@linux.alibaba.com> Date: Wed, 8 May 2024 23:10:46 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH] mm/vmalloc: fix vmalloc which may return null if called with __GFP_NOFAIL To: Hailong Liu Cc: akpm@linux-foundation.org, Michal Hocko , urezki@gmail.com, hch@infradead.org, lstoakes@gmail.com, 21cnbao@gmail.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, xiang@kernel.org, chao@kernel.org, Oven References: <20240508125808.28882-1-hailong.liu@oppo.com> <404add29-2d3f-45db-9103-0c5b66fb254e@linux.alibaba.com> <20240508144321.ymnhn54daaabalhe@oppo.com> From: Gao Xiang In-Reply-To: <20240508144321.ymnhn54daaabalhe@oppo.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: DFBE24001A X-Stat-Signature: smqcggz7d76xenjsysjkc4c9enmebqdq X-Rspam-User: X-HE-Tag: 1715181053-580922 X-HE-Meta: U2FsdGVkX19RiA32rZk8mgWMVaKwcQdPijZMp22/vbYNvwU9Ubld3bKo1RHkDV/BTUMVSgdMu3y+p8mlc7jBDDbjVQS1htl9V8FCJVHy/VAqLunNeluJHMUnsDl7M/aLNPpgk/2NEqZKhrPfb3/WIklJkZGQlG4v+J46ncFidC6f7LoZpN5nG4wpxtrpL04sKqcmPtbygrx0VuvBh1Ql1KjcsowDK7B4ssu4vEYvArduUw6KoiYY+4J9apOUXcYTQsyWRwEqnGEtp8VwHaQvrGVIzBoJc2n2K+rI72Qv2AX8+Nmy7smKNhATf6D8KXgGetNcoRyNVFUKjez20iH3VsVaDecx49fa+MhnmPLwZopzLP3lpstHNLw0tfz9BQMTIjWM1kasF+Aqot1V/+X7CVpgBI/oXyhkRfi007pSXxQaOxOxZGyCDB6rTLwYpAoHwC2ApSeIWnh45re5b9mriTMCrdMHui8JeYLA/qew0dNTvc6j7Xo0qLyKyBQA1T7mz3oAykdwA0ahsHYeWIpEw6yTZhLB3Y1HWmT3dK5Y14rESExqc8fctq0/S3vWQB39dF+2Yf1+rdHRTLJwTTS4znIXBTaetJnxQJCFjI+V9Nfu6nV3/cPMBtzHef9YCDC1HEdeT3xk/gAFT7kUeqBVPqJmebOoU6F7z4tTJ4LcVhxBKHyc5Npt4GZKmie/Yjx+9/WpAqzZHvg4uxqV/Rh8OLNKP98lSYOSNRy1NWutXEu7WD1RUrVmHRsoeumDcPI21w+F6/cUrDY9ob7uc976OgFAwO6bjuR/xeZTcoaBHBi66GU8Icef0d/KNbKUH248IipkQKLlW4Oyhes/TwjxR9wVx6b27ZDj5NztQRG7zB/UV3wJpwCRa0Tw/vc3fZVrsS+Otf/WueJ7LgPfa9mi3Ch27/V2QxEAZNymzxiPSTTUgu/vUso/VSiKY0uXPocHTZVTPNlWYRZpSDjLaKA AbFbzzuL JMzJ7a9CSXtlF3Lwwp2E1dFfEkCeIE8GmOW0vX8OvfALnzhAZFU0xbXPICtsQM3FdavVxvUFInzeqCddzwcYyP2tJa53Ny2oFTK2g/xJ0QV0GZTZaJQm62ojyp7qDxfjnQcanznYuA+glVBNkFH+VDWkRaSFQeM9k2rfBLEGQYkZCoRrpr2fjpMdQo5H9EMHuEV3b0QBIVtweXFmgetwMnZYZ2qGxpNSQYSI/GF9w88JoeKIITDW8PqiX/IgnwPDzqXQbrTnzfsbshCsVi9/YwRcOZCdMxqV/0H8/+iRny3FVMHde4Yk7RGMu+pKh+prQs/MR2Ovv6YkZxeBhoLJ8yM/1Lt0dO+VhmHgUe6GpRBElhJXF1U33mshiZ2u6jI/OQOF+5jh/4dSPh/IjUDo4jljaXfyID2bvAnNlFzeaXvlCCeA0zn7PesASdaHy4M3ytikUpGnqZsBJnWDPp522kfEPQw== 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: Hi, On 2024/5/8 22:43, Hailong Liu wrote: > On Wed, 08. May 21:41, Gao Xiang wrote: >> >> +Cc Michal, >> >> On 2024/5/8 20:58, hailong.liu@oppo.com wrote: >>> From: "Hailong.Liu" >>> >>> Commit a421ef303008 ("mm: allow !GFP_KERNEL allocations for kvmalloc") >>> includes support for __GFP_NOFAIL, but it presents a conflict with >>> commit dd544141b9eb ("vmalloc: back off when the current task is >>> OOM-killed"). A possible scenario is as belows: >>> >>> process-a >>> kvcalloc(n, m, GFP_KERNEL | __GFP_NOFAIL) >>> __vmalloc_node_range() >>> __vmalloc_area_node() >>> vm_area_alloc_pages() >>> --> oom-killer send SIGKILL to process-a >>> if (fatal_signal_pending(current)) break; >>> --> return NULL; >>> >>> to fix this, do not check fatal_signal_pending() in vm_area_alloc_pages() >>> if __GFP_NOFAIL set. >>> >>> Reported-by: Oven >>> Signed-off-by: Hailong.Liu >> >> Why taging this as RFC here? It seems a corner-case fix of >> commit a421ef303008 >> >> Thanks, >> Gao Xiang >> > > Hi Gao Xiang: > > RFC here to wait for a better way to handle this case :). > IMO, if vmalloc support __GFP_NOFAIL it should not return > null even system is deadlock on memory. The starting point is that kmalloc doesn't support __GFP_NOFAIL if order > 1 (even for very short temporary uses), see: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/mm/page_alloc.c?h=v6.8#n2896 but it is possible if we have such page pointer array (since two (order-1) pages can only keep 1024 8-byte entries, it can happen if compression ratios are high), and kvmalloc(__GFP_NOFAIL) has already been supported for almost two years, it will fallback to order-0 allocation as described in commit e9c3cda4d86e ("mm, vmalloc: fix high order __GFP_NOFAIL allocations"). With my limited understanding, I'm not sure why it can cause deadlock here since it will fallback to order-0 allocation then, and such allocation is just for short temporary uses again because kmalloc doesn't support order > 1 short memory allocation strictly. Thanks, Gao Xiang > > -- > > Best Regards, > Hailong.