err = fcntl_setlk(filp, cmd, (struct flock __user *) arg); 
err = fcntl_setlk(fd, filp, cmd, (struct flock __user *) arg); 
static long do_fcntl(int fd, unsigned int cmd, unsigned long arg,		struct file *filp){	long err = -EINVAL;	switch (cmd) {	case F_DUPFD:		get_file(filp);		err = dupfd(filp, arg);		break;	case F_GETFD:		err = get_close_on_exec(fd) ? FD_CLOEXEC : 0;		break;	case F_SETFD:		err = 0;		set_close_on_exec(fd, arg & FD_CLOEXEC);		break;	case F_GETFL:		err = filp->f_flags;		break;	case F_SETFL:		err = setfl(fd, filp, arg);		break;	case F_GETLK:		err = fcntl_getlk(filp, (struct flock __user *) arg);		break;	case F_SETLK:	case F_SETLKW:		err = fcntl_setlk(filp, cmd, (struct flock __user *) arg);		break;	case F_GETOWN:		/*		 * XXX If f_owner is a process group, the		 * negative return value will get converted		 * into an error.  Oops.  If we keep the		 * current syscall conventions, the only way		 * to fix this will be in libc.		 */		err = filp->f_owner.pid;		force_successful_syscall_return();		break;	case F_SETOWN:		err = f_setown(filp, arg, 1);		break;	case F_GETSIG:		err = filp->f_owner.signum;		break;	case F_SETSIG:		/* arg == 0 restores default behaviour. */		if (!valid_signal(arg)) {			break;		}		err = 0;		filp->f_owner.signum = arg;		break;	case F_GETLEASE:		err = fcntl_getlease(filp);		break;	case F_SETLEASE:		err = fcntl_setlease(fd, filp, arg);		break;	case F_NOTIFY:		err = fcntl_dirnotify(fd, filp, arg);		break;	default:		break;	}	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/c293621bbf678a3d85e3ed721c3921c8a670610d/fcntl.c/clean/fs/fcntl.c