mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 18:40:43 +03:00
Use local variable to read zp->z_mode
When accessing the zp->z_mode through the SA bulk interface we expect that 64-bits are available to hold the result. However, on 32-bit platforms mode_t will only be 32-bits so we cannot pass it to SA_ADD_BULK_ATTR(). Instead a local uint64_t variable must be used and the result assigned to zp->z_mode. This went unnoticed on 32-bit little endian platforms because the bytes happen to end up in the correct 32-bits. But on big endian platforms like Sparc the zp->z_mode will always end up set to zero. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Ned Bass <bass6@llnl.gov> Signed-off-by: marku89 <mar42@kola.li> Issue #1700
This commit is contained in:
@@ -205,8 +205,8 @@ typedef struct znode {
|
||||
uint64_t z_pflags; /* pflags (cached) */
|
||||
uint64_t z_uid; /* uid fuid (cached) */
|
||||
uint64_t z_gid; /* gid fuid (cached) */
|
||||
mode_t z_mode; /* mode (cached) */
|
||||
uint32_t z_sync_cnt; /* synchronous open count */
|
||||
mode_t z_mode; /* mode (cached) */
|
||||
kmutex_t z_acl_lock; /* acl data lock */
|
||||
zfs_acl_t *z_acl_cached; /* cached acl */
|
||||
krwlock_t z_xattr_lock; /* xattr data lock */
|
||||
|
||||
Reference in New Issue
Block a user