Skip to contentSkip to conversation

Pull request: bluetooth-2.6 2009-12-17

PATCH New Marcel Holtmann 2 participants 7 messages Dec 17, 2009 – Dec 19, 2009

Subsystems (4)
lore
Share & tools
lore

Marcel Holtmann

author maintainer
#0 lore raw

Hi Dave,

here are a few fixes for inclusion into 2.6.33 kernel. They are all small and mostly one-liners.

Regards

Marcel

Please pull from

git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6.git master

This will update the following files:

 drivers/bluetooth/btusb.c |    1 +
 net/bluetooth/hidp/core.c |    2 +-
 net/bluetooth/l2cap.c     |    5 +++--
 3 files changed, 5 insertions(+), 3 deletions(-)

through these ChangeSets:

Andrei Emeltchenko (1):
Bluetooth: Fix L2CAP locking scheme regression

Gustavo F. Padovan (2):
Bluetooth: Fix unset of RemoteBusy flag for L2CAP
Bluetooth: Ack L2CAP I-frames before retransmit missing packet

Oliver Neukum (1):
Bluetooth: Prevent ill-timed autosuspend in USB driver

Roel Kluin (1):
Bluetooth: Fix PTR_ERR return of wrong pointer in hidp_setup_hid()

author maintainer
#1 lore raw

PATCH 1/5 Bluetooth: Fix PTR_ERR return of wrong pointer in hidp_setup_hid()

From: Roel Kluin <[email protected]>

Return the PTR_ERR of the correct pointer.

---
 net/bluetooth/hidp/core.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
net/bluetooth/hidp/core.c +1 -1
index 5697500..18e7f5a 100644
@@ -770,7 +770,7 @@ static int hidp_setup_hid(struct hidp_session *session,
 
 	hid = hid_allocate_device();
 	if (IS_ERR(hid))
-		return PTR_ERR(session->hid);
+		return PTR_ERR(hid);
 
 	session->hid = hid;
 	session->req = req;
Signature · 1 line
1.6.5.2
author maintainer
#2 lore raw

PATCH 2/5 Bluetooth: Fix unset of RemoteBusy flag for L2CAP

From: Gustavo F. Padovan <[email protected]>

RemoteBusy flag need to be unset before l2cap_ertm_send(), otherwise l2cap_ertm_send() will return without sending packets because it checks that flag before start sending.

---
 net/bluetooth/l2cap.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
net/bluetooth/l2cap.c +1 -1
index 5129b88..7db9a1f 100644
@@ -3435,8 +3435,8 @@ static inline int l2cap_data_channel_sframe(struct sock *sk, u16 rx_control, str
 			    (pi->unacked_frames > 0))
 				__mod_retrans_timer();
 
-			l2cap_ertm_send(sk);
 			pi->conn_state &= ~L2CAP_CONN_REMOTE_BUSY;
+			l2cap_ertm_send(sk);
 		}
 		break;
 
Signature · 1 line
1.6.5.2
author maintainer
#3 lore raw

PATCH 3/5 Bluetooth: Ack L2CAP I-frames before retransmit missing packet

From: Gustavo F. Padovan <[email protected]>

Moving the Ack to before l2cap_retransmit_frame() we can avoid the case where txWindow is full and the packet can't be retransmited.

---
 net/bluetooth/l2cap.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
net/bluetooth/l2cap.c +1 -1
index 7db9a1f..fb0f81d 100644
@@ -3471,9 +3471,9 @@ static inline int l2cap_data_channel_sframe(struct sock *sk, u16 rx_control, str
 		pi->conn_state &= ~L2CAP_CONN_REMOTE_BUSY;
 
 		if (rx_control & L2CAP_CTRL_POLL) {
-			l2cap_retransmit_frame(sk, tx_seq);
 			pi->expected_ack_seq = tx_seq;
 			l2cap_drop_acked_frames(sk);
+			l2cap_retransmit_frame(sk, tx_seq);
 			l2cap_ertm_send(sk);
 			if (pi->conn_state & L2CAP_CONN_WAIT_F) {
 				pi->srej_save_reqseq = tx_seq;
Signature · 1 line
1.6.5.2
author maintainer
#4 lore raw

PATCH 4/5 Bluetooth: Fix L2CAP locking scheme regression

From: Andrei Emeltchenko <[email protected]>

When locking was introduced the error path branch was not taken into account. Error was found in sparse code checking. Kudos to Jani Nikula.

---
 net/bluetooth/l2cap.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
net/bluetooth/l2cap.c +1 -0
index fb0f81d..1120cf1 100644
@@ -1212,6 +1212,7 @@ static void l2cap_monitor_timeout(unsigned long arg)
 	bh_lock_sock(sk);
 	if (l2cap_pi(sk)->retry_count >= l2cap_pi(sk)->remote_max_tx) {
 		l2cap_send_disconn_req(l2cap_pi(sk)->conn, sk);
+		bh_unlock_sock(sk);
 		return;
 	}
 
Signature · 1 line
1.6.5.2
author maintainer
#5 lore raw

PATCH 5/5 Bluetooth: Prevent ill-timed autosuspend in USB driver

From: Oliver Neukum <[email protected]>

The device must be marked busy as it receives data.

---
 drivers/bluetooth/btusb.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/bluetooth/btusb.c +1 -0
index 4d29059..a699f09 100644
@@ -307,6 +307,7 @@ static void btusb_bulk_complete(struct urb *urb)
 		return;
 
 	usb_anchor_urb(urb, &data->bulk_anchor);
+	usb_mark_last_busy(data->udev);
 
 	err = usb_submit_urb(urb, GFP_ATOMIC);
 	if (err < 0) {
Signature · 1 line
1.6.5.2