linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Chao Yu <yuchao0@huawei.com>
To: Jaegeuk Kim <jaegeuk@kernel.org>, Yunlong Song <yunlong.song@huawei.com>
Cc: <chao@kernel.org>, <yunlong.song@icloud.com>,
	<miaoxie@huawei.com>, <bintian.wang@huawei.com>,
	<shengyong1@huawei.com>, <heyunlei@huawei.com>,
	<linux-f2fs-devel@lists.sourceforge.net>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4] Revert "f2fs crypto: avoid unneeded memory allocation in ->readdir"
Date: Wed, 28 Feb 2018 17:50:48 +0800	[thread overview]
Message-ID: <c36a6024-209c-b660-ba61-e681a98e6f3b@huawei.com> (raw)
In-Reply-To: <20180228054810.GB86647@jaegeuk-macbookpro.roam.corp.google.com>

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 [<c0114534>] (__kunmap_atomic+0xa0/0xa4)
>>   (__kunmap_atomic+0xa0/0xa4) from [<c035f028>] (blkcipher_walk_done+0x128/0x1ec)
>>   (blkcipher_walk_done+0x128/0x1ec) from [<c0366c24>] (crypto_cbc_decrypt+0xc0/0x170)
>>   (crypto_cbc_decrypt+0xc0/0x170) from [<c0367148>] (crypto_cts_decrypt+0xc0/0x114)
>>   (crypto_cts_decrypt+0xc0/0x114) from [<c035ea98>] (async_decrypt+0x40/0x48)
>>   (async_decrypt+0x40/0x48) from [<c032ca34>] (f2fs_fname_disk_to_usr+0x124/0x304)
>>   (f2fs_fname_disk_to_usr+0x124/0x304) from [<c03056fc>] (f2fs_fill_dentries+0xac/0x188)
>>   (f2fs_fill_dentries+0xac/0x188) from [<c03059c8>] (f2fs_readdir+0x1f0/0x300)
>>   (f2fs_readdir+0x1f0/0x300) from [<c0218054>] (vfs_readdir+0x90/0xb4)
>>   (vfs_readdir+0x90/0xb4) from [<c0218418>] (SyS_getdents64+0x64/0xcc)
>>   (SyS_getdents64+0x64/0xcc) from [<c0105ba0>] (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 <yunlong.song@huawei.com>
>> Reviewed-by: Chao Yu <yuchao0@huawei.com>
>> ---
>>  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
> 
> .
> 

  reply	other threads:[~2018-02-28  9:47 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-24  9:14 [PATCH] f2fs: allocate buffer for decrypting filename to avoid panic Yunlong Song
2018-02-24 18:32 ` Eric Biggers
2018-02-26  3:06   ` Yunlong Song
2018-02-26  3:42   ` Chao Yu
2018-02-26  2:57 ` [PATCH v2] " Yunlong Song
2018-02-27 10:40   ` Chao Yu
2018-02-28  2:19 ` [PATCH v3] " Yunlong Song
2018-02-28  2:49   ` Chao Yu
2018-02-28  3:17 ` [PATCH v4] Revert "f2fs crypto: avoid unneeded memory allocation in ->readdir" Yunlong Song
2018-02-28  5:48   ` Jaegeuk Kim
2018-02-28  9:50     ` Chao Yu [this message]
2018-03-01  2:50       ` Jaegeuk Kim
2018-03-01  3:02         ` Chao Yu
2018-02-28 12:32     ` Yunlong Song

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c36a6024-209c-b660-ba61-e681a98e6f3b@huawei.com \
    --to=yuchao0@huawei.com \
    --cc=bintian.wang@huawei.com \
    --cc=chao@kernel.org \
    --cc=heyunlei@huawei.com \
    --cc=jaegeuk@kernel.org \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miaoxie@huawei.com \
    --cc=shengyong1@huawei.com \
    --cc=yunlong.song@huawei.com \
    --cc=yunlong.song@icloud.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).