Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
[linux-2.6-block.git] / drivers / bluetooth / hci_ldisc.c
index 07114489994f5f383f4aef45c38cca72b38b52f9..c2d637adb3ca91f334b47577ed33982ee465f35d 100644 (file)
@@ -174,7 +174,7 @@ static int hci_uart_open(struct hci_dev *hdev)
 /* Reset device */
 static int hci_uart_flush(struct hci_dev *hdev)
 {
-       struct hci_uart *hu  = (struct hci_uart *) hdev->driver_data;
+       struct hci_uart *hu  = hci_get_drvdata(hdev);
        struct tty_struct *tty = hu->tty;
 
        BT_DBG("hdev %p tty %p", hdev, tty);
@@ -220,7 +220,7 @@ static int hci_uart_send_frame(struct sk_buff *skb)
        if (!test_bit(HCI_RUNNING, &hdev->flags))
                return -EBUSY;
 
-       hu = (struct hci_uart *) hdev->driver_data;
+       hu = hci_get_drvdata(hdev);
 
        BT_DBG("%s: type %d len %d", hdev->name, bt_cb(skb)->pkt_type, skb->len);
 
@@ -231,15 +231,6 @@ static int hci_uart_send_frame(struct sk_buff *skb)
        return 0;
 }
 
-static void hci_uart_destruct(struct hci_dev *hdev)
-{
-       if (!hdev)
-               return;
-
-       BT_DBG("%s", hdev->name);
-       kfree(hdev->driver_data);
-}
-
 /* ------ LDISC part ------ */
 /* hci_uart_tty_open
  * 
@@ -316,6 +307,8 @@ static void hci_uart_tty_close(struct tty_struct *tty)
                                hci_free_dev(hdev);
                        }
                }
+
+               kfree(hu);
        }
 }
 
@@ -391,17 +384,14 @@ static int hci_uart_register_dev(struct hci_uart *hu)
        hu->hdev = hdev;
 
        hdev->bus = HCI_UART;
-       hdev->driver_data = hu;
+       hci_set_drvdata(hdev, hu);
 
        hdev->open  = hci_uart_open;
        hdev->close = hci_uart_close;
        hdev->flush = hci_uart_flush;
        hdev->send  = hci_uart_send_frame;
-       hdev->destruct = hci_uart_destruct;
        hdev->parent = hu->tty->dev;
 
-       hdev->owner = THIS_MODULE;
-
        if (!reset)
                set_bit(HCI_QUIRK_NO_RESET, &hdev->quirks);