{
        int retval;
        struct agilent_82357a_priv *a_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(a_priv->bus_interface);
+       struct usb_device *usb_dev;
        u8 *out_data, *in_data;
        int out_data_length, in_data_length;
        int bytes_written, bytes_read;
 
        *nbytes = 0;
        *end = 0;
+
+       if (!a_priv->bus_interface)
+               return -ENODEV;
+       usb_dev = interface_to_usbdev(a_priv->bus_interface);
        out_data_length = 0x9;
        out_data = kmalloc(out_data_length, GFP_KERNEL);
        if (!out_data)
 {
        int retval;
        struct agilent_82357a_priv *a_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(a_priv->bus_interface);
+       struct usb_device *usb_dev;
        u8 *out_data = NULL;
        u8 *status_data = NULL;
        int out_data_length;
        struct agilent_82357a_register_pairlet read_reg;
 
        *bytes_written = 0;
+       if (!a_priv->bus_interface)
+               return -ENODEV;
+
+       usb_dev = interface_to_usbdev(a_priv->bus_interface);
        out_data_length = length + 0x8;
        out_data = kmalloc(out_data_length, GFP_KERNEL);
        if (!out_data)
 
 static int agilent_82357a_take_control(gpib_board_t *board, int synchronous)
 {
+       struct agilent_82357a_priv *a_priv = board->private_data;
        const int timeout = 10;
        int i;
 
+       if (!a_priv->bus_interface)
+               return -ENODEV;
+
 /* It looks like the 9914 does not handle tcs properly.
  *  See comment above tms9914_take_control_workaround() in
  *  drivers/gpib/tms9914/tms9914_aux.c
 static int agilent_82357a_go_to_standby(gpib_board_t *board)
 {
        struct agilent_82357a_priv *a_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(a_priv->bus_interface);
+       struct usb_device *usb_dev;
        struct agilent_82357a_register_pairlet write;
        int retval;
 
+       if (!a_priv->bus_interface)
+               return -ENODEV;
+
+       usb_dev = interface_to_usbdev(a_priv->bus_interface);
        write.address = AUXCR;
        write.value = AUX_GTS;
        retval = agilent_82357a_write_registers(a_priv, &write, 1);
 static void agilent_82357a_request_system_control(gpib_board_t *board, int request_control)
 {
        struct agilent_82357a_priv *a_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(a_priv->bus_interface);
+       struct usb_device *usb_dev;
        struct agilent_82357a_register_pairlet writes[2];
        int retval;
        int i = 0;
 
+       if (!a_priv->bus_interface)
+               return; // -ENODEV;
+
+       usb_dev = interface_to_usbdev(a_priv->bus_interface);
        /* 82357B needs bit to be set in 9914 AUXCR register */
        writes[i].address = AUXCR;
        if (request_control) {
 static void agilent_82357a_interface_clear(gpib_board_t *board, int assert)
 {
        struct agilent_82357a_priv *a_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(a_priv->bus_interface);
+       struct usb_device *usb_dev;
        struct agilent_82357a_register_pairlet write;
        int retval;
 
+       if (!a_priv->bus_interface)
+               return; // -ENODEV;
+
+       usb_dev = interface_to_usbdev(a_priv->bus_interface);
        write.address = AUXCR;
        write.value = AUX_SIC;
        if (assert) {
 static void agilent_82357a_remote_enable(gpib_board_t *board, int enable)
 {
        struct agilent_82357a_priv *a_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(a_priv->bus_interface);
+       struct usb_device *usb_dev;
        struct agilent_82357a_register_pairlet write;
        int retval;
 
+       if (!a_priv->bus_interface)
+               return; //-ENODEV;
+
+       usb_dev = interface_to_usbdev(a_priv->bus_interface);
        write.address = AUXCR;
        write.value = AUX_SRE;
        if (enable)
 {
        struct agilent_82357a_priv *a_priv = board->private_data;
 
+       if (!a_priv->bus_interface)
+               return -ENODEV;
        if (compare_8_bits == 0)
                return -EOPNOTSUPP;
 
 static unsigned int agilent_82357a_update_status(gpib_board_t *board, unsigned int clear_mask)
 {
        struct agilent_82357a_priv *a_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(a_priv->bus_interface);
+       struct usb_device *usb_dev;
        struct agilent_82357a_register_pairlet address_status, bus_status;
        int retval;
 
+       if (!a_priv->bus_interface)
+               return -ENODEV;
+       usb_dev = interface_to_usbdev(a_priv->bus_interface);
        board->status &= ~clear_mask;
        if (a_priv->is_cic)
                set_bit(CIC_NUM, &board->status);
        struct agilent_82357a_register_pairlet write;
        int retval;
 
+       if (!a_priv->bus_interface)
+               return -ENODEV;
+       usb_dev = interface_to_usbdev(a_priv->bus_interface);
        // put primary address in address0
        write.address = ADR;
        write.value = address & ADDRESS_MASK;
 static int agilent_82357a_parallel_poll(gpib_board_t *board, uint8_t *result)
 {
        struct agilent_82357a_priv *a_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(a_priv->bus_interface);
+       struct usb_device *usb_dev;
        struct agilent_82357a_register_pairlet writes[2];
        struct agilent_82357a_register_pairlet read;
        int retval;
 
+       if (!a_priv->bus_interface)
+               return -ENODEV;
+       usb_dev = interface_to_usbdev(a_priv->bus_interface);
        // execute parallel poll
        writes[0].address = AUXCR;
        writes[0].value = AUX_CS | AUX_RPP;
 static int agilent_82357a_line_status(const gpib_board_t *board)
 {
        struct agilent_82357a_priv *a_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(a_priv->bus_interface);
+       struct usb_device *usb_dev;
        struct agilent_82357a_register_pairlet bus_status;
        int retval;
        int status = ValidALL;
 
+       if (!a_priv->bus_interface)
+               return -ENODEV;
+       usb_dev = interface_to_usbdev(a_priv->bus_interface);
        bus_status.address = BSR;
        retval = agilent_82357a_read_registers(a_priv, &bus_status, 1, 0);
        if (retval) {
 static unsigned int agilent_82357a_t1_delay(gpib_board_t *board, unsigned int nanosec)
 {
        struct agilent_82357a_priv *a_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(a_priv->bus_interface);
+       struct usb_device *usb_dev;
        struct agilent_82357a_register_pairlet write;
        int retval;
 
+       if (!a_priv->bus_interface)
+               return -ENODEV;
+       usb_dev = interface_to_usbdev(a_priv->bus_interface);
        write.address = FAST_TALKER_T1;
        write.value = nanosec_to_fast_talker_bits(&nanosec);
        retval = agilent_82357a_write_registers(a_priv, &write, 1);