f2fs: clean up __find_inline_xattr() with __find_xattr()
authorChao Yu <chao@kernel.org>
Sun, 12 Dec 2021 09:16:56 +0000 (17:16 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 4 Jan 2022 21:20:56 +0000 (13:20 -0800)
Just cleanup, no logic change.

Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/xattr.c

index 797ac505a075ad075237af6cca20b0c1707288f2..8e5cd9c916ff1e27208a9cca5511efeec8aaa012 100644 (file)
@@ -226,15 +226,18 @@ static inline const struct xattr_handler *f2fs_xattr_handler(int index)
 }
 
 static struct f2fs_xattr_entry *__find_xattr(void *base_addr,
-                               void *last_base_addr, int index,
-                               size_t len, const char *name)
+                               void *last_base_addr, void **last_addr,
+                               int index, size_t len, const char *name)
 {
        struct f2fs_xattr_entry *entry;
 
        list_for_each_xattr(entry, base_addr) {
                if ((void *)(entry) + sizeof(__u32) > last_base_addr ||
-                       (void *)XATTR_NEXT_ENTRY(entry) > last_base_addr)
+                       (void *)XATTR_NEXT_ENTRY(entry) > last_base_addr) {
+                       if (last_addr)
+                               *last_addr = entry;
                        return NULL;
+               }
 
                if (entry->e_name_index != index)
                        continue;
@@ -254,19 +257,9 @@ static struct f2fs_xattr_entry *__find_inline_xattr(struct inode *inode,
        unsigned int inline_size = inline_xattr_size(inode);
        void *max_addr = base_addr + inline_size;
 
-       list_for_each_xattr(entry, base_addr) {
-               if ((void *)entry + sizeof(__u32) > max_addr ||
-                       (void *)XATTR_NEXT_ENTRY(entry) > max_addr) {
-                       *last_addr = entry;
-                       return NULL;
-               }
-               if (entry->e_name_index != index)
-                       continue;
-               if (entry->e_name_len != len)
-                       continue;
-               if (!memcmp(entry->e_name, name, len))
-                       break;
-       }
+       entry = __find_xattr(base_addr, max_addr, last_addr, index, len, name);
+       if (!entry)
+               return NULL;
 
        /* inline xattr header or entry across max inline xattr size */
        if (IS_XATTR_LAST_ENTRY(entry) &&
@@ -368,7 +361,7 @@ static int lookup_all_xattrs(struct inode *inode, struct page *ipage,
        else
                cur_addr = txattr_addr;
 
-       *xe = __find_xattr(cur_addr, last_txattr_addr, index, len, name);
+       *xe = __find_xattr(cur_addr, last_txattr_addr, NULL, index, len, name);
        if (!*xe) {
                f2fs_err(F2FS_I_SB(inode), "inode (%lu) has corrupted xattr",
                                                                inode->i_ino);
@@ -659,7 +652,7 @@ static int __f2fs_setxattr(struct inode *inode, int index,
        last_base_addr = (void *)base_addr + XATTR_SIZE(inode);
 
        /* find entry with wanted name. */
-       here = __find_xattr(base_addr, last_base_addr, index, len, name);
+       here = __find_xattr(base_addr, last_base_addr, NULL, index, len, name);
        if (!here) {
                f2fs_err(F2FS_I_SB(inode), "inode (%lu) has corrupted xattr",
                                                                inode->i_ino);