From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753011AbdBGH3Y (ORCPT ); Tue, 7 Feb 2017 02:29:24 -0500 Received: from szxga01-in.huawei.com ([58.251.152.64]:36010 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752059AbdBGH3W (ORCPT ); Tue, 7 Feb 2017 02:29:22 -0500 Subject: Re: [PATCH] f2fs: enhance lookup xattr To: Jaegeuk Kim References: <20170124123951.114223-1-yuchao0@huawei.com> <20170129035831.GA65555@jaegeuk.local> CC: , , From: Chao Yu Message-ID: <2b9eb490-238a-1ad6-5a84-3d6eec96cf6b@huawei.com> Date: Tue, 7 Feb 2017 15:26:46 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.0 MIME-Version: 1.0 In-Reply-To: <20170129035831.GA65555@jaegeuk.local> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.134.22.195] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020206.58997734.031F,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2013-06-18 04:22:30, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: be965feb92a0cbe48a4b96ba6ca858d0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jaegeuk, On 2017/1/29 11:58, Jaegeuk Kim wrote: > Hi Chao, > > On 01/24, Chao Yu wrote: > > ... > >> >> - error = read_all_xattrs(inode, ipage, &base_addr); >> + error = lookup_all_xattrs(inode, ipage, index, len, name, >> + &entry, &base_addr); >> if (error) >> return error; >> >> - entry = __find_xattr(base_addr, index, len, name); >> - if (IS_XATTR_LAST_ENTRY(entry)) { >> - error = -ENODATA; >> - goto cleanup; >> - } >> - >> - size = le16_to_cpu(entry->e_value_size); >> + size = __le16_to_cpu(entry->e_value_size); > > Looks good to me, except __le16_to_cpu() here. > Do we need to use this instead of le16_to_cpu()? Indeed, no needed. :) Thanks, > > Thanks, > >> >> if (buffer && size > buffer_size) { >> error = -ERANGE; >> - goto cleanup; >> + goto out; >> } >> >> + pval = entry->e_name + entry->e_name_len; >> + >> if (buffer) { >> char *pval = entry->e_name + entry->e_name_len; >> memcpy(buffer, pval, size); >> } >> error = size; >> - >> -cleanup: >> +out: >> kzfree(base_addr); >> return error; >> } >> diff --git a/fs/f2fs/xattr.h b/fs/f2fs/xattr.h >> index f990de20cdcd..d5a94928c116 100644 >> --- a/fs/f2fs/xattr.h >> +++ b/fs/f2fs/xattr.h >> @@ -72,9 +72,10 @@ struct f2fs_xattr_entry { >> for (entry = XATTR_FIRST_ENTRY(addr);\ >> !IS_XATTR_LAST_ENTRY(entry);\ >> entry = XATTR_NEXT_ENTRY(entry)) >> - >> -#define MIN_OFFSET(i) XATTR_ALIGN(inline_xattr_size(i) + PAGE_SIZE - \ >> - sizeof(struct node_footer) - sizeof(__u32)) >> +#define MAX_XATTR_BLOCK_SIZE (PAGE_SIZE - sizeof(struct node_footer)) >> +#define VALID_XATTR_BLOCK_SIZE (MAX_XATTR_BLOCK_SIZE - sizeof(__u32)) >> +#define MIN_OFFSET(i) XATTR_ALIGN(inline_xattr_size(i) + \ >> + VALID_XATTR_BLOCK_SIZE) >> >> #define MAX_VALUE_LEN(i) (MIN_OFFSET(i) - \ >> sizeof(struct f2fs_xattr_header) - \ >> -- >> 2.8.2.295.g3f1c1d0 > > . >