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: