提交 36010ff6 编写于 作者: M Marcel Holtmann

[Bluetooth] Fix double frees on error paths of btusb and bpa10x drivers

The transfer buffer of an URB will be automatically freed when using
the URB_FREE_BUFFER transfer_flag. So the extra calls to kfree() will
cause a double free.
Reported-by: NJustin Mattock <justinmattock@gmail.com>
Signed-off-by: NRabin Vincent <rabin@rab.in>
Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
上级 94aca1da
...@@ -256,7 +256,6 @@ static inline int bpa10x_submit_intr_urb(struct hci_dev *hdev) ...@@ -256,7 +256,6 @@ static inline int bpa10x_submit_intr_urb(struct hci_dev *hdev)
BT_ERR("%s urb %p submission failed (%d)", BT_ERR("%s urb %p submission failed (%d)",
hdev->name, urb, -err); hdev->name, urb, -err);
usb_unanchor_urb(urb); usb_unanchor_urb(urb);
kfree(buf);
} }
usb_free_urb(urb); usb_free_urb(urb);
...@@ -298,7 +297,6 @@ static inline int bpa10x_submit_bulk_urb(struct hci_dev *hdev) ...@@ -298,7 +297,6 @@ static inline int bpa10x_submit_bulk_urb(struct hci_dev *hdev)
BT_ERR("%s urb %p submission failed (%d)", BT_ERR("%s urb %p submission failed (%d)",
hdev->name, urb, -err); hdev->name, urb, -err);
usb_unanchor_urb(urb); usb_unanchor_urb(urb);
kfree(buf);
} }
usb_free_urb(urb); usb_free_urb(urb);
......
...@@ -271,7 +271,6 @@ static int btusb_submit_intr_urb(struct hci_dev *hdev) ...@@ -271,7 +271,6 @@ static int btusb_submit_intr_urb(struct hci_dev *hdev)
BT_ERR("%s urb %p submission failed (%d)", BT_ERR("%s urb %p submission failed (%d)",
hdev->name, urb, -err); hdev->name, urb, -err);
usb_unanchor_urb(urb); usb_unanchor_urb(urb);
kfree(buf);
} }
usb_free_urb(urb); usb_free_urb(urb);
...@@ -354,7 +353,6 @@ static int btusb_submit_bulk_urb(struct hci_dev *hdev) ...@@ -354,7 +353,6 @@ static int btusb_submit_bulk_urb(struct hci_dev *hdev)
BT_ERR("%s urb %p submission failed (%d)", BT_ERR("%s urb %p submission failed (%d)",
hdev->name, urb, -err); hdev->name, urb, -err);
usb_unanchor_urb(urb); usb_unanchor_urb(urb);
kfree(buf);
} }
usb_free_urb(urb); usb_free_urb(urb);
...@@ -475,7 +473,6 @@ static int btusb_submit_isoc_urb(struct hci_dev *hdev) ...@@ -475,7 +473,6 @@ static int btusb_submit_isoc_urb(struct hci_dev *hdev)
BT_ERR("%s urb %p submission failed (%d)", BT_ERR("%s urb %p submission failed (%d)",
hdev->name, urb, -err); hdev->name, urb, -err);
usb_unanchor_urb(urb); usb_unanchor_urb(urb);
kfree(buf);
} }
usb_free_urb(urb); usb_free_urb(urb);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册