mirror_zfs/module/zfs
Brian Behlendorf ceb49b0acd Add object type checking to zap_lockdir()
If a non-ZAP object is passed to zap_lockdir() it will be treated
as a valid ZAP object.  This can result in zap_lockdir() attempting
to read what it believes are leaf blocks from invalid disk locations.
The SCSI layer will eventually generate errors for these bogus IOs
but the caller will hang in zap_get_leaf_byblk().

The good news is that is a situation which can not occur unless the
pool has been damaged.  The bad news is that there are reports from
both FreeBSD and Solaris of damaged pools.  Specifically, there are
normal files in the filesystem which reference another normal file
as their parent.

Since pools like this are known to exist the zap_lockdir() function
has been updated to verify the type of the object.  If a non-ZAP
object has been passed it EINVAL will be returned immediately.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #2597
Issue #2602
2014-09-08 09:15:38 -07:00
..
arc.c Illumos 5034 - ARC's buf_hash_table is too small 2014-08-26 16:14:49 -07:00
blkptr.c Illumos 4757, 4913 2014-08-01 14:28:05 -07:00
bplist.c Illumos #3464 2013-09-04 16:01:24 -07:00
bpobj.c Illumos 4757, 4913 2014-08-01 14:28:05 -07:00
bptree.c Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t 2014-08-06 14:48:41 -07:00
dbuf_stats.c cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
dbuf.c Illumos 4631 - zvol_get_stats triggering too many reads 2014-08-20 09:17:00 -07:00
ddt_zap.c cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
ddt.c Change the default 'zfs_dedup_prefetch' value to '0' 2014-09-04 09:50:45 -07:00
dmu_diff.c Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t 2014-08-06 14:48:41 -07:00
dmu_object.c Illumos 4171, 4172 2014-07-25 16:40:07 -07:00
dmu_objset.c Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t 2014-08-06 14:48:41 -07:00
dmu_send.c Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t 2014-08-06 14:48:41 -07:00
dmu_traverse.c Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t 2014-08-06 14:48:41 -07:00
dmu_tx.c Improve reporting of tx assignment wait times 2014-03-04 12:22:24 -08:00
dmu_zfetch.c Use enum type(zfetch_dirn_t) instead 2014-01-23 12:56:33 -08:00
dmu.c Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t 2014-08-06 14:48:41 -07:00
dnode_sync.c Illumos 4757, 4913 2014-08-01 14:28:05 -07:00
dnode.c Illumos 4757, 4913 2014-08-01 14:28:05 -07:00
dsl_bookmark.c Illumos 4368, 4369. 2014-07-29 10:55:29 -07:00
dsl_dataset.c Fix invalid locking order in rename operation 2014-09-04 09:50:46 -07:00
dsl_deadlist.c Illumos #3104: eliminate empty bpobjs 2013-01-08 10:35:43 -08:00
dsl_deleg.c cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
dsl_destroy.c Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t 2014-08-06 14:48:41 -07:00
dsl_dir.c Illumos 4171, 4172 2014-07-25 16:40:07 -07:00
dsl_pool.c Illumos 4390 - I/O errors can corrupt space map when deleting fs/vol 2014-08-04 11:50:52 -07:00
dsl_prop.c Check the dataset type more rigorously when fetching properties. 2014-05-06 10:41:46 -07:00
dsl_scan.c Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t 2014-08-06 14:48:41 -07:00
dsl_synctask.c Export symbols dsl_sync_task{_nowait} 2014-03-07 10:01:36 -08:00
dsl_userhold.c Illumos 4757, 4913 2014-08-01 14:28:05 -07:00
fm.c Fixed memory leaks in zevent handling 2014-08-20 10:45:16 -07:00
gzip.c cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
lz4.c Illumos #4936 fix potential overflow in lz4 2014-07-01 14:10:47 -07:00
lzjb.c cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
Makefile.in Illumos 4757, 4913 2014-08-01 14:28:05 -07:00
metaslab.c Don't upgrade a metaslab when the pool is not writable 2014-08-18 08:47:19 -07:00
range_tree.c Illumos 4976-4984 - metaslab improvements 2014-08-18 08:40:49 -07:00
refcount.c Illumos #3464 2013-09-04 16:01:24 -07:00
rrwlock.c Fix several new KM_SLEEP warnings 2013-09-25 15:44:22 -07:00
sa.c Calculate header size correctly in sa_find_sizes() 2014-05-19 11:55:50 -07:00
sha256.c Add linux sha2 support 2010-08-31 13:41:59 -07:00
spa_boot.c Add linux kernel module support 2010-08-31 13:41:58 -07:00
spa_config.c Implement -t option to zpool import for temporary pool names 2014-03-20 12:05:30 -07:00
spa_errlog.c Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t 2014-08-06 14:48:41 -07:00
spa_history.c cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
spa_misc.c Illumos 4757, 4913 2014-08-01 14:28:05 -07:00
spa_stats.c Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t 2014-08-06 14:48:41 -07:00
spa.c Illumos 4970-4974 - extreme rewind enhancements 2014-08-26 16:29:57 -07:00
space_map.c Illumos 4976-4984 - metaslab improvements 2014-08-18 08:40:49 -07:00
space_reftree.c Illumos #4101, #4102, #4103, #4105, #4106 2014-07-22 09:39:16 -07:00
txg.c Illumos 4976-4984 - metaslab improvements 2014-08-18 08:40:49 -07:00
uberblock.c Illumos #3598 2013-10-31 14:58:04 -07:00
unique.c Switch KM_SLEEP to KM_PUSHPAGE 2012-08-27 12:01:37 -07:00
vdev_cache.c Illumos 4370, 4371 2014-07-28 14:29:58 -07:00
vdev_disk.c Illumos #4374 2014-07-30 09:20:35 -07:00
vdev_file.c Honor zfs_nocacheflush for file vdevs 2014-05-19 13:30:48 -07:00
vdev_label.c Illumos #4101, #4102, #4103, #4105, #4106 2014-07-22 09:39:16 -07:00
vdev_mirror.c Illumos #4045 write throttle & i/o scheduler performance work 2013-12-06 09:32:43 -08:00
vdev_missing.c Illumos #3598 2013-10-31 14:58:04 -07:00
vdev_queue.c Avoid dynamic allocation of 'search zio' 2014-08-11 08:44:54 -07:00
vdev_raidz.c Illumos #4045 write throttle & i/o scheduler performance work 2013-12-06 09:32:43 -08:00
vdev_root.c Illumos #3598 2013-10-31 14:58:04 -07:00
vdev.c Illumos 5049 - panic when removing log device 2014-09-05 09:06:27 -07:00
zap_leaf.c Illumos #4374 2014-07-30 09:20:35 -07:00
zap_micro.c Add object type checking to zap_lockdir() 2014-09-08 09:15:38 -07:00
zap.c Illumos #4374 2014-07-30 09:20:35 -07:00
zfeature_common.c Illumos 4757, 4913 2014-08-01 14:28:05 -07:00
zfeature.c Illumos 4370, 4371 2014-07-28 14:29:58 -07:00
zfs_acl.c Allow chown/chgrp when no ACL SAs exist. 2014-01-23 11:07:29 -08:00
zfs_byteswap.c Add linux kernel module support 2010-08-31 13:41:58 -07:00
zfs_ctldir.c Illumos 4368, 4369. 2014-07-29 10:55:29 -07:00
zfs_debug.c Illumos 4390 - I/O errors can corrupt space map when deleting fs/vol 2014-08-04 11:50:52 -07:00
zfs_dir.c Revert "Revert "Revert "Fix unlink/xattr deadlock""" 2014-08-11 16:12:36 -07:00
zfs_fm.c Fixed memory leaks in zevent handling 2014-08-20 10:45:16 -07:00
zfs_fuid.c Illumos #3522 2013-10-30 14:51:27 -07:00
zfs_ioctl.c Illumos 4757, 4913 2014-08-01 14:28:05 -07:00
zfs_log.c Only commit the ZIL once in zpl_writepages() (msync() case). 2013-11-23 15:08:29 -08:00
zfs_onexit.c Illumos #3598 2013-10-31 14:58:04 -07:00
zfs_replay.c Linux AIO Support 2014-09-05 15:11:43 -07:00
zfs_rlock.c cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
zfs_sa.c cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
zfs_vfsops.c Improve handling of filesystem versions 2014-09-03 09:17:14 -07:00
zfs_vnops.c Add zfs_iput_async() interface 2014-08-11 16:11:43 -07:00
zfs_znode.c Add zfs_iput_async() interface 2014-08-11 16:11:43 -07:00
zil.c Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t 2014-08-06 14:48:41 -07:00
zio_checksum.c Illumos 4757, 4913 2014-08-01 14:28:05 -07:00
zio_compress.c Illumos 4757, 4913 2014-08-01 14:28:05 -07:00
zio_inject.c Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t 2014-08-06 14:48:41 -07:00
zio.c Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t 2014-08-06 14:48:41 -07:00
zle.c Update core ZFS code from build 121 to build 141. 2010-05-28 13:45:14 -07:00
zpl_ctldir.c cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
zpl_export.c cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
zpl_file.c Linux AIO Support 2014-09-05 15:11:43 -07:00
zpl_inode.c cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
zpl_super.c Prune metadata from ghost lists in arc_adjust_meta 2014-02-21 16:10:49 -08:00
zpl_xattr.c Linux AIO Support 2014-09-05 15:11:43 -07:00
zrlock.c Export ZFS symbols needed by Lustre. 2010-09-17 16:24:15 -07:00
zvol.c Use long holds in zvol_set_volsize() 2014-01-14 14:46:12 -08:00