if (start <= files->next_fd) files->next_fd = newfd + 1; 
if (start <= fdt->next_fd) fdt->next_fd = newfd + 1; 
static int locate_fd(struct files_struct *files, 			    struct file *file, unsigned int orig_start){	unsigned int newfd;	unsigned int start;	int error;	error = -EINVAL;	if (orig_start >= current->signal->rlim[RLIMIT_NOFILE].rlim_cur)		goto out;repeat:	/*	 * Someone might have closed fd's in the range	 * orig_start..files->next_fd	 */	start = orig_start;	if (start < files->next_fd)		start = files->next_fd;	newfd = start;	if (start < files->max_fdset) {		newfd = find_next_zero_bit(files->open_fds->fds_bits,			files->max_fdset, start);	}		error = -EMFILE;	if (newfd >= current->signal->rlim[RLIMIT_NOFILE].rlim_cur)		goto out;	error = expand_files(files, newfd);	if (error < 0)		goto out;	/*	 * If we needed to expand the fs array we	 * might have blocked - try again.	 */	if (error)		goto repeat;	if (start <= files->next_fd)		files->next_fd = newfd + 1;		error = newfd;	out:	return error;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/badf16621c1f9d1ac753be056fce11b43d6e0be5/fcntl.c/clean/fs/fcntl.c