02 Apr, 2012

1 commit


28 Mar, 2012

8 commits

  • HZ is more likely to be 1000 these days.

    timer handlers are run from softirq, no need to disable bh

    skb priority 1 is TC_PRIO_FILLER

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • David S. Miller
     
  • Pull networking fixes from David Miller:
    1) Name string overrun fix in gianfar driver from Joe Perches.

    2) VHOST bug fixes from Michael S. Tsirkin and Nadav Har'El

    3) Fix dependencies on xt_LOG netfilter module, from Pablo Neira Ayuso.

    4) Fix RCU locking in xt_CT, also from Pablo Neira Ayuso.

    5) Add a parameter to skb_add_rx_frag() so we can fix the truesize
    adjustments in the drivers that use it. The individual drivers
    aren't fixed by this commit, but will be dealt with using follow-on
    commits. From Eric Dumazet.

    6) Add some device IDs to qmi_wwan driver, from Andrew Bird.

    7) Fix a potential rcu_read_lock() imbalancein rt6_fill_node(). From
    Eric Dumazet.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    net: fix a potential rcu_read_lock() imbalance in rt6_fill_node()
    net: add a truesize parameter to skb_add_rx_frag()
    gianfar: Fix possible overrun and simplify interrupt name field creation
    USB: qmi_wwan: Add ZTE (Vodafone) K3570-Z and K3571-Z net interfaces
    USB: option: Ignore ZTE (Vodafone) K3570/71 net interfaces
    USB: qmi_wwan: Add ZTE (Vodafone) K3565-Z and K4505-Z net interfaces
    qlcnic: Bug fix for LRO
    netfilter: nf_conntrack: permanently attach timeout policy to conntrack
    netfilter: xt_CT: fix assignation of the generic protocol tracker
    netfilter: xt_CT: missing rcu_read_lock section in timeout assignment
    netfilter: cttimeout: fix dependency with l4protocol conntrack module
    netfilter: xt_LOG: use CONFIG_IP6_NF_IPTABLES instead of CONFIG_IPV6
    vhost: fix release path lockdep checks
    vhost: don't forget to schedule()
    tools/virtio: stub out strong barriers
    tools/virtio: add linux/hrtimer.h stub
    tools/virtio: add linux/module.h stub

    Linus Torvalds
     
  • Pull "ARM: device tree work" from Arnd Bergmann:
    "Most of these patches convert code from using static platform data to
    describing the hardware in the device tree. This is only the first
    half of the changes for v3.4 because a lot of patches for this topic
    came in the last week before the merge window.

    Signed-off-by: Arnd Bergmann "

    Fix up trivial conflicts in arch/arm/mach-vexpress/{Kconfig,core.h}

    * tag 'dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (86 commits)
    Document: devicetree: add OF documents for arch-mmp
    ARM: dts: append DTS file of pxa168
    ARM: mmp: append OF support on pxa168
    ARM: mmp: enable rtc clk in pxa168
    i2c: pxa: add OF support
    serial: pxa: add OF support
    arm/dts: mt_ventoux: very basic support for TeeJet Mt.Ventoux board
    ARM: OMAP2+: Remove extra ifdefs for board-generic
    ARM: OMAP2+: Fix build error when only ARCH_OMAP2/3 or 4 is selected
    ASoC: DT: Add digital microphone binding to PAZ00 board.
    ARM: dt: Add ARM PMU to tegra*.dtsi
    ARM: at91: at91sam9x5cm/dt: add leds support
    ARM: at91: usb_a9g20/dt: add gpio-keys support
    ARM: at91: at91sam9m10g45ek/dt: add gpio-keys support
    ARM: at91: at91sam9m10g45ek/dt: add leds support
    ARM: at91: usb_a9g20/dt: add leds support
    ARM: at91/pio: add new PIO3 features
    ARM: at91: add sam9_smc.o to at91sam9x5 build
    ARM: at91/tc/clocksource: Add 32 bit variant to Timer Counter
    ARM: at91/tc: add device tree support to atmel_tclib
    ...

    Linus Torvalds
     
  • Pull "ARM: driver specific updates" from Arnd Bergmann:
    "These are all specific to some driver. They are typically the
    platform side of a change in the drivers directory, such as adding a
    new driver or extending the interface to the platform. In cases where
    there is no maintainer for the driver, or the maintainer prefers to
    have the platform changes in the same branch as the driver changes,
    the patches to the drivers are included as well.

    A much smaller set of driver updates that depend on other branches
    getting merged first will be sent later.

    The new export of tegra_chip_uid conflicts with other changes in
    fuse.c. In rtc-sa1100.c, the global removal of IRQF_DISABLED
    conflicts with the cleanup of the interrupt handling of that driver.

    Signed-off-by: Arnd Bergmann "

    Fixed up aforementioned trivial conflicts.

    * tag 'drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (94 commits)
    ARM: SAMSUNG: change the name from s3c-sdhci to exynos4-sdhci
    mmc: sdhci-s3c: add platform data for the second capability
    ARM: SAMSUNG: support the second capability for samsung-soc
    ARM: EXYNOS: add support DMA for EXYNOS4X12 SoC
    ARM: EXYNOS: Add apb_pclk clkdev entry for mdma1
    ARM: EXYNOS: Enable MDMA driver
    regulator: Remove bq24022 regulator driver
    rtc: sa1100: add OF support
    pxa: magician/hx4700: Convert to gpio-regulator from bq24022
    ARM: OMAP3+: SmartReflex: fix error handling
    ARM: OMAP3+: SmartReflex: fix the use of debugfs_create_* API
    ARM: OMAP3+: SmartReflex: micro-optimization for sanity check
    ARM: OMAP3+: SmartReflex: misc cleanups
    ARM: OMAP3+: SmartReflex: move late_initcall() closer to its argument
    ARM: OMAP3+: SmartReflex: add missing platform_set_drvdata()
    ARM: OMAP3+: hwmod: add SmartReflex IRQs
    ARM: OMAP3+: SmartReflex: clear ERRCONFIG_VPBOUNDINTST only on a need
    ARM: OMAP3+: SmartReflex: Fix status masking in ERRCONFIG register
    ARM: OMAP3+: SmartReflex: Add a shutdown hook
    ARM: OMAP3+: SmartReflex Class3: disable errorgen before disable VP
    ...

    Conflicts:
    arch/arm/mach-tegra/Makefile
    arch/arm/mach-tegra/fuse.c
    drivers/rtc/rtc-sa1100.c

    Linus Torvalds
     
  • Pull "remoteproc/rpmsg: new subsystem" from Arnd Bergmann:
    "This new subsystem provides a common way to talk to secondary
    processors on an SoC, e.g. a DSP, GPU or service processor, using
    virtio as the transport. In the long run, it should replace a few
    dozen vendor specific ways to do the same thing, which all never made
    it into the upstream kernel. There is a broad agreement that rpmsg is
    the way to go here and several vendors have started working on
    replacing their own subsystems.

    Two branches each add one virtio protocol number. Fortunately the
    numbers were agreed upon in advance, so there are only context
    changes.

    Signed-off-by: Arnd Bergmann "

    Fixed up trivial protocol number conflict due to the mentioned additions
    next to each other.

    * tag 'rpmsg' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (32 commits)
    remoteproc: cleanup resource table parsing paths
    remoteproc: remove the hardcoded vring alignment
    remoteproc/omap: remove the mbox_callback limitation
    remoteproc: remove the single rpmsg vdev limitation
    remoteproc: safer boot/shutdown order
    remoteproc: remoteproc_rpmsg -> remoteproc_virtio
    remoteproc: resource table overhaul
    rpmsg: fix build warning when dma_addr_t is 64-bit
    rpmsg: fix published buffer length in rpmsg_recv_done
    rpmsg: validate incoming message length before propagating
    rpmsg: fix name service endpoint leak
    remoteproc/omap: two Kconfig fixes
    remoteproc: make sure we're parsing a 32bit firmware
    remoteproc: s/big switch/lookup table/
    remoteproc: bail out if firmware has different endianess
    remoteproc: don't use virtio's weak barriers
    rpmsg: rename virtqueue_add_buf_gfp to virtqueue_add_buf
    rpmsg: depend on EXPERIMENTAL
    remoteproc: depend on EXPERIMENTAL
    rpmsg: add Kconfig menu
    ...

    Conflicts:
    include/linux/virtio_ids.h

    Linus Torvalds
     
  • Pull "ARM: timer cleanup work" from Arnd Bergmann:
    "These are split out from the generic soc and driver updates because
    there was a lot of conflicting work by multiple people. Marc Zyngier
    worked on simplifying the "localtimer" interfaces, and some of the
    platforms are touching the same code as they move to device tree based
    booting.

    Signed-off-by: Arnd Bergmann "

    * tag 'timer' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (61 commits)
    ARM: tegra: select USB_ULPI if USB is selected
    arm/tegra: pcie: fix return value of function
    ARM: ux500: fix compilation after local timer rework
    ARM: shmobile: remove additional __io() macro use
    ARM: local timers: make the runtime registration interface mandatory
    ARM: local timers: convert MSM to runtime registration interface
    ARM: local timers: convert exynos to runtime registration interface
    ARM: smp_twd: remove old local timer interface
    ARM: imx6q: convert to twd_local_timer_register() interface
    ARM: highbank: convert to twd_local_timer_register() interface
    ARM: ux500: convert to twd_local_timer_register() interface
    ARM: shmobile: convert to twd_local_timer_register() interface
    ARM: tegra: convert to twd_local_timer_register() interface
    ARM: plat-versatile: convert to twd_local_timer_register() interface
    ARM: OMAP4: convert to twd_local_timer_register() interface
    ARM: smp_twd: add device tree support
    ARM: smp_twd: add runtime registration support
    ARM: local timers: introduce a new registration interface
    ARM: smp_twd: make local_timer_stop a symbol instead of a #define
    ARM: mach-shmobile: default to no earlytimer
    ...

    Linus Torvalds
     
  • Pull "ARM: global cleanups" from Arnd Bergmann:
    "Quite a bit of code gets removed, and some stuff moved around, mostly
    the old samsung s3c24xx stuff. There should be no functional changes
    in this series otherwise. Some cleanups have dependencies on other
    arm-soc branches and will be sent in the second round.

    Signed-off-by: Arnd Bergmann "

    Fixed up trivial conflicts mainly due to #include's being changes on
    both sides.

    * tag 'cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (121 commits)
    ep93xx: Remove unnecessary includes of ep93xx-regs.h
    ep93xx: Move EP93XX_SYSCON defines to SoC private header
    ep93xx: Move crunch code to mach-ep93xx directory
    ep93xx: Make syscon access functions private to SoC
    ep93xx: Configure GPIO ports in core code
    ep93xx: Move peripheral defines to local SoC header
    ep93xx: Convert the watchdog driver into a platform device.
    ep93xx: Use ioremap for backlight driver
    ep93xx: Move GPIO defines to gpio-ep93xx.h
    ep93xx: Don't use system controller defines in audio drivers
    ep93xx: Move PHYS_BASE defines to local SoC header file
    ARM: EXYNOS: Add clock register addresses for EXYNOS4X12 bus devfreq driver
    ARM: EXYNOS: add clock registers for exynos4x12-cpufreq
    PM / devfreq: update the name of EXYNOS clock registers that were omitted
    PM / devfreq: update the name of EXYNOS clock register
    ARM: EXYNOS: change the prefix S5P_ to EXYNOS4_ for clock
    ARM: EXYNOS: use static declaration on regarding clock
    ARM: EXYNOS: replace clock.c for other new EXYNOS SoCs
    ARM: OMAP2+: Fix build error after merge
    ARM: S3C24XX: remove call to s3c24xx_setup_clocks
    ...

    Linus Torvalds
     

27 Mar, 2012

1 commit

  • The station_info struct had demanded dBm signal values, but the
    cfg80211 wireless extensions implementation was also accepting
    "unspecified" (i.e. RSSI) unit values while the nl80211 code was
    completely unaware of them. Resolve this by formally allowing the
    "unspecified" units while making nl80211 ignore them.

    Signed-off-by: John W. Linville
    Reviewed-by: Johannes Berg

    John W. Linville
     

26 Mar, 2012

1 commit

  • skb_add_rx_frag() API is misleading.

    Network skbs built with this helper can use uncharged kernel memory and
    eventually stress/crash machine in OOM.

    Add a 'truesize' parameter and then fix drivers in followup patches.

    Signed-off-by: Eric Dumazet
    Cc: Wey-Yi Guy
    Signed-off-by: David S. Miller

    Eric Dumazet
     

25 Mar, 2012

3 commits

  • 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.

    Linus Torvalds
     
  • Pull 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 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)

    Linus Torvalds
     
  • Pull cleanup from Paul Gortmaker:
    "The changes shown here are to unify linux's BUG support under the one
    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 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
    $

    We've included 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
    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.

    Linus Torvalds
     

24 Mar, 2012

26 commits

  • …ie/regulator into next/drivers

    The pxa regulator branch removes the bq24022 driver, while a lot of
    other regulator drivers got added in the regulator tree. This
    resolves the trivial conflicts by merging in the regulator patches
    that are already merged into v3.4.

    Conflicts:
    drivers/regulator/Kconfig
    drivers/regulator/Makefile

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>

    Arnd Bergmann
     
  • 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
    ...

    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).

    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

    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
    ...

    Linus Torvalds
     
  • Russell King
     
  • 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 : (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()
    ...

    Linus Torvalds
     
  • Process accounting applications as top, ps visit some files under
    /proc/. With seq_put_decimal_ull(), we can optimize /proc//stat
    and /proc//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: KAMEZAWA Hiroyuki
    Cc: Alexey Dobriyan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    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: KAMEZAWA Hiroyuki
    Signed-off-by: Andrea Righi
    Cc: Eric Dumazet
    Cc: Glauber Costa
    Cc: Peter Zijlstra
    Cc: Ingo Molnar
    Cc: Paul Turner
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KAMEZAWA Hiroyuki
     
  • 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: Jason Baron
    Acked-by: Roland McGrath
    Cc: Chris Metcalf
    Cc: Avi Kivity
    Cc: Ralf Baechle
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Matt Turner
    Cc: "James E.J. Bottomley"
    Cc: Helge Deller
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    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//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: Jason Baron
    Acked-by: Roland McGrath
    Cc: Chris Metcalf
    Cc: Avi Kivity
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jason Baron
     
  • No functional changes. It is not sane to use UMH_KILLABLE with enum
    umh_wait, but obviously we do not want another argument in
    call_usermodehelper_* helpers. Kill this enum, use the plain int.

    Signed-off-by: Oleg Nesterov
    Cc: Tetsuo Handa
    Cc: Rusty Russell
    Cc: Tejun Heo
    Cc: David Rientjes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • Implement UMH_KILLABLE, should be used along with UMH_WAIT_EXEC/PROC.
    The caller must ensure that subprocess_info->path/etc can not go away
    until call_usermodehelper_freeinfo().

    call_usermodehelper_exec(UMH_KILLABLE) does
    wait_for_completion_killable. If it fails, it uses
    xchg(&sub_info->complete, NULL) to serialize with umh_complete() which
    does the same xhcg() to access sub_info->complete.

    If call_usermodehelper_exec wins, it can safely return. umh_complete()
    should get NULL and call call_usermodehelper_freeinfo().

    Otherwise we know that umh_complete() was already called, in this case
    call_usermodehelper_exec() falls back to wait_for_completion() which
    should succeed "very soon".

    Note: UMH_NO_WAIT == -1 but it obviously should not be used with
    UMH_KILLABLE. We delay the neccessary cleanup to simplify the back
    porting.

    Signed-off-by: Oleg Nesterov
    Cc: Tetsuo Handa
    Cc: Rusty Russell
    Cc: Tejun Heo
    Cc: David Rientjes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • PTRACE_SEIZE code is tested and ready for production use, remove the
    code which requires special bit in data argument to make PTRACE_SEIZE
    work.

    Strace team prepares for a new release of strace, and we would like to
    ship the code which uses PTRACE_SEIZE, preferably after this change goes
    into released kernel.

    Signed-off-by: Denys Vlasenko
    Acked-by: Tejun Heo
    Acked-by: Oleg Nesterov
    Cc: Pedro Alves
    Cc: Jan Kratochvil
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Denys Vlasenko
     
  • PTRACE_EVENT_foo and PTRACE_O_TRACEfoo used to match.

    New PTRACE_EVENT_STOP is the first event which has no corresponding
    PTRACE_O_TRACE option. If we will ever want to add another such option,
    its PTRACE_EVENT's value will collide with PTRACE_EVENT_STOP's value.

    This patch changes PTRACE_EVENT_STOP value to prevent this.

    While at it, added a comment - the one atop PTRACE_EVENT block, saying
    "Wait extended result codes for the above trace options", is not true
    for PTRACE_EVENT_STOP.

    Signed-off-by: Denys Vlasenko
    Cc: Tejun Heo
    Reviewed-by: Oleg Nesterov
    Cc: Pedro Alves
    Cc: Jan Kratochvil
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Denys Vlasenko
     
  • Exchange PT_TRACESYSGOOD and PT_PTRACE_CAP bit positions, which makes
    PT_option bits contiguous and therefore makes code in
    ptrace_setoptions() much simpler.

    Every PTRACE_O_TRACEevent is defined to (1 << PTRACE_EVENT_event)
    instead of using explicit numeric constants, to ensure we don't mess up
    relationship between bit positions and event ids.

    PT_EVENT_FLAG_SHIFT was not particularly useful, PT_OPT_FLAG_SHIFT with
    value of PT_EVENT_FLAG_SHIFT-1 is easier to use.

    PT_TRACE_MASK constant is nuked, the only its use is replaced by
    (PTRACE_O_MASK << PT_OPT_FLAG_SHIFT).

    Signed-off-by: Denys Vlasenko
    Acked-by: Tejun Heo
    Reviewed-by: Oleg Nesterov
    Cc: Pedro Alves
    Cc: Jan Kratochvil
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Denys Vlasenko
     
  • ptrace_event(PTRACE_EVENT_EXEC) sends SIGTRAP if PT_TRACE_EXEC is not
    set. This is because this SIGTRAP predates PTRACE_O_TRACEEXEC option,
    we do not need/want this with PT_SEIZED which can set the options during
    attach.

    Suggested-by: Pedro Alves
    Signed-off-by: Oleg Nesterov
    Cc: Chris Evans
    Cc: Indan Zupancic
    Cc: Denys Vlasenko
    Cc: Tejun Heo
    Cc: Pedro Alves
    Cc: Jan Kratochvil
    Cc: Steven Rostedt
    Cc: Frederic Weisbecker
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • Another old/known problem. If the tracee is killed after it reports
    syscall_entry, it starts the syscall and debugger can't control this.
    This confuses the users and this creates the security problems for
    ptrace jailers.

    Change tracehook_report_syscall_entry() to return non-zero if killed,
    this instructs syscall_trace_enter() to abort the syscall.

    Reported-by: Chris Evans
    Tested-by: Indan Zupancic
    Signed-off-by: Oleg Nesterov
    Cc: Denys Vlasenko
    Cc: Tejun Heo
    Cc: Pedro Alves
    Cc: Jan Kratochvil
    Cc: Steven Rostedt
    Cc: Frederic Weisbecker
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • In some cases the poll() implementation in a driver has to do different
    things depending on the events the caller wants to poll for. An example
    is when a driver needs to start a DMA engine if the caller polls for
    POLLIN, but doesn't want to do that if POLLIN is not requested but instead
    only POLLOUT or POLLPRI is requested. This is something that can happen
    in the video4linux subsystem among others.

    Unfortunately, the current epoll/poll/select implementation doesn't
    provide that information reliably. The poll_table_struct does have it: it
    has a key field with the event mask. But once a poll() call matches one
    or more bits of that mask any following poll() calls are passed a NULL
    poll_table pointer.

    Also, the eventpoll implementation always left the key field at ~0 instead
    of using the requested events mask.

    This was changed in eventpoll.c so the key field now contains the actual
    events that should be polled for as set by the caller.

    The solution to the NULL poll_table pointer is to set the qproc field to
    NULL in poll_table once poll() matches the events, not the poll_table
    pointer itself. That way drivers can obtain the mask through a new
    poll_requested_events inline.

    The poll_table_struct can still be NULL since some kernel code calls it
    internally (netfs_state_poll() in ./drivers/staging/pohmelfs/netfs.h). In
    that case poll_requested_events() returns ~0 (i.e. all events).

    Very rarely drivers might want to know whether poll_wait will actually
    wait. If another earlier file descriptor in the set already matched the
    events the caller wanted to wait for, then the kernel will return from the
    select() call without waiting. This might be useful information in order
    to avoid doing expensive work.

    A new helper function poll_does_not_wait() is added that drivers can use
    to detect this situation. This is now used in sock_poll_wait() in
    include/net/sock.h. This was the only place in the kernel that needed
    this information.

    Drivers should no longer access any of the poll_table internals, but use
    the poll_requested_events() and poll_does_not_wait() access functions
    instead. In order to enforce that the poll_table fields are now prepended
    with an underscore and a comment was added warning against using them
    directly.

    This required a change in unix_dgram_poll() in unix/af_unix.c which used
    the key field to get the requested events. It's been replaced by a call
    to poll_requested_events().

    For qproc it was especially important to change its name since the
    behavior of that field changes with this patch since this function pointer
    can now be NULL when that wasn't possible in the past.

    Any driver accessing the qproc or key fields directly will now fail to compile.

    Some notes regarding the correctness of this patch: the driver's poll()
    function is called with a 'struct poll_table_struct *wait' argument. This
    pointer may or may not be NULL, drivers can never rely on it being one or
    the other as that depends on whether or not an earlier file descriptor in
    the select()'s fdset matched the requested events.

    There are only three things a driver can do with the wait argument:

    1) obtain the key field:

    events = wait ? wait->key : ~0;

    This will still work although it should be replaced with the new
    poll_requested_events() function (which does exactly the same).
    This will now even work better, since wait is no longer set to NULL
    unnecessarily.

    2) use the qproc callback. This could be deadly since qproc can now be
    NULL. Renaming qproc should prevent this from happening. There are no
    kernel drivers that actually access this callback directly, BTW.

    3) test whether wait == NULL to determine whether poll would return without
    waiting. This is no longer sufficient as the correct test is now
    wait == NULL || wait->_qproc == NULL.

    However, the worst that can happen here is a slight performance hit in
    the case where wait != NULL and wait->_qproc == NULL. In that case the
    driver will assume that poll_wait() will actually add the fd to the set
    of waiting file descriptors. Of course, poll_wait() will not do that
    since it tests for wait->_qproc. This will not break anything, though.

    There is only one place in the whole kernel where this happens
    (sock_poll_wait() in include/net/sock.h) and that code will be replaced
    by a call to poll_does_not_wait() in the next patch.

    Note that even if wait->_qproc != NULL drivers cannot rely on poll_wait()
    actually waiting. The next file descriptor from the set might match the
    event mask and thus any possible waits will never happen.

    Signed-off-by: Hans Verkuil
    Reviewed-by: Jonathan Corbet
    Reviewed-by: Al Viro
    Cc: Davide Libenzi
    Signed-off-by: Hans de Goede
    Cc: Mauro Carvalho Chehab
    Cc: David Miller
    Cc: Eric Dumazet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hans Verkuil
     
  • Reuse the existing crc32 code to stamp out a crc32c implementation.

    Signed-off-by: Darrick J. Wong
    Cc: Herbert Xu
    Cc: Bob Pearson
    Cc: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Darrick J. Wong
     
  • It's equivalent to __printf, so prefer __scanf.

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • * add 'struct lm3530_pwm_data' in the platform data
    The pwm data is the platform specific functions which generate the pwm.
    The pwm data is only valid when brightness is pwm input mode.
    Functions should be implemented by the pwm driver.
    pwm_set_intensity() : set duty of pwm.
    pwm_get_intensity() : get current the brightness.

    * brightness control by pwm
    If the control mode is pwm, then brightness is changed by the duty of
    pwm=. So pwm platform function should be called in lm3530_brightness_set().

    * do not update brightness register when pwm input mode
    In pwm input mode, brightness register is not used.
    If any value is updated in this register, then the led will be off.

    * when input mode is changed, set duty of pwm to 0 if unnecessary.

    Signed-off-by: Milo(Woogyom) Kim
    Cc: Linus Walleij
    Cc: Richard Purdie
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kim, Milo
     
  • The lp5521 has autonomous operation mode without external control.
    Using lp5521_platform_data, various led patterns can be configurable.
    For supporting this feature, new functions and device attribute are
    added.

    Structure of lp5521_led_pattern: 3 channels are supported - red, green
    and blue. Pattern(s) of each channel and numbers of pattern(s) are
    defined in the pla= tform data. Pattern data are hexa codes which
    include pattern commands such like set pwm, wait, ramp up/down, branch
    and so on.

    Pattern mode functions:
    * lp5521_clear_program_memory
    Before running new led pattern, program memory should be cleared.
    * lp5521_write_program_memory
    Pattern data updated in the program memory via the i2c.
    * lp5521_get_pattern
    Get pattern from predefined in the platform data.
    * lp5521_run_led_pattern
    Stop current pattern or run new pattern.
    Transition time is required between different operation mode.

    Device attribute - 'led_pattern': To load specific led pattern, new device
    attribute is added.

    When the lp5521 driver is unloaded, stop current led pattern mode.

    Documentation updated : description about how to define the led patterns
    and example.

    [akpm@linux-foundation.org: checkpatch fixes]
    Signed-off-by: Milo(Woogyom) Kim
    Acked-by: Linus Walleij
    Cc: Arun MURTHY
    Cc: Srinidhi Kasagar
    Cc: Richard Purdie
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kim, Milo
     
  • The value of CONFIG register(Addr 08h) is configurable. For supporting
    this feature, update_config is added in the platform data. If
    'update_config' is not defined, the default value is 'LP5521_PWRSAVE_EN |
    LP5521_CP_MODE_AUTO | LP5521_R_TO_BATT'.

    To define CONFIG register in the platform data, the bit definitions were
    mo= ved to the header file.

    Documentation updated : description about 'update_config' and example.

    Signed-off-by: Milo(Woogyom) Kim
    Acked-by: Linus Walleij
    Cc: Arun MURTHY
    Cc: Srinidhi Kasagar
    Cc: Richard Purdie
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kim, Milo
     
  • The name of each led channel can be configurable. For the compatibility,
    the name is set to default value(xx:channelN) when 'name' is not defined.

    Signed-off-by: Milo(Woogyom) Kim
    Acked-by: Linus Walleij
    Cc: Arun MURTHY
    Cc: Srinidhi Kasagar
    Cc: Richard Purdie
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kim, Milo
     
  • Introduce for_each_clear_bit() and for_each_clear_bit_from(). They are
    similar to for_each_set_bit() and list_for_each_set_bit_from(), but they
    iterate over all the cleared bits in a memory region.

    Signed-off-by: Akinobu Mita
    Cc: Robert Richter
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: "H. Peter Anvin"
    Cc: David Woodhouse
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: Stefano Panella
    Cc: David Vrabel
    Cc: Sergei Shtylyov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita