file = shmem_file_setup(name, size, VM_ACCOUNT); 
file = shmem_file_setup(name, size, acctflag); 
static int newseg (key_t key, int shmflg, size_t size){	int error;	struct shmid_kernel *shp;	int numpages = (size + PAGE_SIZE -1) >> PAGE_SHIFT;	struct file * file;	char name[13];	int id;	if (size < SHMMIN || size > shm_ctlmax)		return -EINVAL;	if (shm_tot + numpages >= shm_ctlall)		return -ENOSPC;	shp = ipc_rcu_alloc(sizeof(*shp));	if (!shp)		return -ENOMEM;	shp->shm_perm.key = key;	shp->shm_flags = (shmflg & S_IRWXUGO);	shp->mlock_user = NULL;	shp->shm_perm.security = NULL;	error = security_shm_alloc(shp);	if (error) {		ipc_rcu_putref(shp);		return error;	}	if (shmflg & SHM_HUGETLB) {		/* hugetlb_zero_setup takes care of mlock user accounting */		file = hugetlb_zero_setup(size);		shp->mlock_user = current->user;	} else {		sprintf (name, "SYSV%08x", key);		file = shmem_file_setup(name, size, VM_ACCOUNT);	}	error = PTR_ERR(file);	if (IS_ERR(file))		goto no_file;	error = -ENOSPC;	id = shm_addid(shp);	if(id == -1) 		goto no_id;	shp->shm_cprid = current->tgid;	shp->shm_lprid = 0;	shp->shm_atim = shp->shm_dtim = 0;	shp->shm_ctim = get_seconds();	shp->shm_segsz = size;	shp->shm_nattch = 0;	shp->id = shm_buildid(id,shp->shm_perm.seq);	shp->shm_file = file;	file->f_dentry->d_inode->i_ino = shp->id;	/* Hugetlb ops would have already been assigned. */	if (!(shmflg & SHM_HUGETLB))		file->f_op = &shm_file_operations;	shm_tot += numpages;	shm_unlock(shp);	return shp->id;no_id:	fput(file);no_file:	security_shm_free(shp);	ipc_rcu_putref(shp);	return error;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/bf8f972d3a1daf969cf44f64cc36d53bfd76441f/shm.c/clean/ipc/shm.c