kernel-fxtec-pro1x/fs/btrfs
Filipe Manana 91567128a9 btrfs: fix wrong address when faulting in pages in the search ioctl
commit 1c78544eaa4660096aeb6a57ec82b42cdb3bfe5a upstream.

When faulting in the pages for the user supplied buffer for the search
ioctl, we are passing only the base address of the buffer to the function
fault_in_pages_writeable(). This means that after the first iteration of
the while loop that searches for leaves, when we have a non-zero offset,
stored in 'sk_offset', we try to fault in a wrong page range.

So fix this by adding the offset in 'sk_offset' to the base address of the
user supplied buffer when calling fault_in_pages_writeable().

Several users have reported that the applications compsize and bees have
started to operate incorrectly since commit a48b73eca4ceb9 ("btrfs: fix
potential deadlock in the search ioctl") was added to stable trees, and
these applications make heavy use of the search ioctls. This fixes their
issues.

Link: https://lore.kernel.org/linux-btrfs/632b888d-a3c3-b085-cdf5-f9bb61017d92@lechevalier.se/
Link: https://github.com/kilobyte/compsize/issues/34
Fixes: a48b73eca4ceb9 ("btrfs: fix potential deadlock in the search ioctl")
CC: stable@vger.kernel.org # 4.4+
Tested-by: A L <mail@lechevalier.se>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-09-17 13:45:28 +02:00
..
tests Btrfs: fix selftests failure due to uninitialized i_mode in test inodes 2020-08-05 10:06:00 +02:00
acl.c
async-thread.c Btrfs: fix crash during unmount due to race with delayed inode workers 2020-04-17 10:48:49 +02:00
async-thread.h Btrfs: fix crash during unmount due to race with delayed inode workers 2020-04-17 10:48:49 +02:00
backref.c btrfs: fix double free on ulist after backref resolution failure 2020-07-29 10:16:47 +02:00
backref.h
btrfs_inode.h
check-integrity.c btrfs: fix possible NULL-pointer dereference in integrity checks 2020-02-24 08:34:49 +01:00
check-integrity.h
compression.c
compression.h
ctree.c btrfs: set the lockdep class for log tree extent buffers 2020-09-09 19:04:29 +02:00
ctree.h btrfs: export helpers for subvolume name/id resolution 2020-08-26 10:30:58 +02:00
dedupe.h
delayed-inode.c btrfs: use nofs allocations for running delayed items 2020-04-17 10:48:54 +02:00
delayed-inode.h
delayed-ref.c Btrfs: fix race between adding and putting tree mod seq elements and nodes 2020-02-11 04:34:06 -08:00
delayed-ref.h
dev-replace.c btrfs: merge btrfs_find_device and find_device 2020-06-22 09:04:59 +02:00
dev-replace.h
dir-item.c
disk-io.c btrfs: fix space cache memory leak after transaction abort 2020-09-03 11:24:26 +02:00
disk-io.h
export.c btrfs: export helpers for subvolume name/id resolution 2020-08-26 10:30:58 +02:00
export.h btrfs: export helpers for subvolume name/id resolution 2020-08-26 10:30:58 +02:00
extent-tree.c btrfs: require only sector size alignment for parent eb bytenr 2020-09-17 13:45:28 +02:00
extent_io.c btrfs: fix potential deadlock in the search ioctl 2020-09-09 19:04:29 +02:00
extent_io.h btrfs: fix potential deadlock in the search ioctl 2020-09-09 19:04:29 +02:00
extent_map.c Btrfs: fix race between using extent maps and merging them 2020-02-19 19:51:56 +01:00
extent_map.h
file-item.c btrfs: do not ignore error from btrfs_next_leaf() when inserting checksums 2020-06-22 09:05:11 +02:00
file.c btrfs: file: reserve qgroup space after the hole punch range is locked 2020-09-03 11:24:22 +02:00
free-space-cache.c btrfs: fix space cache memory leak after transaction abort 2020-09-03 11:24:26 +02:00
free-space-cache.h
free-space-tree.c
free-space-tree.h
inode-item.c
inode-map.c Btrfs: fix inode cache waiters hanging on path allocation failure 2020-01-27 14:51:12 +01:00
inode-map.h
inode.c btrfs: inode: fix NULL pointer dereference if inode doesn't need compression 2020-08-26 10:30:58 +02:00
ioctl.c btrfs: fix wrong address when faulting in pages in the search ioctl 2020-09-17 13:45:28 +02:00
Kconfig
locking.c
locking.h
lzo.c
Makefile
math.h
ordered-data.c Btrfs: fix btrfs_wait_ordered_range() so that it waits for all ordered extents 2020-02-28 16:38:58 +01:00
ordered-data.h
orphan.c
print-tree.c btrfs: require only sector size alignment for parent eb bytenr 2020-09-17 13:45:28 +02:00
print-tree.h
props.c
props.h
qgroup.c btrfs: qgroup: mark qgroup inconsistent if we're inherting snapshot to a new qgroup 2020-06-22 09:05:19 +02:00
qgroup.h
raid56.c
raid56.h
rcu-string.h
reada.c
ref-verify.c btrfs: ref-verify: fix memory leak in add_block_entry 2020-08-21 11:05:30 +02:00
ref-verify.h
relocation.c btrfs: check commit root generation in should_ignore_root 2020-04-21 09:03:09 +02:00
root-tree.c
scrub.c btrfs: merge btrfs_find_device and find_device 2020-06-22 09:04:59 +02:00
send.c btrfs: send: emit file capabilities after chown 2020-06-22 09:05:21 +02:00
send.h
struct-funcs.c
super.c btrfs: reset compression level for lzo on remount 2020-09-03 11:24:26 +02:00
sysfs.c btrfs: sysfs: use NOFS for device creation 2020-08-26 10:30:59 +02:00
sysfs.h
transaction.c btrfs: transaction: Avoid deadlock due to bad initialization timing of fs_info::journal_info 2020-05-06 08:13:33 +02:00
transaction.h
tree-checker.c btrfs: tree-checker: Check level for leaves and nodes 2020-06-22 09:05:01 +02:00
tree-checker.h
tree-defrag.c
tree-log.c btrfs: check the right error variable in btrfs_del_dir_entries_in_log 2020-09-03 11:24:31 +02:00
tree-log.h
ulist.c
ulist.h
uuid-tree.c
volumes.c btrfs: fix lockdep splat in add_missing_dev 2020-09-17 13:45:28 +02:00
volumes.h btrfs: merge btrfs_find_device and find_device 2020-06-22 09:04:59 +02:00
xattr.c
xattr.h
zlib.c
zstd.c