1. 28 3月, 2012 12 次提交
  2. 25 3月, 2012 5 次提交
    • L
      Merge tag 'stable/for-linus-3.4-tag-two' of... · e22057c8
      Linus Torvalds 提交于
      Merge tag 'stable/for-linus-3.4-tag-two' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
      
      Pull more xen updates from Konrad Rzeszutek Wilk:
       "One tiny feature that accidentally got lost in the initial git pull:
         * Add fast-EOI acking of interrupts (clear a bit instead of
           hypercall)
        And bug-fixes:
         * Fix CPU bring-up code missing a call to notify other subsystems.
         * Fix reading /sys/hypervisor even if PVonHVM drivers are not loaded.
         * In Xen ACPI processor driver: remove too verbose WARN messages, fix
           up the Kconfig dependency to be a module by default, and add
           dependency on CPU_FREQ.
         * Disable CPU frequency drivers from loading when booting under Xen
           (as we want the Xen ACPI processor to be used instead).
         * Cleanups in tmem code."
      
      * tag 'stable/for-linus-3.4-tag-two' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
        xen/acpi: Fix Kconfig dependency on CPU_FREQ
        xen: initialize platform-pci even if xen_emul_unplug=never
        xen/smp: Fix bringup bug in AP code.
        xen/acpi: Remove the WARN's as they just create noise.
        xen/tmem: cleanup
        xen: support pirq_eoi_map
        xen/acpi-processor: Do not depend on CPU frequency scaling drivers.
        xen/cpufreq: Disable the cpu frequency scaling drivers from loading.
        provide disable_cpufreq() function to disable the API.
      e22057c8
    • R
      Fix potential endless loop in kswapd when compaction is not enabled · 496b919b
      Rik van Riel 提交于
      We should only test compaction_suitable if the kernel is built with
      CONFIG_COMPACTION, otherwise the stub compaction_suitable function will
      always return COMPACT_SKIPPED and send kswapd into an infinite loop.
      Reported-by: NAnton Blanchard <anton@samba.org>
      Signed-off-by: NRik van Riel <riel@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      496b919b
    • L
      Merge tag 'device-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux · 250f6715
      Linus Torvalds 提交于
      Pull <linux/device.h> avoidance patches from Paul Gortmaker:
       "Nearly every subsystem has some kind of header with a proto like:
      
      	void foo(struct device *dev);
      
        and yet there is no reason for most of these guys to care about the
        sub fields within the device struct.  This allows us to significantly
        reduce the scope of headers including headers.  For this instance, a
        reduction of about 40% is achieved by replacing the include with the
        simple fact that the device is some kind of a struct.
      
        Unlike the much larger module.h cleanup, this one is simply two
        commits.  One to fix the implicit <linux/device.h> users, and then one
        to delete the device.h includes from the linux/include/ dir wherever
        possible."
      
      * tag 'device-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
        device.h: audit and cleanup users in main include dir
        device.h: cleanup users outside of linux/include (C files)
      250f6715
    • L
      Merge tag 'module-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux · 11bcb328
      Linus Torvalds 提交于
      Pull cleanup of fs/ and lib/ users of module.h from Paul Gortmaker:
       "Fix up files in fs/ and lib/ dirs to only use module.h if they really
        need it.
      
        These are trivial in scope vs the work done previously.  We now have
        things where any few remaining cleanups can be farmed out to arch or
        subsystem maintainers, and I have done so when possible.  What is
        remaining here represents the bits that don't clearly lie within a
        single arch/subsystem boundary, like the fs dir and the lib dir.
      
        Some duplicate includes arising from overlapping fixes from
        independent subsystem maintainer submissions are also quashed."
      
      Fix up trivial conflicts due to clashes with other include file cleanups
      (including some due to the previous bug.h cleanup pull).
      
      * tag 'module-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
        lib: reduce the use of module.h wherever possible
        fs: reduce the use of module.h wherever possible
        includecheck: delete any duplicate instances of module.h
      11bcb328
    • L
      Merge tag 'bug-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux · ed2d265d
      Linus Torvalds 提交于
      Pull <linux/bug.h> cleanup from Paul Gortmaker:
       "The changes shown here are to unify linux's BUG support under the one
        <linux/bug.h> file.  Due to historical reasons, we have some BUG code
        in bug.h and some in kernel.h -- i.e.  the support for BUILD_BUG in
        linux/kernel.h predates the addition of linux/bug.h, but old code in
        kernel.h wasn't moved to bug.h at that time.  As a band-aid, kernel.h
        was including <asm/bug.h> to pseudo link them.
      
        This has caused confusion[1] and general yuck/WTF[2] reactions.  Here
        is an example that violates the principle of least surprise:
      
            CC      lib/string.o
            lib/string.c: In function 'strlcat':
            lib/string.c:225:2: error: implicit declaration of function 'BUILD_BUG_ON'
            make[2]: *** [lib/string.o] Error 1
            $
            $ grep linux/bug.h lib/string.c
            #include <linux/bug.h>
            $
      
        We've included <linux/bug.h> for the BUG infrastructure and yet we
        still get a compile fail! [We've not kernel.h for BUILD_BUG_ON.] Ugh -
        very confusing for someone who is new to kernel development.
      
        With the above in mind, the goals of this changeset are:
      
        1) find and fix any include/*.h files that were relying on the
           implicit presence of BUG code.
        2) find and fix any C files that were consuming kernel.h and hence
           relying on implicitly getting some/all BUG code.
        3) Move the BUG related code living in kernel.h to <linux/bug.h>
        4) remove the asm/bug.h from kernel.h to finally break the chain.
      
        During development, the order was more like 3-4, build-test, 1-2.  But
        to ensure that git history for bisect doesn't get needless build
        failures introduced, the commits have been reorderd to fix the problem
        areas in advance.
      
      	[1]  https://lkml.org/lkml/2012/1/3/90
      	[2]  https://lkml.org/lkml/2012/1/17/414"
      
      Fix up conflicts (new radeon file, reiserfs header cleanups) as per Paul
      and linux-next.
      
      * tag 'bug-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
        kernel.h: doesn't explicitly use bug.h, so don't include it.
        bug: consolidate BUILD_BUG_ON with other bug code
        BUG: headers with BUG/BUG_ON etc. need linux/bug.h
        bug.h: add include of it to various implicit C users
        lib: fix implicit users of kernel.h for TAINT_WARN
        spinlock: macroize assert_spin_locked to avoid bug.h dependency
        x86: relocate get/set debugreg fcns to include/asm/debugreg.
      ed2d265d
  3. 24 3月, 2012 23 次提交
    • K
      xen/acpi: Fix Kconfig dependency on CPU_FREQ · df7a3ee2
      Konrad Rzeszutek Wilk 提交于
      The functions: "acpi_processor_*" sound like they depend on CONFIG_ACPI_PROCESSOR
      but in reality they are exposed when CONFIG_CPU_FREQ=[y|m]. As such
      update the Kconfig to have this dependency and fix compile issues:
      
      ERROR: "acpi_processor_unregister_performance" [drivers/xen/xen-acpi-processor.ko] undefined!
      ERROR: "acpi_processor_notify_smm" [drivers/xen/xen-acpi-processor.ko] undefined!
      ERROR: "acpi_processor_register_performance" [drivers/xen/xen-acpi-processor.ko] undefined!
      ERROR: "acpi_processor_preregister_performance" [drivers/xen/xen-acpi-processor.ko] undefined!
      
      Note: We still need the CONFIG_ACPI
      Reported-by: NRandy Dunlap <rdunlap@xenotime.net>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      df7a3ee2
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl · f1d38e42
      Linus Torvalds 提交于
      Pull sysctl updates from Eric Biederman:
      
       - Rewrite of sysctl for speed and clarity.
      
         Insert/remove/Lookup in sysctl are all now O(NlogN) operations, and
         are no longer bottlenecks in the process of adding and removing
         network devices.
      
         sysctl is now focused on being a filesystem instead of system call
         and the code can all be found in fs/proc/proc_sysctl.c.  Hopefully
         this means the code is now approachable.
      
         Much thanks is owed to Lucian Grinjincu for keeping at this until
         something was found that was usable.
      
       - The recent proc_sys_poll oops found by the fuzzer during hibernation
         is fixed.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl: (36 commits)
        sysctl: protect poll() in entries that may go away
        sysctl: Don't call sysctl_follow_link unless we are a link.
        sysctl: Comments to make the code clearer.
        sysctl: Correct error return from get_subdir
        sysctl: An easier to read version of find_subdir
        sysctl: fix memset parameters in setup_sysctl_set()
        sysctl: remove an unused variable
        sysctl: Add register_sysctl for normal sysctl users
        sysctl: Index sysctl directories with rbtrees.
        sysctl: Make the header lists per directory.
        sysctl: Move sysctl_check_dups into insert_header
        sysctl: Modify __register_sysctl_paths to take a set instead of a root and an nsproxy
        sysctl: Replace root_list with links between sysctl_table_sets.
        sysctl: Add sysctl_print_dir and use it in get_subdir
        sysctl: Stop requiring explicit management of sysctl directories
        sysctl: Add a root pointer to ctl_table_set
        sysctl: Rewrite proc_sys_readdir in terms of first_entry and next_entry
        sysctl: Rewrite proc_sys_lookup introducing find_entry and lookup_entry.
        sysctl: Normalize the root_table data structure.
        sysctl: Factor out insert_header and erase_header
        ...
      f1d38e42
    • L
      Merge tag 'amd64-edac-updates-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp · dae430c6
      Linus Torvalds 提交于
      Pull AMD64 EDAC fixes from Borislav Petkov:
       "A bunch of fixes/updates for the AMD side of EDAC including
      
         * MCE decoding updates
         * tree-wide EDAC sweep making pci_device_ids __devinitconst
         * Scrub rate API correction
         * two amd64_edac corrections for K8 boxes and sysfs csrow nodes"
      
      * tag 'amd64-edac-updates-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
        MCE, AMD: Constify error tables
        MCE, AMD: Correct bank 5 error signatures
        MCE, AMD: Rework NB MCE signatures
        MCE, AMD: Correct VB data error description
        MCE, AMD: Correct ucode patch buffer description
        MCE, AMD: Correct some MC0 error types
        EDAC: Make pci_device_id tables __devinitconst.
        EDAC: Correct scrub rate API
        amd64_edac: Fix K8 revD and later chip select sizes
        amd64_edac: Fix missing csrows sysfs nodes
      dae430c6
    • L
      Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq · cf821923
      Linus Torvalds 提交于
      Pull cpufreq updates for 3.4 from Dave Jones: new drivers and some fixes.
      
      * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq:
        provide disable_cpufreq() function to disable the API.
        EXYNOS5250: Add support cpufreq for EXYNOS5250
        EXYNOS4X12: Add support cpufreq for EXYNOS4X12
        [CPUFREQ] CPUfreq ondemand: update sampling rate without waiting for next sampling
        [CPUFREQ] Add S3C2416/S3C2450 cpufreq driver
        [CPUFREQ] Fix exposure of ARM_EXYNOS4210_CPUFREQ
        [CPUFREQ] EXYNOS4210: update the name of EXYNOS clock register
        [CPUFREQ] EXYNOS: Initialize locking_frequency with initial frequency
        [CPUFREQ] s3c64xx: Fix mis-cherry pick of VDDINT
      
      Fix up trivial conflicts in Kconfig and Makefile due to just changes
      next to each other (OMAP2PLUS changes vs some new EXYNOS cpufreq
      drivers).
      cf821923
    • L
      Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq · 4416b0ea
      Linus Torvalds 提交于
      Pull cpufreq fixes from Dave Jones:
       "I meant to get some of these in for 3.3 final, but left things too
        late, so I've got two trees this time."
      
      * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq:
        cpufreq: OMAP: specify range for voltage scaling
        cpufreq: OMAP: scale voltage along with frequency
        cpufreq: OMAP driver depends CPUfreq tables
      4416b0ea
    • L
      Merge branch 'pcmcia' of git://git.linaro.org/people/rmk/linux-arm · 24613ff9
      Linus Torvalds 提交于
      Pull #3 ARM updates from Russell King:
       "This adds gpio support to soc_common, allowing an amount of code to be
        deleted from each PCMCIA socket driver for the PXA/SA11x0 SoCs."
      
      * 'pcmcia' of git://git.linaro.org/people/rmk/linux-arm:
        PCMCIA: sa1111: rename sa1111 socket drivers to have sa1111_ prefix.
        PCMCIA: make lubbock socket driver part of sa1111_cs
        PCMCIA: add Kconfig control for building sa11xx_base.c
        PCMCIA: sa1111: jornada720: no need to disable IRQs around sa1111_set_io
        PCMCIA: sa1111: pass along sa1111_pcmcia_configure_socket() failure code
        PCMCIA: soc_common: remove explicit wrprot initialization in socket drivers
        PCMCIA: soc_common: remove soc_pcmcia_*_irqs functions
        PCMCIA: sa11x0: h3600: convert to use new irq/gpio management
        PCMCIA: sa11x0: simpad: convert to use new irq/gpio management
        PCMCIA: sa11x0: shannon: convert to use new irq/gpio management
        PCMCIA: sa11x0: nanoengine: convert reset handling to use GPIO subsystem
        PCMCIA: sa11x0: nanoengine: convert to use new irq/gpio management
        PCMCIA: sa11x0: cerf: convert reset handling to use GPIO subsystem
        PCMCIA: sa11x0: cerf: convert to use new irq/gpio management
        PCMCIA: sa11x0: assabet: convert to use new irq/gpio management
        PCMCIA: sa1111: use new per-socket irq/gpio infrastructure
        PCMCIA: pxa: convert PXA socket drivers to use new irq/gpio management
        PCMCIA: soc_common: add GPIO support for card status signals
        PCMCIA: soc_common: move common initialization into soc_common
      24613ff9
    • L
      Merge branch 'amba' of git://git.linaro.org/people/rmk/linux-arm · 0d19eac1
      Linus Torvalds 提交于
      Pull #2 ARM updates from Russell King:
       "Further ARM AMBA primecell updates which aren't included directly in
        the previous commit.  I wanted to keep these separate as they're
        touching stuff outside arch/arm/."
      
      * 'amba' of git://git.linaro.org/people/rmk/linux-arm:
        ARM: 7362/1: AMBA: Add module_amba_driver() helper macro for amba_driver
        ARM: 7335/1: mach-u300: do away with MMC config files
        ARM: 7280/1: mmc: mmci: Cache MMCICLOCK and MMCIPOWER register
        ARM: 7309/1: realview: fix unconnected interrupts on EB11MP
        ARM: 7230/1: mmc: mmci: Fix PIO read for small SDIO packets
        ARM: 7227/1: mmc: mmci: Prepare for SDIO before setting up DMA job
        ARM: 7223/1: mmc: mmci: Fixup use of runtime PM and use autosuspend
        ARM: 7221/1: mmc: mmci: Change from using legacy suspend
        ARM: 7219/1: mmc: mmci: Change vdd_handler to a generic ios_handler
        ARM: 7218/1: mmc: mmci: Provide option to configure bus signal direction
        ARM: 7217/1: mmc: mmci: Put power register deviations in variant data
        ARM: 7216/1: mmc: mmci: Do not release spinlock in request_end
        ARM: 7215/1: mmc: mmci: Increase max_segs from 16 to 128
      0d19eac1
    • L
      Merge branch 'for-armsoc' of git://git.linaro.org/people/rmk/linux-arm · 56c10bf8
      Linus Torvalds 提交于
      Pull #1 ARM updates from Russell King:
       "This one covers stuff which Arnd is waiting for me to push, as this is
        shared between both our trees and probably other trees elsewhere.
      
        Essentially, this contains:
         - AMBA primecell device initializer updates - mostly shrinking the
           size of the device declarations in platform code to something more
           reasonable.
         - Getting rid of the NO_IRQ crap from AMBA primecell stuff.
         - Nicolas' idle cleanups.  This in combination with the restart
           cleanups from the last merge window results in a great many
           mach/system.h files being deleted."
      
      Yay: ~80 files, ~2000 lines deleted.
      
      * 'for-armsoc' of git://git.linaro.org/people/rmk/linux-arm: (60 commits)
        ARM: remove disable_fiq and arch_ret_to_user macros
        ARM: make entry-macro.S depend on !MULTI_IRQ_HANDLER
        ARM: rpc: make default fiq handler run-time installed
        ARM: make arch_ret_to_user macro optional
        ARM: amba: samsung: use common amba device initializers
        ARM: amba: spear: use common amba device initializers
        ARM: amba: nomadik: use common amba device initializers
        ARM: amba: u300: use common amba device initializers
        ARM: amba: lpc32xx: use common amba device initializers
        ARM: amba: netx: use common amba device initializers
        ARM: amba: bcmring: use common amba device initializers
        ARM: amba: ep93xx: use common amba device initializers
        ARM: amba: omap2: use common amba device initializers
        ARM: amba: integrator: use common amba device initializers
        ARM: amba: realview: get rid of private platform amba_device initializer
        ARM: amba: versatile: get rid of private platform amba_device initializer
        ARM: amba: vexpress: get rid of private platform amba_device initializer
        ARM: amba: provide common initializers for static amba devices
        ARM: amba: make use of -1 IRQs warn
        ARM: amba: u300: get rid of NO_IRQ initializers
        ...
      56c10bf8
    • L
      Merge tag 'for-3.4' of git://openrisc.net/jonas/linux · bab2d8c6
      Linus Torvalds 提交于
      Pull OpenRISC changes for 3.4 from Jonas Bonn:
       "This series for the OpenRISC architecture consists of mostly trivial
        fixups.  The most interesting bits of the series are:
      
        * A fix to the timer code whereby the shortest trigger period is set
          to 100 cycles; previously, it was possible to set this to 1 cycle,
          but by the time the register was written, that time had already
          passed and the timer interrupt would not go off until the cycle
          counter had gone a full cycle.
      
        * Allowing a device tree binary to be passed in to the kernel from
          u-boot.  The OpenRISC architecture has been recently merged into
          upstream u-boot, so this change gets OpenRISC Linux into sync with
          that project."
      
      * tag 'for-3.4' of git://openrisc.net/jonas/linux:
        OpenRISC: Remove memory_start/end prototypes
        openrisc: remove semicolon from KSTK_ defs
        openrisc: sanitize use of orig_gpr11
        openrisc: fix virt_addr_valid
        OpenRISC: Export dump_stack()
        OpenRISC: Select GENERIC_ATOMIC64
        openrisc: Set shortest clock event to 100 ticks
        openrisc: included linux/thread_info.h twice
        OpenRISC: Use set_current_blocked() and block_sigmask()
        OpenRISC: Don't mask signals if we fail to setup signal stack
        OpenRISC: No need to reset handler if SA_ONESHOT
        OpenRISC: Don't reimplement force_sigsegv()
        openrisc: enable passing of flattened device tree pointer
        arch/openrisc/mm/init.c: trivial: use BUG_ON
      bab2d8c6
    • L
      Merge tag 'ia64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux · 0e65ae09
      Linus Torvalds 提交于
      Pull miscellaneous Itanium patches from Tony Luck.
      
      The conflicts in arch/ia64/hp/sim/simserial.c were due to patches to
      simserial that had alredy been included (with lots of further cleanups)
      in the serial tree.
      
      * tag 'ia64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:
        Documentation/kernel-parameters: remove inttest parameter
        [IA64] Fix ISA IRQ trigger model and polarity setting
        [IA64] Fix a couple of warnings for EXPORT_SYMBOL
        [IA64] Check return from device_register() in cx_device_register()
        [IA64] Fix warning from machine_kexec.c
        [IA64] simserial, bail out when request_irq fails
        [IA64] hpsim, initialize chip for assigned irqs
        [IA64] simserial, include some headers
        [IA64] hpsim, fix SAL handling in fw-emu
        [IA64] genirq fixup for SGI/SN
        [IA64] disable interrupts when exiting from ia64_mca_cmc_int_handler()
      0e65ae09
    • R
      Merge branch 'mmci' into amba · bba1594d
      Russell King 提交于
      bba1594d
    • L
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2fb9e96c
      Linus Torvalds 提交于
      Pull additional x86 fixes from Peter Anvin:
       - address a long-standing bug related to when a kernel-spawned process
         gets a signal on an i386 kernel compiled without CONFIG_VM86.
      
       - fix the newly introduced build warning in arch/x86/boot.
      
       - fix a typo in the i386 system call table which affects building some
         libcs.
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86-32: Fix endless loop when processing signals for kernel tasks
        x86, boot: Correct CFLAGS for hostprogs
        x86-32: Fix typo for mq_getsetattr in syscall table
      2fb9e96c
    • L
      Merge branch 'akpm' (Andrew's patch-bomb) · 8e3ade25
      Linus Torvalds 提交于
      Merge second batch of patches from Andrew Morton:
       - various misc things
       - core kernel changes to prctl, exit, exec, init, etc.
       - kernel/watchdog.c updates
       - get_maintainer
       - MAINTAINERS
       - the backlight driver queue
       - core bitops code cleanups
       - the led driver queue
       - some core prio_tree work
       - checkpatch udpates
       - largeish crc32 update
       - a new poll() feature for the v4l guys
       - the rtc driver queue
       - fatfs
       - ptrace
       - signals
       - kmod/usermodehelper updates
       - coredump
       - procfs updates
      
      * emailed from Andrew Morton <akpm@linux-foundation.org>: (141 commits)
        seq_file: add seq_set_overflow(), seq_overflow()
        proc-ns: use d_set_d_op() API to set dentry ops in proc_ns_instantiate().
        procfs: speed up /proc/pid/stat, statm
        procfs: add num_to_str() to speed up /proc/stat
        proc: speed up /proc/stat handling
        fs/proc/kcore.c: make get_sparsemem_vmemmap_info() static
        coredump: add VM_NODUMP, MADV_NODUMP, MADV_CLEAR_NODUMP
        coredump: remove VM_ALWAYSDUMP flag
        kmod: make __request_module() killable
        kmod: introduce call_modprobe() helper
        usermodehelper: ____call_usermodehelper() doesn't need do_exit()
        usermodehelper: kill umh_wait, renumber UMH_* constants
        usermodehelper: implement UMH_KILLABLE
        usermodehelper: introduce umh_complete(sub_info)
        usermodehelper: use UMH_WAIT_PROC consistently
        signal: zap_pid_ns_processes: s/SEND_SIG_NOINFO/SEND_SIG_FORCED/
        signal: oom_kill_task: use SEND_SIG_FORCED instead of force_sig()
        signal: cosmetic, s/from_ancestor_ns/force/ in prepare_signal() paths
        signal: give SEND_SIG_FORCED more power to beat SIGNAL_UNKILLABLE
        Hexagon: use set_current_blocked() and block_sigmask()
        ...
      8e3ade25
    • K
      seq_file: add seq_set_overflow(), seq_overflow() · e075f591
      KAMEZAWA Hiroyuki 提交于
      It is undocumented but a seq_file's overflow state is indicated by
      m->count == m->size.  Add seq_set_overflow() and seq_overflow() to
      set/check overflow status explicitly.
      
      Based on an idea from Eric Dumazet.
      
      [akpm@linux-foundation.org: tweak code comment]
      Signed-off-by: NKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e075f591
    • P
      proc-ns: use d_set_d_op() API to set dentry ops in proc_ns_instantiate(). · 1b26c9b3
      Pravin B Shelar 提交于
      The namespace cleanup path leaks a dentry which holds a reference count
      on a network namespace.  Keeping that network namespace from being freed
      when the last user goes away.  Leaving things like vlan devices in the
      leaked network namespace.
      
      If you use ip netns add for much real work this problem becomes apparent
      pretty quickly.  It light testing the problem hides because frequently
      you simply don't notice the leak.
      
      Use d_set_d_op() so that DCACHE_OP_* flags are set correctly.
      
      This issue exists back to 3.0.
      Acked-by: N"Eric W. Biederman" <ebiederm@xmission.com>
      Reported-by: NJustin Pettit <jpettit@nicira.com>
      Signed-off-by: NPravin B Shelar <pshelar@nicira.com>
      Signed-off-by: NJesse Gross <jesse@nicira.com>
      Cc: David Miller <davem@davemloft.net>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      1b26c9b3
    • K
      procfs: speed up /proc/pid/stat, statm · bda7bad6
      KAMEZAWA Hiroyuki 提交于
      Process accounting applications as top, ps visit some files under
      /proc/<pid>.  With seq_put_decimal_ull(), we can optimize /proc/<pid>/stat
      and /proc/<pid>/statm files.
      
      This patch adds
        - seq_put_decimal_ll() for signed values.
        - allow delimiter == 0.
        - convert seq_printf() to seq_put_decimal_ull/ll in /proc/stat, statm.
      
      Test result on a system with 2000+ procs.
      
      Before patch:
        [kamezawa@bluextal test]$ top -b -n 1 | wc -l
        2223
        [kamezawa@bluextal test]$ time top -b -n 1 > /dev/null
      
        real    0m0.675s
        user    0m0.044s
        sys     0m0.121s
      
        [kamezawa@bluextal test]$ time ps -elf > /dev/null
      
        real    0m0.236s
        user    0m0.056s
        sys     0m0.176s
      
      After patch:
        kamezawa@bluextal ~]$ time top -b -n 1 > /dev/null
      
        real    0m0.657s
        user    0m0.052s
        sys     0m0.100s
      
        [kamezawa@bluextal ~]$ time ps -elf > /dev/null
      
        real    0m0.198s
        user    0m0.050s
        sys     0m0.145s
      
      Considering top, ps tend to scan /proc periodically, this will reduce cpu
      consumption by top/ps to some extent.
      
      [akpm@linux-foundation.org: checkpatch fixes]
      Signed-off-by: NKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      bda7bad6
    • K
      procfs: add num_to_str() to speed up /proc/stat · 1ac101a5
      KAMEZAWA Hiroyuki 提交于
      == stat_check.py
      num = 0
      with open("/proc/stat") as f:
              while num < 1000 :
                      data = f.read()
                      f.seek(0, 0)
                      num = num + 1
      ==
      
      perf shows
      
          20.39%  stat_check.py  [kernel.kallsyms]    [k] format_decode
          13.41%  stat_check.py  [kernel.kallsyms]    [k] number
          12.61%  stat_check.py  [kernel.kallsyms]    [k] vsnprintf
          10.85%  stat_check.py  [kernel.kallsyms]    [k] memcpy
           4.85%  stat_check.py  [kernel.kallsyms]    [k] radix_tree_lookup
           4.43%  stat_check.py  [kernel.kallsyms]    [k] seq_printf
      
      This patch removes most of calls to vsnprintf() by adding num_to_str()
      and seq_print_decimal_ull(), which prints decimal numbers without rich
      functions provided by printf().
      
      On my 8cpu box.
      == Before patch ==
      [root@bluextal test]# time ./stat_check.py
      
      real    0m0.150s
      user    0m0.026s
      sys     0m0.121s
      
      == After patch ==
      [root@bluextal test]# time ./stat_check.py
      
      real    0m0.055s
      user    0m0.022s
      sys     0m0.030s
      
      [akpm@linux-foundation.org: remove incorrect comment, use less statck in num_to_str(), move comment from .h to .c, simplify seq_put_decimal_ull()]
      [andrea@betterlinux.com: avoid breaking the ABI in /proc/stat]
      Signed-off-by: NKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Signed-off-by: NAndrea Righi <andrea@betterlinux.com>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Cc: Glauber Costa <glommer@parallels.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Paul Turner <pjt@google.com>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      1ac101a5
    • E
      proc: speed up /proc/stat handling · 59a32e2c
      Eric Dumazet 提交于
      On a typical 16 cpus machine, "cat /proc/stat" gives more than 4096 bytes,
      and is slow :
      
        # strace -T -o /tmp/STRACE cat /proc/stat | wc -c
        5826
        # grep "cpu " /tmp/STRACE
        read(0, "cpu  1949310 19 2144714 12117253"..., 32768) = 5826 <0.001504>
      
      Thats partly because show_stat() must be called twice since initial
      buffer size is too small (4096 bytes for less than 32 possible cpus)
      
      Fix this by :
      
       1) Taking into account nr_irqs in the initial buffer sizing.
      
       2) Using ksize() to allow better filling of initial buffer.
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      Cc: Glauber Costa <glommer@parallels.com>
      Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>
      Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Paul Turner <pjt@google.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      59a32e2c
    • D
      fs/proc/kcore.c: make get_sparsemem_vmemmap_info() static · b908243c
      Djalal Harouni 提交于
      get_sparsemem_vmemmap_info() is only used inside fs/proc/kcore.c
      Signed-off-by: NDjalal Harouni <tixxdz@opendz.org>
      Reviewed-by: NWANG Cong <xiyou.wangcong@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b908243c
    • J
      coredump: add VM_NODUMP, MADV_NODUMP, MADV_CLEAR_NODUMP · accb61fe
      Jason Baron 提交于
      Since we no longer need the VM_ALWAYSDUMP flag, let's use the freed bit
      for 'VM_NODUMP' flag.  The idea is is to add a new madvise() flag:
      MADV_DONTDUMP, which can be set by applications to specifically request
      memory regions which should not dump core.
      
      The specific application I have in mind is qemu: we can add a flag there
      that wouldn't dump all of guest memory when qemu dumps core.  This flag
      might also be useful for security sensitive apps that want to absolutely
      make sure that parts of memory are not dumped.  To clear the flag use:
      MADV_DODUMP.
      
      [akpm@linux-foundation.org: s/MADV_NODUMP/MADV_DONTDUMP/, s/MADV_CLEAR_NODUMP/MADV_DODUMP/, per Roland]
      [akpm@linux-foundation.org: fix up the architectures which broke]
      Signed-off-by: NJason Baron <jbaron@redhat.com>
      Acked-by: NRoland McGrath <roland@hack.frob.com>
      Cc: Chris Metcalf <cmetcalf@tilera.com>
      Cc: Avi Kivity <avi@redhat.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      Cc: Matt Turner <mattst88@gmail.com>
      Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
      Cc: Helge Deller <deller@gmx.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      accb61fe
    • J
      coredump: remove VM_ALWAYSDUMP flag · 909af768
      Jason Baron 提交于
      The motivation for this patchset was that I was looking at a way for a
      qemu-kvm process, to exclude the guest memory from its core dump, which
      can be quite large.  There are already a number of filter flags in
      /proc/<pid>/coredump_filter, however, these allow one to specify 'types'
      of kernel memory, not specific address ranges (which is needed in this
      case).
      
      Since there are no more vma flags available, the first patch eliminates
      the need for the 'VM_ALWAYSDUMP' flag.  The flag is used internally by
      the kernel to mark vdso and vsyscall pages.  However, it is simple
      enough to check if a vma covers a vdso or vsyscall page without the need
      for this flag.
      
      The second patch then replaces the 'VM_ALWAYSDUMP' flag with a new
      'VM_NODUMP' flag, which can be set by userspace using new madvise flags:
      'MADV_DONTDUMP', and unset via 'MADV_DODUMP'.  The core dump filters
      continue to work the same as before unless 'MADV_DONTDUMP' is set on the
      region.
      
      The qemu code which implements this features is at:
      
        http://people.redhat.com/~jbaron/qemu-dump/qemu-dump.patch
      
      In my testing the qemu core dump shrunk from 383MB -> 13MB with this
      patch.
      
      I also believe that the 'MADV_DONTDUMP' flag might be useful for
      security sensitive apps, which might want to select which areas are
      dumped.
      
      This patch:
      
      The VM_ALWAYSDUMP flag is currently used by the coredump code to
      indicate that a vma is part of a vsyscall or vdso section.  However, we
      can determine if a vma is in one these sections by checking it against
      the gate_vma and checking for a non-NULL return value from
      arch_vma_name().  Thus, freeing a valuable vma bit.
      Signed-off-by: NJason Baron <jbaron@redhat.com>
      Acked-by: NRoland McGrath <roland@hack.frob.com>
      Cc: Chris Metcalf <cmetcalf@tilera.com>
      Cc: Avi Kivity <avi@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      909af768
    • O
      kmod: make __request_module() killable · 1cc684ab
      Oleg Nesterov 提交于
      As Tetsuo Handa pointed out, request_module() can stress the system
      while the oom-killed caller sleeps in TASK_UNINTERRUPTIBLE.
      
      The task T uses "almost all" memory, then it does something which
      triggers request_module().  Say, it can simply call sys_socket().  This
      in turn needs more memory and leads to OOM.  oom-killer correctly
      chooses T and kills it, but this can't help because it sleeps in
      TASK_UNINTERRUPTIBLE and after that oom-killer becomes "disabled" by the
      TIF_MEMDIE task T.
      
      Make __request_module() killable.  The only necessary change is that
      call_modprobe() should kmalloc argv and module_name, they can't live in
      the stack if we use UMH_KILLABLE.  This memory is freed via
      call_usermodehelper_freeinfo()->cleanup.
      Reported-by: NTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Signed-off-by: NOleg Nesterov <oleg@redhat.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      1cc684ab
    • O
      kmod: introduce call_modprobe() helper · 3e63a93b
      Oleg Nesterov 提交于
      No functional changes.  Move the call_usermodehelper code from
      __request_module() into the new simple helper, call_modprobe().
      Signed-off-by: NOleg Nesterov <oleg@redhat.com>
      Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      3e63a93b