1. 21 2月, 2017 11 次提交
    • L
      Merge branch 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 60c906ba
      Linus Torvalds 提交于
      Pull RAS updates from Ingo Molnar:
       "The main changes in this cycle were:
      
        - Assign notifier chain priorities for all RAS related handlers to
          make the ordering explicit (Borislav Petkov)
      
        - Improve the AMD MCA banks sysfs output (Yazen Ghannam)
      
        - Various cleanups and restructuring of the x86 RAS code (Borislav
          Petkov)"
      
      * 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/ras, EDAC, acpi: Assign MCE notifier handlers a priority
        x86/ras: Get rid of mce_process_work()
        EDAC/mce/amd: Dump TSC value
        EDAC/mce/amd: Unexport amd_decode_mce()
        x86/ras/amd/inj: Change dependency
        x86/ras: Flip the TSC-adding logic
        x86/ras/amd: Make sysfs names of banks more user-friendly
        x86/ras/therm_throt: Do not log a fake MCE for thermal events
        x86/ras/inject: Make it depend on X86_LOCAL_APIC=y
      60c906ba
    • L
      Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7f4eb0a6
      Linus Torvalds 提交于
      Pull perf updates from Ingo Molnar:
       "On the kernel side the main changes in this cycle were:
      
         - Add Intel Kaby Lake CPU support (Srinivas Pandruvada)
      
         - AMD uncore driver updates for fam17 (Janakarajan Natarajan)
      
         - Intel/PT updates and core events optimizations and cleanups
           (Alexander Shishkin)
      
         - cgroups events fixes (David Carrillo-Cisneros)
      
         - kprobes improvements (Masami Hiramatsu)
      
         - ... plus misc fixes and updates.
      
        On the tooling side the main changes were:
      
         - Support clang build in tools/{perf,lib/{bpf,traceevent,api}} with
           CC=clang, to, for instance, take advantage of better warnings
           (Arnaldo Carvalho de Melo):
      
         - Introduce the 'delta-abs' 'perf diff' compute method, that orders
           the histogram entries by the absolute value of the percentage delta
           for a function in two perf.data files, i.e. the functions that
           changed the most (increase or decrease in samples) comes first
           (Namhyung Kim)
      
         - Add support for parsing Intel uncore vendor event files and add
           uncore vendor events for the Intel server processors (Haswell,
           Broadwell, IvyBridge), Xeon Phi (Knights Landing) and Broadwell DE
           (Andi Kleen)
      
         - Introduce 'perf ftrace' a perf front end to the kernel's ftrace
           function and function_graph tracer, defaulting to the
           "function_graph" tracer, more work will be done in reviving this
           effort, forward porting it from its initial patch submission
           (Namhyung Kim)
      
         - Add 'e' and 'c' hotkeys to expand/collapse call chains for a single
           hist entry in the 'perf report' and 'perf top' TUI (Jiri Olsa)
      
         - Account thread wait time (off CPU time) separately: sleep, iowait
           and preempt, based on the prev_state of the last event, show the
           breakdown when using "perf sched timehist --state" (Namhyumg Kim)
      
         - Add more triggers to switch the output file (perf.data.TIMESTAMP).
      
           Now, in addition to switching to a different output file when
           receiving a SIGUSR2, one can also specify file size and time based
           triggers:
      
                 perf record -a --switch-output=signal
      
           is equivalent to what we had before:
      
                 perf record -a --switch-output
      
           While we can also ask for the file to be "sliced" by size, taking
           into account that that will happen only when we get woken up by the
           kernel, i.e. one has to take into account the --mmap-pages (the
           size of the perf mmap ring buffer):
      
                 perf record -a --switch-output=2G
      
           will break the perf.data output into multiple files limited to 2GB
           of samples, right when generating the output.
      
           For time based samples, alert() will be used, so to have 1 minute
           limited perf.data output files:
      
                perf record -a --switch-output=1m
      
           (Jiri Olsa)
      
         - Improve 'perf trace' (Arnaldo Carvalho de Melo)
      
         - 'perf kallsyms' toy tool to look for extended symbol information on
           the running kernel and demonstrate the machine/thread/symbol APIs
           for use in other tools, such as 'perf probe' (Arnaldo Carvalho de
           Melo)
      
         - ... plus tons of other changes, see the shortlog and Git log for
           details"
      
      * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (131 commits)
        perf tools: Add missing parse_events_error() prototype
        perf pmu: Fix check for unset alias->unit array
        perf tools: Be consistent on the type of map->symbols[] interator
        perf intel pt decoder: clang has no -Wno-override-init
        perf evsel: Do not put a variable sized type not at the end of a struct
        perf probe: Avoid accessing uninitialized 'map' variable
        perf tools: Do not put a variable sized type not at the end of a struct
        perf record: Do not put a variable sized type not at the end of a struct
        perf tests: Synthesize struct instead of using field after variable sized type
        perf bench numa: Make sure dprintf() is not defined
        Revert "perf bench futex: Sanitize numeric parameters"
        tools lib subcmd: Make it an error to pass a signed value to OPTION_UINTEGER
        tools: Set the maximum optimization level according to the compiler being used
        tools: Suppress request for warning options not existent in clang
        samples/bpf: Reset global variables
        samples/bpf: Ignore already processed ELF sections
        samples/bpf: Add missing header
        perf symbols: dso->name is an array, no need to check it against NULL
        perf tests record: No need to test an array against NULL
        perf symbols: No need to check if sym->name is NULL
        ...
      7f4eb0a6
    • L
      Merge branch 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 32e2d7c8
      Linus Torvalds 提交于
      Pull EFI updates from Ingo Molnar:
       "The main changes in this cycle were:
      
         - Changes to the EFI init code to establish whether secure boot
           authentication was performed at boot time. (Josh Boyer, David
           Howells)
      
         - Wire up the UEFI memory attributes table for x86. This eliminates
           any runtime memory regions that are both writable and executable,
           on recent firmware versions. (Sai Praneeth)
      
         - Move the BGRT init code to an earlier stage so that we can still
           use efi_mem_reserve(). (Dave Young)
      
         - Preserve debug symbols in the ARM/arm64 UEFI stub (Ard Biesheuvel)
      
         - Code deduplication work and various other cleanups (Lukas Wunner)
      
         - ... plus various other fixes and cleanups"
      
      * 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        efi/libstub: Make file I/O chunking x86-specific
        efi: Print the secure boot status in x86 setup_arch()
        efi: Disable secure boot if shim is in insecure mode
        efi: Get and store the secure boot status
        efi: Add SHIM and image security database GUID definitions
        arm/efi: Allow invocation of arbitrary runtime services
        x86/efi: Allow invocation of arbitrary runtime services
        efi/libstub: Preserve .debug sections after absolute relocation check
        efi/x86: Add debug code to print cooked memmap
        efi/x86: Move the EFI BGRT init code to early init code
        efi: Use typed function pointers for the runtime services table
        efi/esrt: Fix typo in pr_err() message
        x86/efi: Add support for EFI_MEMORY_ATTRIBUTES_TABLE
        efi: Introduce the EFI_MEM_ATTR bit and set it from the memory attributes table
        efi: Make EFI_MEMORY_ATTRIBUTES_TABLE initialization common across all architectures
        x86/efi: Deduplicate efi_char16_printk()
        efi: Deduplicate efi_file_size() / _read() / _close()
      32e2d7c8
    • L
      Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f7458a5d
      Linus Torvalds 提交于
      Pull RCU updates from Ingo Molnar:
       "The RCU changes in this cycle are:
      
         - Dynticks updates, consolidating open-coded counter accesses into a
           well-defined API
      
         - SRCU updates: Simplify algorithm, add formal verification
      
         - Documentation updates
      
         - Miscellaneous fixes
      
         - Torture-test updates
      
        Most of the diffstat comes from the relatively large documentation
        update"
      
      * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (42 commits)
        srcu: Reduce probability of SRCU ->unlock_count[] counter overflow
        rcutorture: Add CBMC-based formal verification for SRCU
        srcu: Force full grace-period ordering
        srcu: Implement more-efficient reader counts
        rcu: Adjust FQS offline checks for exact online-CPU detection
        rcu: Check cond_resched_rcu_qs() state less often to reduce GP overhead
        rcu: Abstract extended quiescent state determination
        rcu: Abstract dynticks extended quiescent state enter/exit operations
        rcu: Add lockdep checks to synchronous expedited primitives
        rcu: Eliminate unused expedited_normal counter
        llist: Clarify comments about when locking is needed
        rcu: Fix comment in rcu_organize_nocb_kthreads()
        rcu: Enable RCU tracepoints by default to aid in debugging
        rcu: Make rcu_cpu_starting() use its "cpu" argument
        rcu: Add comment headers to expedited-grace-period counter functions
        rcu: Don't wake rcuc/X kthreads on NOCB CPUs
        rcu: Re-enable TASKS_RCU for User Mode Linux
        rcu: Once again use NMI-based stack traces in stall warnings
        rcu: Remove short-term CPU kicking
        rcu: Add long-term CPU kicking
        ...
      f7458a5d
    • L
      Merge branch 'core-debugobjects-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 575260e3
      Linus Torvalds 提交于
      Pull debugobjects updates from Ingo Molnar:
       "A number of scalability improvements by Waimang Long"
      
      * 'core-debugobjects-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        debugobjects: Improve variable naming
        debugobjects: Reduce contention on the global pool_lock
        debugobjects: Scale thresholds with # of CPUs
        debugobjects: Track number of kmem_cache_alloc/kmem_cache_free done
      575260e3
    • L
      Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 1cd4027c
      Linus Torvalds 提交于
      Pull irq updates from Thomas Gleixner:
       "This update provides:
      
         - Yet another two irq controller chip drivers
      
         - A few updates and fixes for GICV3
      
         - A resource managed function for interrupt allocation
      
         - Fixes, updates and enhancements all over the place"
      
      * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        irqchip/qcom: Fix error handling
        genirq: Clarify logic calculating bogus irqreturn_t values
        genirq/msi: Add stubs for get_cached_msi_msg/pci_write_msi_msg
        genirq/devres: Use dev_name(dev) as default for devname
        genirq: Fix /proc/interrupts output alignment
        irqdesc: Add a resource managed version of irq_alloc_descs()
        irqchip/gic-v3-its: Zero command on allocation
        irqchip/gic-v3-its: Fix command buffer allocation
        irqchip/mips-gic: Fix local interrupts
        irqchip: Add a driver for Cortina Gemini
        irqchip: DT bindings for Cortina Gemini irqchip
        irqchip/gic-v3: Remove duplicate definition of GICD_TYPER_LPIS
        irqchip/gic-v3-its: Rename MAPVI to MAPTI
        irqchip/gic-v3-its: Drop deprecated GITS_BASER_TYPE_CPU
        irqchip/gic-v3-its: Refactor command encoding
        irqchip/gic-v3-its: Enable cacheable attribute Read-allocate hints
        irqchip/qcom: Add IRQ combiner driver
        ACPI: Add support for ResourceSource/IRQ domain mapping
        ACPI: Generic GSI: Do not attempt to map non-GSI IRQs during bus scan
        irq/platform-msi: Fix comment about maximal MSIs
      1cd4027c
    • L
      Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 20dcfe1b
      Linus Torvalds 提交于
      Pull timer updates from Thomas Gleixner:
       "Nothing exciting, just the usual pile of fixes, updates and cleanups:
      
         - A bunch of clocksource driver updates
      
         - Removal of CONFIG_TIMER_STATS and the related /proc file
      
         - More posix timer slim down work
      
         - A scalability enhancement in the tick broadcast code
      
         - Math cleanups"
      
      * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (23 commits)
        hrtimer: Catch invalid clockids again
        math64, tile: Fix build failure
        clocksource/drivers/arm_arch_timer:: Mark cyclecounter __ro_after_init
        timerfd: Protect the might cancel mechanism proper
        timer_list: Remove useless cast when printing
        time: Remove CONFIG_TIMER_STATS
        clocksource/drivers/arm_arch_timer: Work around Hisilicon erratum 161010101
        clocksource/drivers/arm_arch_timer: Introduce generic errata handling infrastructure
        clocksource/drivers/arm_arch_timer: Remove fsl-a008585 parameter
        clocksource/drivers/arm_arch_timer: Add dt binding for hisilicon-161010101 erratum
        clocksource/drivers/ostm: Add renesas-ostm timer driver
        clocksource/drivers/ostm: Document renesas-ostm timer DT bindings
        clocksource/drivers/tcb_clksrc: Use 32 bit tcb as sched_clock
        clocksource/drivers/gemini: Add driver for the Cortina Gemini
        clocksource: add DT bindings for Cortina Gemini
        clockevents: Add a clkevt-of mechanism like clksrc-of
        tick/broadcast: Reduce lock cacheline contention
        timers: Omit POSIX timer stuff from task_struct when disabled
        x86/timer: Make delay() work during early bootup
        delay: Add explanation of udelay() inaccuracy
        ...
      20dcfe1b
    • L
      Merge tag 'for-v4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply · c9b9f207
      Linus Torvalds 提交于
      Pull power supply and reset updates from Sebastian Reichel:
       "New drivers:
         - sbs-charger driver
         - max14656_charger_detector
         - axp20x_ac_power
      
        New chip/feature support"
         - axp20x_usb_power: add AXP223 support
         - tps65217: add usb charger support
         - qcom_smbb: support otg regulator
         - at91-reset: add samx7 support
      
        Dropped drivers:
         - intel_mid_battery (platform was dropped)
      
        Fixes:
         - at91-poweroff: avoid wearing off LPDDR memory
         - replace deprecated extcon API
         - lots of cleanup and style fixes
         - misc minor functionality fixes"
      
      * tag 'for-v4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (84 commits)
        power: supply: add AC power supply driver for AXP20X and AXP22X PMICs
        dt-bindings: power: supply: add AXP20X/AXP22X AC power supply
        power: supply: axp20x_usb_power: use IIO channels when available
        power: supply: max14656: Export I2C and OF device ID as module aliases
        power: supply: bq2415x: check for NULL acpi_id to avoid null pointer dereference
        power: supply: bq24190_charger: Adjust formatting
        power: supply: bq24190_charger: Handle fault before status on interrupt
        power: supply: bq24190_charger: Don't read fault register outside irq_handle_thread()
        power: supply: bq24190_charger: Call power_supply_changed() for relevant component
        power: supply: bq24190_charger: Install irq_handler_thread() at end of probe()
        power: supply: bq24190_charger: Call set_mode_host() on pm_resume()
        power: supply: bq24190_charger: Fix irq trigger to IRQF_TRIGGER_FALLING
        power: supply: qcom_smbb: add regulator dependency
        power: reset: at91-reset: remove leftover platform_device_id
        power: reset: at91-reset: add samx7 support
        power: supply: max14656: fix platform_no_drv_owner.cocci warnings
        power: supply: pcf50633-charger: Compress return logic into one line.
        power: supply: ab8500_btemp: Compress return logic into one line.
        power: reset: at91-poweroff: timely shutdown LPDDR memories
        ARM: at91: define LPDDR types
        ...
      c9b9f207
    • L
      Merge tag 'edac_for_4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp · 345fb0a9
      Linus Torvalds 提交于
      Pull EDAC updates from Borislav Petkov:
      
       - Make amd64_edac still load on a machine with unpopulated nodes +
         cleanups (Yazen Ghannam)
      
       - Expose per-DIMM error counts in sysfs (Aaron Miller)
      
       - Add T2080 l2-cache support to mpc85xx (Chris Packham)
      
       - Random other small improvements/cleanups/fixlets
      
      * tag 'edac_for_4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
        EDAC, mce_amd: Print IPID and Syndrome on a separate line
        EDAC, amd64: Bump driver version
        MAINTAINERS, EDAC: Update email for Thor Thayer
        EDAC, fsl_ddr: Make locally used symbols static
        EDAC, mpc85xx: Add T2080 l2-cache support
        EDAC, amd64: Add x86cpuid sanity check during init
        EDAC, amd64: Don't treat ECC disabled as failure
        EDAC: Add routine to check if MC devices list is empty
        EDAC, amd64: Remove unused printing macros
        EDAC, amd64: Rework messages in ecc_enabled()
        EDAC, amd64: Move global code out of instance functions
        EDAC, amd64: Free unused memory when init_one_instance() fails
        EDAC, mce_amd: Give more context to deferred error message
        EDAC, i7300: Test for the second channel properly
        EDAC, sb_edac: Get rid of ->show_interleave_mode()
        EDAC: Expose per-DIMM error counts in sysfs
        EDAC, amd64: Save and return err code from probe_one_instance()
        EDAC, i82975x: Add ioremap_nocache() error handling
        EDAC: Fix typos in enum mem_type comments
        EDAC: Make dev_attr_sdram_scrub_rate static
      345fb0a9
    • L
      Merge tag 'hwmon-for-linus-v4.11' of... · 507b5007
      Linus Torvalds 提交于
      Merge tag 'hwmon-for-linus-v4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon updates from Guenter Roeck:
      
       - new driver for stts751
      
       - it87: Added support for IT8622E and IT8792E; improved support for
         other chips
      
       - lm70: Added support for TMP122/124
      
       - use permission-specific DEVICE_ATTR variants where possible
      
       - fixed overflows in various drivers
      
       - minor improvements in various drivers
      
      * tag 'hwmon-for-linus-v4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: (95 commits)
        hwmon: (sht15) Add device tree support
        devicetree: add lm90 thermal_zone sensor support
        hwmon: (it87) Add support for IT8792E
        hwmon: (it87) Do not overwrite bit 2..6 of pwm control registers
        hwmon: (it87) Fix pwm4 detection for IT8620 and IT8628
        hwmon: (it87) Ensure that pwm control cache is current before updating values
        hwmon: (it87) Improve IT8622 support
        hwmon: (it87) Add support for IT8622E
        hwmon: (it87) Add feature flag indicating that VIN3 is connected to 5V
        DT: add binding documentation for STTS751
        hwmon: new driver for ST stts751 thermal sensor
        hwmon: Register thermal zone only if 'dev' parameter was provided
        hwmon: Relax name attribute validation for new APIs
        hwmon: Update documentation to clarify rules for the 'name' attribute
        hwmon: Make name attribute mandatory for new APIs
        hwmon: (lm70) Add support for TI TMP122/124
        hwmon: (lm70) Utilize dev_warn instead of pr_warn
        hwmon: (ltc4151) Export OF device ID table as module aliases
        hwmon: (adc128d818) Preserve operation mode
        hwmon: (adc128d818) Support operation modes 1-3
        ...
      507b5007
    • L
      Merge tag 'for-linus-20170212' of git://git.infradead.org/linux-mtd · ce1bf979
      Linus Torvalds 提交于
      Pull MTD updates from Brian Norris:
       "MTD updates for 4.11:
      
        General:
         - new kernel API for retrieving max bad blocks per die (not used yet)
         - track (and expose via sysfs) a partition's device tree node
         - support a "label" device tree property for naming an MTD
      
        NAND:
         - sunxi: avoid busy-waiting for NAND events
         - ifc: fix ECC handling on IFC v1.0
         - OX820: add explicit dependency on ARCH_OXNAS in Kconfig
         - core: add a new manufacture ID and fix a kernel-doc warning
         - fsmc: kill pdata support
         - lpc32xx_slc: remove unneeded NULL check
         - support dynamic "max bad blocks" detection via ONFI
      
        SPI NOR:
         - add support for the 4-byte address instruction set
         - add support for new memory parts
         - add support to S3AN memories
         - add support to the Intel SPI controller
         - add support to the Aspeed AST2400 and AST2550 controllers
         - support max SPI message sizes in m25p80_read()
         - fixes for the Candence and Freescale QSPI drivers
      
        Other:
         - add support for Gemini flash probing
         - bcm47xxsflash: add support for reading outside memory-mapped window
         - bcm47xxparts: extend to support multiple TRX partitions
         - misc fixes and typos
      
        Extra note: we've pulled in an MFD subtree from Lee Jones as a
        dependency for a new Intel SPI NOR driver"
      
      [ Kudos to Brian for sending pull request a week early:
      
         "I refuse to acknowledge the existence of 4.10-rc8 and am therefore
          sending our MTD changes for 4.11 now"
      
        which is all good ]
      
      * tag 'for-linus-20170212' of git://git.infradead.org/linux-mtd: (52 commits)
        mtd: aspeed: remove redundant dev_err call in aspeed_smc_probe()
        dt-bindings: mtd: add a common label property to all mtd devices
        mtd: name the mtd device with an optional label property
        mtd: physmap_of: fixup gemini/versatile dependencies
        mtd: spi-nor: cqspi: remove redundant dead code on error return check
        Documentation: mtk-quadspi: update DT bindings
        mtd: fsl-quadspi: Rename SEQID_QUAD_READ to SEQID_READ
        mtd:fsl-quadspi:use the property fields of SPI-NOR
        mtd: spi-nor: Add support for gd25q16
        mtd: spi-nor: Fix S3AN addressing calculation
        mtd: aspeed: fix compile warning in aspeed_smc_read_from_ahb()
        mtd: spi-nor: add dt support for Everspin MRAMs
        mtd: spi-nor: Add lock/unlock support for f25l32pa
        mtd: spi-nor: add a stateless method to support memory size above 128Mib
        mtd: spi-nor: rename SPINOR_OP_* macros of the 4-byte address op codes
        mtd: m25p80: consider max message size in m25p80_read
        mtd: spi-nor: bindings for the Aspeed memory controllers
        mtd: aspeed: add memory controllers for the Aspeed AST2400 SoC
        mtd: spi-nor: add memory controllers for the Aspeed AST2500 SoC
        mtd: spi-nor: remove WARN_ONCE() message in spi_nor_write()
        ...
      ce1bf979
  2. 20 2月, 2017 3 次提交
    • L
      Linux 4.10 · c470abd4
      Linus Torvalds 提交于
      c470abd4
    • A
      Fix missing sanity check in /dev/sg · 137d01df
      Al Viro 提交于
      What happens is that a write to /dev/sg is given a request with non-zero
      ->iovec_count combined with zero ->dxfer_len.  Or with ->dxferp pointing
      to an array full of empty iovecs.
      
      Having write permission to /dev/sg shouldn't be equivalent to the
      ability to trigger BUG_ON() while holding spinlocks...
      
      Found by Dmitry Vyukov and syzkaller.
      
      [ The BUG_ON() got changed to a WARN_ON_ONCE(), but this fixes the
        underlying issue.  - Linus ]
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      Reported-by: NDmitry Vyukov <dvyukov@google.com>
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Cc: stable@vger.kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      137d01df
    • J
      scsi: don't BUG_ON() empty DMA transfers · fd3fc0b4
      Johannes Thumshirn 提交于
      Don't crash the machine just because of an empty transfer. Use WARN_ON()
      combined with returning an error.
      
      Found by Dmitry Vyukov and syzkaller.
      
      [ Changed to "WARN_ON_ONCE()". Al has a patch that should fix the root
        cause, but a BUG_ON() is not acceptable in any case, and a WARN_ON()
        might still be a cause of excessive log spamming.
      
        NOTE! If this warning ever triggers, we may end up leaking resources,
        since this doesn't bother to try to clean the command up. So this
        WARN_ON_ONCE() triggering does imply real problems. But BUG_ON() is
        much worse.
      
        People really need to stop using BUG_ON() for "this shouldn't ever
        happen". It makes pretty much any bug worse.     - Linus ]
      Signed-off-by: NJohannes Thumshirn <jthumshirn@suse.de>
      Reported-by: NDmitry Vyukov <dvyukov@google.com>
      Cc: James Bottomley <jejb@linux.vnet.ibm.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: stable@kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      fd3fc0b4
  3. 19 2月, 2017 10 次提交
  4. 18 2月, 2017 13 次提交
    • M
      hrtimer: Catch invalid clockids again · 336a9cde
      Marc Zyngier 提交于
      commit 82e88ff1 ("hrtimer: Revert CLOCK_MONOTONIC_RAW support") removed
      unfortunately a sanity check in the hrtimer code which was part of that
      MONOTONIC_RAW patch series.
      
      It would have caught the bogus usage of CLOCK_MONOTONIC_RAW in the wireless
      code. So bring it back.
      
      It is way too easy to take any random clockid and feed it to the hrtimer
      subsystem. At best, it gets mapped to a monotonic base, but it would be
      better to just catch illegal values as early as possible.
          
      Detect invalid clockids, map them to CLOCK_MONOTONIC and emit a warning.
      
      [ tglx: Replaced the BUG by a WARN and gracefully map to CLOCK_MONOTONIC ]
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      Cc: Tomasz Nowicki <tn@semihalf.com>
      Cc: Christoffer Dall <christoffer.dall@linaro.org>
      Link: http://lkml.kernel.org/r/1452879670-16133-3-git-send-email-marc.zyngier@arm.comSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      336a9cde
    • D
      irda: Fix lockdep annotations in hashbin_delete(). · 4c03b862
      David S. Miller 提交于
      A nested lock depth was added to the hasbin_delete() code but it
      doesn't actually work some well and results in tons of lockdep splats.
      
      Fix the code instead to properly drop the lock around the operation
      and just keep peeking the head of the hashbin queue.
      Reported-by: NDmitry Vyukov <dvyukov@google.com>
      Tested-by: NDmitry Vyukov <dvyukov@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4c03b862
    • L
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · 6dc39c50
      Linus Torvalds 提交于
      Pull block layer fix from Jens Axboe:
       "A single fix for a lockdep splat reported by Thomas and Gabriel"
      
      * 'for-linus' of git://git.kernel.dk/linux-block:
        cfq-iosched: don't call wbt_disable_default() with IRQs disabled
      6dc39c50
    • P
      vxlan: fix oops in dev_fill_metadata_dst · 22f0708a
      Paolo Abeni 提交于
      Since the commit 0c1d70af ("net: use dst_cache for vxlan device")
      vxlan_fill_metadata_dst() calls vxlan_get_route() passing a NULL
      dst_cache pointer, so the latter should explicitly check for
      valid dst_cache ptr. Unfortunately the commit d71785ff ("net: add
      dst_cache to ovs vxlan lwtunnel") removed said check.
      
      As a result is possible to trigger a null pointer access calling
      vxlan_fill_metadata_dst(), e.g. with:
      
      ovs-vsctl add-br ovs-br0
      ovs-vsctl add-port ovs-br0 vxlan0 -- set interface vxlan0 \
      	type=vxlan options:remote_ip=192.168.1.1 \
      	options:key=1234 options:dst_port=4789 ofport_request=10
      ip address add dev ovs-br0 172.16.1.2/24
      ovs-vsctl set Bridge ovs-br0 ipfix=@i -- --id=@i create IPFIX \
      	targets=\"172.16.1.1:1234\" sampling=1
      iperf -c 172.16.1.1 -u -l 1000 -b 10M -t 1 -p 1234
      
      This commit addresses the issue passing to vxlan_get_route() the
      dst_cache already available into the lwt info processed by
      vxlan_fill_metadata_dst().
      
      Fixes: d71785ff ("net: add dst_cache to ovs vxlan lwtunnel")
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      Acked-by: NJiri Benc <jbenc@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      22f0708a
    • A
      dccp: fix freeing skb too early for IPV6_RECVPKTINFO · 5edabca9
      Andrey Konovalov 提交于
      In the current DCCP implementation an skb for a DCCP_PKT_REQUEST packet
      is forcibly freed via __kfree_skb in dccp_rcv_state_process if
      dccp_v6_conn_request successfully returns.
      
      However, if IPV6_RECVPKTINFO is set on a socket, the address of the skb
      is saved to ireq->pktopts and the ref count for skb is incremented in
      dccp_v6_conn_request, so skb is still in use. Nevertheless, it gets freed
      in dccp_rcv_state_process.
      
      Fix by calling consume_skb instead of doing goto discard and therefore
      calling __kfree_skb.
      
      Similar fixes for TCP:
      
      fb7e2399 [TCP]: skb is unexpectedly freed.
      0aea76d3 tcp: SYN packets are now
      simply consumed
      Signed-off-by: NAndrey Konovalov <andreyknvl@google.com>
      Acked-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5edabca9
    • L
      Merge tag 'powerpc-4.10-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 2fe1e8a7
      Linus Torvalds 提交于
      Pull powerpc fix from Michael Ellerman:
       "One fix from Paul: we can not use the radix MMU under a hypervisor for
        now.
      
        Although the code checked if the processor supports radix, that is not
        sufficient"
      
      * tag 'powerpc-4.10-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/64: Disable use of radix under a hypervisor
      2fe1e8a7
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · a0d5ef45
      Linus Torvalds 提交于
      Pull input fix from Dmitry Torokhov:
       "Just a single change to Elan touchpad driver to recognize a new ACPI
        ID"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
        Input: elan_i2c - add ELAN0605 to the ACPI table
      a0d5ef45
    • L
      Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · 444a034d
      Linus Torvalds 提交于
      Pull i2c fix from Wolfram Sang:
       "I2C has a revert to fix a regression"
      
      * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        Revert "i2c: designware: detect when dynamic tar update is possible"
      444a034d
    • L
      Merge tag 'mmc-v4.10-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · 6adfd6ac
      Linus Torvalds 提交于
      Pull MMC fix from Ulf Hansson:
       "Fix multi-bit bus width without high-speed mode for MMC"
      
      * tag 'mmc-v4.10-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
        mmc: core: fix multi-bit bus width without high-speed mode
      6adfd6ac
    • L
      Merge tag 'ntb-4.10-bugfixes' of git://github.com/jonmason/ntb · 7ed1b125
      Linus Torvalds 提交于
      Pull NTB bugfixes frfom Jon Mason:
       "NTB bug fixes to address a crash when unloading the ntb module, a DMA
        engine unmap leak, allowing the proper queue choice, and clearing the
        SKX irq bit"
      
      * tag 'ntb-4.10-bugfixes' of git://github.com/jonmason/ntb:
        ntb: ntb_hw_intel: link_poll isn't clearing the pending status properly
        ntb_transport: Pick an unused queue
        ntb: ntb_perf missing dmaengine_unmap_put
        NTB: ntb_transport: fix debugfs_remove_recursive
      7ed1b125
    • D
      dpaa_eth: small leak on error · 785f3577
      Dan Carpenter 提交于
      This should be >= instead of > here.  It means that we don't increment
      the free count enough so it becomes off by one.
      
      Fixes: 9ad1a374 ("dpaa_eth: add support for DPAA Ethernet")
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      785f3577
    • A
      Merge tag 'reset-for-4.10-fixes' of https://git.pengutronix.de/git/pza/linux into fixes · 6fe1bfc4
      Arnd Bergmann 提交于
      Pull "Reset controller fixes for v4.10" from Philipp Zabel:
      
      - Remove erroneous negation of the error check of the reset function
        to decrement trigger_count in the error case, not on success. This
        fixes shared resets to actually only trigger once, as intended.
      
      * tag 'reset-for-4.10-fixes' of https://git.pengutronix.de/git/pza/linux:
        reset: fix shared reset triggered_count decrement on error
      6fe1bfc4
    • A
      packet: Do not call fanout_release from atomic contexts · 2bd624b4
      Anoob Soman 提交于
      Commit 66644982 ("packet: call fanout_release, while UNREGISTERING a
      netdev"), unfortunately, introduced the following issues.
      
      1. calling mutex_lock(&fanout_mutex) (fanout_release()) from inside
      rcu_read-side critical section. rcu_read_lock disables preemption, most often,
      which prohibits calling sleeping functions.
      
      [  ] include/linux/rcupdate.h:560 Illegal context switch in RCU read-side critical section!
      [  ]
      [  ] rcu_scheduler_active = 1, debug_locks = 0
      [  ] 4 locks held by ovs-vswitchd/1969:
      [  ]  #0:  (cb_lock){++++++}, at: [<ffffffff8158a6c9>] genl_rcv+0x19/0x40
      [  ]  #1:  (ovs_mutex){+.+.+.}, at: [<ffffffffa04878ca>] ovs_vport_cmd_del+0x4a/0x100 [openvswitch]
      [  ]  #2:  (rtnl_mutex){+.+.+.}, at: [<ffffffff81564157>] rtnl_lock+0x17/0x20
      [  ]  #3:  (rcu_read_lock){......}, at: [<ffffffff81614165>] packet_notifier+0x5/0x3f0
      [  ]
      [  ] Call Trace:
      [  ]  [<ffffffff813770c1>] dump_stack+0x85/0xc4
      [  ]  [<ffffffff810c9077>] lockdep_rcu_suspicious+0x107/0x110
      [  ]  [<ffffffff810a2da7>] ___might_sleep+0x57/0x210
      [  ]  [<ffffffff810a2fd0>] __might_sleep+0x70/0x90
      [  ]  [<ffffffff8162e80c>] mutex_lock_nested+0x3c/0x3a0
      [  ]  [<ffffffff810de93f>] ? vprintk_default+0x1f/0x30
      [  ]  [<ffffffff81186e88>] ? printk+0x4d/0x4f
      [  ]  [<ffffffff816106dd>] fanout_release+0x1d/0xe0
      [  ]  [<ffffffff81614459>] packet_notifier+0x2f9/0x3f0
      
      2. calling mutex_lock(&fanout_mutex) inside spin_lock(&po->bind_lock).
      "sleeping function called from invalid context"
      
      [  ] BUG: sleeping function called from invalid context at kernel/locking/mutex.c:620
      [  ] in_atomic(): 1, irqs_disabled(): 0, pid: 1969, name: ovs-vswitchd
      [  ] INFO: lockdep is turned off.
      [  ] Call Trace:
      [  ]  [<ffffffff813770c1>] dump_stack+0x85/0xc4
      [  ]  [<ffffffff810a2f52>] ___might_sleep+0x202/0x210
      [  ]  [<ffffffff810a2fd0>] __might_sleep+0x70/0x90
      [  ]  [<ffffffff8162e80c>] mutex_lock_nested+0x3c/0x3a0
      [  ]  [<ffffffff816106dd>] fanout_release+0x1d/0xe0
      [  ]  [<ffffffff81614459>] packet_notifier+0x2f9/0x3f0
      
      3. calling dev_remove_pack(&fanout->prot_hook), from inside
      spin_lock(&po->bind_lock) or rcu_read-side critical-section. dev_remove_pack()
      -> synchronize_net(), which might sleep.
      
      [  ] BUG: scheduling while atomic: ovs-vswitchd/1969/0x00000002
      [  ] INFO: lockdep is turned off.
      [  ] Call Trace:
      [  ]  [<ffffffff813770c1>] dump_stack+0x85/0xc4
      [  ]  [<ffffffff81186274>] __schedule_bug+0x64/0x73
      [  ]  [<ffffffff8162b8cb>] __schedule+0x6b/0xd10
      [  ]  [<ffffffff8162c5db>] schedule+0x6b/0x80
      [  ]  [<ffffffff81630b1d>] schedule_timeout+0x38d/0x410
      [  ]  [<ffffffff810ea3fd>] synchronize_sched_expedited+0x53d/0x810
      [  ]  [<ffffffff810ea6de>] synchronize_rcu_expedited+0xe/0x10
      [  ]  [<ffffffff8154eab5>] synchronize_net+0x35/0x50
      [  ]  [<ffffffff8154eae3>] dev_remove_pack+0x13/0x20
      [  ]  [<ffffffff8161077e>] fanout_release+0xbe/0xe0
      [  ]  [<ffffffff81614459>] packet_notifier+0x2f9/0x3f0
      
      4. fanout_release() races with calls from different CPU.
      
      To fix the above problems, remove the call to fanout_release() under
      rcu_read_lock(). Instead, call __dev_remove_pack(&fanout->prot_hook) and
      netdev_run_todo will be happy that &dev->ptype_specific list is empty. In order
      to achieve this, I moved dev_{add,remove}_pack() out of fanout_{add,release} to
      __fanout_{link,unlink}. So, call to {,__}unregister_prot_hook() will make sure
      fanout->prot_hook is removed as well.
      
      Fixes: 66644982 ("packet: call fanout_release, while UNREGISTERING a netdev")
      Reported-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NAnoob Soman <anoob.soman@citrix.com>
      Acked-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2bd624b4
  5. 17 2月, 2017 3 次提交