static int sx_ioctl(struct tty_struct * tty, struct file * filp, 
static int sx_ioctl(struct tty_struct * tty, struct file * filp, 
static int sx_ioctl(struct tty_struct * tty, struct file * filp,                     unsigned int cmd, unsigned long arg){	struct specialix_port *port = (struct specialix_port *)tty->driver_data;	int retval;	void __user *argp = (void __user *)arg;	func_enter();	if (sx_paranoia_check(port, tty->name, "sx_ioctl")) {		func_exit();		return -ENODEV;	}		switch (cmd) {	 case TCSBRK:	/* SVID version: non-zero arg --> no break */		retval = tty_check_change(tty);		if (retval) {			func_exit();			return retval;		}		tty_wait_until_sent(tty, 0);		if (!arg)			sx_send_break(port, HZ/4);	/* 1/4 second */		return 0;	 case TCSBRKP:	/* support for POSIX tcsendbreak() */		retval = tty_check_change(tty);		if (retval) {			func_exit();			return retval;		}		tty_wait_until_sent(tty, 0);		sx_send_break(port, arg ? arg*(HZ/10) : HZ/4);		func_exit();		return 0;	 case TIOCGSOFTCAR:		 if (put_user(C_CLOCAL(tty)?1:0, (unsigned long __user *)argp)) {			 func_exit();			 return -EFAULT;		 }		 func_exit();		return 0;	 case TIOCSSOFTCAR:		 if (get_user(arg, (unsigned long __user *) argp)) {			 func_exit();			 return -EFAULT;		 }		tty->termios->c_cflag =			((tty->termios->c_cflag & ~CLOCAL) |			(arg ? CLOCAL : 0));		func_exit();		return 0;	 case TIOCGSERIAL:		 func_exit();		return sx_get_serial_info(port, argp);	 case TIOCSSERIAL:			 func_exit();		return sx_set_serial_info(port, argp);	 default:		 func_exit();		return -ENOIOCTLCMD;	}	func_exit();	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d61780c0d384939ef31c46b47442854d5def4623/specialix.c/buggy/drivers/char/specialix.c