From f24e3a586f3eb7e53ddc68b3ea2284ce1a8b254e Mon Sep 17 00:00:00 2001 From: Stark2x Date: Sun, 26 Feb 2017 11:20:48 +0000 Subject: [PATCH 1/2] f2fs: fix missing read/write function pointers Signed-off-by: Jaegeuk Kim --- fs/f2fs/file.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 51d8bce0..a3d1d6ea 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -1719,6 +1719,8 @@ long f2fs_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) const struct file_operations f2fs_file_operations = { .llseek = f2fs_llseek, + .read = new_sync_read, + .write = new_sync_write, .read_iter = generic_file_read_iter, .write_iter = f2fs_file_write_iter, .open = f2fs_file_open, From dc1f1de568bb014f601e8e0777305b1fa8293b95 Mon Sep 17 00:00:00 2001 From: Stark2x Date: Sun, 26 Feb 2017 11:23:44 +0000 Subject: [PATCH 2/2] f2fs: set dentry bits on random location in memory This fixes pointer panic when using inline_dentry, which was triggered when backporting to 3.10. Signed-off-by: Jaegeuk Kim --- fs/f2fs/dir.c | 2 +- fs/f2fs/inline.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c index a638114b..d8253c4f 100644 --- a/fs/f2fs/dir.c +++ b/fs/f2fs/dir.c @@ -517,7 +517,7 @@ void f2fs_update_dentry(nid_t ino, umode_t mode, struct f2fs_dentry_ptr *d, de->ino = cpu_to_le32(ino); set_de_type(de, mode); for (i = 0; i < slots; i++) - test_and_set_bit_le(bit_pos + i, (void *)d->bitmap); + __set_bit_le(bit_pos + i, (void *)d->bitmap); } /* diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c index a5d75b9d..4c624679 100644 --- a/fs/f2fs/inline.c +++ b/fs/f2fs/inline.c @@ -509,7 +509,7 @@ void f2fs_delete_inline_entry(struct f2fs_dir_entry *dentry, struct page *page, inline_dentry = inline_data_addr(page); bit_pos = dentry - inline_dentry->dentry; for (i = 0; i < slots; i++) - test_and_clear_bit_le(bit_pos + i, + __clear_bit_le(bit_pos + i, &inline_dentry->dentry_bitmap); set_page_dirty(page);