David Howells
64795af3bd
afs: Fix memory leak when mounting with multiple source parameters
...
[ Upstream commit 4cb682964706deffb4861f0a91329ab3a705039f ]
There's a memory leak in afs_parse_source() whereby multiple source=
parameters overwrite fc->source in the fs_context struct without freeing
the previously recorded source.
Fix this by only permitting a single source parameter and rejecting with
an error all subsequent ones.
This was caught by syzbot with the kernel memory leak detector, showing
something like the following trace:
unreferenced object 0xffff888114375440 (size 32):
comm "repro", pid 5168, jiffies 4294923723 (age 569.948s)
backtrace:
slab_post_alloc_hook+0x42/0x79
__kmalloc_track_caller+0x125/0x16a
kmemdup_nul+0x24/0x3c
vfs_parse_fs_string+0x5a/0xa1
generic_parse_monolithic+0x9d/0xc5
do_new_mount+0x10d/0x15a
do_mount+0x5f/0x8e
__do_sys_mount+0xff/0x127
do_syscall_64+0x2d/0x3a
entry_SYSCALL_64_after_hwframe+0x44/0xa9
Fixes: 13fcc68370 ("afs: Add fs_context support")
Reported-by: syzbot+86dc6632faaca40133ab@syzkaller.appspotmail.com
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-12-30 11:50:54 +01:00
..
9p
9P: Cast to loff_t before multiplying
2020-11-05 11:43:34 +01:00
adfs
affs
affs: fix basic permission bits to actually work
2020-09-09 19:12:34 +02:00
afs
afs: Fix memory leak when mounting with multiple source parameters
2020-12-30 11:50:54 +01:00
autofs
befs
bfs
btrfs
btrfs: fix lockdep splat when reading qgroup config on mount
2020-12-02 08:49:45 +01:00
cachefiles
cachefiles: Handle readpage error correctly
2020-11-05 11:43:36 +01:00
ceph
ceph: promote to unsigned long long before shifting
2020-11-05 11:43:34 +01:00
cifs
cifs: fix potential use-after-free in cifs_echo_request()
2020-12-11 13:23:29 +01:00
coda
configfs
configfs: fix config_item refcnt leak in configfs_rmdir()
2020-05-27 17:46:30 +02:00
cramfs
crypto
fscrypt: don't evict dirty inodes after removing key
2020-03-18 07:17:53 +01:00
debugfs
debugfs: Fix module state check condition
2020-09-17 13:47:55 +02:00
devpts
dlm
fs: dlm: fix configfs memory leak
2020-10-29 09:58:03 +01:00
ecryptfs
ecryptfs: replace BUG_ON with error handling code
2020-02-28 17:22:26 +01:00
efivarfs
efivarfs: revert "fix memory leak in efivarfs_create()"
2020-12-02 08:49:53 +01:00
efs
erofs
erofs: derive atime instead of leaving it empty
2020-11-18 19:20:28 +01:00
exportfs
ext2
ext2: don't update mtime on COW faults
2020-09-09 19:12:30 +02:00
ext4
ext4: fix bogus warning in ext4_update_dx_flag()
2020-11-24 13:29:21 +01:00
f2fs
f2fs: handle errors of f2fs_get_meta_page_nofail
2020-11-05 11:43:14 +01:00
fat
fat: don't allow to mount if the FAT length == 0
2020-06-17 16:40:36 +02:00
freevxfs
fscache
fuse
fuse: fix page dereference after free
2020-11-01 12:01:05 +01:00
gfs2
gfs2: check for empty rgrp tree in gfs2_ri_update
2020-12-11 13:23:32 +01:00
hfs
hfsplus
hfsplus: fix crash and filesystem corruption when deleting files
2020-04-17 10:50:22 +02:00
hostfs
hpfs
hugetlbfs
hugetlbfs: prevent filesystem stacking of hugetlbfs
2020-09-03 11:26:48 +02:00
iomap
iomap: fix WARN_ON_ONCE() from unprivileged users
2020-10-29 09:58:06 +01:00
isofs
jbd2
jbd2: fix up sparse warnings in checkpoint code
2020-11-18 19:20:30 +01:00
jffs2
jffs2: fix UAF problem
2020-08-26 10:40:56 +02:00
jfs
kernfs
kernfs: do not call fsnotify() with name without a parent
2020-08-19 08:16:12 +02:00
lockd
minix
fs/minix: remove expected error message in block_to_path()
2020-08-21 13:05:37 +02:00
nfs
NFSv4.2: support EXCHGID4_FLAG_SUPP_FENCE_OPS 4.2 EXCHANGE_ID flag
2020-11-05 11:43:31 +01:00
nfs_common
nfsd
NFSD: Add missing NFSv2 .pc_func methods
2020-11-05 11:43:31 +01:00
nilfs2
nilfs2: fix null pointer dereference at nilfs_segctor_do_construct()
2020-06-17 16:40:29 +02:00
nls
notify
fanotify: fix ignore mask logic for events on child and on dir
2020-06-17 16:40:24 +02:00
ntfs
ntfs: add check for mft record size in superblock
2020-10-29 09:58:03 +01:00
ocfs2
ocfs2: initialize ip_next_orphan
2020-11-18 19:20:30 +01:00
omfs
openpromfs
orangefs
orangefs: get rid of knob code...
2020-08-21 13:05:29 +02:00
overlayfs
ovl: fix unneeded call to ovl_change_flags()
2020-07-22 09:33:12 +02:00
proc
proc: use untagged_addr() for pagemap_read addresses
2020-12-16 10:56:58 +01:00
pstore
pstore: Fix linking when crypto API disabled
2020-08-19 08:16:27 +02:00
qnx4
qnx6
quota
quota: clear padding in v2r1_mem2diskdqb()
2020-10-29 09:57:42 +01:00
ramfs
ramfs: fix nommu mmap with gaps in the page cache
2020-10-29 09:57:53 +01:00
reiserfs
reiserfs: Fix memory leak in reiserfs_parse_options()
2020-10-29 09:58:08 +01:00
romfs
romfs: fix uninitialized memory leak in romfs_dev_read()
2020-08-26 10:40:51 +02:00
squashfs
sysfs
sysv
tracefs
ubifs
ubifs: mount_ubifs: Release authentication resource in error handling path
2020-11-05 11:43:32 +01:00
udf
udf: Fix memory leak when mounting
2020-11-05 11:43:29 +01:00
ufs
fs/ufs: avoid potential u32 multiplication overflow
2020-08-21 13:05:37 +02:00
unicode
verity
xfs
xfs: revert "xfs: fix rmap key and record comparison functions"
2020-11-24 13:29:18 +01:00
aio.c
aio: fix async fsync creds
2020-06-17 16:40:24 +02:00
anon_inodes.c
attr.c
utimes: Clamp the timestamps in notify_change()
2020-02-11 04:35:12 -08:00
bad_inode.c
binfmt_aout.c
binfmt_elf.c
fs/binfmt_elf.c: allocate initialized memory in fill_thread_core_info()
2020-06-03 08:21:27 +02:00
binfmt_elf_fdpic.c
binfmt_em86.c
binfmt_flat.c
binfmt_flat: revert "binfmt_flat: don't offset the data start"
2020-09-03 11:26:39 +02:00
binfmt_misc.c
binfmt_script.c
block_dev.c
bdev: Reduce time holding bd_mutex in sync in blkdev_close()
2020-10-01 13:17:55 +02:00
buffer.c
fs: Don't invalidate page buffers in block_write_full_page()
2020-11-05 11:43:24 +01:00
char_dev.c
chardev: Avoid potential use-after-free in 'chrdev_open()'
2020-01-14 20:08:18 +01:00
compat.c
compat_binfmt_elf.c
compat_ioctl.c
fix compat handling of FICLONERANGE, FIDEDUPERANGE and FS_IOC_FIEMAP
2020-01-09 10:20:05 +01:00
coredump.c
coredump: fix core_pattern parse error
2020-12-11 13:23:30 +01:00
d_path.c
fs: fix NULL dereference due to data race in prepend_path()
2020-10-29 09:57:45 +01:00
dax.c
dax: pass NOWAIT flag to iomap_apply
2020-03-05 16:43:36 +01:00
dcache.c
fix dget_parent() fastpath race
2020-10-01 13:17:19 +02:00
dcookies.c
direct-io.c
drop_caches.c
fs: avoid softlockups in s_inodes iterators
2020-01-12 12:21:37 +01:00
eventfd.c
eventfd: track eventfd_signal() recursion depth
2020-02-11 04:35:37 -08:00
eventpoll.c
ep_create_wakeup_source(): dentry name can change under you...
2020-10-07 08:01:31 +02:00
exec.c
mm: fix exec activate_mm vs TLB shootdown and lazy tlb switching race
2020-11-05 11:43:13 +01:00
fcntl.c
fhandle.c
file.c
fix multiplication overflow in copy_fdtable()
2020-05-27 17:46:12 +02:00
file_table.c
filesystems.c
fs/filesystems.c: downgrade user-reachable WARN_ONCE() to pr_warn_once()
2020-04-17 10:50:21 +02:00
fs-writeback.c
writeback: Fix sync livelock due to b_dirty_time processing
2020-09-03 11:27:04 +02:00
fs_context.c
fs_parser.c
fs_pin.c
fs_struct.c
fs_types.c
fsopen.c
inode.c
futex: Fix inode life-time issue
2020-03-25 08:25:58 +01:00
internal.h
fs: move guard_bio_eod() after bio_set_op_attrs
2020-01-17 19:48:21 +01:00
io_uring.c
io_uring: Fix double list add in io_queue_async_work()
2020-10-14 10:32:57 +02:00
ioctl.c
Kconfig
Kconfig.binfmt
libfs.c
libfs: fix error cast of negative value in simple_attr_write()
2020-11-24 13:29:19 +01:00
locks.c
locks: reinstate locks_delete_block optimization
2020-03-25 08:25:41 +01:00
Makefile
mbcache.c
mount.h
mpage.c
fs: move guard_bio_eod() after bio_set_op_attrs
2020-01-17 19:48:21 +01:00
namei.c
namei: only return -ECHILD from follow_dotdot_rcu()
2020-03-05 16:43:48 +01:00
namespace.c
no-block.c
nsfs.c
open.c
cifs_atomic_open(): fix double-put on late allocation failure
2020-03-18 07:17:51 +01:00
pipe.c
pnode.c
propagate_one(): mnt_set_mountpoint() needs mount_lock
2020-05-02 08:48:44 +02:00
pnode.h
posix_acl.c
proc_namespace.c
read_write.c
fs: allow deduplication of eof block into the end of the destination file
2020-02-11 04:35:23 -08:00
readdir.c
readdir: be more conservative with directory entry names
2020-01-29 16:45:31 +01:00
select.c
seq_file.c
signalfd.c
fs/signalfd.c: fix inconsistent return codes for signalfd4
2020-08-26 10:40:58 +02:00
splice.c
splice: only read in as much information as there is pipe buffer space
2019-12-17 19:56:52 +01:00
stack.c
stat.c
statfs.c
super.c
vfs: remove lockdep bogosity in __sb_start_write
2020-11-24 13:29:01 +01:00
sync.c
timerfd.c
userfaultfd.c
userfaultfd: require CAP_SYS_PTRACE for UFFD_FEATURE_EVENT_FORK
2020-01-04 19:18:32 +01:00
utimes.c
utimes: Clamp the timestamps in notify_change()
2020-02-11 04:35:12 -08:00
xattr.c
xattr: break delegations in {set,remove}xattr
2020-08-11 15:33:39 +02:00