module_put(serial->type->owner); 
module_put(serial->type->driver.owner); 
static int serial_open (struct tty_struct *tty, struct file * filp){	struct usb_serial *serial;	struct usb_serial_port *port;	unsigned int portNumber;	int retval;		dbg("%s", __FUNCTION__);	/* get the serial object associated with this tty pointer */	serial = usb_serial_get_by_index(tty->index);	if (!serial) {		tty->driver_data = NULL;		return -ENODEV;	}	portNumber = tty->index - serial->minor;	port = serial->port[portNumber];	 	++port->open_count;	if (port->open_count == 1) {		/* set up our port structure making the tty driver		 * remember our port object, and us it */		tty->driver_data = port;		port->tty = tty;		/* lock this module before we call it		 * this may fail, which means we must bail out,		 * safe because we are called with BKL held */		if (!try_module_get(serial->type->owner)) {			retval = -ENODEV;			goto bailout_kref_put;		}		/* only call the device specific open if this 		 * is the first time the port is opened */		retval = serial->type->open(port, filp);		if (retval)			goto bailout_module_put;	}	return 0;bailout_module_put:	module_put(serial->type->owner);bailout_kref_put:	kref_put(&serial->kref, destroy_serial);	port->open_count = 0;	return retval;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/18fcac353fdc7cd072b0d24c8667042e675a4c11/usb-serial.c/clean/drivers/usb/serial/usb-serial.c