# HG changeset patch # User Vitaliy Gusev # Date 1346258239 18000 # Node ID caa31a28c30271eedf5c24587d5b34c765d60973 # Parent 7c5e0e746b2c04951150496cba79341cc07e7a64 3107 nfs4_getattr incorrectly checks bit masks Reviewed by: Eric Schrock Approved by: Richard Lowe diff -r 7c5e0e746b2c -r caa31a28c302 usr/src/uts/common/fs/nfs/nfs4_vnops.c --- a/usr/src/uts/common/fs/nfs/nfs4_vnops.c Sat Sep 01 16:44:00 2012 -0400 +++ b/usr/src/uts/common/fs/nfs/nfs4_vnops.c Wed Aug 29 11:37:19 2012 -0500 @@ -22,6 +22,9 @@ * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +/* + * Copyright 2012 Nexenta Systems, Inc. All rights reserved. + */ /* * Copyright 1983,1984,1985,1986,1987,1988,1989 AT&T. @@ -3639,14 +3642,13 @@ * call. */ if (flags & ATTR_HINT) { - if (vap->va_mask == - (vap->va_mask & (AT_SIZE | AT_FSID | AT_RDEV))) { + if (!(vap->va_mask & ~(AT_SIZE | AT_FSID | AT_RDEV))) { mutex_enter(&rp->r_statelock); - if (vap->va_mask | AT_SIZE) + if (vap->va_mask & AT_SIZE) vap->va_size = rp->r_size; - if (vap->va_mask | AT_FSID) + if (vap->va_mask & AT_FSID) vap->va_fsid = rp->r_attr.va_fsid; - if (vap->va_mask | AT_RDEV) + if (vap->va_mask & AT_RDEV) vap->va_rdev = rp->r_attr.va_rdev; mutex_exit(&rp->r_statelock); return (0);