Received: by 10.223.185.116 with SMTP id b49csp5979908wrg; Wed, 28 Feb 2018 01:48:10 -0800 (PST) X-Google-Smtp-Source: AH8x225yTI36Ug1h+ElVJd0u6cbgwUDekBMB3zVMV+SMcbU8Fvlhqis5goMKS/fQZpMhMakbvd8M X-Received: by 10.99.123.80 with SMTP id k16mr14238467pgn.134.1519811290621; Wed, 28 Feb 2018 01:48:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519811290; cv=none; d=google.com; s=arc-20160816; b=Ffp3tiodbQvsYGtEz/fNR0uWwuynMnO7Oy67RcsCNuUIEH12TsEWXoGqtCAVYo9gI6 SEkxZ3CJBBb3u5yvRCQQKgvfj3j3T07rWejxuYpXPnjCTw5iyypf+zbYB24DG1vQZ9ih T4Von1/GDdVaTBR0YtiFzKw32HJx8cVM8oQk2hx6PYjkPEhGKZC0fZ+JWf3L2aA99PR6 xZpCWl9KfgQf9YgMUPd4Xx7V8D6MIU9Q1y0HGSpdm1l0Zs40tcvaM5AVQPNDhHwM/pv3 L4EJ1S8P+gWPZfndrwEkOgm2MiuimyowGa3STmK218Fh4u8Hb9uaXmU4m8qKHgjtQKjP vqDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:arc-authentication-results; bh=KQAJOnegAShBuSRHYLHKEEHEzAmV8ebpOEGjbgruW5w=; b=yB3On5gkAZEdCL5NX2/6JK3bg+GVUi1pqqBcIiN9VessPUjq0k4aaqFMkk2JSGIMGG ffOGi86S6n5/Z4XcI/0mL3Nl8Br2jm7XTCctwD+yVvHvAN9OjcbYbO7z+LhgbnwdkG4b t4KHxyJB7tI2gAqn+2Dw4uyGTU4NaONZyL7FGpK6HuQxWKPtAL9PuvUTIBIcGu6raEO4 RbR/NjM5sLe7B3arBF/n/JNkwLKm9ueXXdUodp7lAxCFxmo8KVH6suFywetMblheou72 RbrVsL1oZYglOAz6y+YUhxdhIuRCrHiHGD7grB05DI+4/9Y7tJd3Z8QsITaGAGhC2cqK kNyg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q16si805988pgc.610.2018.02.28.01.47.54; Wed, 28 Feb 2018 01:48:10 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752420AbeB1JrQ (ORCPT + 99 others); Wed, 28 Feb 2018 04:47:16 -0500 Received: from szxga07-in.huawei.com ([45.249.212.35]:58140 "EHLO huawei.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1752410AbeB1JrK (ORCPT ); Wed, 28 Feb 2018 04:47:10 -0500 Received: from DGGEMS411-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id E8D5887B7695E; Wed, 28 Feb 2018 17:47:07 +0800 (CST) Received: from [127.0.0.1] (10.134.22.195) by DGGEMS411-HUB.china.huawei.com (10.3.19.211) with Microsoft SMTP Server id 14.3.361.1; Wed, 28 Feb 2018 17:46:59 +0800 Subject: Re: [PATCH v4] Revert "f2fs crypto: avoid unneeded memory allocation in ->readdir" To: Jaegeuk Kim , Yunlong Song CC: , , , , , , , References: <1519463698-60555-1-git-send-email-yunlong.song@huawei.com> <1519787857-107910-1-git-send-email-yunlong.song@huawei.com> <20180228054810.GB86647@jaegeuk-macbookpro.roam.corp.google.com> From: Chao Yu Message-ID: Date: Wed, 28 Feb 2018 17:50:48 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <20180228054810.GB86647@jaegeuk-macbookpro.roam.corp.google.com> Content-Type: text/plain; charset="windows-1252" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.134.22.195] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jaegeuk, On 2018/2/28 13:48, Jaegeuk Kim wrote: > Hi Yunlong, > > As Eric pointed out, how do you think using nohighmem for directory likewise I'd like to ask, at the beginning, why we choose to use highmem for dentry page? any history reason there? > ext4, which looks like more efficient? Actually, we don't need to do this in > most of recent kernels, right? It's OK to me to keep a line with ext4. Thanks, > > Thanks, > > On 02/28, Yunlong Song wrote: >> This reverts commit e06f86e61d7a67fe6e826010f57aa39c674f4b1b. >> >> Conflicts: >> fs/f2fs/dir.c >> >> In some platforms (such as arm), high memory is used, then the >> decrypting filename will cause panic, the reason see commit >> 569cf1876a32e574ba8a7fb825cd91bafd003882 ("f2fs crypto: allocate buffer >> for decrypting filename"): >> >> We got dentry pages from high_mem, and its address space directly goes into the >> decryption path via f2fs_fname_disk_to_usr. >> But, sg_init_one assumes the address is not from high_mem, so we can get this >> panic since it doesn't call kmap_high but kunmap_high is triggered at the end. >> >> kernel BUG at ../../../../../../kernel/mm/highmem.c:290! >> Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM >> ... >> (kunmap_high+0xb0/0xb8) from [] (__kunmap_atomic+0xa0/0xa4) >> (__kunmap_atomic+0xa0/0xa4) from [] (blkcipher_walk_done+0x128/0x1ec) >> (blkcipher_walk_done+0x128/0x1ec) from [] (crypto_cbc_decrypt+0xc0/0x170) >> (crypto_cbc_decrypt+0xc0/0x170) from [] (crypto_cts_decrypt+0xc0/0x114) >> (crypto_cts_decrypt+0xc0/0x114) from [] (async_decrypt+0x40/0x48) >> (async_decrypt+0x40/0x48) from [] (f2fs_fname_disk_to_usr+0x124/0x304) >> (f2fs_fname_disk_to_usr+0x124/0x304) from [] (f2fs_fill_dentries+0xac/0x188) >> (f2fs_fill_dentries+0xac/0x188) from [] (f2fs_readdir+0x1f0/0x300) >> (f2fs_readdir+0x1f0/0x300) from [] (vfs_readdir+0x90/0xb4) >> (vfs_readdir+0x90/0xb4) from [] (SyS_getdents64+0x64/0xcc) >> (SyS_getdents64+0x64/0xcc) from [] (ret_fast_syscall+0x0/0x30) >> >> Howerver, later patch: >> commit e06f86e61d7a ("f2fs crypto: avoid unneeded memory allocation in ->readdir") >> reverts the codes, which causes panic again in arm, so fix it back to the old version. >> >> Signed-off-by: Yunlong Song >> Reviewed-by: Chao Yu >> --- >> fs/f2fs/dir.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c >> index f00b5ed..de2e295 100644 >> --- a/fs/f2fs/dir.c >> +++ b/fs/f2fs/dir.c >> @@ -825,9 +825,16 @@ int f2fs_fill_dentries(struct dir_context *ctx, struct f2fs_dentry_ptr *d, >> int save_len = fstr->len; >> int err; >> >> + de_name.name = f2fs_kmalloc(sbi, de_name.len, GFP_NOFS); >> + if (!de_name.name) >> + return -ENOMEM; >> + >> + memcpy(de_name.name, d->filename[bit_pos], de_name.len); >> + >> err = fscrypt_fname_disk_to_usr(d->inode, >> (u32)de->hash_code, 0, >> &de_name, fstr); >> + kfree(de_name.name); >> if (err) >> return err; >> >> -- >> 1.8.5.2 > > . >