<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/include/net/bluetooth/l2cap.h, branch v3.3</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>Bluetooth: Remove usage of __cancel_delayed_work()</title>
<updated>2012-02-15T11:09:26+00:00</updated>
<author>
<name>Ulisses Furquim</name>
<email>ulisses@profusion.mobi</email>
</author>
<published>2012-01-30T20:26:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=6de32750822d00bfa92c341166132b0714c5b559'/>
<id>6de32750822d00bfa92c341166132b0714c5b559</id>
<content type='text'>
__cancel_delayed_work() is being used in some paths where we cannot
sleep waiting for the delayed work to finish. However, that function
might return while the timer is running and the work will be queued
again. Replace the calls with safer cancel_delayed_work() version
which spins until the timer handler finishes on other CPUs and
cancels the delayed work.

Signed-off-by: Ulisses Furquim &lt;ulisses@profusion.mobi&gt;
Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Johan Hedberg &lt;johan.hedberg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
__cancel_delayed_work() is being used in some paths where we cannot
sleep waiting for the delayed work to finish. However, that function
might return while the timer is running and the work will be queued
again. Replace the calls with safer cancel_delayed_work() version
which spins until the timer handler finishes on other CPUs and
cancels the delayed work.

Signed-off-by: Ulisses Furquim &lt;ulisses@profusion.mobi&gt;
Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Johan Hedberg &lt;johan.hedberg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: l2cap_set_timer needs jiffies as timeout value</title>
<updated>2012-02-15T11:09:25+00:00</updated>
<author>
<name>Andrzej Kaczmarek</name>
<email>andrzej.kaczmarek@tieto.com</email>
</author>
<published>2012-01-04T11:10:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=6e1da683f79a22fafaada62d547138daaa9e3456'/>
<id>6e1da683f79a22fafaada62d547138daaa9e3456</id>
<content type='text'>
After moving L2CAP timers to workqueues l2cap_set_timer expects timeout
value to be specified in jiffies but constants defined in miliseconds
are used. This makes timeouts unreliable when CONFIG_HZ is not set to
1000.

__set_chan_timer macro still uses jiffies as input to avoid multiple
conversions from/to jiffies for sk_sndtimeo value which is already
specified in jiffies.

Signed-off-by: Andrzej Kaczmarek &lt;andrzej.kaczmarek@tieto.com&gt;
Ackec-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Johan Hedberg &lt;johan.hedberg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
After moving L2CAP timers to workqueues l2cap_set_timer expects timeout
value to be specified in jiffies but constants defined in miliseconds
are used. This makes timeouts unreliable when CONFIG_HZ is not set to
1000.

__set_chan_timer macro still uses jiffies as input to avoid multiple
conversions from/to jiffies for sk_sndtimeo value which is already
specified in jiffies.

Signed-off-by: Andrzej Kaczmarek &lt;andrzej.kaczmarek@tieto.com&gt;
Ackec-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Johan Hedberg &lt;johan.hedberg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: Remove bogus inline declaration from l2cap_chan_connect</title>
<updated>2012-02-15T11:09:25+00:00</updated>
<author>
<name>Johan Hedberg</name>
<email>johan.hedberg@intel.com</email>
</author>
<published>2012-01-08T20:51:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=4aa832c27edf902130f8bace1d42cf22468823fa'/>
<id>4aa832c27edf902130f8bace1d42cf22468823fa</id>
<content type='text'>
As reported by Dan Carpenter this function causes a Sparse warning and
shouldn't be declared inline:

include/net/bluetooth/l2cap.h:837:30 error: marked inline, but without a
definition"

Reported-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Johan Hedberg &lt;johan.hedberg@intel.com&gt;
Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As reported by Dan Carpenter this function causes a Sparse warning and
shouldn't be declared inline:

include/net/bluetooth/l2cap.h:837:30 error: marked inline, but without a
definition"

Reported-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Johan Hedberg &lt;johan.hedberg@intel.com&gt;
Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem</title>
<updated>2012-01-03T20:16:34+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2012-01-03T20:16:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=57adc1fcbae2c13104ce291b40f23e40a414fa87'/>
<id>57adc1fcbae2c13104ce291b40f23e40a414fa87</id>
<content type='text'>
Conflicts:
	drivers/net/wireless/b43/dma.c
	drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	drivers/net/wireless/b43/dma.c
	drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: Fix deadlocks with sock lock and L2CAP timers locks</title>
<updated>2011-12-22T16:15:09+00:00</updated>
<author>
<name>Ulisses Furquim</name>
<email>ulisses@profusion.mobi</email>
</author>
<published>2011-12-21T22:02:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=371fd83563252f550ce59476a7366d0b5171d316'/>
<id>371fd83563252f550ce59476a7366d0b5171d316</id>
<content type='text'>
When cancelling a delayed work (timer) in L2CAP we can not sleep holding
the sock mutex otherwise we might deadlock with an L2CAP timer handler.
This is possible because RX/TX and L2CAP timers run in different workqueues.
The scenario below illustrates the problem. Thus we are now avoiding to
sleep on the timers locks.

 ======================================================
 [ INFO: possible circular locking dependency detected ]
 3.1.0-05270-ga978dc7-dirty #239
 -------------------------------------------------------
 kworker/1:1/873 is trying to acquire lock:
  (sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP){+.+...}, at: [&lt;ffffffffa002ceac&gt;] l2cap_chan_timeout+0x3c/0xe0 [bluetooth]

 but task is already holding lock:
  ((&amp;(&amp;chan-&gt;chan_timer)-&gt;work)){+.+...}, at: [&lt;ffffffff81051a86&gt;] process_one_work+0x126/0x450

 which lock already depends on the new lock.

 the existing dependency chain (in reverse order) is:

 -&gt; #1 ((&amp;(&amp;chan-&gt;chan_timer)-&gt;work)){+.+...}:
        [&lt;ffffffff8106b276&gt;] check_prevs_add+0xf6/0x170
        [&lt;ffffffff8106b903&gt;] validate_chain+0x613/0x790
        [&lt;ffffffff8106dfee&gt;] __lock_acquire+0x4be/0xac0
        [&lt;ffffffff8106ec2d&gt;] lock_acquire+0x8d/0xb0
        [&lt;ffffffff81052a6f&gt;] wait_on_work+0x4f/0x160
        [&lt;ffffffff81052ca3&gt;] __cancel_work_timer+0x73/0x80
        [&lt;ffffffff81052cbd&gt;] cancel_delayed_work_sync+0xd/0x10
        [&lt;ffffffffa002f2ed&gt;] l2cap_chan_connect+0x22d/0x470 [bluetooth]
        [&lt;ffffffffa002fb51&gt;] l2cap_sock_connect+0xb1/0x140 [bluetooth]
        [&lt;ffffffff8130811b&gt;] kernel_connect+0xb/0x10
        [&lt;ffffffffa00cf98a&gt;] rfcomm_session_create+0x12a/0x1c0 [rfcomm]
        [&lt;ffffffffa00cfbe7&gt;] __rfcomm_dlc_open+0x1c7/0x240 [rfcomm]
        [&lt;ffffffffa00d07c2&gt;] rfcomm_dlc_open+0x42/0x70 [rfcomm]
        [&lt;ffffffffa00d3b03&gt;] rfcomm_sock_connect+0x103/0x150 [rfcomm]
        [&lt;ffffffff8130bd7e&gt;] sys_connect+0xae/0xc0
        [&lt;ffffffff813368d2&gt;] compat_sys_socketcall+0xb2/0x220
        [&lt;ffffffff813b2089&gt;] sysenter_dispatch+0x7/0x30

 -&gt; #0 (sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP){+.+...}:
        [&lt;ffffffff8106b16d&gt;] check_prev_add+0x6cd/0x6e0
        [&lt;ffffffff8106b276&gt;] check_prevs_add+0xf6/0x170
        [&lt;ffffffff8106b903&gt;] validate_chain+0x613/0x790
        [&lt;ffffffff8106dfee&gt;] __lock_acquire+0x4be/0xac0
        [&lt;ffffffff8106ec2d&gt;] lock_acquire+0x8d/0xb0
        [&lt;ffffffff8130d91a&gt;] lock_sock_nested+0x8a/0xa0
        [&lt;ffffffffa002ceac&gt;] l2cap_chan_timeout+0x3c/0xe0 [bluetooth]
        [&lt;ffffffff81051ae4&gt;] process_one_work+0x184/0x450
        [&lt;ffffffff8105276e&gt;] worker_thread+0x15e/0x340
        [&lt;ffffffff81057bb6&gt;] kthread+0x96/0xa0
        [&lt;ffffffff813b1ef4&gt;] kernel_thread_helper+0x4/0x10

 other info that might help us debug this:

  Possible unsafe locking scenario:

        CPU0                    CPU1
        ----                    ----
   lock((&amp;(&amp;chan-&gt;chan_timer)-&gt;work));
                                lock(sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP);
                                lock((&amp;(&amp;chan-&gt;chan_timer)-&gt;work));
   lock(sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP);

  *** DEADLOCK ***

 2 locks held by kworker/1:1/873:
  #0:  (events){.+.+.+}, at: [&lt;ffffffff81051a86&gt;] process_one_work+0x126/0x450
  #1:  ((&amp;(&amp;chan-&gt;chan_timer)-&gt;work)){+.+...}, at: [&lt;ffffffff81051a86&gt;] process_one_work+0x126/0x450

 stack backtrace:
 Pid: 873, comm: kworker/1:1 Not tainted 3.1.0-05270-ga978dc7-dirty #239
 Call Trace:
  [&lt;ffffffff813a0f6e&gt;] print_circular_bug+0xd2/0xe3
  [&lt;ffffffff8106b16d&gt;] check_prev_add+0x6cd/0x6e0
  [&lt;ffffffff8106b276&gt;] check_prevs_add+0xf6/0x170
  [&lt;ffffffff8106b903&gt;] validate_chain+0x613/0x790
  [&lt;ffffffff8106dfee&gt;] __lock_acquire+0x4be/0xac0
  [&lt;ffffffff8130d8f6&gt;] ? lock_sock_nested+0x66/0xa0
  [&lt;ffffffff8106ea30&gt;] ? lock_release_nested+0x100/0x110
  [&lt;ffffffff8130d8f6&gt;] ? lock_sock_nested+0x66/0xa0
  [&lt;ffffffff8106ec2d&gt;] lock_acquire+0x8d/0xb0
  [&lt;ffffffffa002ceac&gt;] ? l2cap_chan_timeout+0x3c/0xe0 [bluetooth]
  [&lt;ffffffff8130d91a&gt;] lock_sock_nested+0x8a/0xa0
  [&lt;ffffffffa002ceac&gt;] ? l2cap_chan_timeout+0x3c/0xe0 [bluetooth]
  [&lt;ffffffff81051a86&gt;] ? process_one_work+0x126/0x450
  [&lt;ffffffffa002ceac&gt;] l2cap_chan_timeout+0x3c/0xe0 [bluetooth]
  [&lt;ffffffff81051ae4&gt;] process_one_work+0x184/0x450
  [&lt;ffffffff81051a86&gt;] ? process_one_work+0x126/0x450
  [&lt;ffffffffa002ce70&gt;] ? l2cap_security_cfm+0x4e0/0x4e0 [bluetooth]
  [&lt;ffffffff8105276e&gt;] worker_thread+0x15e/0x340
  [&lt;ffffffff81052610&gt;] ? manage_workers+0x110/0x110
  [&lt;ffffffff81057bb6&gt;] kthread+0x96/0xa0
  [&lt;ffffffff813b1ef4&gt;] kernel_thread_helper+0x4/0x10
  [&lt;ffffffff813af69d&gt;] ? retint_restore_args+0xe/0xe
  [&lt;ffffffff81057b20&gt;] ? __init_kthread_worker+0x70/0x70
  [&lt;ffffffff813b1ef0&gt;] ? gs_change+0xb/0xb

Signed-off-by: Ulisses Furquim &lt;ulisses@profusion.mobi&gt;
Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When cancelling a delayed work (timer) in L2CAP we can not sleep holding
the sock mutex otherwise we might deadlock with an L2CAP timer handler.
This is possible because RX/TX and L2CAP timers run in different workqueues.
The scenario below illustrates the problem. Thus we are now avoiding to
sleep on the timers locks.

 ======================================================
 [ INFO: possible circular locking dependency detected ]
 3.1.0-05270-ga978dc7-dirty #239
 -------------------------------------------------------
 kworker/1:1/873 is trying to acquire lock:
  (sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP){+.+...}, at: [&lt;ffffffffa002ceac&gt;] l2cap_chan_timeout+0x3c/0xe0 [bluetooth]

 but task is already holding lock:
  ((&amp;(&amp;chan-&gt;chan_timer)-&gt;work)){+.+...}, at: [&lt;ffffffff81051a86&gt;] process_one_work+0x126/0x450

 which lock already depends on the new lock.

 the existing dependency chain (in reverse order) is:

 -&gt; #1 ((&amp;(&amp;chan-&gt;chan_timer)-&gt;work)){+.+...}:
        [&lt;ffffffff8106b276&gt;] check_prevs_add+0xf6/0x170
        [&lt;ffffffff8106b903&gt;] validate_chain+0x613/0x790
        [&lt;ffffffff8106dfee&gt;] __lock_acquire+0x4be/0xac0
        [&lt;ffffffff8106ec2d&gt;] lock_acquire+0x8d/0xb0
        [&lt;ffffffff81052a6f&gt;] wait_on_work+0x4f/0x160
        [&lt;ffffffff81052ca3&gt;] __cancel_work_timer+0x73/0x80
        [&lt;ffffffff81052cbd&gt;] cancel_delayed_work_sync+0xd/0x10
        [&lt;ffffffffa002f2ed&gt;] l2cap_chan_connect+0x22d/0x470 [bluetooth]
        [&lt;ffffffffa002fb51&gt;] l2cap_sock_connect+0xb1/0x140 [bluetooth]
        [&lt;ffffffff8130811b&gt;] kernel_connect+0xb/0x10
        [&lt;ffffffffa00cf98a&gt;] rfcomm_session_create+0x12a/0x1c0 [rfcomm]
        [&lt;ffffffffa00cfbe7&gt;] __rfcomm_dlc_open+0x1c7/0x240 [rfcomm]
        [&lt;ffffffffa00d07c2&gt;] rfcomm_dlc_open+0x42/0x70 [rfcomm]
        [&lt;ffffffffa00d3b03&gt;] rfcomm_sock_connect+0x103/0x150 [rfcomm]
        [&lt;ffffffff8130bd7e&gt;] sys_connect+0xae/0xc0
        [&lt;ffffffff813368d2&gt;] compat_sys_socketcall+0xb2/0x220
        [&lt;ffffffff813b2089&gt;] sysenter_dispatch+0x7/0x30

 -&gt; #0 (sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP){+.+...}:
        [&lt;ffffffff8106b16d&gt;] check_prev_add+0x6cd/0x6e0
        [&lt;ffffffff8106b276&gt;] check_prevs_add+0xf6/0x170
        [&lt;ffffffff8106b903&gt;] validate_chain+0x613/0x790
        [&lt;ffffffff8106dfee&gt;] __lock_acquire+0x4be/0xac0
        [&lt;ffffffff8106ec2d&gt;] lock_acquire+0x8d/0xb0
        [&lt;ffffffff8130d91a&gt;] lock_sock_nested+0x8a/0xa0
        [&lt;ffffffffa002ceac&gt;] l2cap_chan_timeout+0x3c/0xe0 [bluetooth]
        [&lt;ffffffff81051ae4&gt;] process_one_work+0x184/0x450
        [&lt;ffffffff8105276e&gt;] worker_thread+0x15e/0x340
        [&lt;ffffffff81057bb6&gt;] kthread+0x96/0xa0
        [&lt;ffffffff813b1ef4&gt;] kernel_thread_helper+0x4/0x10

 other info that might help us debug this:

  Possible unsafe locking scenario:

        CPU0                    CPU1
        ----                    ----
   lock((&amp;(&amp;chan-&gt;chan_timer)-&gt;work));
                                lock(sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP);
                                lock((&amp;(&amp;chan-&gt;chan_timer)-&gt;work));
   lock(sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP);

  *** DEADLOCK ***

 2 locks held by kworker/1:1/873:
  #0:  (events){.+.+.+}, at: [&lt;ffffffff81051a86&gt;] process_one_work+0x126/0x450
  #1:  ((&amp;(&amp;chan-&gt;chan_timer)-&gt;work)){+.+...}, at: [&lt;ffffffff81051a86&gt;] process_one_work+0x126/0x450

 stack backtrace:
 Pid: 873, comm: kworker/1:1 Not tainted 3.1.0-05270-ga978dc7-dirty #239
 Call Trace:
  [&lt;ffffffff813a0f6e&gt;] print_circular_bug+0xd2/0xe3
  [&lt;ffffffff8106b16d&gt;] check_prev_add+0x6cd/0x6e0
  [&lt;ffffffff8106b276&gt;] check_prevs_add+0xf6/0x170
  [&lt;ffffffff8106b903&gt;] validate_chain+0x613/0x790
  [&lt;ffffffff8106dfee&gt;] __lock_acquire+0x4be/0xac0
  [&lt;ffffffff8130d8f6&gt;] ? lock_sock_nested+0x66/0xa0
  [&lt;ffffffff8106ea30&gt;] ? lock_release_nested+0x100/0x110
  [&lt;ffffffff8130d8f6&gt;] ? lock_sock_nested+0x66/0xa0
  [&lt;ffffffff8106ec2d&gt;] lock_acquire+0x8d/0xb0
  [&lt;ffffffffa002ceac&gt;] ? l2cap_chan_timeout+0x3c/0xe0 [bluetooth]
  [&lt;ffffffff8130d91a&gt;] lock_sock_nested+0x8a/0xa0
  [&lt;ffffffffa002ceac&gt;] ? l2cap_chan_timeout+0x3c/0xe0 [bluetooth]
  [&lt;ffffffff81051a86&gt;] ? process_one_work+0x126/0x450
  [&lt;ffffffffa002ceac&gt;] l2cap_chan_timeout+0x3c/0xe0 [bluetooth]
  [&lt;ffffffff81051ae4&gt;] process_one_work+0x184/0x450
  [&lt;ffffffff81051a86&gt;] ? process_one_work+0x126/0x450
  [&lt;ffffffffa002ce70&gt;] ? l2cap_security_cfm+0x4e0/0x4e0 [bluetooth]
  [&lt;ffffffff8105276e&gt;] worker_thread+0x15e/0x340
  [&lt;ffffffff81052610&gt;] ? manage_workers+0x110/0x110
  [&lt;ffffffff81057bb6&gt;] kthread+0x96/0xa0
  [&lt;ffffffff813b1ef4&gt;] kernel_thread_helper+0x4/0x10
  [&lt;ffffffff813af69d&gt;] ? retint_restore_args+0xe/0xe
  [&lt;ffffffff81057b20&gt;] ? __init_kthread_worker+0x70/0x70
  [&lt;ffffffff813b1ef0&gt;] ? gs_change+0xb/0xb

Signed-off-by: Ulisses Furquim &lt;ulisses@profusion.mobi&gt;
Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: Rename info_work to info_timer</title>
<updated>2011-12-20T19:07:16+00:00</updated>
<author>
<name>Gustavo F. Padovan</name>
<email>padovan@profusion.mobi</email>
</author>
<published>2011-12-20T12:57:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=030013d8585bfc9479bb367bf771d96ef8e289a4'/>
<id>030013d8585bfc9479bb367bf771d96ef8e289a4</id>
<content type='text'>
It makes more sense this way, since info_timer is a timer using delayed
work API.

Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It makes more sense this way, since info_timer is a timer using delayed
work API.

Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: convert security timer to delayed_work</title>
<updated>2011-12-20T19:07:03+00:00</updated>
<author>
<name>Gustavo F. Padovan</name>
<email>padovan@profusion.mobi</email>
</author>
<published>2011-12-20T12:57:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=6c9d42a1615c6dc19c4a57a77d9c4b3d779bb741'/>
<id>6c9d42a1615c6dc19c4a57a77d9c4b3d779bb741</id>
<content type='text'>
This one also needs to run in process context

Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This one also needs to run in process context

Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: Move l2cap_{set,clear}_timer to l2cap.h</title>
<updated>2011-12-20T19:06:30+00:00</updated>
<author>
<name>Gustavo F. Padovan</name>
<email>padovan@profusion.mobi</email>
</author>
<published>2011-12-20T12:57:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c2ec9c1bbd17cdd1fc962f000b4ecb98c1dad830'/>
<id>c2ec9c1bbd17cdd1fc962f000b4ecb98c1dad830</id>
<content type='text'>
It is the only place where it is used.

Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It is the only place where it is used.

Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>module_param: make bool parameters really bool (net &amp; drivers/net)</title>
<updated>2011-12-20T03:27:29+00:00</updated>
<author>
<name>Rusty Russell</name>
<email>rusty@rustcorp.com.au</email>
</author>
<published>2011-12-19T14:08:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=eb93992207dadb946a3b5cf4544957dc924a6f58'/>
<id>eb93992207dadb946a3b5cf4544957dc924a6f58</id>
<content type='text'>
module_param(bool) used to counter-intuitively take an int.  In
fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy
trick.

It's time to remove the int/unsigned int option.  For this version
it'll simply give a warning, but it'll break next kernel version.

(Thanks to Joe Perches for suggesting coccinelle for 0/1 -&gt; true/false).

Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Cc: netdev@vger.kernel.org
Signed-off-by: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
module_param(bool) used to counter-intuitively take an int.  In
fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy
trick.

It's time to remove the int/unsigned int option.  For this version
it'll simply give a warning, but it'll break next kernel version.

(Thanks to Joe Perches for suggesting coccinelle for 0/1 -&gt; true/false).

Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Cc: netdev@vger.kernel.org
Signed-off-by: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Bluetooth: invert locking order in connect path</title>
<updated>2011-12-18T19:07:57+00:00</updated>
<author>
<name>Gustavo F. Padovan</name>
<email>padovan@profusion.mobi</email>
</author>
<published>2011-12-09T06:48:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=03a001948166d966d0d580cddb8ae3a23f8b795b'/>
<id>03a001948166d966d0d580cddb8ae3a23f8b795b</id>
<content type='text'>
This move some checking code that was in l2cap_sock_connect() to
l2cap_chan_connect(). Thus we can invert the lock calls, i.e., call
lock_sock() before hci_dev_lock() to avoid a deadlock scenario.

Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This move some checking code that was in l2cap_sock_connect() to
l2cap_chan_connect(). Thus we can invert the lock calls, i.e., call
lock_sock() before hci_dev_lock() to avoid a deadlock scenario.

Acked-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
</pre>
</div>
</content>
</entry>
</feed>
