1. 08 Jan, 2019 1 commit
    • Sudeep Holla's avatar
      cpufreq: check if policy is inactive early in __cpufreq_get() · 2f661962
      Sudeep Holla authored
      cpuinfo_cur_freq gets current CPU frequency as detected by hardware
      while scaling_cur_freq last known CPU frequency. Some platforms may not
      allow checking the CPU frequency of an offline CPU or the associated
      resources may have been released via cpufreq_exit when the CPU gets
      offlined, in which case the policy would have been invalidated already.
      If we attempt to get current frequency from the hardware, it may result
      in hang or crash.
      
      For example on Juno, I see:
      
      Unable to handle kernel NULL pointer dereference at virtual address 0000000000000188
      [0000000000000188] pgd=0000000000000000
      Internal error: Oops: 96000004 [#1] PREEMPT SMP
      Modules linked in:
      CPU: 5 PID: 4202 Comm: cat Not tainted 4.20.0-08251-ga0f2c0318a15-dirty #87
      Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
      pstate: 40000005 (nZcv daif -PAN -UAO)
      pc : scmi_cpufreq_get_rate+0x34/0xb0
      lr : scmi_cpufreq_get_rate+0x34/0xb0
      Call trace:
       scmi_cpufreq_get_rate+0x34/0xb0
       __cpufreq_get+0x34/0xc0
       show_cpuinfo_cur_freq+0x24/0x78
       show+0x40/0x60
       sysfs_kf_seq_show+0xc0/0x148
       kernfs_seq_show+0x44/0x50
       seq_read+0xd4/0x480
       kernfs_fop_read+0x15c/0x208
       __vfs_read+0x60/0x188
       vfs_read+0x94/0x150
       ksys_read+0x6c/0xd8
       __arm64_sys_read+0x24/0x30
       el0_svc_common+0x78/0x100
       el0_svc_handler+0x38/0x78
       el0_svc+0x8/0xc
      ---[ end trace 3d1024e58f77f6b2 ]---
      
      So fix the issue by checking if the policy is invalid early in
      __cpufreq_get before attempting to get the current frequency.
      Signed-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      2f661962
  2. 04 Jan, 2019 1 commit
    • Viresh Kumar's avatar
      cpufreq: scpi/scmi: Fix freeing of dynamic OPPs · 1690d8bb
      Viresh Kumar authored
      Since the commit 2a4eb735 "OPP: Don't remove dynamic OPPs from
      _dev_pm_opp_remove_table()", dynamically created OPP aren't
      automatically removed anymore by dev_pm_opp_cpumask_remove_table(). This
      affects the scpi and scmi cpufreq drivers which no longer free OPPs on
      failures or on invocations of the policy->exit() callback.
      
      Create a generic OPP helper dev_pm_opp_remove_all_dynamic() which can be
      called from these drivers instead of dev_pm_opp_cpumask_remove_table().
      
      In dev_pm_opp_remove_all_dynamic(), we need to make sure that the
      opp_list isn't getting accessed simultaneously from other parts of the
      OPP core while the helper is freeing dynamic OPPs, i.e. we can't drop
      the opp_table->lock while traversing through the OPP list. And to
      accomplish that, this patch also creates _opp_kref_release_unlocked()
      which can be called from this new helper with the opp_table lock already
      held.
      
      Cc: 4.20 <stable@vger.kernel.org> # v4.20
      Reported-by: default avatarValentin Schneider <valentin.schneider@arm.com>
      Fixes: 2a4eb735 "OPP: Don't remove dynamic OPPs from _dev_pm_opp_remove_table()"
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Tested-by: default avatarValentin Schneider <valentin.schneider@arm.com>
      Reviewed-by: default avatarSudeep Holla <sudeep.holla@arm.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      1690d8bb
  3. 03 Jan, 2019 1 commit
  4. 25 Dec, 2018 9 commits
    • Linus Torvalds's avatar
      Merge tag 'pm-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 1e2af254
      Linus Torvalds authored
      Pull power management updates from Rafael Wysocki:
       "These add sysadmin documentation for cpuidle, extend the cpuidle
        subsystem somewhat, improve the handling of performance states in the
        generic power domains (genpd) and operating performance points (OPP)
        frameworks, add a new cpufreq driver for Qualcomm SoCs, update some
        other cpufreq drivers, switch over the runtime PM framework to using
        high-res timers for device autosuspend, fix a problem with
        suspend-to-idle on ACPI-based platforms, add system-wide suspend and
        resume handling to the devfreq framework, do some janitorial cleanups
        all over and update some utilities.
      
        Specifics:
      
         - Add sysadmin documentation for cpuidle (Rafael Wysocki).
      
         - Make it possible to specify a cpuidle governor from kernel command
           line, add new cpuidle state sysfs attributes for governor
           evaluation, and improve the "polling" idle state handling (Rafael
           Wysocki).
      
         - Fix the handling of the "required-opps" DT property in the
           operating performance points (OPP) framework, improve the
           integration of it with the generic power domains (genpd) framework,
           improve the handling of performance states in them and clean up the
           idle states vs performance states separation in genpd (Viresh
           Kumar, Ulf Hansson).
      
         - Add a cpufreq driver called "qcom-hw" for Qualcomm SoCs using a
           hardware engine to control CPU frequency transitions along with DT
           bindings for it (Taniya Das).
      
         - Fix an intel_pstate driver issue related to CPU offline and update
           the documentation of it (Srinivas Pandruvada).
      
         - Clean up the imx6q cpufreq driver (Anson Huang).
      
         - Add SPDX license IDs to cpufreq schedutil governor files (Daniel
           Lezcano).
      
         - Switch over the runtime PM framework to using high-res timers for
           device autosuspend to allow the control of it to be more precise
           (Vincent Guittot).
      
         - Disable non-wakeup ACPI GPEs during suspend-to-idle so that they
           don't prevent the system from reaching the target low-power state
           and simplify the suspend-to-idle handling on ACPI platforms without
           full Low-Power S0 Idle (LPS0) support (Rafael Wysocki).
      
         - Add system-wide suspend and resume support to the devfreq framework
           (Lukasz Luba).
      
         - Clean up the SmartReflex adaptive voltage scaling (AVS) driver and
           add an SPDX license ID to it (Nishanth Menon, Uwe Kleine-König,
           Thomas Meyer).
      
         - Get rid of code duplication by using the DEFINE_SHOW_ATTRIBUTE
           macro in some places, fix some DT node refcount leaks, and do some
           other janitorial cleanups (Yangtao Li).
      
         - Update the cpupower, intel_pstate_tracer and turbosat utilities
           (Abhishek Goel, Doug Smythies, Len Brown)"
      
      * tag 'pm-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (54 commits)
        PM / Domains: remove define_genpd_open_function() and define_genpd_debugfs_fops()
        PM-runtime: Switch autosuspend over to using hrtimers
        cpufreq: qcom-hw: Add support for QCOM cpufreq HW driver
        dt-bindings: cpufreq: Introduce QCOM cpufreq firmware bindings
        ACPI: PM: Loop in full LPS0 mode only
        ACPI: EC / PM: Disable non-wakeup GPEs for suspend-to-idle
        tools/power/x86/intel_pstate_tracer: Fix non root execution for post processing a trace file
        tools/power turbostat: consolidate duplicate model numbers
        tools/power turbostat: fix goldmont C-state limit decoding
        PM / Domains: Propagate performance state updates
        PM / Domains: Factorize dev_pm_genpd_set_performance_state()
        PM / Domains: Save OPP table pointer in genpd
        OPP: Don't return 0 on error from of_get_required_opp_performance_state()
        OPP: Add dev_pm_opp_xlate_performance_state() helper
        OPP: Improve _find_table_of_opp_np()
        PM / Domains: Make genpd performance states orthogonal to the idlestates
        PM / sleep: convert to DEFINE_SHOW_ATTRIBUTE
        cpuidle: Add 'above' and 'below' idle state metrics
        PM / AVS: SmartReflex: Switch to SPDX Licence ID
        PM / AVS: SmartReflex: NULL check before some freeing functions is not needed
        ...
      1e2af254
    • Linus Torvalds's avatar
      Merge tag 'edac_for_4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp · b271b212
      Linus Torvalds authored
      Pull EDAC updates from Borislav Petkov:
      
       - Support for ZynqMP DDR controller support to synopsys_edac along with
         a driver cleanup and generalization for the addition of support for
         the new IP. (Manish Narani)
      
       - Removal of the /sys/bus/edac devices hierarchy. This enabled us to
         get rid of the silly memory controllers maximum number notion. (Tony
         Luck and Borislav Petkov)
      
       - skx_edac improvements and fixes. (Qiuxu Zhuo and Tony Luck)
      
       - The usual garden variety of small cleanups and fixes.
      
      * tag 'edac_for_4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp: (25 commits)
        EDAC, fsl_ddr: Add LS1021A to the list of supported hardware
        EDAC, i5000: Remove set but not used local variables
        MAINTAINERS, EDAC: Drop bouncing email
        EDAC, i82975x: Fix spelling mistake "reserverd" -> "reserved"
        EDAC, fsl: Move error injection under CONFIG_EDAC_DEBUG
        EDAC, skx: Let EDAC core show the decoded result for debugfs
        EDAC, skx: Move debugfs node under EDAC's hierarchy
        EDAC, skx: Prepend hex formatting with '0x'
        EDAC, skx: Fix function calling order in skx_exit()
        EDAC: Drop per-memory controller buses
        EDAC: Don't add devices under /sys/bus/edac
        EDAC: Fix indentation issues in several EDAC drivers
        EDAC, skx: Fix randconfig builds in a better way
        EDAC, i82975x: Remove set but not used variable dtype
        EDAC, qcom_edac: Remove irq_handled local variable
        EDAC, synopsys: Add Error Injection support for ZynqMP DDR controller
        EDAC, synopsys: Add ECC support for ZynqMP DDR controller
        EDAC, synopsys: Add macro defines for ZynqMP DDRC
        dt: bindings: Document ZynqMP DDRC in Synopsys documentation
        EDAC, synopsys: Add error handling for the of_device_get_match_data() result
        ...
      b271b212
    • Linus Torvalds's avatar
      Merge tag 'sound-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 8e61e7b5
      Linus Torvalds authored
      Pull sound updates from Takashi Iwai:
       "There are no intensive changes in both ALSA and ASoC core parts while
        rather most of changes are a bunch of driver fixes and updates. A
        large diff pattern appears in ASoC TI part which now merges both OMAP
        and DaVinci stuff, but the rest spreads allover the places.
      
        Note that this pull request includes also some updates for LED trigger
        and platform drivers for mute LEDs, appearing in the diffstat as well.
      
        Some highlights:
      
        ASoC:
         - Preparatory work for merging the audio-graph and audio-graph-scu
           cards
         - A merge of TI OMAP and DaVinci directories, as both product lines
           get merged together. Also including a few architecture changes as
           well.
         - Major cleanups of the Maxim MAX9867 driver
         - Small fixes for tablets & co with Intel BYT/CHT chips
         - Lots of rsnd updates as usual
         - Support for Asahi Kaesi AKM4118, AMD ACP3x, Intel platforms with
           RT5660, Meson AXG S/PDIF inputs, several Qualcomm IPs and Xilinx
           I2S controllers
      
        HD-audio:
         - Introduce audio-mute LED trigger for replacing the former hackish
           dynamic binding
         - Huawei WMI hotkey and mute LED support
         - Refactoring of PM code and display power controls
         - Headset button support in the generic jack code
         - A few updates for Tegra
         - Fixups for HP EliteBook and ASUS UX391UA
         - Lots of updates for Intel ASoC HD-audio, including the improved DSP
           detection and the fallback binding from ASoC SST to legacy HD-audio
           controller drivers
      
        Others:
         - Updates for FireWire TASCAM and Fireface devices, some other fixes
         - A few potential Spectre v1 fixes that are all trivial"
      
      * tag 'sound-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (280 commits)
        ALSA: HD-Audio: SKL+: force HDaudio legacy or SKL+ driver selection
        ALSA: HD-Audio: SKL+: abort probe if DSP is present and Skylake driver selected
        ALSA: HDA: export process_unsol_events()
        ALSA: hda/realtek: Enable audio jacks of ASUS UX391UA with ALC294
        ALSA: bebob: fix model-id of unit for Apogee Ensemble
        ALSA: emu10k1: Fix potential Spectre v1 vulnerabilities
        ALSA: rme9652: Fix potential Spectre v1 vulnerability
        ASoC: ti: Kconfig: Remove the deprecated options
        ARM: davinci_all_defconfig: Update the audio options
        ARM: omap1_defconfig: Do not select ASoC by default
        ARM: omap2plus_defconfig: Update the audio options
        ARM: davinci: dm365-evm: Update for the new ASoC Kcofnig options
        ARM: OMAP2: Update for new MCBSP Kconfig option
        ARM: OMAP1: Makefile: Update for new MCBSP Kconfig option
        MAINTAINERS: Add entry for sound/soc/ti and update the OMAP audio support
        ASoC: ti: Merge davinci and omap directories
        ALSA: hda: add mute LED support for HP EliteBook 840 G4
        ALSA: fireface: code refactoring to handle model-specific registers
        ALSA: fireface: add support for packet streaming on Fireface 800
        ALSA: fireface: allocate isochronous resources in mode-specific implementation
        ...
      8e61e7b5
    • Linus Torvalds's avatar
      Merge tag 'media/v4.20-7' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 996680d4
      Linus Torvalds authored
      Pull more media updates from Mauro Carvalho Chehab:
       "The Intel IPU3 camera driver"
      
      * tag 'media/v4.20-7' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (23 commits)
        media: staging/ipu3-imgu: Add MAINTAINERS entry
        media: staging/ipu3-imgu: Address documentation comments
        media: v4l: Add Intel IPU3 meta buffer formats
        media: doc-rst: Add Intel IPU3 documentation
        media: ipu3-imgu: Fix firmware binary location
        media: ipu3-imgu: Fix compiler warnings
        media: staging/intel-ipu3: Add dual pipe support
        media: staging/intel-ipu3: Add Intel IPU3 meta data uAPI
        media: staging/intel-ipu3: Add imgu top level pci device driver
        media: staging/intel-ipu3: Add v4l2 driver based on media framework
        media: staging/intel-ipu3: Add css pipeline programming
        media: staging/intel-ipu3: css: Initialize css hardware
        media: staging/intel-ipu3: css: Compute and program ccs
        media: staging/intel-ipu3: css: Add static settings for image pipeline
        media: staging/intel-ipu3: css: Add support for firmware management
        media: staging/intel-ipu3: css: Add dma buff pool utility functions
        media: staging/intel-ipu3: Implement DMA mapping functions
        media: staging/intel-ipu3: mmu: Implement driver
        media: staging/intel-ipu3: abi: Add structs
        media: staging/intel-ipu3: abi: Add register definitions and enum
        ...
      996680d4
    • Linus Torvalds's avatar
      Merge tag 'media/v4.20-6' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 5813540b
      Linus Torvalds authored
      Pull media updates from Mauro Carvalho Chehab:
       "First set of media patches contains:
      
         - Three new platform drivers: aspeed-video seco-sed and sun5i-csi;
      
         - One new sensor driver: imx214;
      
         - Support for Xbox DVD Movie Playback kit remote controller;
      
         - Removal of the legacy friio driver. The functionalities were ported
           to another driver, already merged;
      
         - New staging driver: Rockchip VPU;
      
         - Added license text or SPDX tags to all media documentation files;
      
         - Usual set of cleanup, fixes and enhancements"
      
      * tag 'media/v4.20-6' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (263 commits)
        media: cx23885: only reset DMA on problematic CPUs
        media: ddbridge: Move asm includes after linux ones
        media: drxk_hard: check if parameter is not NULL
        media: docs: fix some GPL licensing ambiguity at the text
        media: platform: Add Aspeed Video Engine driver
        media: dt-bindings: media: Add Aspeed Video Engine binding documentation
        media: vimc: fix start stream when link is disabled
        media: v4l2-device: Link subdevices to their parent devices if available
        media: siano: Use kmemdup instead of duplicating its function
        media: rockchip vpu: remove some unused vars
        media: cedrus: don't initialize pointers with zero
        media: cetrus: return an error if alloc fails
        media: cedrus: Add device-tree compatible and variant for A64 support
        media: cedrus: Add device-tree compatible and variant for H5 support
        media: dt-bindings: media: cedrus: Add compatibles for the A64 and H5
        media: video-i2c: check if chip struct has set_power function
        media: video-i2c: support runtime PM
        media: staging: media: imx: Use of_node_name_eq for node name comparisons
        media: v4l2-subdev: document controls need _FL_HAS_DEVNODE
        media: vivid: Improve timestamping
        ...
      5813540b
    • Linus Torvalds's avatar
      Merge tag 'mtd/for-4.21' of git://git.infradead.org/linux-mtd · eaa76499
      Linus Torvalds authored
      Pull mtd updates from Boris Brezillon:
       "SPI NOR Core changes:
         - Parse the 4BAIT SFDP section
         - Add a bunch of SPI NOR entries to the flash_info table
         - Add the concept of SFDP fixups and use it to fix a bug on MX25L25635F
         - A bunch of minor cleanups/comestic changes
      
        NAND core changes:
         - kernel-doc miscellaneous fixes.
         - Third batch of fixes/cleanup to the raw NAND core impacting various
           controller drivers (ams-delta, marvell, fsmc, denali, tegra,
           vf610):
            * Stop to pass mtd_info objects to internal functions
            * Reorganize code to avoid forward declarations
            * Drop useless test in nand_legacy_set_defaults()
            * Move nand_exec_op() to internal.h
            * Add nand_[de]select_target() helpers
            * Pass the CS line to be selected in struct nand_operation
            * Make ->select_chip() optional when ->exec_op() is implemented
            * Deprecate the ->select_chip() hook
            * Move the ->exec_op() method to nand_controller_ops
            * Move ->setup_data_interface() to nand_controller_ops
            * Deprecate the dummy_controller field
            * Fix JEDEC detection
            * Provide a helper for polling GPIO R/B pin
      
        Raw NAND chip drivers changes:
         - Macronix:
            * Flag 1.8V AC chips with a broken GET_FEATURES(TIMINGS)
      
        Raw NAND controllers drivers changes:
         - Ams-delta:
            * Fix the error path
            * SPDX tag added
            * May be compiled with COMPILE_TEST=y
            * Conversion to ->exec_op() interface
            * Drop .IOADDR_R/W use
            * Use GPIO API for data I/O
         - Denali:
            * Remove denali_reset_banks()
            * Remove ->dev_ready() hook
            * Include <linux/bits.h> instead of <linux/bitops.h>
            * Changes to comply with the above fixes/cleanup done in the core.
         - FSMC:
            * Add an SPDX tag to replace the license text
            * Make conversion from chip to fsmc consistent
            * Fix unchecked return value in fsmc_read_page_hwecc
            * Changes to comply with the above fixes/cleanup done in the core.
         - Marvell:
            * Prevent timeouts on a loaded machine (fix)
            * Changes to comply with the above fixes/cleanup done in the core.
         - OMAP2:
            * Pass the parent of pdev to dma_request_chan() (fix)
         - R852:
            * Use generic DMA API
         - sh_flctl:
            * Convert to SPDX identifiers
         - Sunxi:
            * Write pageprog related opcodes to the right register: WCMD_SET (fix)
         - Tegra:
            * Stop implementing ->select_chip()
         - VF610:
            * Add an SPDX tag to replace the license text
            * Changes to comply with the above fixes/cleanup done in the core.
         - Various trivial/spelling/coding style fixes.
      
        SPI-NAND drivers changes:
         - Remove the depreacated mt29f_spinand driver from staging.
         - Add support for:
            * Toshiba TC58CVG2S0H
            * GigaDevice GD5FxGQ4xA
            * Winbond W25N01GV
      
        JFFS2 changes:
         - Fix a lockdep issue
      
        MTD changes:
         - Rework the physmap driver to merge gpio-addr-flash and physmap_of
           in it
         - Add a new compatible for RedBoot partitions
         - Make sub-partitions RW if the parent partition was RO because of a
           mis-alignment
         - Add pinctrl support to the
         - Addition of /* fall-through */ comments where appropriate
         - Various minor fixes and cleanups
      
        Other changes:
         - Update my email address"
      
      * tag 'mtd/for-4.21' of git://git.infradead.org/linux-mtd: (108 commits)
        mtd: rawnand: sunxi: Write pageprog related opcodes to WCMD_SET
        MAINTAINERS: Update my email address
        mtd: rawnand: marvell: prevent timeouts on a loaded machine
        mtd: rawnand: omap2: Pass the parent of pdev to dma_request_chan()
        mtd: rawnand: Fix JEDEC detection
        mtd: spi-nor: Add support for is25lp016d
        mtd: spi-nor: parse SFDP 4-byte Address Instruction Table
        mtd: spi-nor: Add 4B_OPCODES flag to is25lp256
        mtd: spi-nor: Add an SPDX tag to spi-nor.{c,h}
        mtd: spi-nor: Make the enable argument passed to set_byte() a bool
        mtd: spi-nor: Stop passing flash_info around
        mtd: spi-nor: Avoid forward declaration of internal functions
        mtd: spi-nor: Drop inline on all internal helpers
        mtd: spi-nor: Add a post BFPT fixup for MX25L25635E
        mtd: spi-nor: Add a post BFPT parsing fixup hook
        mtd: spi-nor: Add the SNOR_F_4B_OPCODES flag
        mtd: spi-nor: cast to u64 to avoid uint overflows
        mtd: spi-nor: Add support for IS25LP032/064
        mtd: spi-nor: add entry for mt35xu512aba flash
        mtd: spi-nor: add macros related to MICRON flash
        ...
      eaa76499
    • Linus Torvalds's avatar
      Merge tag 'i3c/for-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux · b3cc2bfe
      Linus Torvalds authored
      Pull initial i3c support from Boris Brezillon:
       "Add initial support for I3C along with two I3C master controller
        drivers"
      
      * tag 'i3c/for-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux:
        i3c: master: cdns: fix I2C transfers in Cadence I3C master driver
        ic3: off by one in mode_show()
        i3c: fix an error code in i3c_master_add_i3c_dev_locked()
        i3c: master: dw: fix mask operation by using the correct operator
        MAINTAINERS: Add myself as the dw-i3c-master module maintainer
        dt-binding: i3c: Document Synopsys DesignWare I3C
        i3c: master: Add driver for Synopsys DesignWare IP
        i3c: master: Remove set but not used variable 'old_i3c_scl_lim'
        dt-bindings: i3c: Document Cadence I3C master bindings
        i3c: master: Add driver for Cadence IP
        MAINTAINERS: Add myself as the I3C subsystem maintainer
        dt-bindings: i3c: Document core bindings
        i3c: Add sysfs ABI spec
        docs: driver-api: Add I3C documentation
        i3c: Add core I3C infrastructure
      b3cc2bfe
    • Linus Torvalds's avatar
      Merge tag 'drm-next-2018-12-14' of git://anongit.freedesktop.org/drm/drm · 4971f090
      Linus Torvalds authored
      Pull drm updates from Dave Airlie:
       "Core:
         - shared fencing staging removal
         - drop transactional atomic helpers and move helpers to new location
         - DP/MST atomic cleanup
         - Leasing cleanups and drop EXPORT_SYMBOL
         - Convert drivers to atomic helpers and generic fbdev.
         - removed deprecated obj_ref/unref in favour of get/put
         - Improve dumb callback documentation
         - MODESET_LOCK_BEGIN/END helpers
      
        panels:
         - CDTech panels, Banana Pi Panel, DLC1010GIG,
         - Olimex LCD-O-LinuXino, Samsung S6D16D0, Truly NT35597 WQXGA,
         - Himax HX8357D, simulated RTSM AEMv8.
         - GPD Win2 panel
         - AUO G101EVN010
      
        vgem:
         - render node support
      
        ttm:
         - move global init out of drivers
         - fix LRU handling for ghost objects
         - Support for simultaneous submissions to multiple engines
      
        scheduler:
         - timeout/fault handling changes to help GPU recovery
         - helpers for hw with preemption support
      
        i915:
         - Scaler/Watermark fixes
         - DP MST + powerwell fixes
         - PSR fixes
         - Break long get/put shmemfs pages
         - Icelake fixes
         - Icelake DSI video mode enablement
         - Engine workaround improvements
      
        amdgpu:
         - freesync support
         - GPU reset enabled on CI, VI, SOC15 dGPUs
         - ABM support in DC
         - KFD support for vega12/polaris12
         - SDMA paging queue on vega
         - More amdkfd code sharing
         - DCC scanout on GFX9
         - DC kerneldoc
         - Updated SMU firmware for GFX8 chips
         - XGMI PSP + hive reset support
         - GPU reset
         - DC trace support
         - Powerplay updates for newer Polaris
         - Cursor plane update fast path
         - kfd dma-buf support
      
        virtio-gpu:
         - add EDID support
      
        vmwgfx:
         - pageflip with damage support
      
        nouveau:
         - Initial Turing TU104/TU106 modesetting support
      
        msm:
         - a2xx gpu support for apq8060 and imx5
         - a2xx gpummu support
         - mdp4 display support for apq8060
         - DPU fixes and cleanups
         - enhanced profiling support
         - debug object naming interface
         - get_iova/page pinning decoupling
      
        tegra:
         - Tegra194 host1x, VIC and display support enabled
         - Audio over HDMI for Tegra186 and Tegra194
      
        exynos:
         - DMA/IOMMU refactoring
         - plane alpha + blend mode support
         - Color format fixes for mixer driver
      
        rcar-du:
         - R8A7744 and R8A77470 support
         - R8A77965 LVDS support
      
        imx:
         - fbdev emulation fix
         - multi-tiled scalling fixes
         - SPDX identifiers
      
        rockchip
         - dw_hdmi support
         - dw-mipi-dsi + dual dsi support
         - mailbox read size fix
      
        qxl:
         - fix cursor pinning
      
        vc4:
         - YUV support (scaling + cursor)
      
        v3d:
         - enable TFU (Texture Formatting Unit)
      
        mali-dp:
         - add support for linear tiled formats
      
        sun4i:
         - Display Engine 3 support
         - H6 DE3 mixer 0 support
         - H6 display engine support
         - dw-hdmi support
         - H6 HDMI phy support
         - implicit fence waiting
         - BGRX8888 support
      
        meson:
         - Overlay plane support
         - implicit fence waiting
         - HDMI 1.4 4k modes
      
        bridge:
         - i2c fixes for sii902x"
      
      * tag 'drm-next-2018-12-14' of git://anongit.freedesktop.org/drm/drm: (1403 commits)
        drm/amd/display: Add fast path for cursor plane updates
        drm/amdgpu: Enable GPU recovery by default for CI
        drm/amd/display: Fix duplicating scaling/underscan connector state
        drm/amd/display: Fix unintialized max_bpc state values
        Revert "drm/amd/display: Set RMX_ASPECT as default"
        drm/amdgpu: Fix stub function name
        drm/msm/dpu: Fix clock issue after bind failure
        drm/msm/dpu: Clean up dpu_media_info.h static inline functions
        drm/msm/dpu: Further cleanups for static inline functions
        drm/msm/dpu: Cleanup the debugfs functions
        drm/msm/dpu: Remove dpu_irq and unused functions
        drm/msm: Make irq_postinstall optional
        drm/msm/dpu: Cleanup callers of dpu_hw_blk_init
        drm/msm/dpu: Remove unused functions
        drm/msm/dpu: Remove dpu_crtc_is_enabled()
        drm/msm/dpu: Remove dpu_crtc_get_mixer_height
        drm/msm/dpu: Remove dpu_dbg
        drm/msm: dpu: Remove crtc_lock
        drm/msm: dpu: Remove vblank_requested flag from dpu_crtc
        drm/msm: dpu: Separate crtc assignment from vblank enable
        ...
      4971f090
    • Linus Torvalds's avatar
      Merge tag 'platform-drivers-x86-v4.21-1' of git://git.infradead.org/linux-platform-drivers-x86 · c76cd634
      Linus Torvalds authored
      Pull x86 platform driver updates from Andy Shevchenko:
      
       - The USB Power Delivery discrete components now can be enumerated by
         i2c-multi-instantiate driver via several resources under single ACPI
         device node (ACPI ID is INT3515).
      
       - Touchscreen support is added for the Mediacom Flexbook Edge 11.
      
       - Mellanox driver got fixed due to updates in their firmware.
      
       - The power management stub driver for AtomISP v2 is fixed in order to
         support Intel Baytrail SoCs where same quirk is needed for S0ix to
         work.
      
       - Special key handling has been fixed for Favorites hotkey on Thinkpad,
         and Screen LOCK on ASUS.
      
       - Ideapad Yoga 2 13 has no HW rfkill switch, thus, driver has been
         updated to support this.
      
       - Few cleanups related to debugfs have been made in Intel IPS and Intel
         PMC drivers. Besides that Intel PMC has been extended to show more
         detailed information about Latency Tolerance
      
      * tag 'platform-drivers-x86-v4.21-1' of git://git.infradead.org/linux-platform-drivers-x86: (41 commits)
        platform/x86: mlx-platform: Convert to use SPDX identifier
        Documentation/ABI: Add new attribute for mlxreg-io sysfs interfaces
        platform/x86: mlx-platform: Allow mlxreg-io driver activation for new systems
        platform/x86: mlx-platform: Fix LED configuration
        platform/x86: mlx-platform: Fix tachometer registers
        platform/x86: mlx-platform: Rename new systems product names
        platform/x86: mlx-platform: Add definitions for new registers
        platform/x86: intel_telemetry: convert to DEFINE_SHOW_ATTRIBUTE
        platform/x86: intel_pmc_core: convert to DEFINE_SHOW_ATTRIBUTE
        platform/x86: thinkpad_acpi: Cleanup quirks macros
        platform/x86: touchscreen_dmi: Add info for the Mediacom Flexbook Edge 11
        platform/x86: Fix config space access for intel_atomisp2_pm
        platform/x86: Add the VLV ISP PCI ID to atomisp2_pm
        platform/x86: intel_ips: Convert to use DEFINE_SHOW_ATTRIBUTE macro
        platform/x86: intel_ips: Remove never happen condition
        platform/x86: intel_ips: NULL check before some freeing functions is not needed
        platform/x86: intel_ips: remove unnecessary checks in ips_debugfs_init
        iio: inv_mpu6050: Use i2c_acpi_get_i2c_resource() helper
        ACPI / scan: Create platform device for INT3515 ACPI nodes
        platform/x86: i2c-multi-instantiate: Allow to have same slaves
        ...
      c76cd634
  5. 23 Dec, 2018 2 commits
  6. 22 Dec, 2018 5 commits
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · 9105b8aa
      Linus Torvalds authored
      Pull SCSI fixes from James Bottomley:
       "This is two simple target fixes and one discard related I/O starvation
        problem in sd.
      
        The discard problem occurs because the discard page doesn't have a
        mempool backing so if the allocation fails due to memory pressure, we
        then lose the forward progress we require if the writeout is on the
        same device. The fix is to back it with a mempool"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        scsi: sd: use mempool for discard special page
        scsi: target: iscsi: cxgbit: add missing spin_lock_init()
        scsi: target: iscsi: cxgbit: fix csk leak
      9105b8aa
    • Linus Torvalds's avatar
      Merge tag 'compiler-attributes-for-linus-v4.20' of https://github.com/ojeda/linux · 1104bd96
      Linus Torvalds authored
      Pull compiler_types.h fix from Miguel Ojeda:
       "A cleanup for userspace in compiler_types.h: don't pollute userspace
        with macro definitions (Xiaozhou Liu)
      
        This is harmless for the kernel, but v4.19 was released with a few
        macros exposed to userspace as the patch explains; which this removes,
        so it *could* happen that we break something for someone (although
        leaving inline redefined is probably worse)"
      
      * tag 'compiler-attributes-for-linus-v4.20' of https://github.com/ojeda/linux:
        include/linux/compiler_types.h: don't pollute userspace with macro definitions
      1104bd96
    • Linus Torvalds's avatar
      Merge tag 'auxdisplay-for-linus-v4.20' of https://github.com/ojeda/linux · 38c0ecf6
      Linus Torvalds authored
      Pull auxdisplay fix from Miguel Ojeda:
       "charlcd: fix x/y command parsing (Mans Rullgard)"
      
      * tag 'auxdisplay-for-linus-v4.20' of https://github.com/ojeda/linux:
        auxdisplay: charlcd: fix x/y command parsing
      38c0ecf6
    • Christian Brauner's avatar
      Revert "vfs: Allow userns root to call mknod on owned filesystems." · 94f82008
      Christian Brauner authored
      This reverts commit 55956b59.
      
      commit 55956b59 ("vfs: Allow userns root to call mknod on owned filesystems.")
      enabled mknod() in user namespaces for userns root if CAP_MKNOD is
      available. However, these device nodes are useless since any filesystem
      mounted from a non-initial user namespace will set the SB_I_NODEV flag on
      the filesystem. Now, when a device node s created in a non-initial user
      namespace a call to open() on said device node will fail due to:
      
      bool may_open_dev(const struct path *path)
      {
              return !(path->mnt->mnt_flags & MNT_NODEV) &&
                      !(path->mnt->mnt_sb->s_iflags & SB_I_NODEV);
      }
      
      The problem with this is that as of the aforementioned commit mknod()
      creates partially functional device nodes in non-initial user namespaces.
      In particular, it has the consequence that as of the aforementioned commit
      open() will be more privileged with respect to device nodes than mknod().
      Before it was the other way around. Specifically, if mknod() succeeded
      then it was transparent for any userspace application that a fatal error
      must have occured when open() failed.
      
      All of this breaks multiple userspace workloads and a widespread assumption
      about how to handle mknod(). Basically, all container runtimes and systemd
      live by the slogan "ask for forgiveness not permission" when running user
      namespace workloads. For mknod() the assumption is that if the syscall
      succeeds the device nodes are useable irrespective of whether it succeeds
      in a non-initial user namespace or not. This logic was chosen explicitly
      to allow for the glorious day when mknod() will actually be able to create
      fully functional device nodes in user namespaces.
      A specific problem people are already running into when running 4.18 rc
      kernels are failing systemd services. For any distro that is run in a
      container systemd services started with the PrivateDevices= property set
      will fail to start since the device nodes in question cannot be
      opened (cf. the arguments in [1]).
      
      Full disclosure, Seth made the very sound argument that it is already
      possible to end up with partially functional device nodes. Any filesystem
      mounted with MS_NODEV set will allow mknod() to succeed but will not allow
      open() to succeed. The difference to the case here is that the MS_NODEV
      case is transparent to userspace since it is an explicitly set mount option
      while the SB_I_NODEV case is an implicit property enforced by the kernel
      and hence opaque to userspace.
      
      [1]: https://github.com/systemd/systemd/pull/9483Signed-off-by: default avatarChristian Brauner <christian@brauner.io>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: Seth Forshee <seth.forshee@canonical.com>
      Cc: Serge Hallyn <serge@hallyn.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      94f82008
    • Christoph Hellwig's avatar
      dma-mapping: fix flags in dma_alloc_wc · 0cd60eb1
      Christoph Hellwig authored
      We really need the writecombine flag in dma_alloc_wc, fix a stupid
      oversight.
      
      Fixes: 7ed1d91a ("dma-mapping: translate __GFP_NOFAIL to DMA_ATTR_NO_WARN")
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0cd60eb1
  7. 21 Dec, 2018 21 commits
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · 23203e3f
      Linus Torvalds authored
      Merge misc fixes from Andrew Morton:
       "4 fixes"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>:
        mm, page_alloc: fix has_unmovable_pages for HugePages
        fork,memcg: fix crash in free_thread_stack on memcg charge fail
        mm: thp: fix flags for pmd migration when split
        mm, memory_hotplug: initialize struct pages for the full memory section
      23203e3f
    • Oscar Salvador's avatar
      mm, page_alloc: fix has_unmovable_pages for HugePages · 17e2e7d7
      Oscar Salvador authored
      While playing with gigantic hugepages and memory_hotplug, I triggered
      the following #PF when "cat memoryX/removable":
      
        BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
        #PF error: [normal kernel read fault]
        PGD 0 P4D 0
        Oops: 0000 [#1] SMP PTI
        CPU: 1 PID: 1481 Comm: cat Tainted: G            E     4.20.0-rc6-mm1-1-default+ #18
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.0.0-prebuilt.qemu-project.org 04/01/2014
        RIP: 0010:has_unmovable_pages+0x154/0x210
        Call Trace:
         is_mem_section_removable+0x7d/0x100
         removable_show+0x90/0xb0
         dev_attr_show+0x1c/0x50
         sysfs_kf_seq_show+0xca/0x1b0
         seq_read+0x133/0x380
         __vfs_read+0x26/0x180
         vfs_read+0x89/0x140
         ksys_read+0x42/0x90
         do_syscall_64+0x5b/0x180
         entry_SYSCALL_64_after_hwframe+0x44/0xa9
      
      The reason is we do not pass the Head to page_hstate(), and so, the call
      to compound_order() in page_hstate() returns 0, so we end up checking
      all hstates's size to match PAGE_SIZE.
      
      Obviously, we do not find any hstate matching that size, and we return
      NULL.  Then, we dereference that NULL pointer in
      hugepage_migration_supported() and we got the #PF from above.
      
      Fix that by getting the head page before calling page_hstate().
      
      Also, since gigantic pages span several pageblocks, re-adjust the logic
      for skipping pages.  While are it, we can also get rid of the
      round_up().
      
      [osalvador@suse.de: remove round_up(), adjust skip pages logic per Michal]
        Link: http://lkml.kernel.org/r/20181221062809.31771-1-osalvador@suse.de
      Link: http://lkml.kernel.org/r/20181217225113.17864-1-osalvador@suse.deSigned-off-by: default avatarOscar Salvador <osalvador@suse.de>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Reviewed-by: default avatarDavid Hildenbrand <david@redhat.com>
      Cc: Vlastimil Babka <vbabka@suse.cz>
      Cc: Pavel Tatashin <pavel.tatashin@microsoft.com>
      Cc: Mike Rapoport <rppt@linux.vnet.ibm.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      17e2e7d7
    • Rik van Riel's avatar
      fork,memcg: fix crash in free_thread_stack on memcg charge fail · 5eed6f1d
      Rik van Riel authored
      Commit 9b6f7e16 ("mm: rework memcg kernel stack accounting") will
      result in fork failing if allocating a kernel stack for a task in
      dup_task_struct exceeds the kernel memory allowance for that cgroup.
      
      Unfortunately, it also results in a crash.
      
      This is due to the code jumping to free_stack and calling
      free_thread_stack when the memcg kernel stack charge fails, but without
      tsk->stack pointing at the freshly allocated stack.
      
      This in turn results in the vfree_atomic in free_thread_stack oopsing
      with a backtrace like this:
      
      #5 [ffffc900244efc88] die at ffffffff8101f0ab
       #6 [ffffc900244efcb8] do_general_protection at ffffffff8101cb86
       #7 [ffffc900244efce0] general_protection at ffffffff818ff082
          [exception RIP: llist_add_batch+7]
          RIP: ffffffff8150d487  RSP: ffffc900244efd98  RFLAGS: 00010282
          RAX: 0000000000000000  RBX: ffff88085ef55980  RCX: 0000000000000000
          RDX: ffff88085ef55980  RSI: 343834343531203a  RDI: 343834343531203a
          RBP: ffffc900244efd98   R8: 0000000000000001   R9: ffff8808578c3600
          R10: 0000000000000000  R11: 0000000000000001  R12: ffff88029f6c21c0
          R13: 0000000000000286  R14: ffff880147759b00  R15: 0000000000000000
          ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
       #8 [ffffc900244efda0] vfree_atomic at ffffffff811df2c7
       #9 [ffffc900244efdb8] copy_process at ffffffff81086e37
      #10 [ffffc900244efe98] _do_fork at ffffffff810884e0
      #11 [ffffc900244eff10] sys_vfork at ffffffff810887ff
      #12 [ffffc900244eff20] do_syscall_64 at ffffffff81002a43
          RIP: 000000000049b948  RSP: 00007ffcdb307830  RFLAGS: 00000246
          RAX: ffffffffffffffda  RBX: 0000000000896030  RCX: 000000000049b948
          RDX: 0000000000000000  RSI: 00007ffcdb307790  RDI: 00000000005d7421
          RBP: 000000000067370f   R8: 00007ffcdb3077b0   R9: 000000000001ed00
          R10: 0000000000000008  R11: 0000000000000246  R12: 0000000000000040
          R13: 000000000000000f  R14: 0000000000000000  R15: 000000000088d018
          ORIG_RAX: 000000000000003a  CS: 0033  SS: 002b
      
      The simplest fix is to assign tsk->stack right where it is allocated.
      
      Link: http://lkml.kernel.org/r/20181214231726.7ee4843c@imladris.surriel.com
      Fixes: 9b6f7e16 ("mm: rework memcg kernel stack accounting")
      Signed-off-by: default avatarRik van Riel <riel@surriel.com>
      Acked-by: default avatarRoman Gushchin <guro@fb.com>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Cc: Shakeel Butt <shakeelb@google.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5eed6f1d
    • Peter Xu's avatar
      mm: thp: fix flags for pmd migration when split · 2e83ee1d
      Peter Xu authored
      When splitting a huge migrating PMD, we'll transfer all the existing PMD
      bits and apply them again onto the small PTEs.  However we are fetching
      the bits unconditionally via pmd_soft_dirty(), pmd_write() or
      pmd_yound() while actually they don't make sense at all when it's a
      migration entry.  Fix them up.  Since at it, drop the ifdef together as
      not needed.
      
      Note that if my understanding is correct about the problem then if
      without the patch there is chance to lose some of the dirty bits in the
      migrating pmd pages (on x86_64 we're fetching bit 11 which is part of
      swap offset instead of bit 2) and it could potentially corrupt the
      memory of an userspace program which depends on the dirty bit.
      
      Link: http://lkml.kernel.org/r/20181213051510.20306-1-peterx@redhat.comSigned-off-by: default avatarPeter Xu <peterx@redhat.com>
      Reviewed-by: default avatarKonstantin Khlebnikov <khlebnikov@yandex-team.ru>
      Reviewed-by: default avatarWilliam Kucharski <william.kucharski@oracle.com>
      Acked-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: Matthew Wilcox <willy@infradead.org>
      Cc: Michal Hocko <mhocko@suse.com>
      Cc: Dave Jiang <dave.jiang@intel.com>
      Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
      Cc: Souptick Joarder <jrdr.linux@gmail.com>
      Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
      Cc: Zi Yan <zi.yan@cs.rutgers.edu>
      Cc: <stable@vger.kernel.org>	[4.14+]
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2e83ee1d
    • Mikhail Zaslonko's avatar
      mm, memory_hotplug: initialize struct pages for the full memory section · 2830bf6f
      Mikhail Zaslonko authored
      If memory end is not aligned with the sparse memory section boundary,
      the mapping of such a section is only partly initialized.  This may lead
      to VM_BUG_ON due to uninitialized struct page access from
      is_mem_section_removable() or test_pages_in_a_zone() function triggered
      by memory_hotplug sysfs handlers:
      
      Here are the the panic examples:
       CONFIG_DEBUG_VM=y
       CONFIG_DEBUG_VM_PGFLAGS=y
      
       kernel parameter mem=2050M
       --------------------------
       page:000003d082008000 is uninitialized and poisoned
       page dumped because: VM_BUG_ON_PAGE(PagePoisoned(p))
       Call Trace:
       ( test_pages_in_a_zone+0xde/0x160)
         show_valid_zones+0x5c/0x190
         dev_attr_show+0x34/0x70
         sysfs_kf_seq_show+0xc8/0x148
         seq_read+0x204/0x480
         __vfs_read+0x32/0x178
         vfs_read+0x82/0x138
         ksys_read+0x5a/0xb0
         system_call+0xdc/0x2d8
       Last Breaking-Event-Address:
         test_pages_in_a_zone+0xde/0x160
       Kernel panic - not syncing: Fatal exception: panic_on_oops
      
       kernel parameter mem=3075M
       --------------------------
       page:000003d08300c000 is uninitialized and poisoned
       page dumped because: VM_BUG_ON_PAGE(PagePoisoned(p))
       Call Trace:
       ( is_mem_section_removable+0xb4/0x190)
         show_mem_removable+0x9a/0xd8
         dev_attr_show+0x34/0x70
         sysfs_kf_seq_show+0xc8/0x148
         seq_read+0x204/0x480
         __vfs_read+0x32/0x178
         vfs_read+0x82/0x138
         ksys_read+0x5a/0xb0
         system_call+0xdc/0x2d8
       Last Breaking-Event-Address:
         is_mem_section_removable+0xb4/0x190
       Kernel panic - not syncing: Fatal exception: panic_on_oops
      
      Fix the problem by initializing the last memory section of each zone in
      memmap_init_zone() till the very end, even if it goes beyond the zone end.
      
      Michal said:
      
      : This has alwways been problem AFAIU.  It just went unnoticed because we
      : have zeroed memmaps during allocation before f7f99100 ("mm: stop
      : zeroing memory during allocation in vmemmap") and so the above test
      : would simply skip these ranges as belonging to zone 0 or provided a
      : garbage.
      :
      : So I guess we do care for post f7f99100 kernels mostly and
      : therefore Fixes: f7f99100 ("mm: stop zeroing memory during
      : allocation in vmemmap")
      
      Link: http://lkml.kernel.org/r/20181212172712.34019-2-zaslonko@linux.ibm.com
      Fixes: f7f99100 ("mm: stop zeroing memory during allocation in vmemmap")
      Signed-off-by: default avatarMikhail Zaslonko <zaslonko@linux.ibm.com>
      Reviewed-by: default avatarGerald Schaefer <gerald.schaefer@de.ibm.com>
      Suggested-by: default avatarMichal Hocko <mhocko@kernel.org>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Reported-by: default avatarMikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
      Tested-by: default avatarMikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
      Cc: Dave Hansen <dave.hansen@intel.com>
      Cc: Alexander Duyck <alexander.h.duyck@linux.intel.com>
      Cc: Pasha Tatashin <Pavel.Tatashin@microsoft.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2830bf6f
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · 6cafab50
      Linus Torvalds authored
      Pull sparc fixes from David Miller:
       "Just some small fixes here and there, and a refcount leak in a serial
        driver, nothing serious"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        serial/sunsu: fix refcount leak
        sparc: Set "ARCH: sunxx" information on the same line
        sparc: vdso: Drop implicit common-page-size linker flag
      6cafab50
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 87935eee
      Linus Torvalds authored
      Pull more networking fixes from David Miller:
       "Some more bug fixes have trickled in, we have:
      
        1) Local MAC entries properly in mscc driver, from Allan W. Nielsen.
      
        2) Eric Dumazet found some more of the typical "pskb_may_pull() -->
           oops forgot to reload the header pointer" bugs in ipv6 tunnel
           handling.
      
        3) Bad SKB socket pointer in ipv6 fragmentation handling, from Herbert
           Xu.
      
        4) Overflow fix in sk_msg_clone(), from Vakul Garg.
      
        5) Validate address lengths in AF_PACKET, from Willem de Bruijn"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
        qmi_wwan: Fix qmap header retrieval in qmimux_rx_fixup
        qmi_wwan: Add support for Fibocom NL678 series
        tls: Do not call sk_memcopy_from_iter with zero length
        ipv6: tunnels: fix two use-after-free
        Prevent overflow of sk_msg in sk_msg_clone()
        packet: validate address length
        net: netxen: fix a missing check and an uninitialized use
        tcp: fix a race in inet_diag_dump_icsk()
        MAINTAINERS: update cxgb4 and cxgb3 maintainer
        ipv6: frags: Fix bogus skb->sk in reassembled packets
        mscc: Configured MAC entries should be locked.
      87935eee
    • Mans Rullgard's avatar
      auxdisplay: charlcd: fix x/y command parsing · 9bc30ab8
      Mans Rullgard authored
      The x/y command parsing has been broken since commit 12995706
      ("staging: panel: Fixed checkpatch warning about simple_strtoul()").
      
      Commit b34050fa ("auxdisplay: charlcd: Fix and clean up handling of
      x/y commands") fixed some problems by rewriting the parsing code,
      but also broke things further by removing the check for a complete
      command before attempting to parse it.  As a result, parsing is
      terminated at the first x or y character.
      
      This reinstates the check for a final semicolon.  Whereas the original
      code use strchr(), this is wasteful seeing as the semicolon is always
      at the end of the buffer.  Thus check this character directly instead.
      Signed-off-by: default avatarMans Rullgard <mans@mansr.com>
      Signed-off-by: default avatarMiguel Ojeda <miguel.ojeda.sandonis@gmail.com>
      9bc30ab8
    • Yangtao Li's avatar
      serial/sunsu: fix refcount leak · d430aff8
      Yangtao Li authored
      The function of_find_node_by_path() acquires a reference to the node
      returned by it and that reference needs to be dropped by its caller.
      
      su_get_type() doesn't do that. The match node are used as an identifier
      to compare against the current node, so we can directly drop the refcount
      after getting the node from the path as it is not used as pointer.
      
      Fix this by use a single variable and drop the refcount right after
      of_find_node_by_path().
      Signed-off-by: default avatarYangtao Li <tiny.windzz@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d430aff8
    • Corentin Labbe's avatar
      sparc: Set "ARCH: sunxx" information on the same line · afaffac3
      Corentin Labbe authored
      While checking boot log from SPARC qemu, I saw that the "ARCH: sunxx"
      information was split on two different line.
      This patchs merge both line together.
      In the meantime, thoses information need to be printed via pr_info
      since printk print them by default via the warning loglevel.
      Signed-off-by: default avatarCorentin Labbe <clabbe@baylibre.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      afaffac3
    • ndesaulniers@google.com's avatar
      sparc: vdso: Drop implicit common-page-size linker flag · 0ff70f62
      ndesaulniers@google.com authored
      GNU linker's -z common-page-size's default value is based on the target
      architecture. arch/sparc/vdso/Makefile sets it to the architecture
      default, which is implicit and redundant. Drop it.
      
      Link: https://lkml.kernel.org/r/20181206191231.192355-1-ndesaulniers@google.comSigned-off-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0ff70f62
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 5092adb2
      Linus Torvalds authored
      Pull kvm fix from Paolo Bonzini:
       "A simple patch for a pretty bad bug: Unbreak AMD nested
        virtualization."
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        KVM: x86: nSVM: fix switch to guest mmu
      5092adb2
    • Daniele Palmas's avatar
      qmi_wwan: Fix qmap header retrieval in qmimux_rx_fixup · d667044f
      Daniele Palmas authored
      This patch fixes qmap header retrieval when modem is configured for
      dl data aggregation.
      Signed-off-by: default avatarDaniele Palmas <dnlplm@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d667044f
    • Linus Torvalds's avatar
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e572fa0e
      Linus Torvalds authored
      Pull timer fix from Ingo Molnar:
       "Fix a division by zero crash in the posix-timers code"
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        posix-timers: Fix division by zero bug
      e572fa0e
    • Jörgen Storvist's avatar
      qmi_wwan: Add support for Fibocom NL678 series · 7c3db410
      Jörgen Storvist authored
      Added support for Fibocom NL678 series cellular module QMI interface.
      Using QMI_QUIRK_SET_DTR required for Qualcomm MDM9x40 series chipsets.
      Signed-off-by: default avatarJörgen Storvist <jorgen.storvist@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7c3db410
    • Vakul Garg's avatar
      tls: Do not call sk_memcopy_from_iter with zero length · 65a10e28
      Vakul Garg authored
      In some conditions e.g. when tls_clone_plaintext_msg() returns -ENOSPC,
      the number of bytes to be copied using subsequent function
      sk_msg_memcopy_from_iter() becomes zero. This causes function
      sk_msg_memcopy_from_iter() to fail which in turn causes tls_sw_sendmsg()
      to return failure. To prevent it, do not call sk_msg_memcopy_from_iter()
      when number of bytes to copy (indicated by 'try_to_copy') is zero.
      
      Fixes: d829e9c4 ("tls: convert to generic sk_msg interface")
      Signed-off-by: default avatarVakul Garg <vakul.garg@nxp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      65a10e28
    • Linus Torvalds's avatar
      Merge branch 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d5fa080d
      Linus Torvalds authored
      Pull futex fix from Ingo Molnar:
       "A single fix for a robust futexes race between sys_exit() and
        sys_futex_lock_pi()"
      
      * 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        futex: Cure exit race
      d5fa080d
    • Linus Torvalds's avatar
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 70ad6368
      Linus Torvalds authored
      Pull x86 fixes from Ingo Molnar:
       "The biggest part is a series of reverts for the macro based GCC
        inlining workarounds. It caused regressions in distro build and other
        kernel tooling environments, and the GCC project was very receptive to
        fixing the underlying inliner weaknesses - so as time ran out we
        decided to do a reasonably straightforward revert of the patches. The
        plan is to rely on the 'asm inline' GCC 9 feature, which might be
        backported to GCC 8 and could thus become reasonably widely available
        on modern distros.
      
        Other than those reverts, there's misc fixes from all around the
        place.
      
        I wish our final x86 pull request for v4.20 was smaller..."
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        Revert "kbuild/Makefile: Prepare for using macros in inline assembly code to work around asm() related GCC inlining bugs"
        Revert "x86/objtool: Use asm macros to work around GCC inlining bugs"
        Revert "x86/refcount: Work around GCC inlining bug"
        Revert "x86/alternatives: Macrofy lock prefixes to work around GCC inlining bugs"
        Revert "x86/bug: Macrofy the BUG table section handling, to work around GCC inlining bugs"
        Revert "x86/paravirt: Work around GCC inlining bugs when compiling paravirt ops"
        Revert "x86/extable: Macrofy inline assembly code to work around GCC inlining bugs"
        Revert "x86/cpufeature: Macrofy inline assembly code to work around GCC inlining bugs"
        Revert "x86/jump-labels: Macrofy inline assembly code to work around GCC inlining bugs"
        x86/mtrr: Don't copy uninitialized gentry fields back to userspace
        x86/fsgsbase/64: Fix the base write helper functions
        x86/mm/cpa: Fix cpa_flush_array() TLB invalidation
        x86/vdso: Pass --eh-frame-hdr to the linker
        x86/mm: Fix decoy address handling vs 32-bit builds
        x86/intel_rdt: Ensure a CPU remains online for the region's pseudo-locking sequence
        x86/dump_pagetables: Fix LDT remap address marker
        x86/mm: Fix guard hole handling
      70ad6368
    • Eric Dumazet's avatar
      ipv6: tunnels: fix two use-after-free · cbb49697
      Eric Dumazet authored
      xfrm6_policy_check() might have re-allocated skb->head, we need
      to reload ipv6 header pointer.
      
      sysbot reported :
      
      BUG: KASAN: use-after-free in __ipv6_addr_type+0x302/0x32f net/ipv6/addrconf_core.c:40
      Read of size 4 at addr ffff888191b8cb70 by task syz-executor2/1304
      
      CPU: 0 PID: 1304 Comm: syz-executor2 Not tainted 4.20.0-rc7+ #356
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      Call Trace:
       <IRQ>
       __dump_stack lib/dump_stack.c:77 [inline]
       dump_stack+0x244/0x39d lib/dump_stack.c:113
       print_address_description.cold.7+0x9/0x1ff mm/kasan/report.c:256
       kasan_report_error mm/kasan/report.c:354 [inline]
       kasan_report.cold.8+0x242/0x309 mm/kasan/report.c:412
       __asan_report_load4_noabort+0x14/0x20 mm/kasan/report.c:432
       __ipv6_addr_type+0x302/0x32f net/ipv6/addrconf_core.c:40
       ipv6_addr_type include/net/ipv6.h:403 [inline]
       ip6_tnl_get_cap+0x27/0x190 net/ipv6/ip6_tunnel.c:727
       ip6_tnl_rcv_ctl+0xdb/0x2a0 net/ipv6/ip6_tunnel.c:757
       vti6_rcv+0x336/0x8f3 net/ipv6/ip6_vti.c:321
       xfrm6_ipcomp_rcv+0x1a5/0x3a0 net/ipv6/xfrm6_protocol.c:132
       ip6_protocol_deliver_rcu+0x372/0x1940 net/ipv6/ip6_input.c:394
       ip6_input_finish+0x84/0x170 net/ipv6/ip6_input.c:434
       NF_HOOK include/linux/netfilter.h:289 [inline]
       ip6_input+0xe9/0x600 net/ipv6/ip6_input.c:443
      IPVS: ftp: loaded support on port[0] = 21
       ip6_mc_input+0x514/0x11c0 net/ipv6/ip6_input.c:537
       dst_input include/net/dst.h:450 [inline]
       ip6_rcv_finish+0x17a/0x330 net/ipv6/ip6_input.c:76
       NF_HOOK include/linux/netfilter.h:289 [inline]
       ipv6_rcv+0x115/0x640 net/ipv6/ip6_input.c:272
       __netif_receive_skb_one_core+0x14d/0x200 net/core/dev.c:4973
       __netif_receive_skb+0x2c/0x1e0 net/core/dev.c:5083
       process_backlog+0x24e/0x7a0 net/core/dev.c:5923
       napi_poll net/core/dev.c:6346 [inline]
       net_rx_action+0x7fa/0x19b0 net/core/dev.c:6412
       __do_softirq+0x308/0xb7e kernel/softirq.c:292
       do_softirq_own_stack+0x2a/0x40 arch/x86/entry/entry_64.S:1027
       </IRQ>
       do_softirq.part.14+0x126/0x160 kernel/softirq.c:337
       do_softirq+0x19/0x20 kernel/softirq.c:340
       netif_rx_ni+0x521/0x860 net/core/dev.c:4569
       dev_loopback_xmit+0x287/0x8c0 net/core/dev.c:3576
       NF_HOOK include/linux/netfilter.h:289 [inline]
       ip6_finish_output2+0x193a/0x2930 net/ipv6/ip6_output.c:84
       ip6_fragment+0x2b06/0x3850 net/ipv6/ip6_output.c:727
       ip6_finish_output+0x6b7/0xc50 net/ipv6/ip6_output.c:152
       NF_HOOK_COND include/linux/netfilter.h:278 [inline]
       ip6_output+0x232/0x9d0 net/ipv6/ip6_output.c:171
       dst_output include/net/dst.h:444 [inline]
       ip6_local_out+0xc5/0x1b0 net/ipv6/output_core.c:176
       ip6_send_skb+0xbc/0x340 net/ipv6/ip6_output.c:1727
       ip6_push_pending_frames+0xc5/0xf0 net/ipv6/ip6_output.c:1747
       rawv6_push_pending_frames net/ipv6/raw.c:615 [inline]
       rawv6_sendmsg+0x3a3e/0x4b40 net/ipv6/raw.c:945
      kobject: 'queues' (0000000089e6eea2): kobject_add_internal: parent: 'tunl0', set: '<NULL>'
      kobject: 'queues' (0000000089e6eea2): kobject_uevent_env
       inet_sendmsg+0x1a1/0x690 net/ipv4/af_inet.c:798
      kobject: 'queues' (0000000089e6eea2): kobject_uevent_env: filter function caused the event to drop!
       sock_sendmsg_nosec net/socket.c:621 [inline]
       sock_sendmsg+0xd5/0x120 net/socket.c:631
       sock_write_iter+0x35e/0x5c0 net/socket.c:900
       call_write_iter include/linux/fs.h:1857 [inline]
       new_sync_write fs/read_write.c:474 [inline]
       __vfs_write+0x6b8/0x9f0 fs/read_write.c:487
      kobject: 'rx-0' (00000000e2d902d9): kobject_add_internal: parent: 'queues', set: 'queues'
      kobject: 'rx-0' (00000000e2d902d9): kobject_uevent_env
       vfs_write+0x1fc/0x560 fs/read_write.c:549
       ksys_write+0x101/0x260 fs/read_write.c:598
      kobject: 'rx-0' (00000000e2d902d9): fill_kobj_path: path = '/devices/virtual/net/tunl0/queues/rx-0'
       __do_sys_write fs/read_write.c:610 [inline]
       __se_sys_write fs/read_write.c:607 [inline]
       __x64_sys_write+0x73/0xb0 fs/read_write.c:607
       do_syscall_64+0x1b9/0x820 arch/x86/entry/common.c:290
      kobject: 'tx-0' (00000000443b70ac): kobject_add_internal: parent: 'queues', set: 'queues'
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      RIP: 0033:0x457669
      Code: fd b3 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 cb b3 fb ff c3 66 2e 0f 1f 84 00 00 00 00
      RSP: 002b:00007f9bd200bc78 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
      RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 0000000000457669
      RDX: 000000000000058f RSI: 00000000200033c0 RDI: 0000000000000003
      kobject: 'tx-0' (00000000443b70ac): kobject_uevent_env
      RBP: 000000000072bf00 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000246 R12: 00007f9bd200c6d4
      R13: 00000000004c2dcc R14: 00000000004da398 R15: 00000000ffffffff
      
      Allocated by task 1304:
       save_stack+0x43/0xd0 mm/kasan/kasan.c:448
       set_track mm/kasan/kasan.c:460 [inline]
       kasan_kmalloc+0xc7/0xe0 mm/kasan/kasan.c:553
       __do_kmalloc_node mm/slab.c:3684 [inline]
       __kmalloc_node_track_caller+0x50/0x70 mm/slab.c:3698
       __kmalloc_reserve.isra.41+0x41/0xe0 net/core/skbuff.c:140
       __alloc_skb+0x155/0x760 net/core/skbuff.c:208
      kobject: 'tx-0' (00000000443b70ac): fill_kobj_path: path = '/devices/virtual/net/tunl0/queues/tx-0'
       alloc_skb include/linux/skbuff.h:1011 [inline]
       __ip6_append_data.isra.49+0x2f1a/0x3f50 net/ipv6/ip6_output.c:1450
       ip6_append_data+0x1bc/0x2d0 net/ipv6/ip6_output.c:1619
       rawv6_sendmsg+0x15ab/0x4b40 net/ipv6/raw.c:938
       inet_sendmsg+0x1a1/0x690 net/ipv4/af_inet.c:798
       sock_sendmsg_nosec net/socket.c:621 [inline]
       sock_sendmsg+0xd5/0x120 net/socket.c:631
       ___sys_sendmsg+0x7fd/0x930 net/socket.c:2116
       __sys_sendmsg+0x11d/0x280 net/socket.c:2154
       __do_sys_sendmsg net/socket.c:2163 [inline]
       __se_sys_sendmsg net/socket.c:2161 [inline]
       __x64_sys_sendmsg+0x78/0xb0 net/socket.c:2161
       do_syscall_64+0x1b9/0x820 arch/x86/entry/common.c:290
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      kobject: 'gre0' (00000000cb1b2d7b): kobject_add_internal: parent: 'net', set: 'devices'
      
      Freed by task 1304:
       save_stack+0x43/0xd0 mm/kasan/kasan.c:448
       set_track mm/kasan/kasan.c:460 [inline]
       __kasan_slab_free+0x102/0x150 mm/kasan/kasan.c:521
       kasan_slab_free+0xe/0x10 mm/kasan/kasan.c:528
       __cache_free mm/slab.c:3498 [inline]
       kfree+0xcf/0x230 mm/slab.c:3817
       skb_free_head+0x93/0xb0 net/core/skbuff.c:553
       pskb_expand_head+0x3b2/0x10d0 net/core/skbuff.c:1498
       __pskb_pull_tail+0x156/0x18a0 net/core/skbuff.c:1896
       pskb_may_pull include/linux/skbuff.h:2188 [inline]
       _decode_session6+0xd11/0x14d0 net/ipv6/xfrm6_policy.c:150
       __xfrm_decode_session+0x71/0x140 net/xfrm/xfrm_policy.c:3272
      kobject: 'gre0' (00000000cb1b2d7b): kobject_uevent_env
       __xfrm_policy_check+0x380/0x2c40 net/xfrm/xfrm_policy.c:3322
       __xfrm_policy_check2 include/net/xfrm.h:1170 [inline]
       xfrm_policy_check include/net/xfrm.h:1175 [inline]
       xfrm6_policy_check include/net/xfrm.h:1185 [inline]
       vti6_rcv+0x4bd/0x8f3 net/ipv6/ip6_vti.c:316
       xfrm6_ipcomp_rcv+0x1a5/0x3a0 net/ipv6/xfrm6_protocol.c:132
       ip6_protocol_deliver_rcu+0x372/0x1940 net/ipv6/ip6_input.c:394
       ip6_input_finish+0x84/0x170 net/ipv6/ip6_input.c:434
       NF_HOOK include/linux/netfilter.h:289 [inline]
       ip6_input+0xe9/0x600 net/ipv6/ip6_input.c:443
       ip6_mc_input+0x514/0x11c0 net/ipv6/ip6_input.c:537
       dst_input include/net/dst.h:450 [inline]
       ip6_rcv_finish+0x17a/0x330 net/ipv6/ip6_input.c:76
       NF_HOOK include/linux/netfilter.h:289 [inline]
       ipv6_rcv+0x115/0x640 net/ipv6/ip6_input.c:272
       __netif_receive_skb_one_core+0x14d/0x200 net/core/dev.c:4973
       __netif_receive_skb+0x2c/0x1e0 net/core/dev.c:5083
       process_backlog+0x24e/0x7a0 net/core/dev.c:5923
      kobject: 'gre0' (00000000cb1b2d7b): fill_kobj_path: path = '/devices/virtual/net/gre0'
       napi_poll net/core/dev.c:6346 [inline]
       net_rx_action+0x7fa/0x19b0 net/core/dev.c:6412
       __do_softirq+0x308/0xb7e kernel/softirq.c:292
      
      The buggy address belongs to the object at ffff888191b8cac0
       which belongs to the cache kmalloc-512 of size 512
      The buggy address is located 176 bytes inside of
       512-byte region [ffff888191b8cac0, ffff888191b8ccc0)
      The buggy address belongs to the page:
      page:ffffea000646e300 count:1 mapcount:0 mapping:ffff8881da800940 index:0x0
      flags: 0x2fffc0000000200(slab)
      raw: 02fffc0000000200 ffffea0006eaaa48 ffffea00065356c8 ffff8881da800940
      raw: 0000000000000000 ffff888191b8c0c0 0000000100000006 0000000000000000
      page dumped because: kasan: bad access detected
      kobject: 'queues' (000000005fd6226e): kobject_add_internal: parent: 'gre0', set: '<NULL>'
      
      Memory state around the buggy address:
       ffff888191b8ca00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
       ffff888191b8ca80: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb
      >ffff888191b8cb00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                                   ^
       ffff888191b8cb80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
       ffff888191b8cc00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      
      Fixes: 0d3c703a ("ipv6: Cleanup IPv6 tunnel receive path")
      Fixes: ed1efb2a ("ipv6: Add support for IPsec virtual tunnel interfaces")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Steffen Klassert <steffen.klassert@secunet.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cbb49697
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2018-12-21' of git://anongit.freedesktop.org/drm/drm · 96d6ee7d
      Linus Torvalds authored
      Pull final drm fix from Daniel Vetter:
       "Very calm week, so either everything perfect or everyone on holidays
        already. Just one array_index_nospec patch, also for stable"
      
      * tag 'drm-fixes-2018-12-21' of git://anongit.freedesktop.org/drm/drm:
        drm/ioctl: Fix Spectre v1 vulnerabilities
      96d6ee7d
    • Vakul Garg's avatar
      Prevent overflow of sk_msg in sk_msg_clone() · 5c1e7e94
      Vakul Garg authored
      Fixed function sk_msg_clone() to prevent overflow of 'dst' while adding
      pages in scatterlist entries. The overflow of 'dst' causes crash in kernel
      tls module while doing record encryption.
      
      Crash fixed by this patch.
      
      [   78.796119] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008
      [   78.804900] Mem abort info:
      [   78.807683]   ESR = 0x96000004
      [   78.810744]   Exception class = DABT (current EL), IL = 32 bits
      [   78.816677]   SET = 0, FnV = 0
      [   78.819727]   EA = 0, S1PTW = 0
      [   78.822873] Data abort info:
      [   78.825759]   ISV = 0, ISS = 0x00000004
      [   78.829600]   CM = 0, WnR = 0
      [   78.832576] user pgtable: 4k pages, 48-bit VAs, pgdp = 00000000bf8ee311
      [   78.839195] [0000000000000008] pgd=0000000000000000
      [   78.844081] Internal error: Oops: 96000004 [#1] PREEMPT SMP
      [   78.849642] Modules linked in: tls xt_conntrack ipt_REJECT nf_reject_ipv4 ip6table_filter ip6_tables xt_CHECKSUM cpve cpufreq_conservative lm90 ina2xx crct10dif_ce
      [   78.865377] CPU: 0 PID: 6007 Comm: openssl Not tainted 4.20.0-rc6-01647-g754d5da6-dirty #107
      [   78.874149] Hardware name: LS1043A RDB Board (DT)
      [   78.878844] pstate: 60000005 (nZCv daif -PAN -UAO)
      [   78.883632] pc : scatterwalk_copychunks+0x164/0x1c8
      [   78.888500] lr : scatterwalk_copychunks+0x160/0x1c8
      [   78.893366] sp : ffff00001d04b600
      [   78.896668] x29: ffff00001d04b600 x28: ffff80006814c680
      [   78.901970] x27: 0000000000000000 x26: ffff80006c8de786
      [   78.907272] x25: ffff00001d04b760 x24: 000000000000001a
      [   78.912573] x23: 0000000000000006 x22: ffff80006814e440
      [   78.917874] x21: 0000000000000100 x20: 0000000000000000
      [   78.923175] x19: 000081ffffffffff x18: 0000000000000400
      [   78.928476] x17: 0000000000000008 x16: 0000000000000000
      [   78.933778] x15: 0000000000000100 x14: 0000000000000001
      [   78.939079] x13: 0000000000001080 x12: 0000000000000020
      [   78.944381] x11: 0000000000001080 x10: 00000000ffff0002
      [   78.949683] x9 : ffff80006814c248 x8 : 00000000ffff0000
      [   78.954985] x7 : ffff80006814c318 x6 : ffff80006c8de786
      [   78.960286] x5 : 0000000000000f80 x4 : ffff80006c8de000
      [   78.965588] x3 : 0000000000000000 x2 : 0000000000001086
      [   78.970889] x1 : ffff7e0001b74e02 x0 : 0000000000000000
      [   78.976192] Process openssl (pid: 6007, stack limit = 0x00000000291367f9)
      [   78.982968] Call trace:
      [   78.985406]  scatterwalk_copychunks+0x164/0x1c8
      [   78.989927]  skcipher_walk_next+0x28c/0x448
      [   78.994099]  skcipher_walk_done+0xfc/0x258
      [   78.998187]  gcm_encrypt+0x434/0x4c0
      [   79.001758]  tls_push_record+0x354/0xa58 [tls]
      [   79.006194]  bpf_exec_tx_verdict+0x1e4/0x3e8 [tls]
      [   79.010978]  tls_sw_sendmsg+0x650/0x780 [tls]
      [   79.015326]  inet_sendmsg+0x2c/0xf8
      [   79.018806]  sock_sendmsg+0x18/0x30
      [   79.022284]  __sys_sendto+0x104/0x138
      [   79.025935]  __arm64_sys_sendto+0x24/0x30
      [   79.029936]  el0_svc_common+0x60/0xe8
      [   79.033588]  el0_svc_handler+0x2c/0x80
      [   79.037327]  el0_svc+0x8/0xc
      [   79.040200] Code: 6b01005f 54fff788 940169b1 f9000320 (b9400801)
      [   79.046283] ---[ end trace 74db007d069c1cf7 ]---
      
      Fixes: d829e9c4 ("tls: convert to generic sk_msg interface")
      Signed-off-by: default avatarVakul Garg <vakul.garg@nxp.com>
      Acked-by: default avatarJohn Fastabend <john.fastabend@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5c1e7e94