diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index e3123d49e5d85abdf4b2ed2ca1f852410225066c..6ecccc737974c9b50ed63a58be7b919e0d72b468 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -3115,7 +3115,7 @@ static void hso_free_interface(struct usb_interface *interface)
 			cancel_work_sync(&serial_table[i]->async_put_intf);
 			cancel_work_sync(&serial_table[i]->async_get_intf);
 			hso_serial_tty_unregister(serial);
-			kref_put(&serial_table[i]->ref, hso_serial_ref_free);
+			kref_put(&serial->parent->ref, hso_serial_ref_free);
 		}
 	}