]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Fix a potential use-after-free in zfs_setsecattr()
authorMark Johnston <markj@FreeBSD.org>
Tue, 9 Jan 2024 23:57:09 +0000 (18:57 -0500)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 29 Jan 2024 22:53:29 +0000 (14:53 -0800)
In general, VOPs must not load the "z_log" field until having called
zfs_enter_verify_zp().

Reviewed-by: Brian Atkinson <batkinson@lanl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Mark Johnston <markj@FreeBSD.org>
Closes #15752

module/zfs/zfs_vnops.c

index aa61575a6a1b9870fc56cd1af90d94bf77d0a7ac..e6ae574ad061ec54d96407b47020380f71b3bd21 100644 (file)
@@ -801,11 +801,11 @@ zfs_setsecattr(znode_t *zp, vsecattr_t *vsecp, int flag, cred_t *cr)
        zfsvfs_t *zfsvfs = ZTOZSB(zp);
        int error;
        boolean_t skipaclchk = (flag & ATTR_NOACLCHECK) ? B_TRUE : B_FALSE;
-       zilog_t *zilog = zfsvfs->z_log;
+       zilog_t *zilog;
 
        if ((error = zfs_enter_verify_zp(zfsvfs, zp, FTAG)) != 0)
                return (error);
-
+       zilog = zfsvfs->z_log;
        error = zfs_setacl(zp, vsecp, skipaclchk, cr);
 
        if (zfsvfs->z_os->os_sync == ZFS_SYNC_ALWAYS)