usb-linux: only cleanup in host_close when host_open was successful.
diff --git a/usb-linux.c b/usb-linux.c
index a1b1444..a4dfe5c 100644
--- a/usb-linux.c
+++ b/usb-linux.c
@@ -1158,9 +1158,9 @@
     return 0;
 
 fail:
-    dev->fd = -1;
-    if (fd != -1) {
-        close(fd);
+    if (dev->fd != -1) {
+        close(dev->fd);
+        dev->fd = -1;
     }
     return -1;
 }
@@ -1169,7 +1169,7 @@
 {
     int i;
 
-    if (dev->fd == -1) {
+    if (dev->fd == -1 || !dev->dev.attached) {
         return -1;
     }