matched.ae_perm = 0; 
xfs_acl_access(	uid_t		fuid,	gid_t		fgid,	xfs_acl_t	*fap,	mode_t		md,	cred_t		*cr){	xfs_acl_entry_t	matched;	int		i, allows;	int		maskallows = -1;	/* true, but not 1, either */	int		seen_userobj = 0;	matched.ae_tag = 0;	/* Invalid type */	md >>= 6;	/* Normalize the bits for comparison */	for (i = 0; i < fap->acl_cnt; i++) {		/*		 * Break out if we've got a user_obj entry or		 * a user entry and the mask (and have processed USER_OBJ)		 */		if (matched.ae_tag == ACL_USER_OBJ)			break;		if (matched.ae_tag == ACL_USER) {			if (maskallows != -1 && seen_userobj)				break;			if (fap->acl_entry[i].ae_tag != ACL_MASK &&			    fap->acl_entry[i].ae_tag != ACL_USER_OBJ)				continue;		}		/* True if this entry allows the requested access */		allows = ((fap->acl_entry[i].ae_perm & md) == md);		switch (fap->acl_entry[i].ae_tag) {		case ACL_USER_OBJ:			seen_userobj = 1;			if (fuid != current->fsuid)				continue;			matched.ae_tag = ACL_USER_OBJ;			matched.ae_perm = allows;			break;		case ACL_USER:			if (fap->acl_entry[i].ae_id != current->fsuid)				continue;			matched.ae_tag = ACL_USER;			matched.ae_perm = allows;			break;		case ACL_GROUP_OBJ:			if ((matched.ae_tag == ACL_GROUP_OBJ ||			    matched.ae_tag == ACL_GROUP) && !allows)				continue;			if (!in_group_p(fgid))				continue;			matched.ae_tag = ACL_GROUP_OBJ;			matched.ae_perm = allows;			break;		case ACL_GROUP:			if ((matched.ae_tag == ACL_GROUP_OBJ ||			    matched.ae_tag == ACL_GROUP) && !allows)				continue;			if (!in_group_p(fap->acl_entry[i].ae_id))				continue;			matched.ae_tag = ACL_GROUP;			matched.ae_perm = allows;			break;		case ACL_MASK:			maskallows = allows;			break;		case ACL_OTHER:			if (matched.ae_tag != 0)				continue;			matched.ae_tag = ACL_OTHER;			matched.ae_perm = allows;			break;		}	}	/*	 * First possibility is that no matched entry allows access.	 * The capability to override DAC may exist, so check for it.	 */	switch (matched.ae_tag) {	case ACL_OTHER:	case ACL_USER_OBJ:		if (matched.ae_perm)			return 0;		break;	case ACL_USER:	case ACL_GROUP_OBJ:	case ACL_GROUP:		if (maskallows && matched.ae_perm)			return 0;		break;	case 0:		break;	}	return xfs_acl_capability_check(md, cr);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/5bde1ba99c8243617277f37897189c799e398baf/xfs_acl.c/clean/fs/xfs/xfs_acl.c