diff --git a/sound/usb/line6/pod.c b/sound/usb/line6/pod.c
index bf027fc..26ecf26 100644
--- a/sound/usb/line6/pod.c
+++ b/sound/usb/line6/pod.c
@@ -401,25 +401,16 @@
 */
 static void line6_pod_disconnect(struct usb_interface *interface)
 {
-	struct usb_line6_pod *pod;
+	struct usb_line6_pod *pod = usb_get_intfdata(interface);
+	struct device *dev = &interface->dev;
 
-	if (interface == NULL)
-		return;
-	pod = usb_get_intfdata(interface);
+	/* remove sysfs entries: */
+	device_remove_file(dev, &dev_attr_device_id);
+	device_remove_file(dev, &dev_attr_firmware_version);
+	device_remove_file(dev, &dev_attr_serial_number);
 
-	if (pod != NULL) {
-		struct device *dev = &interface->dev;
-
-		if (dev != NULL) {
-			/* remove sysfs entries: */
-			device_remove_file(dev, &dev_attr_device_id);
-			device_remove_file(dev, &dev_attr_firmware_version);
-			device_remove_file(dev, &dev_attr_serial_number);
-		}
-
-		del_timer_sync(&pod->startup_timer);
-		cancel_work_sync(&pod->startup_work);
-	}
+	del_timer_sync(&pod->startup_timer);
+	cancel_work_sync(&pod->startup_work);
 }
 
 /*
@@ -456,9 +447,6 @@
 	init_timer(&pod->startup_timer);
 	INIT_WORK(&pod->startup_work, pod_startup4);
 
-	if ((interface == NULL) || (pod == NULL))
-		return -ENODEV;
-
 	/* create sysfs entries: */
 	err = pod_create_files2(&interface->dev);
 	if (err < 0)
diff --git a/sound/usb/line6/podhd.c b/sound/usb/line6/podhd.c
index 7217fa7..59abbd9 100644
--- a/sound/usb/line6/podhd.c
+++ b/sound/usb/line6/podhd.c
@@ -90,12 +90,8 @@
 static int podhd_init(struct usb_interface *interface,
 		      struct usb_line6 *line6)
 {
-	struct usb_line6_podhd *podhd = (struct usb_line6_podhd *) line6;
 	int err;
 
-	if ((interface == NULL) || (podhd == NULL))
-		return -ENODEV;
-
 	/* initialize MIDI subsystem: */
 	err = line6_init_midi(line6);
 	if (err < 0)
diff --git a/sound/usb/line6/toneport.c b/sound/usb/line6/toneport.c
index c1f61cd..e5669bd 100644
--- a/sound/usb/line6/toneport.c
+++ b/sound/usb/line6/toneport.c
@@ -370,9 +370,6 @@
 	struct usb_line6_toneport *toneport;
 	u16 idProduct;
 
-	if (interface == NULL)
-		return;
-
 	toneport = usb_get_intfdata(interface);
 	del_timer_sync(&toneport->timer);
 	idProduct = le16_to_cpu(toneport->line6.usbdev->descriptor.idProduct);
@@ -393,9 +390,6 @@
 	int err;
 	struct usb_line6_toneport *toneport =  (struct usb_line6_toneport *) line6;
 
-	if ((interface == NULL) || (toneport == NULL))
-		return -ENODEV;
-
 	line6->disconnect = line6_toneport_disconnect;
 
 	/* initialize PCM subsystem: */
diff --git a/sound/usb/line6/variax.c b/sound/usb/line6/variax.c
index 99a58cb..cd3adef 100644
--- a/sound/usb/line6/variax.c
+++ b/sound/usb/line6/variax.c
@@ -214,12 +214,7 @@
 {
 	struct usb_line6_variax *variax;
 
-	if (!interface)
-		return;
-
 	variax = usb_get_intfdata(interface);
-	if (!variax)
-		return;
 
 	del_timer(&variax->startup_timer1);
 	del_timer(&variax->startup_timer2);
@@ -244,9 +239,6 @@
 	init_timer(&variax->startup_timer2);
 	INIT_WORK(&variax->startup_work, variax_startup6);
 
-	if ((interface == NULL) || (variax == NULL))
-		return -ENODEV;
-
 	/* initialize USB buffers: */
 	variax->buffer_activate = kmemdup(variax_activate,
 					  sizeof(variax_activate), GFP_KERNEL);
