1. 12 2月, 2013 17 次提交
  2. 09 2月, 2013 1 次提交
  3. 05 2月, 2013 15 次提交
  4. 04 2月, 2013 2 次提交
  5. 02 2月, 2013 5 次提交
    • A
      Bluetooth: Refactor mgmt_pending_foreach · a3d09356
      Andre Guedes 提交于
      This patch does a trivial refactor in mgmt_pending_foreach function.
      It replaces list_for_each_safe by list_for_each_entry_safe, simplifying
      the function.
      Signed-off-by: NAndre Guedes <andre.guedes@openbossa.org>
      Signed-off-by: NGustavo Padovan <gustavo.padovan@collabora.co.uk>
      a3d09356
    • A
      Bluetooth: Remove unneeded locking · 2b8a9a2e
      Andre Guedes 提交于
      This patch removes unneeded locking in hci_le_adv_report_evt. There
      is no need to lock hdev before calling mgmt_device_found.
      Signed-off-by: NAndre Guedes <andre.guedes@openbossa.org>
      Signed-off-by: NGustavo Padovan <gustavo.padovan@collabora.co.uk>
      2b8a9a2e
    • A
      Bluetooth: Reduce critical section in sco_conn_ready · 40528088
      Andre Guedes 提交于
      This patch reduces the critical section protected by sco_conn_lock in
      sco_conn_ready function. The lock is acquired only when it is really
      needed.
      
      This patch fixes the following lockdep warning which is generated
      when the host terminates a SCO connection.
      
      Today, this warning is a false positive. There is no way those
      two threads reported by lockdep are running at the same time since
      hdev->workqueue (where rx_work is queued) is single-thread. However,
      if somehow this behavior is changed in future, we will have a
      potential deadlock.
      
      ======================================================
      [ INFO: possible circular locking dependency detected ]
      3.8.0-rc1+ #7 Not tainted
      -------------------------------------------------------
      kworker/u:1H/1018 is trying to acquire lock:
       (&(&conn->lock)->rlock){+.+...}, at: [<ffffffffa0033ba6>] sco_chan_del+0x66/0x190 [bluetooth]
      
      but task is already holding lock:
       (slock-AF_BLUETOOTH-BTPROTO_SCO){+.+...}, at: [<ffffffffa0033d5a>] sco_conn_del+0x8a/0xe0 [bluetooth]
      
      which lock already depends on the new lock.
      
      the existing dependency chain (in reverse order) is:
      
      -> #1 (slock-AF_BLUETOOTH-BTPROTO_SCO){+.+...}:
             [<ffffffff81083011>] lock_acquire+0xb1/0xe0
             [<ffffffff813efd01>] _raw_spin_lock+0x41/0x80
             [<ffffffffa003436e>] sco_connect_cfm+0xbe/0x350 [bluetooth]
             [<ffffffffa0015d6c>] hci_event_packet+0xd3c/0x29b0 [bluetooth]
             [<ffffffffa0004583>] hci_rx_work+0x133/0x870 [bluetooth]
             [<ffffffff8104d65f>] process_one_work+0x2bf/0x4f0
             [<ffffffff81050022>] worker_thread+0x2b2/0x3e0
             [<ffffffff81056021>] kthread+0xd1/0xe0
             [<ffffffff813f14bc>] ret_from_fork+0x7c/0xb0
      
      -> #0 (&(&conn->lock)->rlock){+.+...}:
             [<ffffffff81082215>] __lock_acquire+0x1465/0x1c70
             [<ffffffff81083011>] lock_acquire+0xb1/0xe0
             [<ffffffff813efd01>] _raw_spin_lock+0x41/0x80
             [<ffffffffa0033ba6>] sco_chan_del+0x66/0x190 [bluetooth]
             [<ffffffffa0033d6d>] sco_conn_del+0x9d/0xe0 [bluetooth]
             [<ffffffffa0034653>] sco_disconn_cfm+0x53/0x60 [bluetooth]
             [<ffffffffa000fef3>] hci_disconn_complete_evt.isra.54+0x363/0x3c0 [bluetooth]
             [<ffffffffa00150f7>] hci_event_packet+0xc7/0x29b0 [bluetooth]
             [<ffffffffa0004583>] hci_rx_work+0x133/0x870 [bluetooth]
             [<ffffffff8104d65f>] process_one_work+0x2bf/0x4f0
             [<ffffffff81050022>] worker_thread+0x2b2/0x3e0
             [<ffffffff81056021>] kthread+0xd1/0xe0
             [<ffffffff813f14bc>] ret_from_fork+0x7c/0xb0
      
      other info that might help us debug this:
      
       Possible unsafe locking scenario:
      
             CPU0                    CPU1
             ----                    ----
        lock(slock-AF_BLUETOOTH-BTPROTO_SCO);
                                     lock(&(&conn->lock)->rlock);
                                     lock(slock-AF_BLUETOOTH-BTPROTO_SCO);
        lock(&(&conn->lock)->rlock);
      
       *** DEADLOCK ***
      
      4 locks held by kworker/u:1H/1018:
       #0:  (hdev->name#2){.+.+.+}, at: [<ffffffff8104d5f8>] process_one_work+0x258/0x4f0
       #1:  ((&hdev->rx_work)){+.+.+.}, at: [<ffffffff8104d5f8>] process_one_work+0x258/0x4f0
       #2:  (&hdev->lock){+.+.+.}, at: [<ffffffffa000fbe9>] hci_disconn_complete_evt.isra.54+0x59/0x3c0 [bluetooth]
       #3:  (slock-AF_BLUETOOTH-BTPROTO_SCO){+.+...}, at: [<ffffffffa0033d5a>] sco_conn_del+0x8a/0xe0 [bluetooth]
      
      stack backtrace:
      Pid: 1018, comm: kworker/u:1H Not tainted 3.8.0-rc1+ #7
      Call Trace:
       [<ffffffff813e92f9>] print_circular_bug+0x1fb/0x20c
       [<ffffffff81082215>] __lock_acquire+0x1465/0x1c70
       [<ffffffff81083011>] lock_acquire+0xb1/0xe0
       [<ffffffffa0033ba6>] ? sco_chan_del+0x66/0x190 [bluetooth]
       [<ffffffff813efd01>] _raw_spin_lock+0x41/0x80
       [<ffffffffa0033ba6>] ? sco_chan_del+0x66/0x190 [bluetooth]
       [<ffffffffa0033ba6>] sco_chan_del+0x66/0x190 [bluetooth]
       [<ffffffffa0033d6d>] sco_conn_del+0x9d/0xe0 [bluetooth]
       [<ffffffffa0034653>] sco_disconn_cfm+0x53/0x60 [bluetooth]
       [<ffffffffa000fef3>] hci_disconn_complete_evt.isra.54+0x363/0x3c0 [bluetooth]
       [<ffffffffa000fbd0>] ? hci_disconn_complete_evt.isra.54+0x40/0x3c0 [bluetooth]
       [<ffffffffa00150f7>] hci_event_packet+0xc7/0x29b0 [bluetooth]
       [<ffffffff81202e90>] ? __dynamic_pr_debug+0x80/0x90
       [<ffffffff8133ff7d>] ? kfree_skb+0x2d/0x40
       [<ffffffffa0021644>] ? hci_send_to_monitor+0x1a4/0x1c0 [bluetooth]
       [<ffffffffa0004583>] hci_rx_work+0x133/0x870 [bluetooth]
       [<ffffffff8104d5f8>] ? process_one_work+0x258/0x4f0
       [<ffffffff8104d65f>] process_one_work+0x2bf/0x4f0
       [<ffffffff8104d5f8>] ? process_one_work+0x258/0x4f0
       [<ffffffff8104fdc1>] ? worker_thread+0x51/0x3e0
       [<ffffffffa0004450>] ? hci_tx_work+0x800/0x800 [bluetooth]
       [<ffffffff81050022>] worker_thread+0x2b2/0x3e0
       [<ffffffff8104fd70>] ? busy_worker_rebind_fn+0x100/0x100
       [<ffffffff81056021>] kthread+0xd1/0xe0
       [<ffffffff81055f50>] ? flush_kthread_worker+0xc0/0xc0
       [<ffffffff813f14bc>] ret_from_fork+0x7c/0xb0
       [<ffffffff81055f50>] ? flush_kthread_worker+0xc0/0xc0
      Signed-off-by: NAndre Guedes <andre.guedes@openbossa.org>
      Signed-off-by: NGustavo Padovan <gustavo.padovan@collabora.co.uk>
      40528088
    • J
      Bluetooth: Increment Management interface revision · 3810285c
      Johan Hedberg 提交于
      This patch increments the management interface revision due to the
      various fixes, improvements and other changes that have gone in lately.
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      Acked-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NGustavo Padovan <gustavo.padovan@collabora.co.uk>
      3810285c
    • J
      Bluetooth: Fix link security setting when powering on · f0ff92fb
      Johan Hedberg 提交于
      If a controller is powered on while the HCI_AUTO_OFF flag is set the
      link security setting (HCI_LINK_SECURITY) might not be in sync with the
      actual state of the controller (HCI_AUTH). This patch fixes the issue by
      checking for inequality between the intended and actual settings and
      sends a HCI_Write_Auth_Enable command if necessary.
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      Acked-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NGustavo Padovan <gustavo.padovan@collabora.co.uk>
      f0ff92fb