if (fl.fl_ops && fl.fl_ops->fl_release_private) fl.fl_ops->fl_release_private(&fl); 
void locks_remove_flock(struct file *filp){	struct inode * inode = filp->f_dentry->d_inode; 	struct file_lock *fl;	struct file_lock **before;	if (!inode->i_flock)		return;	if (filp->f_op && filp->f_op->flock) {		struct file_lock fl = {			.fl_pid = current->tgid,			.fl_file = filp,			.fl_flags = FL_FLOCK,			.fl_type = F_UNLCK,			.fl_end = OFFSET_MAX,		};		filp->f_op->flock(filp, F_SETLKW, &fl);	}	lock_kernel();	before = &inode->i_flock;	while ((fl = *before) != NULL) {		if (fl->fl_file == filp) {			/*			 * We might have a POSIX lock that was created at the same time			 * the filp was closed for the last time. Just remove that too,			 * regardless of ownership, since nobody can own it.			 */			if (IS_FLOCK(fl) || IS_POSIX(fl)) {				locks_delete_lock(before);				continue;			}			if (IS_LEASE(fl)) {				lease_modify(before, F_UNLCK);				continue;			}			/* What? */			BUG(); 		}		before = &fl->fl_next;	}	unlock_kernel();}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/80fec4c62e2cf544ac26e53f3e0d2f73df6820b9/locks.c/clean/fs/locks.c