WSL2-Linux-Kernel/fs/btrfs
David Sterba ab2d68655d btrfs: dev-replace: properly validate device names
commit 9845664b9ee47ce7ee7ea93caf47d39a9d4552c4 upstream.

There's a syzbot report that device name buffers passed to device
replace are not properly checked for string termination which could lead
to a read out of bounds in getname_kernel().

Add a helper that validates both source and target device name buffers.
For devid as the source initialize the buffer to empty string in case
something tries to read it later.

This was originally analyzed and fixed in a different way by Edward Adam
Davis (see links).

Link: https://lore.kernel.org/linux-btrfs/000000000000d1a1d1060cc9c5e7@google.com/
Link: https://lore.kernel.org/linux-btrfs/tencent_44CA0665C9836EF9EEC80CB9E7E206DF5206@qq.com/
CC: stable@vger.kernel.org # 4.19+
CC: Edward Adam Davis <eadavis@qq.com>
Reported-and-tested-by: syzbot+33f23b49ac24f986c9e8@syzkaller.appspotmail.com
Reviewed-by: Boris Burkov <boris@bur.io>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-03-06 14:38:48 +00:00
..
tests btrfs: remove pointless and double ulist frees in error paths of qgroup tests 2022-11-26 09:24:32 +01:00
Kconfig
Makefile
acl.c
async-thread.c
async-thread.h
backref.c btrfs: fix resolving backrefs for inline extent followed by prealloc 2023-01-12 11:58:50 +01:00
backref.h btrfs: sink iterator parameter to btrfs_ioctl_logical_to_ino 2022-12-08 11:28:38 +01:00
block-group.c btrfs: move out now unused BG from the reclaim list 2023-08-26 14:23:30 +02:00
block-group.h
block-rsv.c btrfs: don't free qgroup space unless specified 2023-05-17 11:50:21 +02:00
block-rsv.h
btrfs_inode.h
check-integrity.c
check-integrity.h
compression.c
compression.h
ctree.c btrfs: error out when reallocating block for defrag using a stale transaction 2023-10-25 11:59:01 +02:00
ctree.h btrfs: add definition for EXTENT_TREE_V2 2024-02-23 08:54:34 +01:00
delalloc-space.c btrfs: don't arbitrarily slow down delalloc if we're committing 2023-11-28 16:56:29 +00:00
delalloc-space.h
delayed-inode.c btrfs: fix infinite directory reads 2024-02-23 08:54:30 +01:00
delayed-inode.h btrfs: fix infinite directory reads 2024-02-23 08:54:30 +01:00
delayed-ref.c
delayed-ref.h
dev-replace.c btrfs: dev-replace: properly validate device names 2024-03-06 14:38:48 +00:00
dev-replace.h
dir-item.c
discard.c btrfs: hold block group refcount during async discard 2023-03-10 09:39:56 +01:00
discard.h
disk-io.c btrfs: add xxhash to fast checksum implementations 2024-03-01 13:21:55 +01:00
disk-io.h btrfs: make thaw time super block check to also verify checksum 2023-01-12 11:59:20 +01:00
export.c btrfs: fix type of parameter generation in btrfs_get_dentry 2022-11-10 18:15:38 +01:00
export.h btrfs: fix type of parameter generation in btrfs_get_dentry 2022-11-10 18:15:38 +01:00
extent-io-tree.h
extent-tree.c btrfs: don't warn if discard range is not aligned to sector 2024-02-23 08:54:31 +01:00
extent_io.c btrfs: reset destination buffer when read_extent_buffer() gets invalid range 2023-10-06 13:18:11 +02:00
extent_io.h
extent_map.c
extent_map.h
file-item.c btrfs: handle memory allocation failure in btrfs_csum_one_bio 2023-06-21 15:59:13 +02:00
file.c btrfs: do not BUG_ON() on ENOMEM when dropping extent items for a range 2022-12-31 13:14:47 +01:00
free-space-cache.c btrfs: fix space cache inconsistency after error loading it from disk 2023-05-17 11:50:22 +02:00
free-space-cache.h
free-space-tree.c
free-space-tree.h
inode-item.c
inode.c btrfs: avoid copying BTRFS_ROOT_SUBVOL_DEAD flag to snapshot of subvolume being deleted 2024-02-23 08:54:30 +01:00
ioctl.c btrfs: forbid creating subvol qgroups 2024-02-23 08:55:01 +01:00
locking.c
locking.h
lzo.c
misc.h
ordered-data.c
ordered-data.h
orphan.c
print-tree.c btrfs: print-tree: parent bytenr must be aligned to sector size 2023-05-17 11:50:22 +02:00
print-tree.h
props.c
props.h
qgroup.c btrfs: forbid deleting live subvol qgroup 2024-02-23 08:55:01 +01:00
qgroup.h
raid56.c btrfs: raid56: properly handle the error when unable to find the missing stripe 2022-11-26 09:24:31 +01:00
raid56.h
rcu-string.h btrfs: replace strncpy() with strscpy() 2023-01-12 11:59:05 +01:00
reada.c
ref-verify.c btrfs: ref-verify: free ref cache before clearing mount opt 2024-02-23 08:54:30 +01:00
ref-verify.h
reflink.c
reflink.h
relocation.c btrfs: exit gracefully if reloc roots don't match 2023-08-16 18:22:02 +02:00
root-tree.c
scrub.c btrfs: scrub: try harder to mark RAID56 block groups read-only 2023-06-21 15:59:13 +02:00
send.c btrfs: send: return EOPNOTSUPP on unknown flags 2024-02-23 08:55:01 +01:00
send.h
space-info.c
space-info.h
struct-funcs.c
subpage.c
subpage.h
super.c Revert "btrfs: add dmesg output for first mount and last unmount of a filesystem" 2023-12-13 18:36:50 +01:00
sysfs.c btrfs: add definition for EXTENT_TREE_V2 2024-02-23 08:54:34 +01:00
sysfs.h
transaction.c btrfs: don't start transaction when joining with TRANS_JOIN_NOSTART 2023-09-19 12:23:01 +02:00
transaction.h
tree-checker.c btrfs: tree-checker: fix inline ref size in error messages 2024-02-23 08:54:31 +01:00
tree-checker.h
tree-defrag.c btrfs: fix an error handling path in btrfs_defrag_leaves() 2023-01-12 11:59:08 +01:00
tree-log.c btrfs: initialize start_slot in btrfs_log_prealloc_extents 2023-10-25 11:58:59 +02:00
tree-log.h
tree-mod-log.c
tree-mod-log.h
ulist.c
ulist.h
uuid-tree.c
verity.c
volumes.c btrfs: make error messages more clear when getting a chunk map 2023-12-08 08:48:02 +01:00
volumes.h btrfs: add a helper to read the superblock metadata_uuid 2023-09-23 11:10:00 +02:00
xattr.c
xattr.h
zlib.c btrfs: zlib: zero-initialize zlib workspace 2023-02-14 19:17:56 +01:00
zoned.c btrfs: zero the buffer before marking it dirty in btrfs_redirty_list_add 2023-05-17 11:50:22 +02:00
zoned.h
zstd.c