static int low_latency = 1;    /* tty low latency flag, on by default */
 
-static int CmdUrbs = 0;                /* Number of outstanding Command Write Urbs */
+static atomic_t CmdUrbs;               /* Number of outstanding Command Write Urbs */
 
 
 /* local function prototypes */
 
        dbg("%s", __FUNCTION__);
 
-       CmdUrbs--;
-       dbg("%s - FREE URB %p (outstanding %d)", __FUNCTION__, urb, CmdUrbs);
+       atomic_dec(&CmdUrbs);
+       dbg("%s - FREE URB %p (outstanding %d)", __FUNCTION__, urb, atomic_read(&CmdUrbs));
 
 
        /* clean up the transfer buffer */
        if (!urb)
                return -ENOMEM;
 
-       CmdUrbs++;
-       dbg("%s - ALLOCATE URB %p (outstanding %d)", __FUNCTION__, urb, CmdUrbs);
+       atomic_inc(&CmdUrbs);
+       dbg("%s - ALLOCATE URB %p (outstanding %d)", __FUNCTION__, urb, atomic_read(&CmdUrbs));
 
        usb_fill_bulk_urb (urb, edge_serial->serial->dev, 
                       usb_sndbulkpipe(edge_serial->serial->dev, edge_serial->bulk_out_endpoint),
                dev_err(&edge_port->port->dev, "%s - usb_submit_urb(write command) failed, status = %d\n", __FUNCTION__, status);
                usb_kill_urb(urb);
                usb_free_urb(urb);
-               CmdUrbs--;
+               atomic_dec(&CmdUrbs);
                return status;
        }
 
        retval = usb_register(&io_driver);
        if (retval) 
                goto failed_usb_register;
+       atomic_set(&CmdUrbs, 0);
        info(DRIVER_DESC " " DRIVER_VERSION);
        return 0;