]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Set file mode during zfs_write
authorAntonio Russo <aerusso@aerusso.net>
Mon, 8 Feb 2021 17:15:05 +0000 (10:15 -0700)
committerGitHub <noreply@github.com>
Mon, 8 Feb 2021 17:15:05 +0000 (09:15 -0800)
commitf8ce8aed0c8d1bf0b18f461863e68eae74a83585
tree1af94ac369fe4a418e25a75f433b908740467aa6
parent7c64ee9e7731b7ad39e300b4a422892dbe8d4b23
Set file mode during zfs_write

3d40b65 refactored zfs_vnops.c, which shared much code verbatim between
Linux and BSD.  After a successful write, the suid/sgid bits are reset,
and the mode to be written is stored in newmode.  On Linux, this was
propagated to both the in-memory inode and znode, which is then updated
with sa_update.

3d40b65 accidentally removed the initialization of newmode, which
happened to occur on the same line as the inode update (which has been
moved out of the function).

The uninitialized newmode can be saved to disk, leading to a crash on
stat() of that file, in addition to a merely incorrect file mode.

Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Antonio Russo <aerusso@aerusso.net>
Closes #11474
Closes #11576
module/zfs/zfs_vnops.c