--- compat-drivers-3.8-rc7-1-u.orig/net/bluetooth/rfcomm/tty.c 2013-02-11 00:31:59.000000000 +0100 +++ compat-drivers-3.8-rc7-1-u/net/bluetooth/rfcomm/tty.c 2013-02-13 12:39:58.983001215 +0100 @@ -309,7 +309,7 @@ BUG_ON(test_and_set_bit(RFCOMM_TTY_RELEASED, &dev->flags)); spin_lock_irqsave(&dev->port.lock, flags); - if (dev->port.count > 0) { + if (atomic_read(&dev->port.count) > 0) { spin_unlock_irqrestore(&dev->port.lock, flags); return; } @@ -664,10 +664,10 @@ return -ENODEV; BT_DBG("dev %p dst %pMR channel %d opened %d", dev, &dev->dst, - dev->channel, dev->port.count); + dev->channel, atomic_read(&dev->port.count)); spin_lock_irqsave(&dev->port.lock, flags); - if (++dev->port.count > 1) { + if (atomic_inc_return(&dev->port.count) > 1) { spin_unlock_irqrestore(&dev->port.lock, flags); return 0; } @@ -736,10 +736,10 @@ return; BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc, - dev->port.count); + atomic_read(&dev->port.count)); spin_lock_irqsave(&dev->port.lock, flags); - if (!--dev->port.count) { + if (!atomic_dec_return(&dev->port.count)) { spin_unlock_irqrestore(&dev->port.lock, flags); if (dev->tty_dev->parent) #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,29))