1. 28 3月, 2012 7 次提交
    • J
      Bluetooth: hci_core: fix NULL-pointer dereference at unregister · 94324962
      Johan Hovold 提交于
      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] [<c00188bc>] (unwind_backtrace+0x0/0xf8) from [<c00729c4>] (__lock_acquire+0x1590/0x1ab0)
      [   79.653594] [<c00729c4>] (__lock_acquire+0x1590/0x1ab0) from [<c00733f8>] (lock_acquire+0x9c/0x128)
      [   79.663085] [<c00733f8>] (lock_acquire+0x9c/0x128) from [<c0040a88>] (run_timer_softirq+0x150/0x3ac)
      [   79.672668] [<c0040a88>] (run_timer_softirq+0x150/0x3ac) from [<c003a3b8>] (__do_softirq+0xd4/0x22c)
      [   79.682281] [<c003a3b8>] (__do_softirq+0xd4/0x22c) from [<c003a924>] (irq_exit+0x8c/0x94)
      [   79.690856] [<c003a924>] (irq_exit+0x8c/0x94) from [<c0013a50>] (handle_IRQ+0x34/0x84)
      [   79.699157] [<c0013a50>] (handle_IRQ+0x34/0x84) from [<c0008530>] (omap3_intc_handle_irq+0x48/0x4c)
      [   79.708648] [<c0008530>] (omap3_intc_handle_irq+0x48/0x4c) from [<c037499c>] (__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 : [<00000000>]    lr : [<c0040aa4>]    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] [<c0040aa4>] (run_timer_softirq+0x16c/0x3ac) from [<c003a3b8>] (__do_softirq+0xd4/0x22c)
      [   79.931945] [<c003a3b8>] (__do_softirq+0xd4/0x22c) from [<c003a924>] (irq_exit+0x8c/0x94)
      [   79.940582] [<c003a924>] (irq_exit+0x8c/0x94) from [<c0013a50>] (handle_IRQ+0x34/0x84)
      [   79.948913] [<c0013a50>] (handle_IRQ+0x34/0x84) from [<c0008530>] (omap3_intc_handle_irq+0x48/0x4c)
      [   79.958404] [<c0008530>] (omap3_intc_handle_irq+0x48/0x4c) from [<c037499c>] (__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
      
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NJohan Hovold <jhovold@gmail.com>
      Acked-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      94324962
    • J
      Bluetooth: hci_ldisc: fix NULL-pointer dereference on tty_close · 33b69bf8
      Johan Hovold 提交于
      Do not close protocol driver until device has been unregistered.
      
      This fixes a race between tty_close and hci_dev_open which can result in
      a NULL-pointer dereference.
      
      The line discipline closes the protocol driver while we may still have
      hci_dev_open sleeping on the req_lock mutex resulting in a NULL-pointer
      dereference when lock is acquired and hci_init_req called.
      
      Bug is 100% reproducible using hciattach and a disconnected serial port:
      
      0. # hciattach -n 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 detaches protocol driver and cancels init req
      5. hci_dev_open (1) releases req lock
      6. hci_dev_open (3) grabs req lock, calls hci_init_req, which triggers oops
         when request is prepared in hci_uart_send_frame
      
      [  137.201263] Unable to handle kernel NULL pointer dereference at virtual address 00000028
      [  137.209838] pgd = c0004000
      [  137.212677] [00000028] *pgd=00000000
      [  137.216430] Internal error: Oops: 17 [#1]
      [  137.220642] Modules linked in:
      [  137.223846] CPU: 0    Tainted: G        W     (3.3.0-rc6-dirty #406)
      [  137.230529] PC is at __lock_acquire+0x5c/0x1ab0
      [  137.235290] LR is at lock_acquire+0x9c/0x128
      [  137.239776] pc : [<c0071490>]    lr : [<c00733f8>]    psr: 20000093
      [  137.239776] sp : cf869dd8  ip : c0529554  fp : c051c730
      [  137.251800] r10: 00000000  r9 : cf8673c0  r8 : 00000080
      [  137.257293] r7 : 00000028  r6 : 00000002  r5 : 00000000  r4 : c053fd70
      [  137.264129] r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 : 00000001
      [  137.270965] Flags: nzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      [  137.278717] Control: 10c5387d  Table: 8f0f4019  DAC: 00000015
      [  137.284729] Process kworker/u:1 (pid: 7, stack limit = 0xcf8682e8)
      [  137.291229] Stack: (0xcf869dd8 to 0xcf86a000)
      [  137.295776] 9dc0:                                                       c0529554 00000000
      [  137.304351] 9de0: cf8673c0 cf868000 d03ea1ef cf868000 000001ef 00000470 00000000 00000002
      [  137.312927] 9e00: cf8673c0 00000001 c051c730 c00716ec 0000000c 00000440 c0529554 00000001
      [  137.321533] 9e20: c051c730 cf868000 d03ea1f3 00000000 c053b978 00000000 00000028 cf868000
      [  137.330078] 9e40: 00000000 00000000 00000002 00000000 00000000 c00733f8 00000002 00000080
      [  137.338684] 9e60: 00000000 c02a1d50 00000000 00000001 60000013 c0969a1c 60000093 c053b96c
      [  137.347259] 9e80: 00000002 00000018 20000013 c02a1d50 cf0ac000 00000000 00000002 cf868000
      [  137.355834] 9ea0: 00000089 c0374130 00000002 00000000 c02a1d50 cf0ac000 0000000c cf0fc540
      [  137.364410] 9ec0: 00000018 c02a1d50 cf0fc540 00000000 cf0fc540 c0282238 c028220c cf178d80
      [  137.372985] 9ee0: 127525d8 c02821cc 9a1fa451 c032727c 9a1fa451 127525d8 cf0fc540 cf0ac4ec
      [  137.381561] 9f00: cf0ac000 cf0fc540 cf0ac584 c03285f4 c0328580 cf0ac4ec cf85c740 c05510cc
      [  137.390136] 9f20: ce825400 c004c914 00000002 00000000 c004c884 ce8254f5 cf869f48 00000000
      [  137.398712] 9f40: c0328580 ce825415 c0a7f914 c061af64 00000000 c048cf3c cf8673c0 cf85c740
      [  137.407287] 9f60: c05510cc c051a66c c05510ec c05510c4 cf85c750 cf868000 00000089 c004d6ac
      [  137.415863] 9f80: 00000000 c0073d14 00000001 cf853ed8 cf85c740 c004d558 00000013 00000000
      [  137.424438] 9fa0: 00000000 00000000 00000000 c00516b0 00000000 00000000 cf85c740 00000000
      [  137.433013] 9fc0: 00000001 dead4ead ffffffff ffffffff c0551674 00000000 00000000 c0450aa4
      [  137.441589] 9fe0: cf869fe0 cf869fe0 cf853ed8 c005162c c0013b30 c0013b30 00ffff00 00ffff00
      [  137.450164] [<c0071490>] (__lock_acquire+0x5c/0x1ab0) from [<c00733f8>] (lock_acquire+0x9c/0x128)
      [  137.459503] [<c00733f8>] (lock_acquire+0x9c/0x128) from [<c0374130>] (_raw_spin_lock_irqsave+0x44/0x58)
      [  137.469360] [<c0374130>] (_raw_spin_lock_irqsave+0x44/0x58) from [<c02a1d50>] (skb_queue_tail+0x18/0x48)
      [  137.479339] [<c02a1d50>] (skb_queue_tail+0x18/0x48) from [<c0282238>] (h4_enqueue+0x2c/0x34)
      [  137.488189] [<c0282238>] (h4_enqueue+0x2c/0x34) from [<c02821cc>] (hci_uart_send_frame+0x34/0x68)
      [  137.497497] [<c02821cc>] (hci_uart_send_frame+0x34/0x68) from [<c032727c>] (hci_send_frame+0x50/0x88)
      [  137.507171] [<c032727c>] (hci_send_frame+0x50/0x88) from [<c03285f4>] (hci_cmd_work+0x74/0xd4)
      [  137.516204] [<c03285f4>] (hci_cmd_work+0x74/0xd4) from [<c004c914>] (process_one_work+0x1a0/0x4ec)
      [  137.525604] [<c004c914>] (process_one_work+0x1a0/0x4ec) from [<c004d6ac>] (worker_thread+0x154/0x344)
      [  137.535278] [<c004d6ac>] (worker_thread+0x154/0x344) from [<c00516b0>] (kthread+0x84/0x90)
      [  137.543975] [<c00516b0>] (kthread+0x84/0x90) from [<c0013b30>] (kernel_thread_exit+0x0/0x8)
      [  137.552734] Code: e59f4e5c e5941000 e3510000 0a000031 (e5971000)
      [  137.559234] ---[ end trace 1b75b31a2719ed1e ]---
      
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NJohan Hovold <jhovold@gmail.com>
      Acked-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      33b69bf8
    • C
      Bluetooth: Add Atheros maryann PIDVID support · 07c0ea87
      Cho, Yu-Chen 提交于
      Add Atheros maryann 0cf3:311d PIDVID support
      This module is AR3012 Series.
      
      Include /sys/kernel/debug/usb/devices output here for reference
      
      before:
      T:  Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=12   MxCh= 0
      D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=0cf3 ProdID=311d Rev= 0.01
      S:  Manufacturer=Atheros Communications
      S:  Product=Bluetooth USB Host Controller
      S:  SerialNumber=Alaska Day 2006
      C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      
      after:
      T:  Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=12   MxCh= 0
      D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=0cf3 ProdID=311d Rev= 0.02
      S:  Manufacturer=Atheros Communications
      S:  Product=Bluetooth USB Host Controller
      S:  SerialNumber=Alaska Day 2006
      C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      Signed-off-by: NCho, Yu-Chen <acho@suse.com>
      cked-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      07c0ea87
    • J
      Bluetooth: btusb: Add USB device ID "0a5c 21e8" · 6dfc326f
      João Paulo Rechi Vita 提交于
      One more vendor-specific ID for BCM20702A0.
      
      T:  Bus=01 Lev=03 Prnt=05 Port=02 Cnt=01 Dev#=  9 Spd=12  MxCh= 0
      D:  Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=0a5c ProdID=21e8 Rev=01.12
      S:  Manufacturer=Broadcom Corp
      S:  Product=BCM20702A0
      S:  SerialNumber=00027221F4E2
      C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
      I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      I:  If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
      Signed-off-by: NJoão Paulo Rechi Vita <jprvita@openbossa.org>
      Acked-by: NGustavo F. Padovan <padovan@profusion.mobi>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      6dfc326f
    • S
      Bluetooth: Fix Endian Bug. · 6e4aff10
      Santosh Nayak 提交于
      Fix network to host endian conversion for L2CAP chan id.
      Signed-off-by: NSantosh Nayak <santoshprasadnayak@gmail.com>
      Acked-by: NAndrei Emeltchenko <andrei.emeltchenko@intel.com>
      Signed-off-by: NGustavo F. Padovan <padovan@profusion.mobi>
      6e4aff10
    • H
      Bluetooth: Use correct flags for checking HCI_SSP_ENABLED bit · 3f17790c
      Hemant Gupta 提交于
      This patch uses the correct flags for checking the HCI_SSP_ENABLED bit.
      Without this authentication request was not being initiated.
      Signed-off-by: NHemant Gupta <hemant.gupta@stericsson.com>
      Acked-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      3f17790c
    • M
      MAINTAINERS: update Bluetooth tree locations · 22e7a424
      Marcel Holtmann 提交于
      Make use of a shared tree setup to limit the confusions on which
      tree is current.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NGustavo Padovan <gustavo@padovan.org>
      22e7a424
  2. 27 3月, 2012 12 次提交
  3. 23 3月, 2012 9 次提交
  4. 22 3月, 2012 12 次提交
    • B
      l2tp: enable automatic module loading for l2tp_ppp · 9395a09d
      Benjamin LaHaise 提交于
      When L2TP is configured as a module, requests for L2TP sockets do not result
      in the l2tp_ppp module being loaded.  Fix this by adding the appropriate
      MODULE_ALIAS to be recognized by pppox's request_module() call.
      Signed-off-by: NBenjamin LaHaise <bcrl@kvack.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9395a09d
    • M
      cnic: Fix parity error code conflict · 8ec3e702
      Michael Chan 提交于
      The recently added parity error handling used an error code that was
      already defined for a different error.  This could lead to bnx2x
      firmware assert.  We need to fix this with new error codes that are
      defined for parity error only.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Reviewed-by: NEddie Wai <eddie.wai@broadcom.com>
      Reviewed-by: NBhanu Prakash Gollapudi <bprakash@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8ec3e702
    • M
      tg3: Fix RSS ring refill race condition · 7ae52890
      Michael Chan 提交于
      The RSS feature in tg3 hardware has only one rx producer ring for all
      RSS rings.  NAPI vector 1 is special and handles the refilling of the
      rx producer ring on behalf of all RSS rings.  There is a race condition
      between these RSS NAPIs and the NAPI[1].  If NAPI[1] finishes checking
      for refill and then another RSS ring empties the rx producer ring
      before NAPI[1] exits NAPI, the chip will be completely out of SKBs in
      the rx producer ring.
      
      We fix this by adding a flag tp->rx_refill and rely on napi_schedule()/
      napi_complete() to help synchronize it to close the race condition.
      
      Update driver version to 3.123.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7ae52890
    • S
      sky2: override for PCI legacy power management · 5676cc7b
      stephen hemminger 提交于
      Some BIOS's don't setup power management correctly (what else is
      new) and don't allow use of PCI Express power control. Add a special
      exception module parameter to allow working around this issue.
      Based on slightly different patch by Knut Petersen.
      Reported-by: NArkadiusz Miskiewicz <arekm@maven.pl>
      Signed-off-by: NStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5676cc7b
    • E
      net: fix napi_reuse_skb() skb reserve · 2a2a459e
      Eric Dumazet 提交于
      napi->skb is allocated in napi_get_frags() using
      netdev_alloc_skb_ip_align(), with a reserve of NET_SKB_PAD +
      NET_IP_ALIGN bytes.
      
      However, when such skb is recycled in napi_reuse_skb(), it ends with a
      reserve of NET_IP_ALIGN which is suboptimal.
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2a2a459e
    • L
      Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security · 3556485f
      Linus Torvalds 提交于
      Pull security subsystem updates for 3.4 from James Morris:
       "The main addition here is the new Yama security module from Kees Cook,
        which was discussed at the Linux Security Summit last year.  Its
        purpose is to collect miscellaneous DAC security enhancements in one
        place.  This also marks a departure in policy for LSM modules, which
        were previously limited to being standalone access control systems.
        Chromium OS is using Yama, and I believe there are plans for Ubuntu,
        at least.
      
        This patchset also includes maintenance updates for AppArmor, TOMOYO
        and others."
      
      Fix trivial conflict in <net/sock.h> due to the jumo_label->static_key
      rename.
      
      * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (38 commits)
        AppArmor: Fix location of const qualifier on generated string tables
        TOMOYO: Return error if fails to delete a domain
        AppArmor: add const qualifiers to string arrays
        AppArmor: Add ability to load extended policy
        TOMOYO: Return appropriate value to poll().
        AppArmor: Move path failure information into aa_get_name and rename
        AppArmor: Update dfa matching routines.
        AppArmor: Minor cleanup of d_namespace_path to consolidate error handling
        AppArmor: Retrieve the dentry_path for error reporting when path lookup fails
        AppArmor: Add const qualifiers to generated string tables
        AppArmor: Fix oops in policy unpack auditing
        AppArmor: Fix error returned when a path lookup is disconnected
        KEYS: testing wrong bit for KEY_FLAG_REVOKED
        TOMOYO: Fix mount flags checking order.
        security: fix ima kconfig warning
        AppArmor: Fix the error case for chroot relative path name lookup
        AppArmor: fix mapping of META_READ to audit and quiet flags
        AppArmor: Fix underflow in xindex calculation
        AppArmor: Fix dropping of allowed operations that are force audited
        AppArmor: Add mising end of structure test to caps unpacking
        ...
      3556485f
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · b8716614
      Linus Torvalds 提交于
      Pull crypto update from Herbert Xu:
       "* sha512 bug fixes (already in your tree).
        * SHA224/SHA384 AEAD support in caam.
        * X86-64 optimised version of Camellia.
        * Tegra AES support.
        * Bulk algorithm registration interface to make driver registration easier.
        * padata race fixes.
        * Misc fixes."
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (31 commits)
        padata: Fix race on sequence number wrap
        padata: Fix race in the serialization path
        crypto: camellia - add assembler implementation for x86_64
        crypto: camellia - rename camellia.c to camellia_generic.c
        crypto: camellia - fix checkpatch warnings
        crypto: camellia - rename camellia module to camellia_generic
        crypto: tcrypt - add more camellia tests
        crypto: testmgr - add more camellia test vectors
        crypto: camellia - simplify key setup and CAMELLIA_ROUNDSM macro
        crypto: twofish-x86_64/i586 - set alignmask to zero
        crypto: blowfish-x86_64 - set alignmask to zero
        crypto: serpent-sse2 - combine ablk_*_init functions
        crypto: blowfish-x86_64 - use crypto_[un]register_algs
        crypto: twofish-x86_64-3way - use crypto_[un]register_algs
        crypto: serpent-sse2 - use crypto_[un]register_algs
        crypto: serpent-sse2 - remove dead code from serpent_sse2_glue.c::serpent_sse2_init()
        crypto: twofish-x86 - Remove dead code from twofish_glue_3way.c::init()
        crypto: In crypto_add_alg(), 'exact' wants to be initialized to 0
        crypto: caam - fix gcc 4.6 warning
        crypto: Add bulk algorithm registration interface
        ...
      b8716614
    • L
      Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · 31f67652
      Linus Torvalds 提交于
      Pull hwmon changes for v3.4 from Guenter Roeck:
       "Mostly cleanup.  No new drivers this time around, but support for
        several chips added to existing drivers: TPS40400, TPS40422, MTD040,
        MAX34446, ZL9101M, ZL9117M, and LM96080.  Also, added watchdog support
        for SCH56xx, and additional attributes for a couple of drivers."
      
      * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: (137 commits)
        hwmon: (sch56xx) Add support for the integrated watchdog (v2)
        hwmon: (w83627ehf) Add support for temperature offset registers
        hwmon: (jc42) Remove unnecessary device IDs
        hwmon: (zl6100) Add support for ZL9101M and ZL9117M
        hwmon: (adm1275) Add support for ADM1075
        hwmon: (max34440) Add support for MAX34446
        hwmon: (pmbus) Add more virtual registers
        hwmon: (pmbus) Add support for Lineage Power MDT040
        hwmon: (pmbus) Add support for TI TPS40400 and TPS40422
        hwmon: (max34440) Add support for 'lowest' output voltage attribute
        hwmon: (jc42) Convert to use devm_kzalloc
        hwmon: (max16065) Convert to use devm_kzalloc
        hwmon: (smm665) Convert to use devm_kzalloc
        hwmon: (ltc4261) Convert to use devm_kzalloc
        hwmon: (pmbus) Simplify remove functions
        hwmon: (pmbus) Convert pmbus drivers to use devm_kzalloc
        hwmon: (lineage-pem) Convert to use devm_kzalloc
        hwmon: (hwmon-vid) Fix checkpatch issues
        hwmon: (hwmon-vid) Add new entries to VRM model table
        hwmon: (lm80) Add detection of NatSemi/TI LM96080
        ...
      31f67652
    • L
      Merge tag 'regulator-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator · d15d7644
      Linus Torvalds 提交于
      Pull regulator updates for 3.4 from Mark Brown:
       "This has been a fairly quiet release from a regulator point of view,
        the only real framework features added were devm support and a
        convenience helper for setting up fixed voltage regulators.
      
        We also added a couple of drivers (but will drop the BQ240022 driver
        via the arm-soc tree as it's been replaced by the more generic
        gpio-regulator driver) and Axel Lin continued his relentless and
        generally awesome stream of fixes and cleanups."
      
      * tag 'regulator-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (93 commits)
        regulator: Fix up a confusing dev_warn when DT lookup fails
        regulator: Convert tps6507x to set_voltage_sel
        regulator: Refactor tps6507x to use one tps6507x_pmic_ops for all LDOs and DCDCs
        regulator: Make s5m8767_get_voltage_register always return correct register
        regulator: s5m8767: Check pdata->buck[2|3|4]_gpiodvs earlier
        regulator: tps65910: Provide settling time for DCDC voltage change
        regulator: Add Anatop regulator driver
        regulator: Simplify implementation of tps65912_get_voltage_dcdc
        regulator: Use tps65912_set_voltage_sel for both DCDCx and LDOx
        regulator: tps65910: Provide settling time for enabling rails
        regulator: max8925: Use DIV_ROUND_UP macro
        regulator: tps65912: Use simple equations to get register address
        regulator: Fix the logic of tps65910_get_mode
        regulator: Merge tps65217_pmic_ldo234_ops and tps65217_pmic_dcdc_ops to tps65217_pmic_ops
        regulator: Use DIV_ROUND_CLOSEST in wm8350_isink_get_current
        regulator: Use array to store dcdc_range settings for tps65912
        regulator: Rename s5m8767_convert_voltage to s5m8767_convert_voltage_to_sel
        regulator: tps6524x: Remove unneeded comment for N_REGULATORS
        regulator: Rename set_voltage_sel callback function name to *_sel
        regulator: Fix s5m8767_set_voltage_time_sel calculation value
        ...
      d15d7644
    • L
      Merge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 0c2fe82a
      Linus Torvalds 提交于
      Pull InfiniBand/RDMA changes for the 3.4 merge window from Roland Dreier:
       "Nothing big really stands out; by patch count lots of fixes to the
        mlx4 driver plus some cleanups and fixes to the core and other
        drivers."
      
      * tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (28 commits)
        mlx4_core: Scale size of MTT table with system RAM
        mlx4_core: Allow dynamic MTU configuration for IB ports
        IB/mlx4: Fix info returned when querying IBoE ports
        IB/mlx4: Fix possible missed completion event
        mlx4_core: Report thermal error events
        mlx4_core: Fix one more static exported function
        IB: Change CQE "csum_ok" field to a bit flag
        RDMA/iwcm: Reject connect requests if cmid is not in LISTEN state
        RDMA/cxgb3: Don't pass irq flags to flush_qp()
        mlx4_core: Get rid of redundant ext_port_cap flags
        RDMA/ucma: Fix AB-BA deadlock
        IB/ehca: Fix ilog2() compile failure
        IB: Use central enum for speed instead of hard-coded values
        IB/iser: Post initial receive buffers before sending the final login request
        IB/iser: Free IB connection resources in the proper place
        IB/srp: Consolidate repetitive sysfs code
        IB/srp: Use pr_fmt() and pr_err()/pr_warn()
        IB/core: Fix SDR rates in sysfs
        mlx4: Enforce device max FMR maps in FMR alloc
        IB/mlx4: Set bad_wr for invalid send opcode
        ...
      0c2fe82a
    • L
      Merge tag 'spi-for-linus' of git://git.secretlab.ca/git/linux-2.6 · 5f0e685f
      Linus Torvalds 提交于
      Pull SPI changes for v3.4 from Grant Likely:
       "Mostly a bunch of new drivers and driver bug fixes; but this also
        includes a few patches that create a core message queue infrastructure
        for the spi subsystem instead of making each driver open code it."
      
      * tag 'spi-for-linus' of git://git.secretlab.ca/git/linux-2.6: (34 commits)
        spi/fsl-espi: Make sure pm is within 2..32
        spi/fsl-espi: make the clock computation easier to read
        spi: sh-hspi: modify write/read method
        spi: sh-hspi: control spi clock more correctly
        spi: sh-hspi: convert to using core message queue
        spi: s3c64xx: Fix build
        spi: s3c64xx: remove unnecessary callback msg->complete
        spi: remove redundant variable assignment
        spi: release lock on error path in spi_pump_messages()
        spi: Compatibility with direction which is used in samsung DMA operation
        spi-topcliff-pch: add recovery processing in case wait-event timeout
        spi-topcliff-pch: supports a spi mode setup and bit order setup by IO control
        spi-topcliff-pch: Fix issue for transmitting over 4KByte
        spi-topcliff-pch: Modify pci-bus number dynamically to get DMA device info
        spi/imx: simplify error handling to free gpios
        spi: Convert to DEFINE_PCI_DEVICE_TABLE
        spi: add Broadcom BCM63xx SPI controller driver
        SPI: add CSR SiRFprimaII SPI controller driver
        spi-topcliff-pch: fix -Wuninitialized warning
        spi: Mark spi_register_board_info() __devinit
        ...
      5f0e685f
    • L
      Merge tag 'dt-for-linus' of git://git.secretlab.ca/git/linux-2.6 · f8974cb7
      Linus Torvalds 提交于
      Pull core device tree changes for Linux v3.4 from Grant Likely:
       "This branch contains a minor documentation addition, a utility
        function for parsing string properties needed by some of the new ARM
        platforms, disables dynamic DT code that isn't used anywhere but on a
        few PPC machines, and exports DT node compatible data to userspace via
        UEVENT properties.  Nothing earth shattering here."
      
      * tag 'dt-for-linus' of git://git.secretlab.ca/git/linux-2.6:
        of: Only compile OF_DYNAMIC on PowerPC pseries and iseries
        arm/dts: OMAP3: Add omap3evm and am335xevm support
        drivercore: Output common devicetree information in uevent
        of: Add of_property_match_string() to find index into a string list
      f8974cb7