From: Tim Chase Date: Mon, 2 May 2016 17:00:50 +0000 (-0500) Subject: Enable PF_FSTRANS for ioctl secpolicy callbacks (#4571) X-Git-Tag: zfs-0.7.0-rc1~180 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ddab862d4cb860c6067b50ed2d040ac6d0f96b65;p=zfs Enable PF_FSTRANS for ioctl secpolicy callbacks (#4571) At the very least, the zfs_secpolicy_write_perms ioctl security policy callback, which calls dsl_dataset_hold(), can require freeing memory and, therefore, re-enter ZFS. This patch enables PF_FSTRANS for all of the security policy callbacks similarly to the manner in which it's enabled for the actual ioctl callback. Signed-off-by: Brian Behlendorf Closes #4554 --- diff --git a/module/zfs/zfs_ioctl.c b/module/zfs/zfs_ioctl.c index 50f6a7a2c..6cc50e6da 100644 --- a/module/zfs/zfs_ioctl.c +++ b/module/zfs/zfs_ioctl.c @@ -5829,8 +5829,11 @@ zfsdev_ioctl(struct file *filp, unsigned cmd, unsigned long arg) } - if (error == 0 && !(flag & FKIOCTL)) + if (error == 0 && !(flag & FKIOCTL)) { + cookie = spl_fstrans_mark(); error = vec->zvec_secpolicy(zc, innvl, CRED()); + spl_fstrans_unmark(cookie); + } if (error != 0) goto out;