if (file_lock.fl_ops && file_lock.fl_ops->fl_release_private) file_lock.fl_ops->fl_release_private(&file_lock); 
int fcntl_getlk(struct file *filp, struct flock __user *l){	struct file_lock *fl, file_lock;	struct flock flock;	int error;	error = -EFAULT;	if (copy_from_user(&flock, l, sizeof(flock)))		goto out;	error = -EINVAL;	if ((flock.l_type != F_RDLCK) && (flock.l_type != F_WRLCK))		goto out;	error = flock_to_posix_lock(filp, &file_lock, &flock);	if (error)		goto out;	if (filp->f_op && filp->f_op->lock) {		error = filp->f_op->lock(filp, F_GETLK, &file_lock);		if (error < 0)			goto out;		else		  fl = (file_lock.fl_type == F_UNLCK ? NULL : &file_lock);	} else {		fl = posix_test_lock(filp, &file_lock);	} 	flock.l_type = F_UNLCK;	if (fl != NULL) {		flock.l_pid = fl->fl_pid;#if BITS_PER_LONG == 32		/*		 * Make sure we can represent the posix lock via		 * legacy 32bit flock.		 */		error = -EOVERFLOW;		if (fl->fl_start > OFFT_OFFSET_MAX)			goto out;		if ((fl->fl_end != OFFSET_MAX)		    && (fl->fl_end > OFFT_OFFSET_MAX))			goto out;#endif		flock.l_start = fl->fl_start;		flock.l_len = fl->fl_end == OFFSET_MAX ? 0 :			fl->fl_end - fl->fl_start + 1;		flock.l_whence = 0;		flock.l_type = fl->fl_type;	}	error = -EFAULT;	if (!copy_to_user(l, &flock, sizeof(flock)))		error = 0;out:	return error;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/80fec4c62e2cf544ac26e53f3e0d2f73df6820b9/locks.c/clean/fs/locks.c