* XATTR_NAME_ACL_ACCESS is tied to i_mode 
* POSIX_ACL_XATTR_ACCESS is tied to i_mode 
static int can_set_system_xattr(struct inode *inode, const char *name,				const void *value, size_t value_len){#ifdef CONFIG_JFS_POSIX_ACL	struct posix_acl *acl;	int rc;	if ((current->fsuid != inode->i_uid) && !capable(CAP_FOWNER))		return -EPERM;	/*	 * XATTR_NAME_ACL_ACCESS is tied to i_mode	 */	if (strcmp(name, XATTR_NAME_ACL_ACCESS) == 0) {		acl = posix_acl_from_xattr(value, value_len);		if (IS_ERR(acl)) {			rc = PTR_ERR(acl);			printk(KERN_ERR "posix_acl_from_xattr returned %d\n",			       rc);			return rc;		}		if (acl) {			mode_t mode = inode->i_mode;			rc = posix_acl_equiv_mode(acl, &mode);			posix_acl_release(acl);			if (rc < 0) {				printk(KERN_ERR				       "posix_acl_equiv_mode returned %d\n",				       rc);				return rc;			}			inode->i_mode = mode;			mark_inode_dirty(inode);		}		/*		 * We're changing the ACL.  Get rid of the cached one		 */		acl =JFS_IP(inode)->i_acl;		if (acl != JFS_ACL_NOT_CACHED)			posix_acl_release(acl);		JFS_IP(inode)->i_acl = JFS_ACL_NOT_CACHED;		return 0;	} else if (strcmp(name, XATTR_NAME_ACL_DEFAULT) == 0) {		acl = posix_acl_from_xattr(value, value_len);		if (IS_ERR(acl)) {			rc = PTR_ERR(acl);			printk(KERN_ERR "posix_acl_from_xattr returned %d\n",			       rc);			return rc;		}		posix_acl_release(acl);		/*		 * We're changing the default ACL.  Get rid of the cached one		 */		acl =JFS_IP(inode)->i_default_acl;		if (acl && (acl != JFS_ACL_NOT_CACHED))			posix_acl_release(acl);		JFS_IP(inode)->i_default_acl = JFS_ACL_NOT_CACHED;		return 0;	}#endif			/* CONFIG_JFS_POSIX_ACL */	return -EOPNOTSUPP;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/9a59f452abe11f569e13ec16c51e6d61c54b9838/xattr.c/buggy/fs/jfs/xattr.c