if (value) kfree(value); 
kfree(value); 
ext2_set_acl(struct inode *inode, int type, struct posix_acl *acl){	struct ext2_inode_info *ei = EXT2_I(inode);	int name_index;	void *value = NULL;	size_t size;	int error;	if (S_ISLNK(inode->i_mode))		return -EOPNOTSUPP;	if (!test_opt(inode->i_sb, POSIX_ACL))		return 0;	switch(type) {		case ACL_TYPE_ACCESS:			name_index = EXT2_XATTR_INDEX_POSIX_ACL_ACCESS;			if (acl) {				mode_t mode = inode->i_mode;				error = posix_acl_equiv_mode(acl, &mode);				if (error < 0)					return error;				else {					inode->i_mode = mode;					mark_inode_dirty(inode);					if (error == 0)						acl = NULL;				}			}			break;		case ACL_TYPE_DEFAULT:			name_index = EXT2_XATTR_INDEX_POSIX_ACL_DEFAULT;			if (!S_ISDIR(inode->i_mode))				return acl ? -EACCES : 0;			break;		default:			return -EINVAL;	} 	if (acl) {		value = ext2_acl_to_disk(acl, &size);		if (IS_ERR(value))			return (int)PTR_ERR(value);	}	error = ext2_xattr_set(inode, name_index, "", value, size, 0);	if (value)		kfree(value);	if (!error) {		switch(type) {			case ACL_TYPE_ACCESS:				ext2_iset_acl(inode, &ei->i_acl, acl);				break;			case ACL_TYPE_DEFAULT:				ext2_iset_acl(inode, &ei->i_default_acl, acl);				break;		}	}	return error;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/f99d49adf527fa6f7a9c42257fa76bca6b8df1e3/acl.c/clean/fs/ext2/acl.c