1. 12 2月, 2013 13 次提交
  2. 09 2月, 2013 1 次提交
  3. 05 2月, 2013 15 次提交
  4. 04 2月, 2013 2 次提交
  5. 02 2月, 2013 9 次提交
    • 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
    • J
      Bluetooth: Add support for 128-bit UUIDs in EIR data · c00d575b
      Johan Hedberg 提交于
      This patch adds the necessary code for encoding a list of 128-bit UUIDs
      into the EIR data.
      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>
      c00d575b
    • J
      Bluetooth: Add support for 32-bit UUIDs in EIR data · cdf1963f
      Johan Hedberg 提交于
      This patch adds the necessary code for inserting a list of 32-bit UUIDs
      into the EIR data.
      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>
      cdf1963f
    • J
      Bluetooth: Refactor UUID-16 list generation into its own function · 213202ed
      Johan Hedberg 提交于
      We will need to create three separate UUID lists in the EIR data (for
      16, 32 and 128 bit UUIDs) so the code is easier to follow if each list
      is generated in their own function.
      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>
      213202ed
    • J
      Bluetooth: Remove useless eir_len variable from EIR creation · 892bbc57
      Johan Hedberg 提交于
      The amount of data encoded so far in the create_eir() function can be
      calculated simply through the difference between the data and ptr
      pointer variables. The eir_len variable then becomes essentially
      useless.
      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>
      892bbc57