[PATCH] USB Serial: get rid of the .owner field in usb_serial_driver

Don't duplicate something that's already in struct driver.

Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
diff --git a/drivers/usb/serial/airprime.c b/drivers/usb/serial/airprime.c
index 104c043..fbc5b9b 100644
--- a/drivers/usb/serial/airprime.c
+++ b/drivers/usb/serial/airprime.c
@@ -31,7 +31,9 @@
 };
 
 static struct usb_serial_driver airprime_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"airprime",
 	.id_table =		id_table,
 	.num_interrupt_in =	NUM_DONT_CARE,
diff --git a/drivers/usb/serial/belkin_sa.c b/drivers/usb/serial/belkin_sa.c
index 6d84de4..4878961 100644
--- a/drivers/usb/serial/belkin_sa.c
+++ b/drivers/usb/serial/belkin_sa.c
@@ -122,7 +122,9 @@
 
 /* All of the device info needed for the serial converters */
 static struct usb_serial_driver belkin_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"Belkin / Peracom / GoHubs USB Serial Adapter",
 	.short_name =		"belkin",
 	.id_table =		id_table_combined,
diff --git a/drivers/usb/serial/bus.c b/drivers/usb/serial/bus.c
index 5a0bcd3..b8364a8 100644
--- a/drivers/usb/serial/bus.c
+++ b/drivers/usb/serial/bus.c
@@ -57,13 +57,13 @@
 
 	driver = port->serial->type;
 	if (driver->port_probe) {
-		if (!try_module_get(driver->owner)) {
+		if (!try_module_get(driver->driver.owner)) {
 			dev_err(dev, "module get failed, exiting\n");
 			retval = -EIO;
 			goto exit;
 		}
 		retval = driver->port_probe (port);
-		module_put(driver->owner);
+		module_put(driver->driver.owner);
 		if (retval)
 			goto exit;
 	}
@@ -92,13 +92,13 @@
 
 	driver = port->serial->type;
 	if (driver->port_remove) {
-		if (!try_module_get(driver->owner)) {
+		if (!try_module_get(driver->driver.owner)) {
 			dev_err(dev, "module get failed, exiting\n");
 			retval = -EIO;
 			goto exit;
 		}
 		retval = driver->port_remove (port);
-		module_put(driver->owner);
+		module_put(driver->driver.owner);
 	}
 exit:
 	minor = port->number;
@@ -120,7 +120,6 @@
 	driver->driver.bus = &usb_serial_bus_type;
 	driver->driver.probe = usb_serial_device_probe;
 	driver->driver.remove = usb_serial_device_remove;
-	driver->driver.owner = driver->owner;
 
 	retval = driver_register(&driver->driver);
 
diff --git a/drivers/usb/serial/cp2101.c b/drivers/usb/serial/cp2101.c
index 0b45b58..81dd720 100644
--- a/drivers/usb/serial/cp2101.c
+++ b/drivers/usb/serial/cp2101.c
@@ -74,7 +74,9 @@
 };
 
 static struct usb_serial_driver cp2101_device = {
-	.owner			= THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name			= "CP2101",
 	.id_table		= id_table,
 	.num_interrupt_in	= 0,
diff --git a/drivers/usb/serial/cyberjack.c b/drivers/usb/serial/cyberjack.c
index 9f421a3..3441bad 100644
--- a/drivers/usb/serial/cyberjack.c
+++ b/drivers/usb/serial/cyberjack.c
@@ -84,7 +84,9 @@
 };
 
 static struct usb_serial_driver cyberjack_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"Reiner SCT Cyberjack USB card reader",
 	.short_name =		"cyberjack",
 	.id_table =		id_table,
diff --git a/drivers/usb/serial/cypress_m8.c b/drivers/usb/serial/cypress_m8.c
index 4fb8e59..b4069af 100644
--- a/drivers/usb/serial/cypress_m8.c
+++ b/drivers/usb/serial/cypress_m8.c
@@ -177,7 +177,9 @@
 
 
 static struct usb_serial_driver cypress_earthmate_device = {
-	.owner =			THIS_MODULE,
+	.driver = {
+		.owner =		THIS_MODULE,
+	},
 	.name =				"DeLorme Earthmate USB",
 	.short_name =			"earthmate",
 	.id_table =			id_table_earthmate,
@@ -204,7 +206,9 @@
 };
 
 static struct usb_serial_driver cypress_hidcom_device = {
-	.owner =			THIS_MODULE,
+	.driver = {
+		.owner =		THIS_MODULE,
+	},
 	.name =				"HID->COM RS232 Adapter",
 	.short_name =			"cyphidcom",
 	.id_table =			id_table_cyphidcomrs232,
diff --git a/drivers/usb/serial/digi_acceleport.c b/drivers/usb/serial/digi_acceleport.c
index 66feb88..be9b495 100644
--- a/drivers/usb/serial/digi_acceleport.c
+++ b/drivers/usb/serial/digi_acceleport.c
@@ -504,7 +504,9 @@
 /* device info needed for the Digi serial converter */
 
 static struct usb_serial_driver digi_acceleport_2_device = {
-	.owner =			THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =				"Digi 2 port USB adapter",
 	.short_name =			"digi_2",
 	.id_table =			id_table_2,
@@ -531,7 +533,9 @@
 };
 
 static struct usb_serial_driver digi_acceleport_4_device = {
-	.owner =			THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =				"Digi 4 port USB adapter",
 	.short_name =			"digi_4",
 	.id_table =			id_table_4,
diff --git a/drivers/usb/serial/empeg.c b/drivers/usb/serial/empeg.c
index cbea8b3..3e6c4ba 100644
--- a/drivers/usb/serial/empeg.c
+++ b/drivers/usb/serial/empeg.c
@@ -113,7 +113,9 @@
 };
 
 static struct usb_serial_driver empeg_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"Empeg",
 	.id_table =		id_table,
 	.num_interrupt_in =	0,
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 529e1a7..9d945de 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -563,7 +563,9 @@
 static __u32 ftdi_232bm_baud_to_divisor (int baud);
 
 static struct usb_serial_driver ftdi_sio_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"FTDI USB Serial Device",
 	.short_name =		"ftdi_sio",
 	.id_table =		id_table_combined,
diff --git a/drivers/usb/serial/garmin_gps.c b/drivers/usb/serial/garmin_gps.c
index 7361194..3fd98c0 100644
--- a/drivers/usb/serial/garmin_gps.c
+++ b/drivers/usb/serial/garmin_gps.c
@@ -1470,7 +1470,9 @@
 
 /* All of the device info needed */
 static struct usb_serial_driver garmin_device = {
-	.owner               = THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name                = "Garmin GPS usb/tty",
 	.short_name          = "garmin_gps",
 	.id_table            = id_table,
diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c
index 7f567bf..779bea0c 100644
--- a/drivers/usb/serial/generic.c
+++ b/drivers/usb/serial/generic.c
@@ -37,7 +37,9 @@
 
 /* All of the device info needed for the Generic Serial Converter */
 struct usb_serial_driver usb_serial_generic_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"Generic",
 	.short_name =		"generic",
 	.id_table =		generic_device_ids,
diff --git a/drivers/usb/serial/hp4x.c b/drivers/usb/serial/hp4x.c
index b494699..4f3cbc0 100644
--- a/drivers/usb/serial/hp4x.c
+++ b/drivers/usb/serial/hp4x.c
@@ -45,7 +45,9 @@
 };
 
 static struct usb_serial_driver hp49gp_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"HP4X",
 	.id_table =		id_table,
 	.num_interrupt_in =	NUM_DONT_CARE,
diff --git a/drivers/usb/serial/io_tables.h b/drivers/usb/serial/io_tables.h
index 7314c04..28fb0d4 100644
--- a/drivers/usb/serial/io_tables.h
+++ b/drivers/usb/serial/io_tables.h
@@ -76,7 +76,9 @@
 MODULE_DEVICE_TABLE (usb, id_table_combined);
 
 static struct usb_serial_driver edgeport_2port_device = {
-	.owner			= THIS_MODULE,
+	.driver = {
+		.owner		= THIS_MODULE,
+	},
 	.name			= "Edgeport 2 port adapter",
 	.short_name		= "edgeport_2",
 	.id_table		= edgeport_2port_id_table,
@@ -104,7 +106,9 @@
 };
 
 static struct usb_serial_driver edgeport_4port_device = {
-	.owner			= THIS_MODULE,
+	.driver = {
+		.owner		= THIS_MODULE,
+	},
 	.name			= "Edgeport 4 port adapter",
 	.short_name		= "edgeport_4",
 	.id_table		= edgeport_4port_id_table,
@@ -132,7 +136,9 @@
 };
 
 static struct usb_serial_driver edgeport_8port_device = {
-	.owner			= THIS_MODULE,
+	.driver = {
+		.owner		= THIS_MODULE,
+	},
 	.name			= "Edgeport 8 port adapter",
 	.short_name		= "edgeport_8",
 	.id_table		= edgeport_8port_id_table,
diff --git a/drivers/usb/serial/io_ti.c b/drivers/usb/serial/io_ti.c
index 4328cc7..74228a0 100644
--- a/drivers/usb/serial/io_ti.c
+++ b/drivers/usb/serial/io_ti.c
@@ -2983,7 +2983,9 @@
 
 
 static struct usb_serial_driver edgeport_1port_device = {
-	.owner			= THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name			= "Edgeport TI 1 port adapter",
 	.short_name		= "edgeport_ti_1",
 	.id_table		= edgeport_1port_id_table,
@@ -3011,7 +3013,9 @@
 };
 
 static struct usb_serial_driver edgeport_2port_device = {
-	.owner			= THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name			= "Edgeport TI 2 port adapter",
 	.short_name		= "edgeport_ti_2",
 	.id_table		= edgeport_2port_id_table,
diff --git a/drivers/usb/serial/ipaq.c b/drivers/usb/serial/ipaq.c
index 9a79ad8..9aedfb9 100644
--- a/drivers/usb/serial/ipaq.c
+++ b/drivers/usb/serial/ipaq.c
@@ -548,7 +548,9 @@
 
 /* All of the device info needed for the Compaq iPAQ */
 static struct usb_serial_driver ipaq_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"PocketPC PDA",
 	.id_table =		ipaq_id_table,
 	.num_interrupt_in =	NUM_DONT_CARE,
diff --git a/drivers/usb/serial/ipw.c b/drivers/usb/serial/ipw.c
index 04524d3..2ba6962 100644
--- a/drivers/usb/serial/ipw.c
+++ b/drivers/usb/serial/ipw.c
@@ -444,7 +444,9 @@
 }
 
 static struct usb_serial_driver ipw_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"IPWireless converter",
 	.short_name =		"ipw",
 	.id_table =		usb_ipw_ids,
diff --git a/drivers/usb/serial/ir-usb.c b/drivers/usb/serial/ir-usb.c
index ecfb206..bf07905 100644
--- a/drivers/usb/serial/ir-usb.c
+++ b/drivers/usb/serial/ir-usb.c
@@ -134,7 +134,9 @@
 
 
 static struct usb_serial_driver ir_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"IR Dongle",
 	.id_table =		id_table,
 	.num_interrupt_in =	1,
diff --git a/drivers/usb/serial/keyspan.h b/drivers/usb/serial/keyspan.h
index 97e7d9e..124d46e 100644
--- a/drivers/usb/serial/keyspan.h
+++ b/drivers/usb/serial/keyspan.h
@@ -571,7 +571,9 @@
 
 /* Structs for the devices, pre and post renumeration. */
 static struct usb_serial_driver keyspan_pre_device = {
-	.owner			= THIS_MODULE,
+	.driver = {
+		.owner		= THIS_MODULE,
+	},
 	.name			= "Keyspan - (without firmware)",
 	.short_name		= "keyspan_no_firm",
 	.id_table		= keyspan_pre_ids,
@@ -583,7 +585,9 @@
 };
 
 static struct usb_serial_driver keyspan_1port_device = {
-	.owner			= THIS_MODULE,
+	.driver = {
+		.owner		= THIS_MODULE,
+	},
 	.name			= "Keyspan 1 port adapter",
 	.short_name		= "keyspan_1",
 	.id_table		= keyspan_1port_ids,
@@ -608,7 +612,9 @@
 };
 
 static struct usb_serial_driver keyspan_2port_device = {
-	.owner			= THIS_MODULE,
+	.driver = {
+		.owner		= THIS_MODULE,
+	},
 	.name			= "Keyspan 2 port adapter",
 	.short_name		= "keyspan_2",
 	.id_table		= keyspan_2port_ids,
@@ -633,7 +639,9 @@
 };
 
 static struct usb_serial_driver keyspan_4port_device = {
-	.owner			= THIS_MODULE,
+	.driver = {
+		.owner		= THIS_MODULE,
+	},
 	.name			= "Keyspan 4 port adapter",
 	.short_name		= "keyspan_4",
 	.id_table		= keyspan_4port_ids,
diff --git a/drivers/usb/serial/keyspan_pda.c b/drivers/usb/serial/keyspan_pda.c
index 8fad0e9..389b783 100644
--- a/drivers/usb/serial/keyspan_pda.c
+++ b/drivers/usb/serial/keyspan_pda.c
@@ -784,7 +784,9 @@
 
 #ifdef KEYSPAN
 static struct usb_serial_driver keyspan_pda_fake_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"Keyspan PDA - (prerenumeration)",
 	.short_name =		"keyspan_pda_pre",
 	.id_table =		id_table_fake,
@@ -798,7 +800,9 @@
 
 #ifdef XIRCOM
 static struct usb_serial_driver xircom_pgs_fake_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"Xircom / Entregra PGS - (prerenumeration)",
 	.short_name =		"xircom_no_firm",
 	.id_table =		id_table_fake_xircom,
@@ -811,7 +815,9 @@
 #endif
 
 static struct usb_serial_driver keyspan_pda_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"Keyspan PDA",
 	.short_name =		"keyspan_pda",
 	.id_table =		id_table_std,
diff --git a/drivers/usb/serial/kl5kusb105.c b/drivers/usb/serial/kl5kusb105.c
index be08270..586108c 100644
--- a/drivers/usb/serial/kl5kusb105.c
+++ b/drivers/usb/serial/kl5kusb105.c
@@ -124,7 +124,9 @@
 };
 
 static struct usb_serial_driver kl5kusb105d_device = {
-	.owner =             THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =		     "KL5KUSB105D / PalmConnect",
 	.short_name =	     "kl5kusb105d",
 	.id_table =	     id_table,
diff --git a/drivers/usb/serial/kobil_sct.c b/drivers/usb/serial/kobil_sct.c
index 9494434..a9578e0 100644
--- a/drivers/usb/serial/kobil_sct.c
+++ b/drivers/usb/serial/kobil_sct.c
@@ -106,7 +106,9 @@
 
 
 static struct usb_serial_driver kobil_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"KOBIL USB smart card terminal",
 	.id_table =		id_table,
 	.num_interrupt_in =	NUM_DONT_CARE,
diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c
index 94709643..7dcf91c 100644
--- a/drivers/usb/serial/mct_u232.c
+++ b/drivers/usb/serial/mct_u232.c
@@ -133,7 +133,9 @@
 };
 
 static struct usb_serial_driver mct_u232_device = {
-	.owner =	     THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =		     "MCT U232",
 	.short_name =	     "mct_u232",
 	.id_table =	     id_table_combined,
diff --git a/drivers/usb/serial/omninet.c b/drivers/usb/serial/omninet.c
index 53c0588..f6327cc1 100644
--- a/drivers/usb/serial/omninet.c
+++ b/drivers/usb/serial/omninet.c
@@ -89,7 +89,9 @@
 
 
 static struct usb_serial_driver zyxel_omninet_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"ZyXEL - omni.net lcd plus usb",
 	.short_name =		"omninet",
 	.id_table =		id_table,
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index 6ec9266..a2b5adf 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -106,7 +106,9 @@
  * recognizes separately, thus num_port=1.
  */
 static struct usb_serial_driver option_3port_device = {
-	.owner             = THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name              = "Option 3G data card",
 	.short_name        = "option",
 	.id_table          = option_ids,
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index 7134648..beef3c4 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -176,7 +176,9 @@
 
 /* All of the device info needed for the PL2303 SIO serial converter */
 static struct usb_serial_driver pl2303_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"PL-2303",
 	.id_table =		id_table,
 	.num_interrupt_in =	NUM_DONT_CARE,
diff --git a/drivers/usb/serial/safe_serial.c b/drivers/usb/serial/safe_serial.c
index 87871bb..42a86ab 100644
--- a/drivers/usb/serial/safe_serial.c
+++ b/drivers/usb/serial/safe_serial.c
@@ -398,7 +398,9 @@
 }
 
 static struct usb_serial_driver safe_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"Safe",
 	.id_table =		id_table,
 	.num_interrupt_in =	NUM_DONT_CARE,
diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
index f2efaf6..eab8a6d 100644
--- a/drivers/usb/serial/ti_usb_3410_5052.c
+++ b/drivers/usb/serial/ti_usb_3410_5052.c
@@ -256,7 +256,9 @@
 };
 
 static struct usb_serial_driver ti_1port_device = {
-	.owner			= THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name			= "TI USB 3410 1 port adapter",
 	.id_table		= ti_id_table_3410,
 	.num_interrupt_in	= 1,
@@ -283,7 +285,9 @@
 };
 
 static struct usb_serial_driver ti_2port_device = {
-	.owner			= THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name			= "TI USB 5052 2 port adapter",
 	.id_table		= ti_id_table_5052,
 	.num_interrupt_in	= 1,
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
index cf083da..08f6003 100644
--- a/drivers/usb/serial/usb-serial.c
+++ b/drivers/usb/serial/usb-serial.c
@@ -507,7 +507,7 @@
 		/* 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)) {
+		if (!try_module_get(serial->type->driver.owner)) {
 			retval = -ENODEV;
 			goto bailout_kref_put;
 		}
@@ -522,7 +522,7 @@
 	return 0;
 
 bailout_module_put:
-	module_put(serial->type->owner);
+	module_put(serial->type->driver.owner);
 bailout_kref_put:
 	kref_put(&serial->kref, destroy_serial);
 	port->open_count = 0;
@@ -553,7 +553,7 @@
 			port->tty = NULL;
 		}
 
-		module_put(port->serial->type->owner);
+		module_put(port->serial->type->driver.owner);
 	}
 
 	kref_put(&port->serial->kref, destroy_serial);
@@ -718,8 +718,8 @@
 			continue;
 
 		length += sprintf (page+length, "%d:", i);
-		if (serial->type->owner)
-			length += sprintf (page+length, " module:%s", module_name(serial->type->owner));
+		if (serial->type->driver.owner)
+			length += sprintf (page+length, " module:%s", module_name(serial->type->driver.owner));
 		length += sprintf (page+length, " name:\"%s\"", serial->type->name);
 		length += sprintf (page+length, " vendor:%04x product:%04x", 
 				   le16_to_cpu(serial->dev->descriptor.idVendor), 
@@ -900,7 +900,7 @@
 	if (type->probe) {
 		const struct usb_device_id *id;
 
-		if (!try_module_get(type->owner)) {
+		if (!try_module_get(type->driver.owner)) {
 			dev_err(&interface->dev, "module get failed, exiting\n");
 			kfree (serial);
 			return -EIO;
@@ -908,7 +908,7 @@
 
 		id = usb_match_id(interface, type->id_table);
 		retval = type->probe(serial, id);
-		module_put(type->owner);
+		module_put(type->driver.owner);
 
 		if (retval) {
 			dbg ("sub driver rejected device");
@@ -1007,13 +1007,13 @@
 	if (!num_ports) {
 		/* if this device type has a calc_num_ports function, call it */
 		if (type->calc_num_ports) {
-			if (!try_module_get(type->owner)) {
+			if (!try_module_get(type->driver.owner)) {
 				dev_err(&interface->dev, "module get failed, exiting\n");
 				kfree (serial);
 				return -EIO;
 			}
 			num_ports = type->calc_num_ports (serial);
-			module_put(type->owner);
+			module_put(type->driver.owner);
 		}
 		if (!num_ports)
 			num_ports = type->num_ports;
@@ -1158,12 +1158,12 @@
 	
 	/* if this device type has an attach function, call it */
 	if (type->attach) {
-		if (!try_module_get(type->owner)) {
+		if (!try_module_get(type->driver.owner)) {
 			dev_err(&interface->dev, "module get failed, exiting\n");
 			goto probe_error;
 		}
 		retval = type->attach (serial);
-		module_put(type->owner);
+		module_put(type->driver.owner);
 		if (retval < 0)
 			goto probe_error;
 		if (retval > 0) {
diff --git a/drivers/usb/serial/usb-serial.h b/drivers/usb/serial/usb-serial.h
index d6738b1..4ca5e0c 100644
--- a/drivers/usb/serial/usb-serial.h
+++ b/drivers/usb/serial/usb-serial.h
@@ -189,7 +189,6 @@
 
 /**
  * usb_serial_driver - describes a usb serial driver
- * @owner: pointer to the module that owns this driver.
  * @name: pointer to a string that describes this driver.  This string used
  *	in the syslog messages when a device is inserted or removed.
  * @short_name: a pointer to a string that describes this driver in
@@ -226,9 +225,11 @@
  * pointers are defined, then the USB serial core code will call them when
  * the corresponding tty port functions are called.  If they are not
  * called, the generic serial function will be used instead.
+ *
+ * The driver.owner field should be set to the module owner of this driver.
+ *
  */
 struct usb_serial_driver {
-	struct module *owner;
 	char	*name;
 	char	*short_name;
 	const struct usb_device_id *id_table;
diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c
index 825451b..0ac0377 100644
--- a/drivers/usb/serial/visor.c
+++ b/drivers/usb/serial/visor.c
@@ -312,7 +312,9 @@
 
 /* All of the device info needed for the Handspring Visor, and Palm 4.0 devices */
 static struct usb_serial_driver handspring_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"Handspring Visor / Palm OS",
 	.short_name =		"visor",
 	.id_table =		id_table,
@@ -340,7 +342,9 @@
 
 /* All of the device info needed for the Clie UX50, TH55 Palm 5.0 devices */
 static struct usb_serial_driver clie_5_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"Sony Clie 5.0",
 	.short_name =		"clie_5",
 	.id_table =		clie_id_5_table,
@@ -368,7 +372,9 @@
 
 /* device info for the Sony Clie OS version 3.5 */
 static struct usb_serial_driver clie_3_5_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"Sony Clie 3.5",
 	.short_name =		"clie_3.5",
 	.id_table =		clie_id_3_5_table,
diff --git a/drivers/usb/serial/whiteheat.c b/drivers/usb/serial/whiteheat.c
index dc06664..fb95a34 100644
--- a/drivers/usb/serial/whiteheat.c
+++ b/drivers/usb/serial/whiteheat.c
@@ -157,7 +157,9 @@
 static void whiteheat_write_callback	(struct urb *urb, struct pt_regs *regs);
 
 static struct usb_serial_driver whiteheat_fake_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"Connect Tech - WhiteHEAT - (prerenumeration)",
 	.short_name =		"whiteheatnofirm",
 	.id_table =		id_table_prerenumeration,
@@ -170,7 +172,9 @@
 };
 
 static struct usb_serial_driver whiteheat_device = {
-	.owner =		THIS_MODULE,
+	.driver = {
+		.owner =	THIS_MODULE,
+	},
 	.name =			"Connect Tech - WhiteHEAT",
 	.short_name =		"whiteheat",
 	.id_table =		id_table_std,