1. 22 5月, 2012 12 次提交
    • L
      vfs: be even more careful about dentry RCU name lookups · 6326c71f
      Linus Torvalds 提交于
      Miklos Szeredi points out that we need to also worry about memory
      odering when doing the dentry name comparison asynchronously with RCU.
      
      In particular, doing a rename can do a memcpy() of one dentry name over
      another, and we want to make sure that any unlocked reader will always
      see the proper terminating NUL character, so that it won't ever run off
      the allocation.
      
      Rather than having to be extra careful with the name copy or at lookup
      time for each character, this resolves the issue by making sure that all
      names that are inlined in the dentry always have a NUL character at the
      end of the name allocation.  If we do that at dentry allocation time, we
      know that no future name copy will ever change that final NUL to
      anything else, so there are no memory ordering issues.
      
      So even if a concurrent rename ends up overwriting the NUL character
      that terminates the original name, we always know that there is one
      final NUL at the end, and there is no worry about the lockless RCU
      lookup traversing the name too far.
      
      The out-of-line allocations are never copied over, so we can just make
      sure that we write the name (with terminating NULL) and do a write
      barrier before we expose the name to anything else by setting it in the
      dentry.
      Reported-by: NMiklos Szeredi <mszeredi@suse.cz>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Nick Piggin <npiggin@gmail.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6326c71f
    • L
      vfs: make AIO use the proper rw_verify_area() area helpers · a70b52ec
      Linus Torvalds 提交于
      We had for some reason overlooked the AIO interface, and it didn't use
      the proper rw_verify_area() helper function that checks (for example)
      mandatory locking on the file, and that the size of the access doesn't
      cause us to overflow the provided offset limits etc.
      
      Instead, AIO did just the security_file_permission() thing (that
      rw_verify_area() also does) directly.
      
      This fixes it to do all the proper helper functions, which not only
      means that now mandatory file locking works with AIO too, we can
      actually remove lines of code.
      Reported-by: NManish Honap <manish_honap_vit@yahoo.co.in>
      Cc: stable@vger.kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a70b52ec
    • L
      Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm · ff8ce5f6
      Linus Torvalds 提交于
      Pull core ARM updates from Russell King:
       "This is the bulk of the core ARM updates for this merge window.
        Included in here is a different way to handle the VIVT cache flushing
        on context switch, which should allow scheduler folk to remove a
        special case in their core code.
      
        We have architectured timer support here, which is a set of timers
        specified by the ARM architecture for future SoCs.  So we should see
        less variability in timer design going forward.
      
        The last big thing here is my cleanup to the way we handle PCI across
        ARM, fixing some oddities in some platforms which hadn't realised
        there was a way to deal with their private data already built in to
        our PCI backend.
      
        I've also removed support for the ARMv3 architecture; it hasn't worked
        properly for years so it seems pointless to keep it around."
      
      * 'for-linus' of git://git.linaro.org/people/rmk/linux-arm: (47 commits)
        ARM: PCI: remove per-pci_hw list of buses
        ARM: PCI: dove/kirkwood/mv78xx0: use sys->private_data
        ARM: PCI: provide a default bus scan implementation
        ARM: PCI: get rid of pci_std_swizzle()
        ARM: PCI: versatile: fix PCI interrupt setup
        ARM: PCI: integrator: use common PCI swizzle
        ARM: 7416/1: LPAE: Remove unused L_PTE_(BUFFERABLE|CACHEABLE) macros
        ARM: 7415/1: vfp: convert printk's to pr_*'s
        ARM: decompressor: avoid speculative prefetch from non-RAM areas
        ARM: Remove ARMv3 support from decompressor
        ARM: 7413/1: move read_{boot,persistent}_clock to the architecture level
        ARM: Remove support for ARMv3 ARM610 and ARM710 CPUs
        ARM: 7363/1: DEBUG_LL: limit early mapping to the minimum
        ARM: 7391/1: versatile: add some auxdata for device trees
        ARM: 7389/2: plat-versatile: modernize FPGA IRQ controller
        AMBA: get rid of last two uses of NO_IRQ
        ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails
        ARM: 7409/1: Do not call flush_cache_user_range with mmap_sem held
        ARM: 7404/1: cmpxchg64: use atomic64 and local64 routines for cmpxchg64
        ARM: 7347/1: SCU: use cpu_logical_map for per-CPU low power mode
        ...
      ff8ce5f6
    • L
      Merge branch 'clkdev' of git://git.linaro.org/people/rmk/linux-arm · 4f6ade91
      Linus Torvalds 提交于
      Pull clkdev updates from Russell King:
       "This supplements clkdev with a device-managed API, allowing drivers
        cleanup paths to be simplified.  We also optimize clk_find() so that
        it exits as soon as it finds a perfect match, and we provide a way to
        minimise the amount of code platforms need to register clkdev entries.
      
        Some of the code in arm-soc depends on these changes."
      
      * 'clkdev' of git://git.linaro.org/people/rmk/linux-arm:
        CLKDEV: provide helpers for common clock framework
        ARM: 7392/1: CLKDEV: Optimize clk_find()
        ARM: 7376/1: clkdev: Implement managed clk_get()
      4f6ade91
    • L
      Fix blocking allocations called very early during bootup · 31a67102
      Linus Torvalds 提交于
      During early boot, when the scheduler hasn't really been fully set up,
      we really can't do blocking allocations because with certain (dubious)
      configurations the "might_resched()" calls can actually result in
      scheduling events.
      
      We could just make such users always use GFP_ATOMIC, but quite often the
      code that does the allocation isn't really aware of the fact that the
      scheduler isn't up yet, and forcing that kind of random knowledge on the
      initialization code is just annoying and not good for anybody.
      
      And we actually have a the 'gfp_allowed_mask' exactly for this reason:
      it's just that the kernel init sequence happens to set it to allow
      blocking allocations much too early.
      
      So move the 'gfp_allowed_mask' initialization from 'start_kernel()'
      (which is some of the earliest init code, and runs with preemption
      disabled for good reasons) into 'kernel_init()'.  kernel_init() is run
      in the newly created thread that will become the 'init' process, as
      opposed to the early startup code that runs within the context of what
      will be the first idle thread.
      
      So by the time we reach 'kernel_init()', we know that the scheduler must
      be at least limping along, because we've already scheduled from the idle
      thread into the init thread.
      Reported-by: NSteven Rostedt <rostedt@goodmis.org>
      Cc: David Rientjes <rientjes@google.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      31a67102
    • S
      net: drop NET dependency from HAVE_BPF_JIT · e47b65b0
      Sam Ravnborg 提交于
      There is no point having the NET dependency on the select target, as it
      forces all users to depend on NET to tell they support BPF_JIT.  Move
      the config option to the bottom of the file - this could be a nice place
      also for future "selectable" config symbols.
      
      Fix up all users to drop the dependency on NET now that it is not
      required to supress warnings for non-NET builds.
      Reported-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Acked-by: NDavid Miller <davem@davemloft.net>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e47b65b0
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo/blackfin · 8e95a53b
      Linus Torvalds 提交于
      Pull blackfin changes from Bob Liu:
       "The biggest change was added an new processor(bf60x series).
      
        Bf60x series processor of blackfin can up to 1GHz with Hardware
        Support for HD Video Analytics, it use the same blackfin ISA but with
        some changes on system buses, interrupt controller and peripheral
        devices.
      
        Added dir arch/blackfin/mach-bf609/ and did some changes to the
        framework made linux working fine on the reference board bf609-ezkit
        now."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo/blackfin: (41 commits)
        blackfin: fix build after add bf60x mach/pm.h
        blackfin: twi: include linux/i2c.h
        blackfin: bf60x: add head file for crc controller
        blackfin: bf60x: twi: work around temporary anomaly 0501001
        blackfin: twi: Move TWI MMR access macro to twi head file
        blackfin: twi: Move TWI peripheral pin request array to platform data
        blackfin: bf60x: anomaly: Add a temporary anomaly 0501001
        blackfin: bf60x: Rename the DDR controller macro
        blackfin: mach-bf609: pm: cleanup bfin_deepsleep
        blackfin: bf60x: cleanup get clock code
        blackfin: bf60x: pm: Add a debug option to calculate kernel wakeup time.
        blackfin: bf60x: add wakeup source select
        blackfin: bf60x: make clock changeable in kernel menuconfig
        blackfin:mach-bf609: fix norflash for bf609-ezkit
        blackfin: mach-bf609: add can_wakeup to ethernet device
        blackfin: remove redundant CONFIG_BF60x macro
        blackfin: rotary: Add pm_wakeup flag to platform data structure.
        bfin_gpio: fix bf548-ezkit kernel fail to boot
        bfin_dma: fix initcall return error in proc_dma_init()
        Blackfin: delete fork func
        ...
      8e95a53b
    • L
      Merge tag 'for-linus' of git://linux-c6x.org/git/projects/linux-c6x-upstreaming · cd975ae0
      Linus Torvalds 提交于
      Pull c6x updates from Mark Salter:
       "Clean up some c6x Kconfig items and add support for Elf FDPIC loader."
      
      * tag 'for-linus' of git://linux-c6x.org/git/projects/linux-c6x-upstreaming:
        C6X: remove unused config items
        C6X: add support to build with BINFMT_ELF_FDPIC
        C6X: change main arch kbuild symbol
      cd975ae0
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · 881bcabb
      Linus Torvalds 提交于
      Pull m68k updates from Geert Uytterhoeven.
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: Setup CROSS_COMPILE at the top
        m68k: Correct the Atari ALLOWINT definition
        m68k/video: Create <asm/vga.h>
        m68k: Make sure {read,write}s[bwl]() are always defined
        m68k/mm: Port OOM changes to do_page_fault()
        scsi/atari: Make more functions static
        scsi/atari: Revive "atascsi=" setup option
        net/ariadne: Improve debug prints
        m68k/atari: Change VME irq numbers from unsigned long to unsigned int
        m68k/amiga: Use arch_initcall() for registering platform devices
        m68k/amiga: Add error checks when registering platform devices
        m68k/amiga: Mark z_dev_present() __init
        m68k: Remove unused MAX_NOINT_IPL definition
      881bcabb
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · e60b9a03
      Linus Torvalds 提交于
      Pull s390 updates from Martin Schwidefsky:
       "Just a random collection of bug-fixes and cleanups, nothing new in
        this merge request."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (46 commits)
        s390/ap: Fix wrong or missing comments
        s390/ap: move receive callback to message struct
        s390/dasd: re-prioritize partition detection message
        s390/qeth: reshuffle initialization
        s390/qeth: cleanup drv attr usage
        s390/claw: cleanup drv attr usage
        s390/lcs: cleanup drv attr usage
        s390/ctc: cleanup drv attr usage
        s390/ccwgroup: remove ccwgroup_create_from_string
        s390/qeth: stop using struct ccwgroup driver for discipline callbacks
        s390/qeth: switch to ccwgroup_create_dev
        s390/claw: switch to ccwgroup_create_dev
        s390/lcs: switch to ccwgroup_create_dev
        s390/ctcm: switch to ccwgroup_create_dev
        s390/ccwgroup: exploit ccwdev_by_dev_id
        s390/ccwgroup: introduce ccwgroup_create_dev
        s390: fix race on TIF_MCCK_PENDING
        s390/barrier: make use of fast-bcr facility
        s390/barrier: cleanup barrier functions
        s390/claw: remove "eieio" calls
        ...
      e60b9a03
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next · 9daeaa37
      Linus Torvalds 提交于
      Pull sparc updates from David Miller:
      
      1) Kill off support for sun4c and Cypress sun4m chips.
      
         And as a result we were able to also kill off that ugly btfixup thing
         that required multi-stage links of the final vmlinux image in the
         Kbuild system.  This should make the kbuild maintainers really happy.
      
         Thanks a lot to Sam Ravnborg for his tireless efforts to get this
         going.
      
      2) Convert sparc64 to nobootmem.  I suspect now with sparc32 being a lot
         cleaner, it should be able to fall in line and modernize in this area
         too.
      
      3) Make sparc32 use generic clockevents, from Tkhai Kirill.
      
      [ I fixed up the BPF rules, and tried to clean up the build rules too.
        But I don't have - or want - a sparc cross-build environment, so the
        BPF rule bug and the related build cleanup was all done with just a
        bare "make -n" pseudo-test.      - Linus ]
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next: (110 commits)
        sparc32: use flushi when run-time patching in per_cpu_patch
        sparc32: fix cpuid_patch run-time patching
        sparc32: drop unused inline functions in srmmu.c
        sparc32: drop unused functions in pgtsrmmu.h
        sparc32,leon: move leon mmu functions to leon_mm.c
        sparc32,leon: remove duplicate definitions in leon.h
        sparc32,leon: remove duplicate UART register definitions
        sparc32,leon: move leon ASI definitions to asi.h
        sparc32: move trap table to a separate file
        sparc64: renamed ttable.S to ttable_64.S
        sparc32: Remove asm/sysen.h header.
        sparc32: Delete asm/smpprim.h
        sparc32: Remove unused empty_bad_page{,_table} declarations.
        sparc32: Kill boot_cpu_id4
        sparc32: Move GET_PROCESSOR*_ID() out of asm/asmmacro.h
        sparc32: Remove completely unused code from asm/cache.h
        sparc32: Add ucmpdi2.o to obj-y instead of lib-y.
        sparc32: add ucmpdi2
        sparc: introduce arch/sparc/Kbuild
        sparc: remove obsolete documentation
        ...
      9daeaa37
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next · cb62ab71
      Linus Torvalds 提交于
      Pull networking changes from David Miller:
      
       1) Get rid of the error prone NLA_PUT*() macros that used an embedded
          goto.
      
       2) Kill off the token-ring and MCA networking drivers, from Paul
          Gortmaker.
      
       3) Reduce high-order allocations made by datagram AF_UNIX sockets, from
          Eric Dumazet.
      
       4) Add PTP hardware clock support to IGB and IXGBE, from Richard
          Cochran and Jacob Keller.
      
       5) Allow users to query timestamping capabilities of a card via
          ethtool, from Richard Cochran.
      
       6) Add loadbalance mode to the teaming driver, from Jiri Pirko.  Part
          of this is that we can now have BPF filters not attached to sockets,
          and the loadbalancing function is calculated using one.
      
       7) Francois Romieu went through the network drivers removing gratuitous
          uses of netdev->base_addr, perhaps some day we can remove it
          completely but it's used for ISA probing still.
      
       8) Add a BPF JIT for sparc.  I know, who cares, right? :-)
      
       9) Move networking sysctl registry away from using the compatability
          mode interfaces in the sysctl code.  From Eric W Biederman.
      
      10) Pavel Emelyanov added a way to save and restore TCP socket state via
          TCP_REPAIR, TCP_REPAIR_QUEUE, and TCP_QUEUE_SEQ socket options as
          well as a way to forcefully bind a socket to a port via the
          sk->sk_reuse value SK_FORCE_REUSE.  There is also a
          TCP_REPAIR_OPTIONS which allows to reinstante the TCP options
          enabled on the connection.
      
      11) Several enhancements from Eric Dumazet that, in particular, can
          enhance splice performance on TCP sockets significantly.
      
           a) Reset the offset of the per-socket sendmsg page when we know
              we're the only use of the page in linear_to_page().
      
           b) Add facilities such that skb->data can be backed a page rather
              than SLAB kmalloc'd memory.  In particular devices which were
              receiving into linear RX buffers can now end up providing paged
              data.
      
          The big result is that code like splice and GRO do not have to copy
          any more.
      
      12) Allow a pure sender to more gracefully handle ACK backlogs in TCP.
          What can happen at high rates is that the sender hasn't grown his
          receive buffer limits at all (he's not receiving data so really
          doesn't need to), but the non-data ACKs consume receive buffer
          space.
      
          sk_add_backlog() is too aggressive in dropping frames in this case,
          so relax it's requirements by using the receive buffer plus the send
          buffer limit as the backlog limit instead of just the former.
      
          Also from Eric Dumazet.
      
      13) Add ipv6 support to L2TP, from Benjamin LaHaise, James Chapman, and
          Chris Elston.
      
      14) Implement TCP early retransmit (RFC 5827), from Yuchung Cheng.
          Basically, we can start fast retransmit before hiting the dupack
          threshold under certain conditions.
      
      15) New CODEL active queue management packet scheduler, from Eric
          Dumazet based upon initial work by Dave Taht.
      
          Basically, the big feature is that packets are dropped (or ECN bits
          are set) based upon how long packets live in the queue, rather than
          the queue length (which is what RED uses).
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1341 commits)
        drivers/net/stmmac: seq_file fix memory leak
        ipv6/exthdrs: strict Pad1 and PadN check
        USB: qmi_wwan: Add ZTE (Vodafone) K3520-Z
        USB: qmi_wwan: Add ZTE (Vodafone) K3765-Z
        USB: qmi_wwan: Make forced int 4 whitelist generic
        net/ipv4: replace simple_strtoul with kstrtoul
        net/ipv4/ipconfig: neaten __setup placement
        net: qmi_wwan: Add Vodafone/Huawei K5005 support
        net: cdc_ether: Add ZTE WWAN matches before generic Ethernet
        ipv6: use skb coalescing in reassembly
        ipv4: use skb coalescing in defragmentation
        net: introduce skb_try_coalesce()
        net:ipv6:fixed space issues relating to operators.
        net:ipv6:fixed a trailing white space issue.
        ipv6: disable GSO on sockets hitting dst_allfrag
        tg3: use netdev_alloc_frag() API
        net: napi_frags_skb() is static
        ppp: avoid false drop_monitor false positives
        ipv6: bool/const conversions phase2
        ipx: Remove spurious NULL checking in ipx_ioctl().
        ...
      cb62ab71
  2. 21 5月, 2012 28 次提交