<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lwn.git/include/net/bluetooth/hci.h, branch v3.2.26</title>
<subtitle>Linux kernel documentation tree maintained by Jonathan Corbet</subtitle>
<id>http://mirrors.hust.edu.cn/git/lwn.git/atom?h=v3.2.26</id>
<link rel='self' href='http://mirrors.hust.edu.cn/git/lwn.git/atom?h=v3.2.26'/>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/'/>
<updated>2012-04-22T22:31:12+00:00</updated>
<entry>
<title>Bluetooth: hci_core: fix NULL-pointer dereference at unregister</title>
<updated>2012-04-22T22:31:12+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2012-03-15T13:48:41+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=e83fefc55ce691281461f23be162ecdf03e326bd'/>
<id>urn:sha1:e83fefc55ce691281461f23be162ecdf03e326bd</id>
<content type='text'>
commit 94324962066231a938564bebad0f941cd2d06bb2 upstream.

Make sure hci_dev_open returns immediately if hci_dev_unregister has
been called.

This fixes a race between hci_dev_open and hci_dev_unregister which can
lead to a NULL-pointer dereference.

Bug is 100% reproducible using hciattach and a disconnected serial port:

0. # hciattach -n /dev/ttyO1 any noflow

1. hci_dev_open called from hci_power_on grabs req lock
2. hci_init_req executes but device fails to initialise (times out
   eventually)
3. hci_dev_open is called from hci_sock_ioctl and sleeps on req lock
4. hci_uart_tty_close calls hci_dev_unregister and sleeps on req lock in
   hci_dev_do_close
5. hci_dev_open (1) releases req lock
6. hci_dev_do_close grabs req lock and returns as device is not up
7. hci_dev_unregister sleeps in destroy_workqueue
8. hci_dev_open (3) grabs req lock, calls hci_init_req and eventually sleeps
9. hci_dev_unregister finishes, while hci_dev_open is still running...

[   79.627136] INFO: trying to register non-static key.
[   79.632354] the code is fine but needs lockdep annotation.
[   79.638122] turning off the locking correctness validator.
[   79.643920] [&lt;c00188bc&gt;] (unwind_backtrace+0x0/0xf8) from [&lt;c00729c4&gt;] (__lock_acquire+0x1590/0x1ab0)
[   79.653594] [&lt;c00729c4&gt;] (__lock_acquire+0x1590/0x1ab0) from [&lt;c00733f8&gt;] (lock_acquire+0x9c/0x128)
[   79.663085] [&lt;c00733f8&gt;] (lock_acquire+0x9c/0x128) from [&lt;c0040a88&gt;] (run_timer_softirq+0x150/0x3ac)
[   79.672668] [&lt;c0040a88&gt;] (run_timer_softirq+0x150/0x3ac) from [&lt;c003a3b8&gt;] (__do_softirq+0xd4/0x22c)
[   79.682281] [&lt;c003a3b8&gt;] (__do_softirq+0xd4/0x22c) from [&lt;c003a924&gt;] (irq_exit+0x8c/0x94)
[   79.690856] [&lt;c003a924&gt;] (irq_exit+0x8c/0x94) from [&lt;c0013a50&gt;] (handle_IRQ+0x34/0x84)
[   79.699157] [&lt;c0013a50&gt;] (handle_IRQ+0x34/0x84) from [&lt;c0008530&gt;] (omap3_intc_handle_irq+0x48/0x4c)
[   79.708648] [&lt;c0008530&gt;] (omap3_intc_handle_irq+0x48/0x4c) from [&lt;c037499c&gt;] (__irq_usr+0x3c/0x60)
[   79.718048] Exception stack(0xcf281fb0 to 0xcf281ff8)
[   79.723358] 1fa0:                                     0001e6a0 be8dab00 0001e698 00036698
[   79.731933] 1fc0: 0002df98 0002df38 0000001f 00000000 b6f234d0 00000000 00000004 00000000
[   79.740509] 1fe0: 0001e6f8 be8d6aa0 be8dac50 0000aab8 80000010 ffffffff
[   79.747497] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[   79.756011] pgd = cf3b4000
[   79.758850] [00000000] *pgd=8f0c7831, *pte=00000000, *ppte=00000000
[   79.765502] Internal error: Oops: 80000007 [#1]
[   79.770294] Modules linked in:
[   79.773529] CPU: 0    Tainted: G        W     (3.3.0-rc6-00002-gb5d5c87 #421)
[   79.781066] PC is at 0x0
[   79.783721] LR is at run_timer_softirq+0x16c/0x3ac
[   79.788787] pc : [&lt;00000000&gt;]    lr : [&lt;c0040aa4&gt;]    psr: 60000113
[   79.788787] sp : cf281ee0  ip : 00000000  fp : cf280000
[   79.800903] r10: 00000004  r9 : 00000100  r8 : b6f234d0
[   79.806427] r7 : c0519c28  r6 : cf093488  r5 : c0561a00  r4 : 00000000
[   79.813323] r3 : 00000000  r2 : c054eee0  r1 : 00000001  r0 : 00000000
[   79.820190] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[   79.827728] Control: 10c5387d  Table: 8f3b4019  DAC: 00000015
[   79.833801] Process gpsd (pid: 1265, stack limit = 0xcf2802e8)
[   79.839965] Stack: (0xcf281ee0 to 0xcf282000)
[   79.844573] 1ee0: 00000002 00000000 c0040a24 00000000 00000002 cf281f08 00200200 00000000
[   79.853210] 1f00: 00000000 cf281f18 cf281f08 00000000 00000000 00000000 cf281f18 cf281f18
[   79.861816] 1f20: 00000000 00000001 c056184c 00000000 00000001 b6f234d0 c0561848 00000004
[   79.870452] 1f40: cf280000 c003a3b8 c051e79c 00000001 00000000 00000100 3fa9e7b8 0000000a
[   79.879089] 1f60: 00000025 cf280000 00000025 00000000 00000000 b6f234d0 00000000 00000004
[   79.887756] 1f80: 00000000 c003a924 c053ad38 c0013a50 fa200000 cf281fb0 ffffffff c0008530
[   79.896362] 1fa0: 0001e6a0 0000aab8 80000010 c037499c 0001e6a0 be8dab00 0001e698 00036698
[   79.904998] 1fc0: 0002df98 0002df38 0000001f 00000000 b6f234d0 00000000 00000004 00000000
[   79.913665] 1fe0: 0001e6f8 be8d6aa0 be8dac50 0000aab8 80000010 ffffffff 00fbf700 04ffff00
[   79.922302] [&lt;c0040aa4&gt;] (run_timer_softirq+0x16c/0x3ac) from [&lt;c003a3b8&gt;] (__do_softirq+0xd4/0x22c)
[   79.931945] [&lt;c003a3b8&gt;] (__do_softirq+0xd4/0x22c) from [&lt;c003a924&gt;] (irq_exit+0x8c/0x94)
[   79.940582] [&lt;c003a924&gt;] (irq_exit+0x8c/0x94) from [&lt;c0013a50&gt;] (handle_IRQ+0x34/0x84)
[   79.948913] [&lt;c0013a50&gt;] (handle_IRQ+0x34/0x84) from [&lt;c0008530&gt;] (omap3_intc_handle_irq+0x48/0x4c)
[   79.958404] [&lt;c0008530&gt;] (omap3_intc_handle_irq+0x48/0x4c) from [&lt;c037499c&gt;] (__irq_usr+0x3c/0x60)
[   79.967773] Exception stack(0xcf281fb0 to 0xcf281ff8)
[   79.973083] 1fa0:                                     0001e6a0 be8dab00 0001e698 00036698
[   79.981658] 1fc0: 0002df98 0002df38 0000001f 00000000 b6f234d0 00000000 00000004 00000000
[   79.990234] 1fe0: 0001e6f8 be8d6aa0 be8dac50 0000aab8 80000010 ffffffff
[   79.997161] Code: bad PC value
[   80.000396] ---[ end trace 6f6739840475f9ee ]---
[   80.005279] Kernel panic - not syncing: Fatal exception in interrupt

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Johan Hedberg &lt;johan.hedberg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>Bluetooth: Add mgmt command for fast connectable mode</title>
<updated>2011-09-21T15:58:12+00:00</updated>
<author>
<name>Antti Julku</name>
<email>antti.julku@nokia.com</email>
</author>
<published>2011-06-22T10:11:56+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=f6422ec624a19ba144b4b5cdbbc5ee41cc6f6400'/>
<id>urn:sha1:f6422ec624a19ba144b4b5cdbbc5ee41cc6f6400</id>
<content type='text'>
Add command to management interface for enabling/disabling the
fast connectable mode.

Signed-off-by: Antti Julku &lt;antti.julku@nokia.com&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Add new structures for supporting SM key distribution</title>
<updated>2011-07-08T20:36:25+00:00</updated>
<author>
<name>Vinicius Costa Gomes</name>
<email>vinicius.gomes@openbossa.org</email>
</author>
<published>2011-07-07T21:59:35+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=34918cd71b953905e5f832537ead436bcd57e8f9'/>
<id>urn:sha1:34918cd71b953905e5f832537ead436bcd57e8f9</id>
<content type='text'>
We need these changes because SMP keys may have more information
associated with them, for example, in the LTK case, it has an
encrypted diversifier (ediv) and a random number (rand).

Signed-off-by: Vinicius Costa Gomes &lt;vinicius.gomes@openbossa.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Add lmp_host_le_capable() macro</title>
<updated>2011-07-06T22:10:41+00:00</updated>
<author>
<name>Andre Guedes</name>
<email>andre.guedes@openbossa.org</email>
</author>
<published>2011-06-30T22:20:55+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=eead27da60df80a112d1ac3ea482226e9794c26b'/>
<id>urn:sha1:eead27da60df80a112d1ac3ea482226e9794c26b</id>
<content type='text'>
Since we have the extended LMP features properly implemented, we
should check the LMP_HOST_LE bit to know if the host supports LE.

Signed-off-by: Andre Guedes &lt;andre.guedes@openbossa.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Add enable_le module parameter</title>
<updated>2011-07-06T22:10:37+00:00</updated>
<author>
<name>Andre Guedes</name>
<email>andre.guedes@openbossa.org</email>
</author>
<published>2011-06-30T22:20:54+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=e6100a2541987b84af37e4c4247d989644a3aa69'/>
<id>urn:sha1:e6100a2541987b84af37e4c4247d989644a3aa69</id>
<content type='text'>
This patch adds a new module parameter to enable/disable host LE
support. By default host LE support is disabled.

Signed-off-by: Andre Guedes &lt;andre.guedes@openbossa.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Write LE Host Supported command</title>
<updated>2011-07-06T22:10:32+00:00</updated>
<author>
<name>Andre Guedes</name>
<email>andre.guedes@openbossa.org</email>
</author>
<published>2011-06-30T22:20:53+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=f9b49306dc0b9f514ffb275ae853c50d7ccd6856'/>
<id>urn:sha1:f9b49306dc0b9f514ffb275ae853c50d7ccd6856</id>
<content type='text'>
This patch adds a handler to Write LE Host Supported command complete
events. Once this commands has completed successfully, we should
read the extended LMP features and update the extfeatures field in
hci_dev.

Signed-off-by: Andre Guedes &lt;andre.guedes@openbossa.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Add extfeatures to struct hci_dev</title>
<updated>2011-07-06T22:10:27+00:00</updated>
<author>
<name>Andre Guedes</name>
<email>andre.guedes@openbossa.org</email>
</author>
<published>2011-06-30T22:20:52+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=971e3a4bbcbf7378315b85150853d86be59cffe0'/>
<id>urn:sha1:971e3a4bbcbf7378315b85150853d86be59cffe0</id>
<content type='text'>
This new field holds the extended LMP features value. Some LE
mechanism such as discovery procedure needs to read the extended
LMP features to work properly.

Signed-off-by: Andre Guedes &lt;andre.guedes@openbossa.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Add support for LE Start Encryption</title>
<updated>2011-06-13T18:48:25+00:00</updated>
<author>
<name>Vinicius Costa Gomes</name>
<email>vinicius.gomes@openbossa.org</email>
</author>
<published>2011-06-09T21:50:47+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=a7a595f675f1b33dc73167147321dba5c4395acc'/>
<id>urn:sha1:a7a595f675f1b33dc73167147321dba5c4395acc</id>
<content type='text'>
This adds support for starting SMP Phase 2 Encryption, when the initial
SMP negotiation is successful. This adds the LE Start Encryption and LE
Long Term Key Request commands and related events.

Signed-off-by: Vinicius Costa Gomes &lt;vinicius.gomes@openbossa.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Clear advertising cache before scanning</title>
<updated>2011-06-08T19:58:17+00:00</updated>
<author>
<name>Andre Guedes</name>
<email>andre.guedes@openbossa.org</email>
</author>
<published>2011-05-26T19:23:52+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=eb9d91f5ae9c14583c49223e49f7e88f77b84749'/>
<id>urn:sha1:eb9d91f5ae9c14583c49223e49f7e88f77b84749</id>
<content type='text'>
The LE advertising cache should be cleared before performing a LE
scanning. This will force the cache to contain only fresh advertising
entries.

Signed-off-by: Andre Guedes &lt;andre.guedes@openbossa.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Add advertising report meta event structs</title>
<updated>2011-06-08T19:58:17+00:00</updated>
<author>
<name>Anderson Briglia</name>
<email>anderson.briglia@openbossa.org</email>
</author>
<published>2011-05-26T19:23:49+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=57a56fd41b1264d639175726414ae7e510ec683b'/>
<id>urn:sha1:57a56fd41b1264d639175726414ae7e510ec683b</id>
<content type='text'>
This patch adds definitions and a new struct for Advertising Report
Event from LE and Dual Mode controllers.

Signed-off-by: Anderson Briglia &lt;anderson.briglia@openbossa.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</content>
</entry>
</feed>
