Skip to content

Commit 8600839

Browse files
Al Virojankara
authored andcommitted
ext2: use offset_in_page() instead of open-coding it as subtraction
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Reviewed-by: Fabio M. De Francesco <fmdefrancesco@gmail.com> Tested-by: Fabio M. De Francesco <fmdefrancesco@gmail.com> Signed-off-by: Jan Kara <jack@suse.cz>
1 parent 8f1dca1 commit 8600839

1 file changed

Lines changed: 6 additions & 8 deletions

File tree

fs/ext2/dir.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ ext2_validate_entry(char *base, unsigned offset, unsigned mask)
240240
break;
241241
p = ext2_next_entry(p);
242242
}
243-
return (char *)p - base;
243+
return offset_in_page(p);
244244
}
245245

246246
static inline void ext2_set_de_type(ext2_dirent *de, struct inode *inode)
@@ -465,8 +465,7 @@ int ext2_set_link(struct inode *dir, struct ext2_dir_entry_2 *de,
465465
struct page *page, void *page_addr, struct inode *inode,
466466
bool update_times)
467467
{
468-
loff_t pos = page_offset(page) +
469-
(char *) de - (char *) page_addr;
468+
loff_t pos = page_offset(page) + offset_in_page(de);
470469
unsigned len = ext2_rec_len_from_disk(de->rec_len);
471470
int err;
472471

@@ -556,8 +555,7 @@ int ext2_add_link (struct dentry *dentry, struct inode *inode)
556555
return -EINVAL;
557556

558557
got_it:
559-
pos = page_offset(page) +
560-
(char *)de - (char *)page_addr;
558+
pos = page_offset(page) + offset_in_page(de);
561559
err = ext2_prepare_chunk(page, pos, rec_len);
562560
if (err)
563561
goto out_unlock;
@@ -594,8 +592,8 @@ int ext2_delete_entry (struct ext2_dir_entry_2 *dir, struct page *page,
594592
char *kaddr)
595593
{
596594
struct inode *inode = page->mapping->host;
597-
unsigned from = ((char*)dir - kaddr) & ~(ext2_chunk_size(inode)-1);
598-
unsigned to = ((char *)dir - kaddr) +
595+
unsigned from = offset_in_page(dir) & ~(ext2_chunk_size(inode)-1);
596+
unsigned to = offset_in_page(dir) +
599597
ext2_rec_len_from_disk(dir->rec_len);
600598
loff_t pos;
601599
ext2_dirent * pde = NULL;
@@ -612,7 +610,7 @@ int ext2_delete_entry (struct ext2_dir_entry_2 *dir, struct page *page,
612610
de = ext2_next_entry(de);
613611
}
614612
if (pde)
615-
from = (char *)pde - kaddr;
613+
from = offset_in_page(pde);
616614
pos = page_offset(page) + from;
617615
lock_page(page);
618616
err = ext2_prepare_chunk(page, pos, to - from);

0 commit comments

Comments
 (0)