mirror_zfs/module/zfs
Alexander Motin 5ff2249fa5 Fix use-after-free in case of L2ARC prefetch failure
In case L2ARC read failed, l2arc_read_done() creates _different_ ZIO
to read data from the original storage device.  Unfortunately pointer
to the failed ZIO remains in hdr->b_l1hdr.b_acb->acb_zio_head, and if
some other read try to bump the ZIO priority, it will crash.

The problem is reproducible by corrupting L2ARC content and reading
some data with prefetch if l2arc_noprefetch tunable is changed to 0.
With the default setting the issue is probably not reproducible now.

Reviewed-by: Tom Caputi <tcaputi@datto.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored-By: iXsystems, Inc.
Closes #9648
2019-12-03 09:59:30 -08:00
..
aggsum.c
arc.c Fix use-after-free in case of L2ARC prefetch failure 2019-12-03 09:59:30 -08:00
blkptr.c
bplist.c Fast Clone Deletion 2019-07-26 10:54:14 -07:00
bpobj.c Add subcommand to wait for background zfs activity to complete 2019-09-13 18:09:06 -07:00
bptree.c
bqueue.c
btree.c Fix signature for private functions without header declarations 2019-10-16 18:34:19 -07:00
cityhash.c
dataset_kstats.c Fix panic on DilOS with kstat per dataset statistics 2019-09-03 12:12:31 -07:00
dbuf_stats.c Make module tunables cross platform 2019-09-05 14:49:49 -07:00
dbuf.c Enable use of DTRACE_PROBE* macros in "spl" module 2019-11-01 13:13:43 -07:00
ddt_zap.c
ddt.c Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
dmu_diff.c Mark write_record static 2019-12-03 09:51:44 -08:00
dmu_object.c Make module tunables cross platform 2019-09-05 14:49:49 -07:00
dmu_objset.c Fix strdup conflict on other platforms 2019-10-10 09:47:06 -07:00
dmu_recv.c Add zfs_file_* interface, remove vnodes 2019-11-21 09:32:57 -08:00
dmu_redact.c Move objnode handling to common code 2019-09-12 13:31:09 -07:00
dmu_send.c Don't call arc_buf_destroy on unallocated arc_buf 2019-10-23 15:26:17 -07:00
dmu_traverse.c Make module tunables cross platform 2019-09-05 14:49:49 -07:00
dmu_tx.c Enable use of DTRACE_PROBE* macros in "spl" module 2019-11-01 13:13:43 -07:00
dmu_zfetch.c Make module tunables cross platform 2019-09-05 14:49:49 -07:00
dmu.c Enable use of DTRACE_PROBE* macros in "spl" module 2019-11-01 13:13:43 -07:00
dnode_sync.c Decrease contention on dn_struct_rwlock 2019-07-08 13:18:50 -07:00
dnode.c Enable use of DTRACE_PROBE* macros in "spl" module 2019-11-01 13:13:43 -07:00
dsl_bookmark.c Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
dsl_crypt.c Add zfs_file_* interface, remove vnodes 2019-11-21 09:32:57 -08:00
dsl_dataset.c Fix strdup conflict on other platforms 2019-10-10 09:47:06 -07:00
dsl_deadlist.c Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
dsl_deleg.c Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
dsl_destroy.c Fix signature for private functions without header declarations 2019-10-16 18:34:19 -07:00
dsl_dir.c Fix typos in module/zfs/ 2019-09-02 17:56:41 -07:00
dsl_pool.c Enable use of DTRACE_PROBE* macros in "spl" module 2019-11-01 13:13:43 -07:00
dsl_prop.c Fix strdup conflict on other platforms 2019-10-10 09:47:06 -07:00
dsl_scan.c Prevent unnecessary resilver restarts 2019-11-27 10:15:01 -08:00
dsl_synctask.c Fix typos in module/zfs/ 2019-09-02 17:56:41 -07:00
dsl_userhold.c Fix strdup conflict on other platforms 2019-10-10 09:47:06 -07:00
edonr_zfs.c
fm.c Add zfs_file_* interface, remove vnodes 2019-11-21 09:32:57 -08:00
gzip.c OpenZFS restructuring - move platform specific sources 2019-09-06 11:26:26 -07:00
hkdf.c
lz4.c Enable clang to use intrinsics for lz4 2019-10-01 13:17:32 -07:00
lzjb.c
Makefile.in Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
metaslab.c Add kmem cache accessors 2019-10-10 15:45:52 -07:00
mmp.c Move linux specific mmp module_param_call handler to platform code 2019-10-16 18:37:31 -07:00
multilist.c Enable use of DTRACE_PROBE* macros in "spl" module 2019-11-01 13:13:43 -07:00
objlist.c
pathname.c Disable unused pathname::pn_path* (unneeded in Linux) 2019-07-15 13:57:56 -07:00
range_tree.c Function name and comment updates 2019-10-11 10:13:21 -07:00
refcount.c Prevent race in blkptr_verify against device removal 2019-08-13 21:24:43 -06:00
rrwlock.c Enable use of DTRACE_PROBE* macros in "spl" module 2019-11-01 13:13:43 -07:00
sa.c Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
sha256.c OpenZFS restructuring - move platform specific sources 2019-09-06 11:26:26 -07:00
skein_zfs.c
spa_boot.c
spa_checkpoint.c Add subcommand to wait for background zfs activity to complete 2019-09-13 18:09:06 -07:00
spa_config.c Add zfs_file_* interface, remove vnodes 2019-11-21 09:32:57 -08:00
spa_errlog.c Fix typos in module/zfs/ 2019-09-02 17:56:41 -07:00
spa_history.c Fix strdup conflict on other platforms 2019-10-10 09:47:06 -07:00
spa_log_spacemap.c Make module tunables cross platform 2019-09-05 14:49:49 -07:00
spa_misc.c Add zfs_file_* interface, remove vnodes 2019-11-21 09:32:57 -08:00
spa.c Prevent unnecessary resilver restarts 2019-11-27 10:15:01 -08:00
space_map.c Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
space_reftree.c Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
THIRDPARTYLICENSE.cityhash
THIRDPARTYLICENSE.cityhash.descrip
txg.c Enable use of DTRACE_PROBE* macros in "spl" module 2019-11-01 13:13:43 -07:00
uberblock.c
unique.c Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
vdev_cache.c Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
vdev_indirect_births.c Fixes: #8934 Large kmem_alloc 2019-07-10 15:54:49 -07:00
vdev_indirect_mapping.c
vdev_indirect.c Make module tunables cross platform 2019-09-05 14:49:49 -07:00
vdev_initialize.c Include prototypes for vdev_initialize 2019-10-31 10:09:01 -07:00
vdev_label.c Add zfs_file_* interface, remove vnodes 2019-11-21 09:32:57 -08:00
vdev_mirror.c Make module tunables cross platform 2019-09-05 14:49:49 -07:00
vdev_missing.c
vdev_queue.c Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
vdev_raidz_math_aarch64_neon_common.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
vdev_raidz_math_aarch64_neon.c Linux 5.0 compat: SIMD compatibility 2019-07-12 09:31:20 -07:00
vdev_raidz_math_aarch64_neonx2.c Linux 5.0 compat: SIMD compatibility 2019-07-12 09:31:20 -07:00
vdev_raidz_math_avx2.c OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
vdev_raidz_math_avx512bw.c OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
vdev_raidz_math_avx512f.c Make clang happy with vdev_raidz_ code 2019-10-10 09:45:37 -07:00
vdev_raidz_math_impl.h
vdev_raidz_math_scalar.c Linux 5.3: Fix switch() fall though compiler errors 2019-08-21 09:29:23 -07:00
vdev_raidz_math_sse2.c Make clang happy with vdev_raidz_ code 2019-10-10 09:45:37 -07:00
vdev_raidz_math_ssse3.c OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
vdev_raidz_math.c Wrap module_param_call() routines under __linux__ 2019-12-03 09:56:15 -08:00
vdev_raidz.c Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
vdev_removal.c Enable use of DTRACE_PROBE* macros in "spl" module 2019-11-01 13:13:43 -07:00
vdev_root.c
vdev_trim.c Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
vdev.c Prevent unnecessary resilver restarts 2019-11-27 10:15:01 -08:00
zap_leaf.c
zap_micro.c Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
zap.c Make module tunables cross platform 2019-09-05 14:49:49 -07:00
zcp_get.c Move get_temporary_prop to platform code 2019-10-10 15:59:34 -07:00
zcp_global.c
zcp_iter.c Fix typos in module/zfs/ 2019-09-02 17:56:41 -07:00
zcp_synctask.c
zcp.c Make module tunables cross platform 2019-09-05 14:49:49 -07:00
zfeature.c
zfs_byteswap.c Fix typos in module/zfs/ 2019-09-02 17:56:41 -07:00
zfs_fm.c
zfs_fuid.c Reduce loaded range tree memory usage 2019-10-09 10:36:03 -07:00
zfs_ioctl.c Move zfs_cmd_t copyin/copyout to platform code 2019-12-02 10:08:27 -08:00
zfs_log.c Add zfs_file_* interface, remove vnodes 2019-11-21 09:32:57 -08:00
zfs_onexit.c Move zfs_onexit_fd_hold to platform code 2019-10-13 19:19:39 -07:00
zfs_ratelimit.c
zfs_replay.c Add zfs_file_* interface, remove vnodes 2019-11-21 09:32:57 -08:00
zfs_rlock.c Move platform specific parts of zfs_znode.h to platform code 2019-11-06 10:54:25 -08:00
zfs_sa.c Add inode accessors to common code 2019-10-02 09:15:12 -07:00
zil.c Improve logging of 128KB writes 2019-11-11 09:27:59 -08:00
zio_checksum.c Fix typos in module/zfs/ 2019-09-02 17:56:41 -07:00
zio_compress.c Fix typos in module/zfs/ 2019-09-02 17:56:41 -07:00
zio_inject.c Fix typos in module/zfs/ 2019-09-02 17:56:41 -07:00
zio.c Enable use of DTRACE_PROBE* macros in "spl" module 2019-11-01 13:13:43 -07:00
zle.c
zrlock.c Enable use of DTRACE_PROBE* macros in "spl" module 2019-11-01 13:13:43 -07:00
zthr.c Fast Clone Deletion 2019-07-26 10:54:14 -07:00
zvol.c Move final zvol_remove_minors to common code 2019-10-25 13:42:54 -07:00