1. 20 6月, 2013 3 次提交
  2. 18 6月, 2013 2 次提交
  3. 13 6月, 2013 2 次提交
  4. 12 6月, 2013 1 次提交
    • M
      mwifiex: debugfs: Fix out of bounds array access · f873ded2
      Mark A. Greer 提交于
      When reading the contents of '/sys/kernel/debug/mwifiex/p2p0/info',
      the following panic occurs:
      
      $ cat /sys/kernel/debug/mwifiex/p2p0/info
      Unable to handle kernel paging request at virtual address 74706164
      pgd = de530000
      [74706164] *pgd=00000000
      Internal error: Oops: 5 [#1] SMP ARM
      Modules linked in: phy_twl4030_usb omap2430 musb_hdrc mwifiex_sdio mwifiex
      CPU: 0 PID: 1635 Comm: cat Not tainted 3.10.0-rc1-00010-g1268390 #1
      task: de16b6c0 ti: de048000 task.ti: de048000
      PC is at strnlen+0xc/0x4c
      LR is at string+0x3c/0xf8
      pc : [<c02c123c>]    lr : [<c02c2d1c>]    psr: a0000013
      sp : de049e10  ip : c06efba0  fp : de6d2092
      r10: bf01a260  r9 : ffffffff  r8 : 74706164
      r7 : 0000ffff  r6 : ffffffff  r5 : de6d209c  r4 : 00000000
      r3 : ff0a0004  r2 : 74706164  r1 : ffffffff  r0 : 74706164
      Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
      Control: 10c5387d  Table: 9e530019  DAC: 00000015
      Process cat (pid: 1635, stack limit = 0xde048240)
      Stack: (0xde049e10 to 0xde04a000)
      9e00:                                     de6d2092 00000002 bf01a25e de6d209c
      9e20: de049e80 c02c438c 0000000a ff0a0004 ffffffff 00000000 00000000 de049e48
      9e40: 00000000 2192df6d ff0a0004 ffffffff 00000000 de6d2092 de049ef8 bef3cc00
      9e60: de6b0000 dc358000 de6d2000 00000000 00000003 c02c45a4 bf01790c bf01a254
      9e80: 74706164 bf018698 00000000 de59c3c0 de048000 de049f80 00001000 bef3cc00
      9ea0: 00000008 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      9ec0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      9ee0: 00000000 00000000 00000000 00000001 00000000 00000000 6669776d 20786569
      9f00: 20302e31 2e343128 392e3636 3231702e 00202933 00000000 00000003 c0294898
      9f20: 00000000 00000000 00000000 00000000 de59c3c0 c0107c04 de554000 de59c3c0
      9f40: 00001000 bef3cc00 de049f80 bef3cc00 de049f80 00000000 00000003 c0108a00
      9f60: de048000 de59c3c0 00000000 00000000 de59c3c0 00001000 bef3cc00 c0108b60
      9f80: 00000000 00000000 00001000 bef3cc00 00000003 00000003 c0014128 de048000
      9fa0: 00000000 c0013f80 00001000 bef3cc00 00000003 bef3cc00 00001000 00000000
      9fc0: 00001000 bef3cc00 00000003 00000003 00000001 00000001 00000001 00000003
      9fe0: 00000000 bef3cbdc 00011984 b6f1127c 60000010 00000003 18dbdd2c 7f7bfffd
      [<c02c123c>] (strnlen+0xc/0x4c) from [<c02c2d1c>] (string+0x3c/0xf8)
      [<c02c2d1c>] (string+0x3c/0xf8) from [<c02c438c>] (vsnprintf+0x1e8/0x3e8)
      [<c02c438c>] (vsnprintf+0x1e8/0x3e8) from [<c02c45a4>] (sprintf+0x18/0x24)
      [<c02c45a4>] (sprintf+0x18/0x24) from [<bf01790c>] (mwifiex_info_read+0xfc/0x3e8 [mwifiex])
      [<bf01790c>] (mwifiex_info_read+0xfc/0x3e8 [mwifiex]) from [<c0108a00>] (vfs_read+0xb0/0x144)
      [<c0108a00>] (vfs_read+0xb0/0x144) from [<c0108b60>] (SyS_read+0x44/0x70)
      [<c0108b60>] (SyS_read+0x44/0x70) from [<c0013f80>] (ret_fast_syscall+0x0/0x30)
      Code: e12fff1e e3510000 e1a02000 0a00000d (e5d03000)
      ---[ end trace ca98273dc605a04f ]---
      
      The panic is caused by the mwifiex_info_read() routine assuming that
      there can only be four modes (0-3) which is an invalid assumption.
      For example, when testing P2P, the mode is '8' (P2P_CLIENT) so the
      code accesses data beyond the bounds of the bss_modes[] array which
      causes the panic.  Fix this by updating bss_modes[] to support the
      current list of modes and adding a check to prevent the out-of-bounds
      access from occuring in the future when more modes are added.
      Signed-off-by: NMark A. Greer <mgreer@animalcreek.com>
      Acked-by: NBing Zhao <bzhao@marvell.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f873ded2
  5. 04 6月, 2013 1 次提交
  6. 30 5月, 2013 1 次提交
  7. 23 5月, 2013 17 次提交
  8. 09 5月, 2013 3 次提交
    • D
      mwifiex: fix setting of multicast filter · ccd384b1
      Daniel Drake 提交于
      A small bug in this code was causing the ALLMULTI filter to be set
      when in fact we were just wanting to program a selective multicast list
      to the hardware.
      
      Fix that bug and remove a redundant if condition in the code that
      follows.
      
      This fixes wakeup behaviour when multicast WOL is enabled. Previously,
      all multicast packets would wake up the system. Now, only those that the
      host intended to receive trigger wakeups.
      Signed-off-by: NDaniel Drake <dsd@laptop.org>
      Cc: <stable@vger.kernel.org>
      Acked-by: NBing Zhao <bzhao@marvell.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ccd384b1
    • A
      mwifiex: fix memory leak issue when driver unload · f16fdc9d
      Amitkumar Karwar 提交于
      After unregister_netdevice() call the request is queued and
      reg_state is changed to NETREG_UNREGISTERING.
      As we check for NETREG_UNREGISTERED state, free_netdev() never
      gets executed causing memory leak.
      
      Initialize "dev->destructor" to free_netdev() to free device
      data after unregistration.
      
      Cc: <stable@vger.kernel.org>
      Reported-by: NDaniel Drake <dsd@laptop.org>
      Tested-by: NDaniel Drake <dsd@laptop.org>
      Signed-off-by: NAmitkumar Karwar <akarwar@marvell.com>
      Signed-off-by: NBing Zhao <bzhao@marvell.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f16fdc9d
    • B
      mwifiex: clear is_suspended flag when interrupt is received early · 48795424
      Bing Zhao 提交于
      When the XO-4 with 8787 wireless is woken up due to wake-on-WLAN
      mwifiex is often flooded with "not allowed while suspended" messages
      and the interface is unusable.
      
      [  202.171609] int: sdio_ireg = 0x1
      [  202.180700] info: mwifiex_process_hs_config: auto cancelling host
                     sleep since there is interrupt from the firmware
      [  202.201880] event: wakeup device...
      [  202.211452] event: hs_deactivated
      [  202.514638] info: --- Rx: Data packet ---
      [  202.514753] data: 4294957544 BSS(0-0): Data <= kernel
      [  202.514825] PREP_CMD: device in suspended state
      [  202.514839] data: dequeuing the packet ec7248c0 ec4869c0
      [  202.514886] mwifiex_write_data_sync: not allowed while suspended
      [  202.514886] host_to_card, write iomem (1) failed: -1
      [  202.514917] mwifiex_write_data_sync: not allowed while suspended
      [  202.514936] host_to_card, write iomem (2) failed: -1
      [  202.514949] mwifiex_write_data_sync: not allowed while suspended
      [  202.514965] host_to_card, write iomem (3) failed: -1
      [  202.514976] mwifiex_write_data_async failed: 0xFFFFFFFF
      
      This can be readily reproduced when putting the XO-4 in a loop where
      it goes to sleep due to inactivity, but then wakes up due to an
      incoming ping. The error is hit within an hour or two.
      
      This issue happens when an interrupt comes in early while host sleep
      is still activated. Driver handles this case by auto cancelling host
      sleep. However is_suspended flag is still set which prevents any cmd
      or data from being sent to firmware. Fix it by clearing is_suspended
      flag in this path.
      
      Cc: <stable@vger.kernel.org>
      Reported-by: NDaniel Drake <dsd@laptop.org>
      Tested-by: NDaniel Drake <dsd@laptop.org>
      Signed-off-by: NBing Zhao <bzhao@marvell.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      48795424
  9. 08 5月, 2013 1 次提交
  10. 26 4月, 2013 4 次提交
  11. 24 4月, 2013 2 次提交
  12. 23 4月, 2013 3 次提交