#define        MAX_USBFS_BUFFER_SIZE   16384
 
-static inline int connected (struct usb_device *dev)
+static inline int connected (struct dev_state *ps)
 {
-       return dev->state != USB_STATE_NOTATTACHED;
+       return (!list_empty(&ps->list) &&
+                       ps->dev->state != USB_STATE_NOTATTACHED);
 }
 
 static loff_t usbdev_lseek(struct file *file, loff_t offset, int orig)
 
        pos = *ppos;
        usb_lock_device(dev);
-       if (!connected(dev)) {
+       if (!connected(ps)) {
                ret = -ENODEV;
                goto err;
        } else if (pos < 0) {
                }
        }
 
-       if (!connected(ps->dev)) {
+       if (!connected(ps)) {
                kfree(buf);
                return -ENODEV;
        }
        if (!(file->f_mode & FMODE_WRITE))
                return -EPERM;
        usb_lock_device(dev);
-       if (!connected(dev)) {
+       if (!connected(ps)) {
                usb_unlock_device(dev);
                return -ENODEV;
        }
        poll_wait(file, &ps->wait, wait);
        if (file->f_mode & FMODE_WRITE && !list_empty(&ps->async_completed))
                mask |= POLLOUT | POLLWRNORM;
-       if (!connected(ps->dev))
+       if (!connected(ps))
                mask |= POLLERR | POLLHUP;
        return mask;
 }