static int sx_open(struct tty_struct * tty, struct file * filp){	int board;	int error;	struct specialix_port * port;	struct specialix_board * bp;	int i;	unsigned long flags;	func_enter();	board = SX_BOARD(tty->index);	if (board >= SX_NBOARD || !(sx_board[board].flags & SX_BOARD_PRESENT)) {		func_exit();		return -ENODEV;	}		bp = &sx_board[board];	port = sx_port + board * SX_NPORT + SX_PORT(tty->index);	port->overrun = 0;	for (i = 0; i < 10; i++)		port->hits[i]=0;	dprintk (SX_DEBUG_OPEN, "Board = %d, bp = %p, port = %p, portno = %d.\n",	        board, bp, port, SX_PORT(tty->index));	if (sx_paranoia_check(port, tty->name, "sx_open")) {		func_enter();		return -ENODEV;	}	if ((error = sx_setup_board(bp))) {		func_exit();		return error;	}	spin_lock_irqsave(&bp->lock, flags);	port->count++;	bp->count++;	tty->driver_data = port;	port->tty = tty;	spin_unlock_irqrestore(&bp->lock, flags);	if ((error = sx_setup_port(bp, port))) {		func_enter();		return error;	}		if ((error = block_til_ready(tty, filp, port))) {		func_enter();		return error;	}	func_exit();	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d61780c0d384939ef31c46b47442854d5def4623/specialix.c/buggy/drivers/char/specialix.c