1. 14 8月, 2012 1 次提交
    • T
      workqueue: use mod_delayed_work() instead of cancel + queue · 41f63c53
      Tejun Heo 提交于
      Convert delayed_work users doing cancel_delayed_work() followed by
      queue_delayed_work() to mod_delayed_work().
      
      Most conversions are straight-forward.  Ones worth mentioning are,
      
      * drivers/edac/edac_mc.c: edac_mc_workq_setup() converted to always
        use mod_delayed_work() and cancel loop in
        edac_mc_reset_delay_period() is dropped.
      
      * drivers/platform/x86/thinkpad_acpi.c: No need to remember whether
        watchdog is active or not.  @fan_watchdog_active and related code
        dropped.
      
      * drivers/power/charger-manager.c: Seemingly a lot of
        delayed_work_pending() abuse going on here.
        [delayed_]work_pending() are unsynchronized and racy when used like
        this.  I converted one instance in fullbatt_handler().  Please
        conver the rest so that it invokes workqueue APIs for the intended
        target state rather than trying to game work item pending state
        transitions.  e.g. if timer should be modified - call
        mod_delayed_work(), canceled - call cancel_delayed_work[_sync]().
      
      * drivers/thermal/thermal_sys.c: thermal_zone_device_set_polling()
        simplified.  Note that round_jiffies() calls in this function are
        meaningless.  round_jiffies() work on absolute jiffies not delta
        delay used by delayed_work.
      
      v2: Tomi pointed out that __cancel_delayed_work() users can't be
          safely converted to mod_delayed_work().  They could be calling it
          from irq context and if that happens while delayed_work_timer_fn()
          is running, it could deadlock.  __cancel_delayed_work() users are
          dropped.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Acked-by: NDmitry Torokhov <dmitry.torokhov@gmail.com>
      Acked-by: NAnton Vorontsov <cbouatmailru@gmail.com>
      Acked-by: NDavid Howells <dhowells@redhat.com>
      Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Jiri Kosina <jkosina@suse.cz>
      Cc: Doug Thompson <dougthompson@xmission.com>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Roland Dreier <roland@kernel.org>
      Cc: "John W. Linville" <linville@tuxdriver.com>
      Cc: Zhang Rui <rui.zhang@intel.com>
      Cc: Len Brown <len.brown@intel.com>
      Cc: "J. Bruce Fields" <bfields@fieldses.org>
      Cc: Johannes Berg <johannes@sipsolutions.net>
      41f63c53
  2. 09 6月, 2012 1 次提交
    • S
      net/wireless: ipw2100: Fix WARN_ON occurring in wiphy_register called by ipw2100_pci_init_one · aac495a8
      Stanislav Yakovlev 提交于
      The problem was found by Larry Finger:
      http://marc.info/?l=linux-wireless&m=133702401700614&w=2
      
      The problem is identical to the one for ipw2200 which is already fixed:
      http://marc.info/?l=linux-wireless&m=133457257407196&w=2
      
      [   17.766431] ------------[ cut here ]------------
      [   17.766467] WARNING: at net/wireless/core.c:562 wiphy_register+0x34c/0x3c0 [cfg80211]()
      [   17.766471] Hardware name: Latitude D600
      [   17.766474] Modules linked in: ipw2100(+) libipw pcmcia cfg80211 ppdev parport_pc yenta_socket sr_mod pcmcia_rsrc parport iTCO_wdt cdrom sg rfkill pcmcia_
      core lib80211 tg3 video button battery ac iTCO_vendor_support joydev shpchp pcspkr pciehp pci_hotplug autofs4 radeon ttm drm_kms_helper uhci_hcd ehci_hcd rtc
      _cmos thermal drm hwmon i2c_algo_bit i2c_core processor usbcore usb_common ata_generic ata_piix ahci libahci libata
      [   17.766525] Pid: 474, comm: modprobe Not tainted 3.4.0-rc7-wl+ #6
      [   17.766528] Call Trace:
      [   17.766541]  [<c066ad08>] ? printk+0x28/0x2a
      [   17.766552]  [<c0230edd>] warn_slowpath_common+0x6d/0xa0
      [   17.766563]  [<e0b253bc>] ? wiphy_register+0x34c/0x3c0 [cfg80211]
      [   17.766573]  [<e0b253bc>] ? wiphy_register+0x34c/0x3c0 [cfg80211]
      [   17.766578]  [<c0230f2d>] warn_slowpath_null+0x1d/0x20
      [   17.766588]  [<e0b253bc>] wiphy_register+0x34c/0x3c0 [cfg80211]
      [   17.766605]  [<e0b5b0d6>] ipw2100_wdev_init+0x196/0x1c0 [ipw2100]
      [   17.766616]  [<e0b5d962>] ipw2100_pci_init_one+0x2b2/0x694 [ipw2100]
      [   17.766632]  [<c047ce52>] local_pci_probe+0x42/0xb0
      [   17.766637]  [<c047e2b0>] pci_device_probe+0x60/0x90
      [   17.766645]  [<c0376de2>] ? sysfs_create_link+0x12/0x20
      [   17.766654]  [<c050f1f6>] really_probe+0x56/0x2e0
      [   17.766659]  [<c037636d>] ? create_dir+0x5d/0xa0
      [   17.766667]  [<c0518c6b>] ? pm_runtime_barrier+0x3b/0xa0
      [   17.766672]  [<c050f5e4>] driver_probe_device+0x44/0xa0
      [   17.766677]  [<c047e227>] ? pci_match_device+0x97/0xa0
      [   17.766681]  [<c050f6c9>] __driver_attach+0x89/0x90
      [   17.766686]  [<c050f640>] ? driver_probe_device+0xa0/0xa0
      [   17.766691]  [<c050da2a>] bus_for_each_dev+0x3a/0x70
      [   17.766695]  [<c050ee6c>] driver_attach+0x1c/0x30
      [   17.766699]  [<c050f640>] ? driver_probe_device+0xa0/0xa0
      [   17.766704]  [<c050ea77>] bus_add_driver+0x187/0x280
      [   17.766710]  [<c045b9cd>] ? kset_find_obj+0x2d/0x60
      [   17.766715]  [<c047e2e0>] ? pci_device_probe+0x90/0x90
      [   17.766719]  [<c047e2e0>] ? pci_device_probe+0x90/0x90
      [   17.766724]  [<c050fb85>] driver_register+0x65/0x110
      [   17.766729]  [<c047e09d>] __pci_register_driver+0x3d/0xa0
      [   17.766738]  [<e09f705c>] ipw2100_init+0x5c/0x1000 [ipw2100]
      [   17.766743]  [<c020110f>] do_one_initcall+0x2f/0x170
      [   17.766749]  [<e09f7000>] ? 0xe09f6fff
      [   17.766757]  [<c0287ce8>] sys_init_module+0xa8/0x210
      [   17.766766]  [<c067a075>] syscall_call+0x7/0xb
      [   17.766769] ---[ end trace 559898c6bb0d1c75 ]---
      [   17.767093] ipw2100: probe of 0000:02:03.0 failed with error -5
      
      This warning appears only if we apply Ben Hutchings' fix
      http://marc.info/?l=linux-wireless&m=132720204412667&w=2
      for the bug reported by Cesare Leonardi
      http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=656813
      with cfg80211 warning during device registration
      ("cfg80211: failed to add phy80211 symlink to netdev!").
      
      We separate device bring up and registration with network stack
      to avoid the problem.
      Signed-off-by: NStanislav Yakovlev <stas.yakovlev@gmail.com>
      Tested-by: NLarry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      aac495a8
  3. 09 5月, 2012 1 次提交
  4. 15 4月, 2012 1 次提交
  5. 13 4月, 2012 2 次提交
  6. 07 4月, 2012 2 次提交
  7. 09 3月, 2012 1 次提交
  8. 01 3月, 2012 1 次提交
  9. 28 2月, 2012 1 次提交
  10. 01 2月, 2012 1 次提交
  11. 18 11月, 2011 1 次提交
  12. 17 9月, 2011 1 次提交
  13. 25 8月, 2011 2 次提交
  14. 07 7月, 2011 1 次提交
  15. 31 3月, 2011 1 次提交
  16. 04 2月, 2011 1 次提交
  17. 02 2月, 2011 1 次提交
  18. 26 1月, 2011 1 次提交
  19. 18 8月, 2010 2 次提交
    • J
      drivers/net: Convert unbounded kzalloc calls to kcalloc · baeb2ffa
      Joe Perches 提交于
      These changes may be slightly safer in some instances.
      
      There are other kzalloc calls with a multiply, but those
      calls are typically "small fixed #" * sizeof(some pointer)"
      and those are not converted.
      Signed-off-by: NJoe Perches <joe@perches.com>
      Acked-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Acked-by: NLuciano Coelho <luciano.coelho@nokia.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      baeb2ffa
    • J
      ipw2100: don't sync status queue entries · c206a04f
      John W. Linville 提交于
      These are allocated with pci_alloc_consistent, so calling
      pci_dma_sync_single_for_cpu is incorrect usage of the API.  Remove this
      misuse and consequently avoid the following backtrace:
      
      WARNING: at lib/dma-debug.c:902 check_sync+0xce/0x43a()
      Hardware name: 2373HU6
      ipw2100 0000:02:02.0: DMA-API: device driver tries to sync DMA memory it has not allocated [device address=0x0000000034e88008] [size=8 bytes]
      Modules linked in: microcode ipw2100(+) snd_seq_device ppdev libipw nsc_ircc snd_pcm lib80211 video output irda parport_pc cfg80211 parport thinkpad_acpi e1000 iTCO_wdt crc_ccitt snd_timer iTCO_vendor_support snd i2c_i801 pcspkr rfkill soundcore joydev snd_page_alloc yenta_socket radeon ttm drm_kms_helper drm i2c_algo_bit i2c_core [last unloaded: scsi_wait_scan]
      Pid: 0, comm: swapper Tainted: G        W   2.6.35-wl+ #8
      Call Trace:
       [<c043aa42>] warn_slowpath_common+0x6a/0x7f
       [<c05d252a>] ? check_sync+0xce/0x43a
       [<c043aaca>] warn_slowpath_fmt+0x2b/0x2f
       [<c05d252a>] check_sync+0xce/0x43a
       [<c046189a>] ? print_lock_contention_bug+0x11/0xb2
       [<c05d2b6f>] debug_dma_sync_single_for_cpu+0x47/0x49
       [<c06cbd3c>] ? ehci_irq+0x31/0x331
       [<f82a224a>] ? ipw2100_irq_tasklet+0x24/0x5e9 [ipw2100]
       [<f82a224a>] ? ipw2100_irq_tasklet+0x24/0x5e9 [ipw2100]
       [<f82a221d>] pci_dma_sync_single_for_cpu.clone.1+0x42/0x4b [ipw2100]
       [<f82a23a2>] ipw2100_irq_tasklet+0x17c/0x5e9 [ipw2100]
       [<c043fd87>] tasklet_action+0x78/0xcb
       [<c0440293>] __do_softirq+0xc4/0x183
       [<c044038d>] do_softirq+0x3b/0x5f
       [<c04404d0>] irq_exit+0x3a/0x6d
       [<c0404423>] do_IRQ+0x8b/0x9f
       [<c04038b5>] common_interrupt+0x35/0x3c
       [<c062ecfa>] ? acpi_idle_enter_simple+0xfe/0x13c
       [<c045007b>] ? exit_itimers+0x2d/0x73
       [<c062ecfc>] ? acpi_idle_enter_simple+0x100/0x13c
       [<c070bf10>] cpuidle_idle_call+0x78/0xdc
       [<c040251c>] cpu_idle+0x9b/0xb7
       [<c07b1dd2>] rest_init+0xa6/0xab
       [<c0a4b96d>] start_kernel+0x389/0x38e
       [<c0a4b0c9>] i386_start_kernel+0xc9/0xd0
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      c206a04f
  20. 17 8月, 2010 1 次提交
  21. 12 8月, 2010 1 次提交
    • J
      ipw2100: register pm_qos request before registering pci driver · 2f81b471
      John W. Linville 提交于
      It is necessary to call pm_qos_add_request prior to calling
      pm_qos_update_request.  It was revealed that ipw2100 has been
      doing this wrong since "pm_qos: Get rid of the allocation in
      pm_qos_add_request()" (commit 82f68251)
      added a WARN that results in the following backtrace:
      
      WARNING: at kernel/pm_qos_params.c:264 pm_qos_update_request+0x5e/0x70()
      pm_qos_update_request() called for unknown object
      Call Trace:
      [<c1024088>] ? warn_slowpath_common+0x78/0xb0
      [<c1041c9e>] ? pm_qos_update_request+0x5e/0x70
      [<c1041c9e>] ? pm_qos_update_request+0x5e/0x70
      [<c1024153>] ? warn_slowpath_fmt+0x33/0x40
      [<c1041c9e>] ? pm_qos_update_request+0x5e/0x70
      [<f89fe15f>] ? ipw2100_up+0x3f/0xf10 [ipw2100]
      [<c11961c9>] ? vsnprintf+0xc9/0x530
      [<f89ff36c>] ? ipw2100_net_init+0x2c/0x1c0 [ipw2100]
      [<c12f542d>] ? register_netdevice+0x7d/0x3c0
      [<f89f9b00>] ? ipw2100_irq_tasklet+0x910/0x9a0 [ipw2100]
      [<c12f579f>] ? register_netdev+0x2f/0x40
      [<f89fd471>] ? ipw2100_pci_init_one+0xd21/0x1060 [ipw2100]
      [<c11a5ebb>] ? local_pci_probe+0xb/0x10
      [<c11a6d49>] ? pci_device_probe+0x69/0x90
      [<c1224704>] ? driver_probe_device+0x74/0x180
      [<c10dd15a>] ? sysfs_create_dir+0x6a/0xb0
      [<c1224889>] ? __driver_attach+0x79/0x80
      [<c1224810>] ? __driver_attach+0x0/0x80
      [<c1223fa2>] ? bus_for_each_dev+0x52/0x80
      [<c1224586>] ? driver_attach+0x16/0x20
      [<c1224810>] ? __driver_attach+0x0/0x80
      [<c122395f>] ? bus_add_driver+0x17f/0x250
      [<c11a5ec0>] ? pci_device_shutdown+0x0/0x20
      [<c11a6c80>] ? pci_device_remove+0x0/0x40
      [<c1224b13>] ? driver_register+0x63/0x120
      [<c11a6f96>] ? __pci_register_driver+0x36/0xa0
      [<f84f9048>] ? ipw2100_init+0x48/0x67 [ipw2100]
      [<c1001122>] ? do_one_initcall+0x32/0x170
      [<c1087078>] ? __vunmap+0xb8/0xf0
      [<f84f9000>] ? ipw2100_init+0x0/0x67 [ipw2100]
      [<c10510c1>] ? sys_init_module+0x161/0x1000
      [<c108f847>] ? sys_close+0x67/0xe0
      [<c13647c1>] ? syscall_call+0x7/0xb
      
      This patch moves pm_qos_add_request prior to pci_register_driver in
      ipw2100 in order to avoid this problem.
      Reported-by: NChristoph Fritz <chf.fritz@googlemail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      2f81b471
  22. 05 8月, 2010 1 次提交
  23. 21 7月, 2010 1 次提交
  24. 19 7月, 2010 1 次提交
  25. 04 6月, 2010 1 次提交
  26. 03 6月, 2010 1 次提交
  27. 14 5月, 2010 1 次提交
    • J
      drivers/net: Remove unnecessary returns from void function()s · a4b77097
      Joe Perches 提交于
      This patch removes from drivers/net/ all the unnecessary
      return; statements that precede the last closing brace of
      void functions.
      
      It does not remove the returns that are immediately
      preceded by a label as gcc doesn't like that.
      
      It also does not remove null void functions with return.
      
      Done via:
      $ grep -rP --include=*.[ch] -l "return;\n}" net/ | \
        xargs perl -i -e 'local $/ ; while (<>) { s/\n[ \t\n]+return;\n}/\n}/g; print; }'
      
      with some cleanups by hand.
      
      Compile tested x86 allmodconfig only.
      Signed-off-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a4b77097
  28. 11 5月, 2010 1 次提交
    • M
      PM QOS update · ed77134b
      Mark Gross 提交于
      This patch changes the string based list management to a handle base
      implementation to help with the hot path use of pm-qos, it also renames
      much of the API to use "request" as opposed to "requirement" that was
      used in the initial implementation.  I did this because request more
      accurately represents what it actually does.
      
      Also, I added a string based ABI for users wanting to use a string
      interface.  So if the user writes 0xDDDDDDDD formatted hex it will be
      accepted by the interface.  (someone asked me for it and I don't think
      it hurts anything.)
      
      This patch updates some documentation input I got from Randy.
      Signed-off-by: Nmarkgross <mgross@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      ed77134b
  29. 01 4月, 2010 1 次提交
  30. 16 3月, 2010 1 次提交
  31. 08 1月, 2010 1 次提交
  32. 05 12月, 2009 1 次提交
  33. 04 12月, 2009 1 次提交
  34. 24 11月, 2009 2 次提交
    • M
      ipw2100: Register the wiphy device · c26409a9
      Matthew Garrett 提交于
      libipw unconditionally calls wiphy_unregister, but it's up to the driver
      to register it in the first place. ipw2100 fails to do so. Add the necessary
      glue code, and also ensure that rfkill statuses get set up appropriately.
      
      (Augmented for proper wiphy_unregister placement. -- JWL)
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      c26409a9
    • J
      libipw: initiate cfg80211 API conversion (v2) · a3caa99e
      John W. Linville 提交于
      Initiate the conversion of libipw to the new cfg80211 configuration API.
      
      For now, leave CONFIG_IPW2200_PROMISCUOUS stuff alone.  Eventually
      migrate it to cfg80211 when the add/del/change_virtual_intf methods
      are implemented.
      
      (v2: Fix unconditional wiphy_unregister in libipw which was causing
           problems for ipw2100, somewhat based on prior attempted fix
           by Zhu Yi <yi.zhu@intel.com>.  Previously both original version of
           this patch and Zhu Yi's fix attempt were reverted due to
           discovery of regressions. -- JWL)
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      a3caa99e
  35. 14 11月, 2009 1 次提交