1. 15 5月, 2008 3 次提交
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 · 6aa5fc43
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (73 commits)
        net: Fix typo in net/core/sock.c.
        ppp: Do not free not yet unregistered net device.
        netfilter: xt_iprange: module aliases for xt_iprange
        netfilter: ctnetlink: dump conntrack ID in event messages
        irda: Fix a misalign access issue. (v2)
        sctp: Fix use of uninitialized pointer
        cipso: Relax too much careful cipso hash function.
        tcp FRTO: work-around inorder receivers
        tcp FRTO: Fix fallback to conventional recovery
        New maintainer for Intel ethernet adapters
        DM9000: Use delayed work to update MII PHY state
        DM9000: Update and fix driver debugging messages
        DM9000: Add __devinit and __devexit attributes to probe and remove
        sky2: fix simple define thinko
        [netdrvr] sfc: sfc: Add self-test support
        [netdrvr] sfc: Increment rx_reset when reported as driver event
        [netdrvr] sfc: Remove unused macro EFX_XAUI_RETRAIN_MAX
        [netdrvr] sfc: Fix code formatting
        [netdrvr] sfc: Remove kernel-doc comments for removed members of struct efx_nic
        [netdrvr] sfc: Remove garbage from comment
        ...
      6aa5fc43
    • N
      fix SMP data race in pagetable setup vs walking · 362a61ad
      Nick Piggin 提交于
      There is a possible data race in the page table walking code. After the split
      ptlock patches, it actually seems to have been introduced to the core code, but
      even before that I think it would have impacted some architectures (powerpc
      and sparc64, at least, walk the page tables without taking locks eg. see
      find_linux_pte()).
      
      The race is as follows:
      The pte page is allocated, zeroed, and its struct page gets its spinlock
      initialized. The mm-wide ptl is then taken, and then the pte page is inserted
      into the pagetables.
      
      At this point, the spinlock is not guaranteed to have ordered the previous
      stores to initialize the pte page with the subsequent store to put it in the
      page tables. So another Linux page table walker might be walking down (without
      any locks, because we have split-leaf-ptls), and find that new pte we've
      inserted. It might try to take the spinlock before the store from the other
      CPU initializes it. And subsequently it might read a pte_t out before stores
      from the other CPU have cleared the memory.
      
      There are also similar races in higher levels of the page tables. They
      obviously don't involve the spinlock, but could see uninitialized memory.
      
      Arch code and hardware pagetable walkers that walk the pagetables without
      locks could see similar uninitialized memory problems, regardless of whether
      split ptes are enabled or not.
      
      I prefer to put the barriers in core code, because that's where the higher
      level logic happens, but the page table accessors are per-arch, and open-coding
      them everywhere I don't think is an option. I'll put the read-side barriers
      in alpha arch code for now (other architectures perform data-dependent loads
      in order).
      Signed-off-by: NNick Piggin <npiggin@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      362a61ad
    • N
      read_barrier_depends arch fixlets · 73f10281
      Nick Piggin 提交于
      read_barrie_depends has always been a noop (not a compiler barrier) on all
      architectures except SMP alpha. This brings UP alpha and frv into line with all
      other architectures, and fixes incorrect documentation.
      Signed-off-by: NNick Piggin <npiggin@suse.de>
      Acked-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      73f10281
  2. 14 5月, 2008 25 次提交
  3. 13 5月, 2008 12 次提交