1. 19 Jan, 2010 6 commits
    • David S. Miller's avatar
    • Mike Frysinger's avatar
      bfin_mac: use the newer CLKBUFOE bit name via asm/dpmc.h · 98f672ca
      Mike Frysinger authored
      This driver tweaks VR_CTL, so pull in the header for the bit defines.
      Also switch to the new define name as the old one has gone away.
      Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      98f672ca
    • Matthew Slattery's avatar
      sfc: QT202x: Remove unreliable MMD check at initialisation · 357d46a1
      Matthew Slattery authored
      Checking the PHY XS MMD here is unnecessary and can give false negatives.
      Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      357d46a1
    • Jiajun Wu's avatar
      ucc_geth: Fix full TX queue processing · 34692421
      Jiajun Wu authored
      commit 7583605b ("ucc_geth: Fix empty
      TX queue processing") fixed empty TX queue mishandling, but didn't
      account another corner case: when TX queue becomes full.
      
      Without this patch the driver will stop transmiting when TX queue
      becomes full since 'bd == ugeth->txBd[txQ]' actually checks for
      two things: queue empty or full.
      
      Let's better check for NULL skb, which unambiguously signals an empty
      queue.
      Signed-off-by: default avatarJiajun Wu <b06378@freescale.com>
      Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
      Cc: Stable <stable@vger.kernel.org> [2.6.32]
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      34692421
    • Anton Vorontsov's avatar
      phylib: Move workqueue initialization to a proper place · 4f9c85a1
      Anton Vorontsov authored
      commit 541cd3ee ("phylib: Fix deadlock
      on resume") caused TI DaVinci EMAC ethernet driver to oops upon resume:
      
       PM: resume of devices complete after 237.098 msecs
       Restarting tasks ... done.
       kernel BUG at kernel/workqueue.c:354!
       Unable to handle kernel NULL pointer dereference at virtual address 00000000
       [...]
       Backtrace:
       [<c002c598>] (__bug+0x0/0x2c) from [<c0052a54>] (queue_delayed_work_on+0x74/0xf8)
       [<c00529e0>] (queue_delayed_work_on+0x0/0xf8) from [<c0052b30>] (queue_delayed_work+0x2c/0x30)
      
      The oops pops up because TI DaVinci EMAC driver detaches PHY on
      suspend and attaches it back on resume. Attaching makes phylib call
      phy_start_machine() that initializes a workqueue. On the other hand,
      PHY's resume routine will call phy_start_machine() again, and that
      will cause the oops since we just destroyed the already scheduled
      workqueue.
      
      This patch fixes the issue by moving workqueue initialization to
      phy_device_create().
      
      p.s. We don't see this oops with ucc_geth and gianfar drivers because
      they perform a fine-grained suspend, i.e. they just stop the PHYs
      without detaching.
      Reported-by: default avatarSekhar Nori <nsekhar@ti.com>
      Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
      Tested-by: default avatarSekhar Nori <nsekhar@ti.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4f9c85a1
    • Neil Horman's avatar
      dccp: fix dccp rmmod when kernel configured to use slub · de4ef86c
      Neil Horman authored
      Hey all-
      	I was tinkering with dccp recently and noticed that I BUG halted the
      kernel when I rmmod-ed the dccp module.  The bug halt occured because the page
      that I passed to kfree failed the PageCompound and PageSlab test in the slub
      implementation of kfree.  I tracked the problem down to the following set of
      events:
      
      1) dccp, unlike all other uses of kmem_cache_create, allocates a string
      dynamically when registering a slab cache.  This allocated string is freed when
      the cache is destroyed.
      
      2) Normally, (1) is not an issue, but when Slub is in use, it is possible that
      caches are 'merged'.  This process causes multiple caches of simmilar
      configuration to use the same cache data structure.  When this happens, the new
      name of the cache is effectively dropped.
      
      3) (2) results in kmem_cache_name returning an ambigous value (i.e.
      ccid_kmem_cache_destroy, which uses this fuction to retrieve the name pointer
      for freeing), is no longer guaranteed that the string it assigned is what is
      returned.
      
      4) If such merge event occurs, ccid_kmem_cache_destroy frees the wrong pointer,
      which trips over the BUG in the slub implementation of kfree (since its likely
      not a slab allocation, but rather a pointer into the static string table
      section.
      
      So, what to do about this.  At first blush this is pretty clearly a leak in the
      information that slub owns, and as such a slub bug.  Unfortunately, theres no
      really good way to fix it, without exposing slub specific implementation details
      to the generic slab interface.  Also, even if we could fix this in slub cleanly,
      I think the RCU free option would force us to do lots of string duplication, not
      only in slub, but in every slab allocator.  As such, I'd like to propose this
      solution.  Basically, I just move the storage for the kmem cache name to the
      ccid_operations structure.  In so doing, we don't have to do the kstrdup or
      kfree when we allocate/free the various caches for dccp, and so we avoid the
      problem, by storing names with static memory, rather than heap, the way all
      other calls to kmem_cache_create do.
      
      I've tested this out myself here, and it solves the problem quite well.
      Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Acked-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      de4ef86c
  2. 18 Jan, 2010 6 commits
  3. 16 Jan, 2010 1 commit
  4. 15 Jan, 2010 4 commits
  5. 14 Jan, 2010 15 commits
  6. 13 Jan, 2010 1 commit
  7. 12 Jan, 2010 3 commits
  8. 11 Jan, 2010 3 commits
  9. 10 Jan, 2010 1 commit