Module Name:    src
Committed By:   rkujawa
Date:           Sat Dec 31 01:16:09 UTC 2011

Modified Files:
        src/sys/dev/bluetooth: bthidev.c btkbd.c

Log Message:
Fix panic triggered by pressing the caps lock key:
http://c0ff33.net/drop/bt_caps_panic.jpg

OK'd mrg.


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/dev/bluetooth/bthidev.c
cvs rdiff -u -r1.11 -r1.12 src/sys/dev/bluetooth/btkbd.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/bluetooth/bthidev.c
diff -u src/sys/dev/bluetooth/bthidev.c:1.19 src/sys/dev/bluetooth/bthidev.c:1.20
--- src/sys/dev/bluetooth/bthidev.c:1.19	Wed Apr 28 06:13:51 2010
+++ src/sys/dev/bluetooth/bthidev.c	Sat Dec 31 01:16:09 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: bthidev.c,v 1.19 2010/04/28 06:13:51 plunky Exp $	*/
+/*	$NetBSD: bthidev.c,v 1.20 2011/12/31 01:16:09 rkujawa Exp $	*/
 
 /*-
  * Copyright (c) 2006 Itronix Inc.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bthidev.c,v 1.19 2010/04/28 06:13:51 plunky Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bthidev.c,v 1.20 2011/12/31 01:16:09 rkujawa Exp $");
 
 #include <sys/param.h>
 #include <sys/conf.h>
@@ -919,9 +919,8 @@ bthidev_output(struct bthidev *hidev, ui
 	memcpy(mtod(m, uint8_t *) + 2, report, rlen);
 	m->m_pkthdr.len = m->m_len = rlen + 2;
 
-	mutex_enter(bt_lock);
+	KASSERT(mutex_owned(bt_lock));
 	err = l2cap_send(sc->sc_int, m);
-	mutex_exit(bt_lock);
 
 	return err;
 }

Index: src/sys/dev/bluetooth/btkbd.c
diff -u src/sys/dev/bluetooth/btkbd.c:1.11 src/sys/dev/bluetooth/btkbd.c:1.12
--- src/sys/dev/bluetooth/btkbd.c:1.11	Tue May 12 12:10:46 2009
+++ src/sys/dev/bluetooth/btkbd.c	Sat Dec 31 01:16:09 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: btkbd.c,v 1.11 2009/05/12 12:10:46 cegger Exp $	*/
+/*	$NetBSD: btkbd.c,v 1.12 2011/12/31 01:16:09 rkujawa Exp $	*/
 
 /*
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: btkbd.c,v 1.11 2009/05/12 12:10:46 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: btkbd.c,v 1.12 2011/12/31 01:16:09 rkujawa Exp $");
 
 #include <sys/param.h>
 #include <sys/callout.h>
@@ -378,7 +378,9 @@ btkbd_ioctl(void *self, unsigned long cm
 		break;
 
 	case WSKBDIO_SETLEDS:
+		mutex_enter(bt_lock);
 		btkbd_set_leds(sc, *(int *)data);
+		mutex_exit(bt_lock);
 		break;
 
 	case WSKBDIO_GETLEDS:

Reply via email to