summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Young <hidave.darkstar@gmail.com>2008-02-05 03:12:06 -0800
committerDavid S. Miller <davem@davemloft.net>2008-02-05 03:12:06 -0800
commit93d807401ced2320d0d1e56bf9de099bba5c0424 (patch)
tree8d9a471779124e7dea089ec59933b20d4c7480f4
parent6e46c8cb3cbfa7bafe78d43a3d57750605a2dfa3 (diff)
downloadlinux-3.10-93d807401ced2320d0d1e56bf9de099bba5c0424.tar.gz
linux-3.10-93d807401ced2320d0d1e56bf9de099bba5c0424.tar.bz2
linux-3.10-93d807401ced2320d0d1e56bf9de099bba5c0424.zip
bluetooth rfcomm tty: destroy before tty_close()
rfcomm dev could be deleted in tty_hangup, so we must not call rfcomm_dev_del again to prevent from destroying rfcomm dev before tty close. Signed-off-by: Dave Young <hidave.darkstar@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/bluetooth/rfcomm/tty.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
index 788c7032185..e4c779bb8d7 100644
--- a/net/bluetooth/rfcomm/tty.c
+++ b/net/bluetooth/rfcomm/tty.c
@@ -429,7 +429,8 @@ static int rfcomm_release_dev(void __user *arg)
if (dev->tty)
tty_vhangup(dev->tty);
- rfcomm_dev_del(dev);
+ if (!test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags))
+ rfcomm_dev_del(dev);
rfcomm_dev_put(dev);
return 0;
}