bluetooth: do not move child device other than rfcomm
authorDave Young <hidave.darkstar@gmail.com>
Tue, 19 Feb 2008 04:45:41 +0000 (20:45 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 19 Feb 2008 04:45:41 +0000 (20:45 -0800)
hci conn child devices other than rfcomm tty should not be moved here.
This is my lost, thanks for Barnaby's reporting and testing.

Signed-off-by: Dave Young <hidave.darkstar@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bluetooth/hci_sysfs.c

index 767756c8fbcf3b0dfdcfde0a512d11def584a3f7..84360c117d4e3e8bb3e9a68d66bcde0cdf4d3d88 100644 (file)
@@ -320,15 +320,14 @@ void hci_conn_add_sysfs(struct hci_conn *conn)
        queue_work(btaddconn, &conn->work);
 }
 
        queue_work(btaddconn, &conn->work);
 }
 
+/*
+ * The rfcomm tty device will possibly retain even when conn
+ * is down, and sysfs doesn't support move zombie device,
+ * so we should move the device before conn device is destroyed.
+ */
 static int __match_tty(struct device *dev, void *data)
 {
 static int __match_tty(struct device *dev, void *data)
 {
-       /* The rfcomm tty device will possibly retain even when conn
-        * is down, and sysfs doesn't support move zombie device,
-        * so we should move the device before conn device is destroyed.
-        * Due to the only child device of hci_conn dev is rfcomm
-        * tty_dev, here just return 1
-        */
-       return 1;
+       return !strncmp(dev->bus_id, "rfcomm", 6);
 }
 
 static void del_conn(struct work_struct *work)
 }
 
 static void del_conn(struct work_struct *work)