changeset 13795:caa31a28c302

3107 nfs4_getattr incorrectly checks bit masks Reviewed by: Eric Schrock <eric.schrock@delphix.com> Approved by: Richard Lowe <richlowe@richlowe.net>
author Vitaliy Gusev <gusev.vitaliy@nexenta.com>
date Wed, 29 Aug 2012 11:37:19 -0500
parents 7c5e0e746b2c
children 7f50f76414af
files usr/src/uts/common/fs/nfs/nfs4_vnops.c
diffstat 1 files changed, 7 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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);