 fl->fl_start = start;	/* we record the absolute position */ fl->fl_end = end; if (l->l_len == 0) fl->fl_end = OFFSET_MAX; 
static int flock_to_posix_lock(struct file *filp, struct file_lock *fl,			       struct flock *l){	off_t start, end;	switch (l->l_whence) {	case 0: /*SEEK_SET*/		start = 0;		break;	case 1: /*SEEK_CUR*/		start = filp->f_pos;		break;	case 2: /*SEEK_END*/		start = i_size_read(filp->f_dentry->d_inode);		break;	default:		return -EINVAL;	}	/* POSIX-1996 leaves the case l->l_len < 0 undefined;	   POSIX-2001 defines it. */	start += l->l_start;	end = start + l->l_len - 1;	if (l->l_len < 0) {		end = start - 1;		start += l->l_len;	}	if (start < 0)		return -EINVAL;	if (l->l_len > 0 && end < 0)		return -EOVERFLOW;	fl->fl_start = start;	/* we record the absolute position */	fl->fl_end = end;	if (l->l_len == 0)		fl->fl_end = OFFSET_MAX;		fl->fl_owner = current->files;	fl->fl_pid = current->tgid;	fl->fl_file = filp;	fl->fl_flags = FL_POSIX;	fl->fl_ops = NULL;	fl->fl_lmops = NULL;	return assign_type(fl, l->l_type);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/4c780a4688b421baa896b59778c05d7e068e479f/locks.c/clean/fs/locks.c