zfs/lib/libzfs
Pavel Zakharov e6cebbf86e zfs_handle used after being closed/freed in change_one callback
This is a typical case of use after free. We would call zfs_close(zhp) 
which would free the handle, and then call zfs_iter_children() on that 
handle later.  This change ensures that the zfs_handle is only closed 
when we are ready to return.

Running `zfs inherit -r sharenfs pool` was failing with an error
code without any error messages. After some debugging I've pinpointed 
the issue to be memory corruption, which would cause zfs to try to 
issue an ioctl to the wrong device and receive ENOTTY.

Reviewed-by: Paul Dagnelie <pcd@delphix.com>
Reviewed-by: George Wilson <gwilson@delphix.com>
Reviewed-by: Sebastien Roy <sebastien.roy@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alek Pinchuk <apinchuk@datto.com>
Signed-off-by: Pavel Zakharov <pavel.zakharov@delphix.com>
Issue #7967 
Closes #9165
2019-08-28 15:02:58 -07:00
..
.gitignore Add a pkgconfig file 2014-08-28 07:59:43 -07:00
Makefile.am Include third party licenses in dist tarballs 2019-01-08 09:29:34 -08:00
THIRDPARTYLICENSE.openssl Encryption patch follow-up 2017-10-11 16:54:48 -04:00
THIRDPARTYLICENSE.openssl.descrip Encryption patch follow-up 2017-10-11 16:54:48 -04:00
libzfs.pc.in Add libnvpair to libzfs pkg-config 2019-06-22 16:43:11 -07:00
libzfs_changelist.c zfs_handle used after being closed/freed in change_one callback 2019-08-28 15:02:58 -07:00
libzfs_config.c OpenZFS 4521 - zfstest is trying to execute evil "zfs unmount -a" 2017-02-03 13:24:44 -08:00
libzfs_core.pc.in Add a pkgconfig file 2014-08-28 07:59:43 -07:00
libzfs_crypto.c Allow unencrypted children of encrypted datasets 2019-06-20 12:29:51 -07:00
libzfs_dataset.c OpenZFS 9318 - vol_volsize_to_reservation does not account for raidz skip blocks 2019-07-05 15:35:15 -07:00
libzfs_diff.c Fix wrong assertion in libzfs diff error handling 2019-05-19 17:31:54 -07:00
libzfs_import.c Improve `zpool labelclear` 2019-03-21 10:13:01 -07:00
libzfs_iter.c Implement Redacted Send/Receive 2019-06-19 09:48:12 -07:00
libzfs_mount.c Fix race in parallel mount's thread dispatching algorithm 2019-07-09 09:31:46 -07:00
libzfs_pool.c Remove dedupditto functionality 2019-06-19 14:54:02 -07:00
libzfs_sendrecv.c zfs send does not handle invalid input gracefully 2019-07-08 15:10:23 -07:00
libzfs_status.c Add missing MMP status code to libzfs_status 2019-01-03 12:15:46 -08:00
libzfs_util.c Increase default zcmd allocation to 256K 2019-07-30 09:59:38 -07:00