Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp6159416rwl; Mon, 9 Jan 2023 05:05:18 -0800 (PST) X-Google-Smtp-Source: AMrXdXt1eOcbdhHl+G7fBJufBBrs/QNcq+RiGpz+xTJ4wI33BBVO99u8k5pSCKkqUYlzMMWXn8S/ X-Received: by 2002:a05:6402:25c6:b0:478:5688:7c9f with SMTP id x6-20020a05640225c600b0047856887c9fmr66816826edb.29.1673269518277; Mon, 09 Jan 2023 05:05:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673269518; cv=none; d=google.com; s=arc-20160816; b=WmuDXdMr/o3VfYbLSe+0DAFErBVufCGNuyw1xkExg+ylU/OKpWp90vYrnvxCbW+j1e 4r2LK7nfyNpBHNat0icxqmR7njPaxKpfKuhsxJ8sG2KZywgxeg+THX6lcrxvHjc7xkN/ YZT38E1/fOoWwA7ruZsgTZ4IZmGvSYo6yDLSZKKoAgnBtp1HK7ksSwnsL3Zm4L/GI7Ia f3NFPYnwwaAVGfcr/63oBQqNFZOJs7XSvmvuq7u1/XdAjDF2lcuoGIKQF+LjBM9Ddu0Q 2AJ1YiW4zgkRW6d9P8q2RUkQzrC9h11hmN+kbHeFByhYPWGWD8KaVWO4CfQLas7O7uvA tx6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:subject:user-agent:mime-version:date:message-id; bh=Erprq7unABmn6kj9ZIZ11gvXOvymg2LTpo3Ob1YNtuI=; b=I5HBqf2KboUNyQbmRao63Eb0qbk8t0ImBSvR/eu9+opct+0WJhADukVI8tPujz02FH V0C08UDATPe3kH5UaTyOBiUQiMYWd32jSVHI2iH1Y1uY0ZoTB8sju489ec128XJEIB/D TYKumDRFjA0arFf8U3fkALG9YChSm8+Di4b/qwiKsTFYWgtmqgplFz+hjyi6oq6tmD50 D3ECeZyWrQV/y4z4u+nn+F70Jz6eVpb4vZ8X3P/1sP+v1Fo/lepeEmDuX5vylUKl4d1L 19bl7Cyx5zYXVs8gKwK61i5w2VTEjbDShXEYRiMObQV70jRNlcpCR9z/xreUhN+RCtcO IGLA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a10-20020a170906368a00b007c18f5f64cfsi7143174ejc.996.2023.01.09.05.05.06; Mon, 09 Jan 2023 05:05:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236743AbjAIMzx (ORCPT + 52 others); Mon, 9 Jan 2023 07:55:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42182 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236699AbjAIMzP (ORCPT ); Mon, 9 Jan 2023 07:55:15 -0500 Received: from out30-45.freemail.mail.aliyun.com (out30-45.freemail.mail.aliyun.com [115.124.30.45]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4F4A2164B7 for ; Mon, 9 Jan 2023 04:55:13 -0800 (PST) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R211e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045176;MF=hsiangkao@linux.alibaba.com;NM=1;PH=DS;RN=6;SR=0;TI=SMTPD_---0VZEaZ.Q_1673268909; Received: from 192.168.3.7(mailfrom:hsiangkao@linux.alibaba.com fp:SMTPD_---0VZEaZ.Q_1673268909) by smtp.aliyun-inc.com; Mon, 09 Jan 2023 20:55:10 +0800 Message-ID: <9f4c8bf0-db3e-b97a-504d-6015b75a2174@linux.alibaba.com> Date: Mon, 9 Jan 2023 20:55:08 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [PATCH] erofs: fix kvcalloc() misuse with __GFP_NOFAIL To: Chao Yu , linux-erofs@lists.ozlabs.org, Yue Hu , Jeffle Xu Cc: LKML , syzbot+c3729cda01706a04fb98@syzkaller.appspotmail.com References: <20230106031937.113318-1-hsiangkao@linux.alibaba.com> From: Gao Xiang In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH,NICE_REPLY_A,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Chao, On 2023/1/9 18:34, Chao Yu wrote: > On 2023/1/6 13:06, Gao Xiang wrote: >> >> >> On 2023/1/6 11:19, Gao Xiang wrote: >>> As reported by syzbot [1], kvcalloc() cannot work with  __GFP_NOFAIL. >>> Let's use kcalloc() instead. >>> >>> [1] https://lore.kernel.org/r/0000000000007796bd05f1852ec2@google.com >>> Reported-by: syzbot+c3729cda01706a04fb98@syzkaller.appspotmail.com >> >> Fixes: fe3e5914e6dc ("erofs: try to leave (de)compressed_pages on stack if possible") >> Fixes: 4f05687fd703 ("erofs: introduce struct z_erofs_decompress_backend") >> >>> Signed-off-by: Gao Xiang >>> --- >>>   fs/erofs/zdata.c | 8 ++++---- >>>   1 file changed, 4 insertions(+), 4 deletions(-) >>> >>> diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c >>> index ccf7c55d477f..08e982c77985 100644 >>> --- a/fs/erofs/zdata.c >>> +++ b/fs/erofs/zdata.c >>> @@ -1032,12 +1032,12 @@ static int z_erofs_decompress_pcluster(struct z_erofs_decompress_backend *be, >>>       if (!be->decompressed_pages) >>>           be->decompressed_pages = >>> -            kvcalloc(be->nr_pages, sizeof(struct page *), >>> -                 GFP_KERNEL | __GFP_NOFAIL); >>> +            kcalloc(be->nr_pages, sizeof(struct page *), >>> +                GFP_KERNEL | __GFP_NOFAIL); >>>       if (!be->compressed_pages) >>>           be->compressed_pages = >>> -            kvcalloc(pclusterpages, sizeof(struct page *), >>> -                 GFP_KERNEL | __GFP_NOFAIL); >>> +            kcalloc(pclusterpages, sizeof(struct page *), >>> +                GFP_KERNEL | __GFP_NOFAIL); > > How about using kfree instead of kvfree for .decompressed_pages and > .compressed_pages memory release? It's trivial though. Yeah, thanks for catching! I will send v2 to fix these. Thanks, Gao Xiang > > Anyway, feel free to add: > > Reviewed-by: Chao Yu > > Thanks, > >>>       z_erofs_parse_out_bvecs(be); >>>       err2 = z_erofs_parse_in_bvecs(be, &overlapped);