glsdk/infoadas-kernel.git
3 years agoarm: dra7: hwmod: Enable SW supervised idle for I2C instances owned by M4 infoadas-on-psdkla3.03
Shravan Karthik [Mon, 6 Nov 2017 12:01:39 +0000 (17:31 +0530)]
arm: dra7: hwmod: Enable SW supervised idle for I2C instances owned by M4

I2C responsible for sensor init (I2C2 on J6, I2C5 on J6+, J6Eco) are
disabled from Linux. Enable software supervised idle state, which ensures hwmod
is responsible for bringing an I2C instance in or out of idle, rather than
depending on the smart-idle module

Signed-off-by: Shravan Karthik <shravan.karthik@ti.com>
3 years agoarm: dra7: powerdomain: Disable power state change for remote-cores
Shravan Karthik [Mon, 6 Nov 2017 11:51:40 +0000 (17:21 +0530)]
arm: dra7: powerdomain: Disable power state change for remote-cores

Remote-cores are responsible for changing their power state and needn't
be controlled from Linux. Set the power state to ON for all remote-cores.
This prevents the kernel from changing the state of the core if the core is
in an idle state

Signed-off-by: Shravan Karthik <shravan.karthik@ti.com>
3 years agoarm: dts: DT for LCD based display using FPD-link - Infoadas on J6-Plus
Shravan Karthik [Tue, 31 Oct 2017 06:51:13 +0000 (12:21 +0530)]
arm: dts: DT for LCD based display using FPD-link - Infoadas on J6-Plus

For early use-cases to be realized, LCD based display is needed. 1920x1080 AUO
panel is connected over FPD-link to the LCD output of the display. A board
modification is necessary on the EVM for LCD display using FPD-link, details
of which can be found at
http://processors.wiki.ti.com/index.php/File:DRA76x_FPDLink_Board_mod.png

3 years agoarm: dts: Enable HDMI on J6-Eco infoadas device-tree REL_INFOADAS_03_00_00_01
Shravan Karthik [Thu, 12 Oct 2017 09:02:31 +0000 (14:32 +0530)]
arm: dts: Enable HDMI on J6-Eco infoadas device-tree

J6-Eco can support both HDMI and LCD display, thus it needn't be disabled from
the device-tree

3 years agoarm: dts: Enable HDMI for J6-Entry
Shravan Karthik [Thu, 12 Oct 2017 06:32:25 +0000 (12:02 +0530)]
arm: dts: Enable HDMI for J6-Entry

Display for J6-Entry is on HDMI as LCD and LVDS video input can't be supported simultaneously

3 years agoarm: dts: infoadas: Remove QSPI from Linux DT
Nikhil Devshatwar [Tue, 10 Oct 2017 14:31:39 +0000 (20:01 +0530)]
arm: dts: infoadas: Remove QSPI from Linux DT

QSPI is being used by Vision SDK. Remove this from all
Linux DTBs so that both drivers do not clash.

Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
3 years agoconfig_fragments: Make remoteproc built in, enable userspace firmware loading
Shravan Karthik [Fri, 6 Oct 2017 05:23:00 +0000 (10:53 +0530)]
config_fragments: Make remoteproc built in, enable userspace firmware loading

Keeping remoteproc module builtin allows us to have better control
over firmware loading through sysfs.
This actually optimizes overall time to insert modules and load firmwares

Signed-off-by: Shravan Karthik <shravan.karthik@ti.com>
3 years agoarm: dts: infoadas: Late attach remoteprocs
Nikhil Devshatwar [Tue, 3 Oct 2017 13:01:32 +0000 (18:31 +0530)]
arm: dts: infoadas: Late attach remoteprocs

When u-boot loads the remote procs, Linux should not load them
again. It should not even reset the remote procs and timer devices.

Add late attach properties to all the remote procs and timer nodes
upon which, driver only attaches to the core and skips the
initialization / reset logic

Also, add the reserved_mem entry for the page tables being used
by the remote cores. These page tables are setup by u-boot.
Linux should not touch this portion of memory.

Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
3 years agoarm: mach-omap2: Remove edma related nodes from hwmod init sequence
Shravan Karthik [Mon, 31 Jul 2017 04:54:20 +0000 (10:24 +0530)]
arm: mach-omap2: Remove edma related nodes from hwmod init sequence

When doing late attach, kernel should not reset EDMA
EDMA is setup by M4 and thus omap_hwmod needn't perform reset/setup.
Nodes 'dra7xx_l3_main_1__tpcc', 'dra7xx_l3_main_1__tptc0' and
'dra7xx_l3_main_1__tptc1' are thus disabled.

Note that this breaks kernel boot if not late attached.

Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
3 years agodra7xx: Kernel Optimizations for early-use-case enablement
Venkateswara Rao Mandela [Fri, 8 May 2015 10:27:22 +0000 (15:57 +0530)]
dra7xx: Kernel Optimizations for early-use-case enablement

dra7xx: add functions for timestamping execution
Add two functions for timestamping various points in the
execution of kernel.
1. read_fast_counter() - This function reads the 32 KHz counter present
on the dra7xx SOC. This counter starts counting from 0 from the PORZ of
the SOC and provides an indication of the time elapsed since powering
the device on. One tick of the counter is equal to 30.5 us.
2. ARM_CCNT_Read() - This funtions reads the counter present in the
Performance Monitor Unit(PMU) in the A15 core. The counter is configured
is using the function ARM_CCNT_Reset(). The PMU counter is configured to
count at a frequency of (1/64) of the A15 clock. This provides a higher
resolution counter compared to the 32 KHz counter.

config_fragments: choose lzo as the compression format
lzo offers the best tradeoff between decompression time and
image size.

dra7xx: timestamp various points in execution
This commit timestamps various points in execution of kernel. These
functions were found to consume major portion of the initialization time
in the kernel.
The approach used to execute benchmark and report execution time can be
extended to other portions of the initialization sequence if necessary.
1. start_time - The time at which the execution reaches the function
init/main.c:start_kernel(). This time along with the time at which the
boot loader started the kernel provides an indication of the amount of
the time spent in decompressing the kernel.
2. mm_init_dur - The time taken to setup the memory management
subsystem in init/main.c:mm_init().
3. omaphwmod_dur - Time spent in the
arch/arm/mach-omap2/omap_hwmod.c:omap_hwmod_setup_all() function call.
4. init_call_time - Time spent in the init calls. The function concerned
in init/main.c:do_initcalls().
5. rest_init_time - Time spent in the init/main.c:rest_init() function.
6. cust_machine_dur - Time spent in the
arch/arm/kernel/setup.c:customize_machine() function call.

dra7xx: timestamp various points in execution
Timestamp various points in execution of kernel. These
functions were found to consume major portion of the initialization time
in the kernel.
The approach used to execute benchmark and report execution time can be
extended to other portions of the initialization sequence if necessary.
1. start_time - The time at which the execution reaches the function
init/main.c:start_kernel(). This time along with the time at which the
boot loader started the kernel provides an indication of the amount of
the time spent in decompressing the kernel.
2. mm_init_dur - The time taken to setup the memory management
subsystem in init/main.c:mm_init().
3. omaphwmod_dur - Time spent in the
arch/arm/mach-omap2/omap_hwmod.c:omap_hwmod_setup_all() function call.
4. init_call_time - Time spent in the init calls. The function concerned
in init/main.c:do_initcalls().
5. rest_init_time - Time spent in the init/main.c:rest_init() function.
6. cust_machine_dur - Time spent in the
arch/arm/kernel/setup.c:customize_machine() function call.

arch: arm: omap2: optimize hwmod lookup during init
Instead of searching through the device tree for nodes
with "ti,hwmods" property for every hwmod,
1. traverse the tree once and build a list.
2. search in the list for the hwmod.
3. In case the list is empty, fall back to the original
search mechanism.
This approach saves ~100 ms of initialization time on a DRA7xx
processor running at 1 GHz.
TODO: Free the allocated list
TODO: Check if the list can be allocated even earlier.

ti_fragments: add configuration options to reduce boot time.
This fragment converts much of the unused functionality into
modules saving ~1000 ms from the kernel initialization time.

dra7: dts: disable mmc4 to save on boot time

Signed-off-by: Venkateswara Rao Mandela <venkat.mandela@ti.com>
Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
3 years agoarm: dts: dra7xx: infoadas devicetree based on vision board
Nikhil Devshatwar [Thu, 19 Jan 2017 08:22:56 +0000 (13:52 +0530)]
arm: dts: dra7xx: infoadas devicetree based on vision board

This device tree is needed for informational ADAS use cases.
In that, all instances of VIP, VPE, CAL are managed by remote core.
So linux cannot use them.

Also add the CMA regions for the IPU and DSPs used by Vision SDK.
These values are derived from "mem_segment_definition_1024mb_linux.xs"

Also, I2C camera instance is controlled by M4, remove from Linux DTS

Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
3 years agoarm: dts: dra7: Re-route PCF interrupts
Nikhil Devshatwar [Wed, 17 Feb 2016 18:19:23 +0000 (23:49 +0530)]
arm: dts: dra7: Re-route PCF interrupts

For DRA72x EVM, the PCF irq gets fired as soon as the driver requests for irq handler.
This causes a NULL pointer crash and backtrace in printed.

Curerntly the IRQ is not used for anything.
Avoid this by removing the inteerupt related properties from PCF node.

Use a dummy-gpio line for tpd12s015 which provide hotplug support instead of
pcf_hdmi as the latter is disabled from linux.
Currently supplying pcf_lcd as the dummy-gpio line for tpd12s015.

Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
3 years agoarm: dts: dra72: Enable ethernet without board muxes
Nikhil Devshatwar [Sat, 21 Jan 2017 05:01:16 +0000 (10:31 +0530)]
arm: dts: dra72: Enable ethernet without board muxes

Select the board mux to enable vin1b instance instead of ethernet
This allows to use one instance of ethernet and camera simultaneously.

Remove board mux dependencies on i2c5 PCF expanders.
This will be setup by u-boot

Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
3 years agoarm: dts: dra7xx: Remove JAMR3 board.
Venkateswara Rao Mandela [Tue, 15 Sep 2015 06:03:29 +0000 (11:33 +0530)]
arm: dts: dra7xx: Remove JAMR3 board.

JAMR3 board cannot be used along side the Vision daughter board.
Removing the JAMR3 dts fragment from the device tree reduces kernel
initialization time by avoiding probing for absent peripherals.

Signed-off-by: Venkateswara Rao Mandela <venkat.mandela@ti.com>
3 years agodma-buf: vmemexp: Exporter driver for virtual memory
Nikhil Devshatwar [Tue, 27 Sep 2016 08:58:07 +0000 (14:28 +0530)]
dma-buf: vmemexp: Exporter driver for virtual memory

Add new virtual memory exporter driver
* Add required Documentation, Makefile and Kconfig options
* Register a simple character driver
* Implement ioctls to export a virtual memory segment
* Implement basic dma_buf operations
* Add multi context support
TODO: Export ioctl header file for publishing to uapi

Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
3 years agoRevert "rpmsg: return error from create_channel if endpoint creation fails" processor-sdk-linux-automotive-3.03.00.03
Venkateswara Rao Mandela [Tue, 29 Aug 2017 07:08:33 +0000 (12:38 +0530)]
Revert "rpmsg: return error from create_channel if endpoint creation fails"

This reverts

'commit f9c6bafed9ee ("rpmsg: return error from create_channel if endpoint creation fails")'

Reason: remotecore loading exhibited failures when
remotecore loading is built as a module.

Reverting for now, to be investigated further for rootcause and fix.

Change-Id: I23c82f8a7158b6e13260e398c0981f144a346999
Signed-off-by: Venkateswara Rao Mandela <venkat.mandela@ti.com>
[minor update to commitmsg]
Signed-off-by: Praneeth Bajjuro <praneeth@ti.com>
3 years agoMerge branch 'p-ti-lsk-linux-4.4.y' into p-ti-lsk-linux-4.4.y-next processor-sdk-linux-automotive-3.03.00.01
Praneeth Bajjuri [Mon, 28 Aug 2017 06:01:02 +0000 (01:01 -0500)]
Merge branch 'p-ti-lsk-linux-4.4.y' into p-ti-lsk-linux-4.4.y-next

* p-ti-lsk-linux-4.4.y: (35 commits)
  ARM: dts: dra7: Remove deprecated PCI compatible string
  ARM: dts: dra76-evm: Enable x2 PCIe lanes
  ARM: dts: DRA72x: Use PCIe compatible specific to dra72
  ARM: dts: DRA74x: Use PCIe compatible specific to dra74
  ARM: dts: dra7: Add properties to enable PCIe x2 lane mode
  PCI: dwc: pci-dra7xx: Enable x2 mode support
  PCI: dwc: dra7xx: Add support for SoC specific compatible strings
  dt-bindings: PCI: dra7xx: Add properties to enable x2 lane in dra7
  dt-bindings: PCI: dra7xx: Add SoC specific compatible strings
  ARM: dts: dra7-evm: Move pcie RC node to common file
  ARM: dts: dra76-evm: add higher speed MMC/SD modes
  Linux 4.4.84
  usb: qmi_wwan: add D-Link DWM-222 device ID
  usb: optimize acpi companion search for usb port devices
  perf/x86: Fix LBR related crashes on Intel Atom
  pids: make task_tgid_nr_ns() safe
  Sanitize 'move_pages()' permission checks
  irqchip/atmel-aic: Fix unbalanced refcount in aic_common_rtc_irq_fixup()
  irqchip/atmel-aic: Fix unbalanced of_node_put() in aic_common_irq_fixup()
  x86/asm/64: Clear AC on NMI entries
  ...

Change-Id: If3cd3c2bf1937346aecf0e3d6ec650e324744b1b
Signed-off-by: Praneeth Bajjuri <praneeth@ti.com>
3 years agoMerge branch 'ti-lsk-linux-4.4.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel...
Praneeth Bajjuri [Mon, 28 Aug 2017 05:55:21 +0000 (00:55 -0500)]
Merge branch 'ti-lsk-linux-4.4.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel into p-ti-lsk-linux-4.4.y

* 'ti-lsk-linux-4.4.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel: (35 commits)
  ARM: dts: dra7: Remove deprecated PCI compatible string
  ARM: dts: dra76-evm: Enable x2 PCIe lanes
  ARM: dts: DRA72x: Use PCIe compatible specific to dra72
  ARM: dts: DRA74x: Use PCIe compatible specific to dra74
  ARM: dts: dra7: Add properties to enable PCIe x2 lane mode
  PCI: dwc: pci-dra7xx: Enable x2 mode support
  PCI: dwc: dra7xx: Add support for SoC specific compatible strings
  dt-bindings: PCI: dra7xx: Add properties to enable x2 lane in dra7
  dt-bindings: PCI: dra7xx: Add SoC specific compatible strings
  ARM: dts: dra7-evm: Move pcie RC node to common file
  ARM: dts: dra76-evm: add higher speed MMC/SD modes
  Linux 4.4.84
  usb: qmi_wwan: add D-Link DWM-222 device ID
  usb: optimize acpi companion search for usb port devices
  perf/x86: Fix LBR related crashes on Intel Atom
  pids: make task_tgid_nr_ns() safe
  Sanitize 'move_pages()' permission checks
  irqchip/atmel-aic: Fix unbalanced refcount in aic_common_rtc_irq_fixup()
  irqchip/atmel-aic: Fix unbalanced of_node_put() in aic_common_irq_fixup()
  x86/asm/64: Clear AC on NMI entries
  ...

Change-Id: Ifef5bda04bb17d2c4c96e509f1134c5f1eeab611
Signed-off-by: Praneeth Bajjuri <praneeth@ti.com>
3 years agoMerge branch 'ti-linux-4.4.y' of git.ti.com:ti-linux-kernel/ti-linux-kernel into...
LCPD Auto Merger [Fri, 25 Aug 2017 19:36:24 +0000 (14:36 -0500)]
Merge branch 'ti-linux-4.4.y' of git.ti.com:ti-linux-kernel/ti-linux-kernel into ti-lsk-linux-4.4.y

TI-Feature: ti_linux_base_lsk
TI-Tree: git@git.ti.com:ti-linux-kernel/ti-linux-kernel.git
TI-Branch: ti-linux-4.4.y

* 'ti-linux-4.4.y' of git.ti.com:ti-linux-kernel/ti-linux-kernel:
  ARM: dts: dra7: Remove deprecated PCI compatible string
  ARM: dts: dra76-evm: Enable x2 PCIe lanes
  ARM: dts: DRA72x: Use PCIe compatible specific to dra72
  ARM: dts: DRA74x: Use PCIe compatible specific to dra74
  ARM: dts: dra7: Add properties to enable PCIe x2 lane mode
  PCI: dwc: pci-dra7xx: Enable x2 mode support
  PCI: dwc: dra7xx: Add support for SoC specific compatible strings
  dt-bindings: PCI: dra7xx: Add properties to enable x2 lane in dra7
  dt-bindings: PCI: dra7xx: Add SoC specific compatible strings
  ARM: dts: dra7-evm: Move pcie RC node to common file
  ARM: dts: dra76-evm: add higher speed MMC/SD modes
  ARM: dts: dra76-evm: shift to using common IOdelay data
  ARM: dts: dra76x: create a common file with MMC/SD IOdelay data
  ARM: DRA722: Add support for DRA71x Silicon Rev 2.1

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
3 years agoMerge branch 'maint-ti-linux-4.4.y' of git://git.ti.com/ti-linux-kernel/ti-linux...
Dan Murphy [Fri, 25 Aug 2017 19:17:19 +0000 (14:17 -0500)]
Merge branch 'maint-ti-linux-4.4.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel-maint into ti-linux-4.4.y

TI-Feature: ti-linux-4.4-maint
TI-Tree: git://git.ti.com/ti-linux-kernel/ti-linux-kernel-maint.git
TI-Branch: maint-ti-linux-4.4.y

* 'maint-ti-linux-4.4.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel-maint:
  ARM: dts: dra7: Remove deprecated PCI compatible string
  ARM: dts: dra76-evm: Enable x2 PCIe lanes
  ARM: dts: DRA72x: Use PCIe compatible specific to dra72
  ARM: dts: DRA74x: Use PCIe compatible specific to dra74
  ARM: dts: dra7: Add properties to enable PCIe x2 lane mode
  PCI: dwc: pci-dra7xx: Enable x2 mode support
  PCI: dwc: dra7xx: Add support for SoC specific compatible strings
  dt-bindings: PCI: dra7xx: Add properties to enable x2 lane in dra7
  dt-bindings: PCI: dra7xx: Add SoC specific compatible strings
  ARM: dts: dra7-evm: Move pcie RC node to common file
  ARM: dts: dra76-evm: add higher speed MMC/SD modes
  ARM: dts: dra76-evm: shift to using common IOdelay data
  ARM: dts: dra76x: create a common file with MMC/SD IOdelay data
  ARM: DRA722: Add support for DRA71x Silicon Rev 2.1

Signed-off-by: Dan Murphy <dmurphy@ti.com>
3 years agoMerge branch 'ti-linux-4.4.y' of git.ti.com:ti-linux-kernel/ti-linux-kernel into...
LCPD Auto Merger [Fri, 25 Aug 2017 18:32:45 +0000 (13:32 -0500)]
Merge branch 'ti-linux-4.4.y' of git.ti.com:ti-linux-kernel/ti-linux-kernel into ti-lsk-linux-4.4.y

TI-Feature: ti_linux_base_lsk
TI-Tree: git@git.ti.com:ti-linux-kernel/ti-linux-kernel.git
TI-Branch: ti-linux-4.4.y

* 'ti-linux-4.4.y' of git.ti.com:ti-linux-kernel/ti-linux-kernel: (21 commits)
  Linux 4.4.84
  usb: qmi_wwan: add D-Link DWM-222 device ID
  usb: optimize acpi companion search for usb port devices
  perf/x86: Fix LBR related crashes on Intel Atom
  pids: make task_tgid_nr_ns() safe
  Sanitize 'move_pages()' permission checks
  irqchip/atmel-aic: Fix unbalanced refcount in aic_common_rtc_irq_fixup()
  irqchip/atmel-aic: Fix unbalanced of_node_put() in aic_common_irq_fixup()
  x86/asm/64: Clear AC on NMI entries
  xen: fix bio vec merging
  mm: revert x86_64 and arm64 ELF_ET_DYN_BASE base changes
  mm/mempolicy: fix use after free when calling get_mempolicy
  ALSA: usb-audio: Add mute TLV for playback volumes on C-Media devices
  ALSA: usb-audio: Apply sample rate quirk to Sennheiser headset
  ALSA: seq: 2nd attempt at fixing race creating a queue
  Input: elan_i2c - Add antoher Lenovo ACPI ID for upcoming Lenovo NB
  Input: elan_i2c - add ELAN0608 to the ACPI table
  crypto: x86/sha1 - Fix reads beyond the number of blocks passed
  parisc: pci memory bar assignment fails with 64bit kernels on dino/cujo
  audit: Fix use after free in audit_remove_watch_rule()
  ...

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
3 years agoMerge tag 'v4.4.84' of http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux...
LCPD Auto Merger [Fri, 25 Aug 2017 17:32:56 +0000 (12:32 -0500)]
Merge tag 'v4.4.84' of git./linux/kernel/git/stable/linux-stable into ti-linux-4.4.y

This is the 4.4.84 stable release

* tag 'v4.4.84' of http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable: (21 commits)
  Linux 4.4.84
  usb: qmi_wwan: add D-Link DWM-222 device ID
  usb: optimize acpi companion search for usb port devices
  perf/x86: Fix LBR related crashes on Intel Atom
  pids: make task_tgid_nr_ns() safe
  Sanitize 'move_pages()' permission checks
  irqchip/atmel-aic: Fix unbalanced refcount in aic_common_rtc_irq_fixup()
  irqchip/atmel-aic: Fix unbalanced of_node_put() in aic_common_irq_fixup()
  x86/asm/64: Clear AC on NMI entries
  xen: fix bio vec merging
  mm: revert x86_64 and arm64 ELF_ET_DYN_BASE base changes
  mm/mempolicy: fix use after free when calling get_mempolicy
  ALSA: usb-audio: Add mute TLV for playback volumes on C-Media devices
  ALSA: usb-audio: Apply sample rate quirk to Sennheiser headset
  ALSA: seq: 2nd attempt at fixing race creating a queue
  Input: elan_i2c - Add antoher Lenovo ACPI ID for upcoming Lenovo NB
  Input: elan_i2c - add ELAN0608 to the ACPI table
  crypto: x86/sha1 - Fix reads beyond the number of blocks passed
  parisc: pci memory bar assignment fails with 64bit kernels on dino/cujo
  audit: Fix use after free in audit_remove_watch_rule()
  ...

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
3 years agoARM: dts: dra7: Remove deprecated PCI compatible string
Kishon Vijay Abraham I [Thu, 24 Aug 2017 14:12:54 +0000 (19:42 +0530)]
ARM: dts: dra7: Remove deprecated PCI compatible string

Since SoC specific compatible strings are used for PCIe in
dra74x.dtsi and dra72x.dtsi, remove the compatible property
from dra7.dtsi which uses the deprecated compatible string.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
3 years agoARM: dts: dra76-evm: Enable x2 PCIe lanes
Kishon Vijay Abraham I [Thu, 24 Aug 2017 14:12:53 +0000 (19:42 +0530)]
ARM: dts: dra76-evm: Enable x2 PCIe lanes

DRA76 EVM has a 4-lane PCIe connector and DRA76 can support x2 lanes.
Enable both the PCIe lanes here.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
3 years agoARM: dts: DRA72x: Use PCIe compatible specific to dra72
Kishon Vijay Abraham I [Thu, 24 Aug 2017 14:12:52 +0000 (19:42 +0530)]
ARM: dts: DRA72x: Use PCIe compatible specific to dra72

Use dra72 specific compatible string for PCIe.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
3 years agoARM: dts: DRA74x: Use PCIe compatible specific to dra74
Kishon Vijay Abraham I [Thu, 24 Aug 2017 14:12:51 +0000 (19:42 +0530)]
ARM: dts: DRA74x: Use PCIe compatible specific to dra74

Use dra74 specific compatible string for PCIe.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
3 years agoARM: dts: dra7: Add properties to enable PCIe x2 lane mode
Kishon Vijay Abraham I [Thu, 24 Aug 2017 14:12:50 +0000 (19:42 +0530)]
ARM: dts: dra7: Add properties to enable PCIe x2 lane mode

syscon-lane-sel and syscon-lane-conf properties specific to enable
PCIe x2 lane mode are added here.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
3 years agoPCI: dwc: pci-dra7xx: Enable x2 mode support
Kishon Vijay Abraham I [Thu, 24 Aug 2017 14:12:49 +0000 (19:42 +0530)]
PCI: dwc: pci-dra7xx: Enable x2 mode support

Perform syscon configurations to get x2 mode to working in dra74x
(and dra76x).

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
3 years agoPCI: dwc: dra7xx: Add support for SoC specific compatible strings
Kishon Vijay Abraham I [Thu, 24 Aug 2017 22:00:20 +0000 (00:00 +0200)]
PCI: dwc: dra7xx: Add support for SoC specific compatible strings

dra74x/dra76x and dra72x has separate compatible strings. Add support
for these compatible strings in pci-dra7xx driver.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
3 years agodt-bindings: PCI: dra7xx: Add properties to enable x2 lane in dra7
Kishon Vijay Abraham I [Thu, 24 Aug 2017 14:12:47 +0000 (19:42 +0530)]
dt-bindings: PCI: dra7xx: Add properties to enable x2 lane in dra7

Add syscon properties required for configuring PCIe in x2 lane mode.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
3 years agodt-bindings: PCI: dra7xx: Add SoC specific compatible strings
Kishon Vijay Abraham I [Thu, 24 Aug 2017 14:12:46 +0000 (19:42 +0530)]
dt-bindings: PCI: dra7xx: Add SoC specific compatible strings

Add new compatible strings for dra74x SoC (also used by dra76x) and
dra72x. This can be used to perform SoC specific configuration
(like configuring PCIe in x2 lane mode).

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
3 years agoARM: dts: dra7-evm: Move pcie RC node to common file
Ravikumar Kattekola [Thu, 24 Aug 2017 14:12:45 +0000 (19:42 +0530)]
ARM: dts: dra7-evm: Move pcie RC node to common file

Move the pcie_rc node to common file so that it can be
used by dra76-evm as well.

Signed-off-by: Ravikumar Kattekola <rk@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
3 years agoARM: dts: dra76-evm: add higher speed MMC/SD modes
Sekhar Nori [Thu, 24 Aug 2017 13:37:45 +0000 (15:37 +0200)]
ARM: dts: dra76-evm: add higher speed MMC/SD modes

The SD card interface on DRA76x EVM can support
high speed SD cards. The eMMC onboard can support
upto HS200 mode.

Enable support for these higher speed modes in the
device-tree file.

Tested-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
3 years agoLinux 4.4.84
Greg Kroah-Hartman [Fri, 25 Aug 2017 00:02:58 +0000 (17:02 -0700)]
Linux 4.4.84

3 years agousb: qmi_wwan: add D-Link DWM-222 device ID
Hector Martin [Tue, 1 Aug 2017 15:45:44 +0000 (00:45 +0900)]
usb: qmi_wwan: add D-Link DWM-222 device ID

commit bed9ff165960921303a100228585f2d1691b42eb upstream.

Signed-off-by: Hector Martin <marcan@marcan.st>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agousb: optimize acpi companion search for usb port devices
Mathias Nyman [Fri, 2 Jun 2017 13:36:26 +0000 (16:36 +0300)]
usb: optimize acpi companion search for usb port devices

commit ed18c5fa945768a9bec994e786edbbbc7695acf6 upstream.

This optimization significantly reduces xhci driver load time.

In ACPI tables the acpi companion port devices are children of
the hub device. The port devices are identified by their port number
returned by the ACPI _ADR method.
_ADR 0 is reserved for the root hub device.

The current implementation to find a acpi companion port device
loops through all acpi port devices under that parent hub, evaluating
their _ADR method each time a new port device is added.

for a xHC controller with 25 ports under its roothub it
will end up invoking ACPI bytecode 625 times before all ports
are ready, making it really slow.

The _ADR values are already read and cached earler. So instead of
running the bytecode again we can check the cached _ADR value first,
and then fall back to the old way.

As one of the more significant changes, the xhci load time on
Intel kabylake reduced by 70%, (28ms) from
initcall xhci_pci_init+0x0/0x49 returned 0 after 39537 usecs
to
initcall xhci_pci_init+0x0/0x49 returned 0 after 11270 usecs

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoperf/x86: Fix LBR related crashes on Intel Atom
Stephane Eranian [Thu, 3 Dec 2015 22:33:17 +0000 (23:33 +0100)]
perf/x86: Fix LBR related crashes on Intel Atom

commit 6fc2e83077b05a061afe9b24f2fdff7a0434eb67 upstream.

This patches fixes the LBR kernel crashes on Intel Atom.

The kernel was assuming that if the CPU supports 64-bit format
LBR, then it has an LBR_SELECT MSR. Atom uses 64-bit LBR format
but does not have LBR_SELECT. That was causing NULL pointer
dereferences in a couple of places.

Signed-off-by: Stephane Eranian <eranian@google.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Cc: kan.liang@intel.com
Fixes: 96f3eda67fcf ("perf/x86/intel: Fix static checker warning in lbr enable")
Link: http://lkml.kernel.org/r/1449182000-31524-2-git-send-email-eranian@google.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Denys Zagorui <dzagorui@cisco.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agopids: make task_tgid_nr_ns() safe
Oleg Nesterov [Mon, 21 Aug 2017 15:35:02 +0000 (17:35 +0200)]
pids: make task_tgid_nr_ns() safe

commit dd1c1f2f2028a7b851f701fc6a8ebe39dcb95e7c upstream.

This was reported many times, and this was even mentioned in commit
52ee2dfdd4f5 ("pids: refactor vnr/nr_ns helpers to make them safe") but
somehow nobody bothered to fix the obvious problem: task_tgid_nr_ns() is
not safe because task->group_leader points to nowhere after the exiting
task passes exit_notify(), rcu_read_lock() can not help.

We really need to change __unhash_process() to nullify group_leader,
parent, and real_parent, but this needs some cleanups.  Until then we
can turn task_tgid_nr_ns() into another user of __task_pid_nr_ns() and
fix the problem.

Reported-by: Troy Kensinger <tkensinger@google.com>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoSanitize 'move_pages()' permission checks
Linus Torvalds [Sun, 20 Aug 2017 20:26:27 +0000 (13:26 -0700)]
Sanitize 'move_pages()' permission checks

commit 197e7e521384a23b9e585178f3f11c9fa08274b9 upstream.

The 'move_paghes()' system call was introduced long long ago with the
same permission checks as for sending a signal (except using
CAP_SYS_NICE instead of CAP_SYS_KILL for the overriding capability).

That turns out to not be a great choice - while the system call really
only moves physical page allocations around (and you need other
capabilities to do a lot of it), you can check the return value to map
out some the virtual address choices and defeat ASLR of a binary that
still shares your uid.

So change the access checks to the more common 'ptrace_may_access()'
model instead.

This tightens the access checks for the uid, and also effectively
changes the CAP_SYS_NICE check to CAP_SYS_PTRACE, but it's unlikely that
anybody really _uses_ this legacy system call any more (we hav ebetter
NUMA placement models these days), so I expect nobody to notice.

Famous last words.

Reported-by: Otto Ebeling <otto.ebeling@iki.fi>
Acked-by: Eric W. Biederman <ebiederm@xmission.com>
Cc: Willy Tarreau <w@1wt.eu>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoirqchip/atmel-aic: Fix unbalanced refcount in aic_common_rtc_irq_fixup()
Boris Brezillon [Tue, 4 Jul 2017 09:10:40 +0000 (11:10 +0200)]
irqchip/atmel-aic: Fix unbalanced refcount in aic_common_rtc_irq_fixup()

commit 277867ade8262583f4280cadbe90e0031a3706a7 upstream.

of_find_compatible_node() is calling of_node_put() on its first argument
thus leading to an unbalanced of_node_get/put() issue if the node has not
been retained before that.

Instead of passing the root node, pass NULL, which does exactly the same:
iterate over all DT nodes, starting from the root node.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Reported-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Fixes: 3d61467f9bab ("irqchip: atmel-aic: Implement RTC irq fixup")
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoirqchip/atmel-aic: Fix unbalanced of_node_put() in aic_common_irq_fixup()
Boris Brezillon [Tue, 4 Jul 2017 09:10:39 +0000 (11:10 +0200)]
irqchip/atmel-aic: Fix unbalanced of_node_put() in aic_common_irq_fixup()

commit 469bcef53c546bb792aa66303933272991b7831d upstream.

aic_common_irq_fixup() is calling twice of_node_put() on the same node
thus leading to an unbalanced refcount on the root node.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Reported-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Fixes: b2f579b58e93 ("irqchip: atmel-aic: Add irq fixup infrastructure")
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agox86/asm/64: Clear AC on NMI entries
Andy Lutomirski [Tue, 8 Aug 2017 02:43:13 +0000 (19:43 -0700)]
x86/asm/64: Clear AC on NMI entries

commit e93c17301ac55321fc18e0f8316e924e58a83c8c upstream.

This closes a hole in our SMAP implementation.

This patch comes from grsecurity. Good catch!

Signed-off-by: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/314cc9f294e8f14ed85485727556ad4f15bb1659.1502159503.git.luto@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoxen: fix bio vec merging
Roger Pau Monne [Tue, 18 Jul 2017 14:01:00 +0000 (15:01 +0100)]
xen: fix bio vec merging

commit 462cdace790ac2ed6aad1b19c9c0af0143b6aab0 upstream.

The current test for bio vec merging is not fully accurate and can be
tricked into merging bios when certain grant combinations are used.
The result of these malicious bio merges is a bio that extends past
the memory page used by any of the originating bios.

Take into account the following scenario, where a guest creates two
grant references that point to the same mfn, ie: grant 1 -> mfn A,
grant 2 -> mfn A.

These references are then used in a PV block request, and mapped by
the backend domain, thus obtaining two different pfns that point to
the same mfn, pfn B -> mfn A, pfn C -> mfn A.

If those grants happen to be used in two consecutive sectors of a disk
IO operation becoming two different bios in the backend domain, the
checks in xen_biovec_phys_mergeable will succeed, because bfn1 == bfn2
(they both point to the same mfn). However due to the bio merging,
the backend domain will end up with a bio that expands past mfn A into
mfn A + 1.

Fix this by making sure the check in xen_biovec_phys_mergeable takes
into account the offset and the length of the bio, this basically
replicates whats done in __BIOVEC_PHYS_MERGEABLE using mfns (bus
addresses). While there also remove the usage of
__BIOVEC_PHYS_MERGEABLE, since that's already checked by the callers
of xen_biovec_phys_mergeable.

Reported-by: "Jan H. Schönherr" <jschoenh@amazon.de>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agomm: revert x86_64 and arm64 ELF_ET_DYN_BASE base changes
Kees Cook [Fri, 18 Aug 2017 22:16:31 +0000 (15:16 -0700)]
mm: revert x86_64 and arm64 ELF_ET_DYN_BASE base changes

commit c715b72c1ba406f133217b509044c38d8e714a37 upstream.

Moving the x86_64 and arm64 PIE base from 0x555555554000 to 0x000100000000
broke AddressSanitizer.  This is a partial revert of:

  eab09532d400 ("binfmt_elf: use ELF_ET_DYN_BASE only for PIE")
  02445990a96e ("arm64: move ELF_ET_DYN_BASE to 4GB / 4MB")

The AddressSanitizer tool has hard-coded expectations about where
executable mappings are loaded.

The motivation for changing the PIE base in the above commits was to
avoid the Stack-Clash CVEs that allowed executable mappings to get too
close to heap and stack.  This was mainly a problem on 32-bit, but the
64-bit bases were moved too, in an effort to proactively protect those
systems (proofs of concept do exist that show 64-bit collisions, but
other recent changes to fix stack accounting and setuid behaviors will
minimize the impact).

The new 32-bit PIE base is fine for ASan (since it matches the ET_EXEC
base), so only the 64-bit PIE base needs to be reverted to let x86 and
arm64 ASan binaries run again.  Future changes to the 64-bit PIE base on
these architectures can be made optional once a more dynamic method for
dealing with AddressSanitizer is found.  (e.g.  always loading PIE into
the mmap region for marked binaries.)

Link: http://lkml.kernel.org/r/20170807201542.GA21271@beast
Fixes: eab09532d400 ("binfmt_elf: use ELF_ET_DYN_BASE only for PIE")
Fixes: 02445990a96e ("arm64: move ELF_ET_DYN_BASE to 4GB / 4MB")
Signed-off-by: Kees Cook <keescook@chromium.org>
Reported-by: Kostya Serebryany <kcc@google.com>
Acked-by: Will Deacon <will.deacon@arm.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agomm/mempolicy: fix use after free when calling get_mempolicy
zhong jiang [Fri, 18 Aug 2017 22:16:24 +0000 (15:16 -0700)]
mm/mempolicy: fix use after free when calling get_mempolicy

commit 73223e4e2e3867ebf033a5a8eb2e5df0158ccc99 upstream.

I hit a use after free issue when executing trinity and repoduced it
with KASAN enabled.  The related call trace is as follows.

  BUG: KASan: use after free in SyS_get_mempolicy+0x3c8/0x960 at addr ffff8801f582d766
  Read of size 2 by task syz-executor1/798

  INFO: Allocated in mpol_new.part.2+0x74/0x160 age=3 cpu=1 pid=799
     __slab_alloc+0x768/0x970
     kmem_cache_alloc+0x2e7/0x450
     mpol_new.part.2+0x74/0x160
     mpol_new+0x66/0x80
     SyS_mbind+0x267/0x9f0
     system_call_fastpath+0x16/0x1b
  INFO: Freed in __mpol_put+0x2b/0x40 age=4 cpu=1 pid=799
     __slab_free+0x495/0x8e0
     kmem_cache_free+0x2f3/0x4c0
     __mpol_put+0x2b/0x40
     SyS_mbind+0x383/0x9f0
     system_call_fastpath+0x16/0x1b
  INFO: Slab 0xffffea0009cb8dc0 objects=23 used=8 fp=0xffff8801f582de40 flags=0x200000000004080
  INFO: Object 0xffff8801f582d760 @offset=5984 fp=0xffff8801f582d600

  Bytes b4 ffff8801f582d750: ae 01 ff ff 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a  ........ZZZZZZZZ
  Object ffff8801f582d760: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
  Object ffff8801f582d770: 6b 6b 6b 6b 6b 6b 6b a5                          kkkkkkk.
  Redzone ffff8801f582d778: bb bb bb bb bb bb bb bb                          ........
  Padding ffff8801f582d8b8: 5a 5a 5a 5a 5a 5a 5a 5a                          ZZZZZZZZ
  Memory state around the buggy address:
  ffff8801f582d600: fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc fc
  ffff8801f582d680: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
  >ffff8801f582d700: fc fc fc fc fc fc fc fc fc fc fc fc fb fb fb fc

!shared memory policy is not protected against parallel removal by other
thread which is normally protected by the mmap_sem.  do_get_mempolicy,
however, drops the lock midway while we can still access it later.

Early premature up_read is a historical artifact from times when
put_user was called in this path see https://lwn.net/Articles/124754/
but that is gone since 8bccd85ffbaf ("[PATCH] Implement sys_* do_*
layering in the memory policy layer.").  but when we have the the
current mempolicy ref count model.  The issue was introduced
accordingly.

Fix the issue by removing the premature release.

Link: http://lkml.kernel.org/r/1502950924-27521-1-git-send-email-zhongjiang@huawei.com
Signed-off-by: zhong jiang <zhongjiang@huawei.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: David Rientjes <rientjes@google.com>
Cc: Mel Gorman <mgorman@techsingularity.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoALSA: usb-audio: Add mute TLV for playback volumes on C-Media devices
Takashi Iwai [Wed, 16 Aug 2017 12:18:37 +0000 (14:18 +0200)]
ALSA: usb-audio: Add mute TLV for playback volumes on C-Media devices

commit 0f174b3525a43bd51f9397394763925e0ebe7bc7 upstream.

C-Media devices (at least some models) mute the playback stream when
volumes are set to the minimum value.  But this isn't informed via TLV
and the user-space, typically PulseAudio, gets confused as if it's
still played in a low volume.

This patch adds the new flag, min_mute, to struct usb_mixer_elem_info
for indicating that the mixer element is with the minimum-mute volume.
This flag is set for known C-Media devices in
snd_usb_mixer_fu_apply_quirk() in turn.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=196669
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoALSA: usb-audio: Apply sample rate quirk to Sennheiser headset
Takashi Iwai [Mon, 14 Aug 2017 12:35:50 +0000 (14:35 +0200)]
ALSA: usb-audio: Apply sample rate quirk to Sennheiser headset

commit a8e800fe0f68bc28ce309914f47e432742b865ed upstream.

A Senheisser headset requires the typical sample-rate quirk for
avoiding spurious errors from inquiring the current sample rate like:
 usb 1-1: 2:1: cannot get freq at ep 0x4
 usb 1-1: 3:1: cannot get freq at ep 0x83

The USB ID 1395:740a has to be added to the entries in
snd_usb_get_sample_rate_quirk().

Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1052580
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoALSA: seq: 2nd attempt at fixing race creating a queue
Daniel Mentz [Mon, 14 Aug 2017 21:46:01 +0000 (14:46 -0700)]
ALSA: seq: 2nd attempt at fixing race creating a queue

commit 7e1d90f60a0d501c8503e636942ca704a454d910 upstream.

commit 4842e98f26dd80be3623c4714a244ba52ea096a8 ("ALSA: seq: Fix race at
creating a queue") attempted to fix a race reported by syzkaller. That
fix has been described as follows:

"
When a sequencer queue is created in snd_seq_queue_alloc(),it adds the
new queue element to the public list before referencing it.  Thus the
queue might be deleted before the call of snd_seq_queue_use(), and it
results in the use-after-free error, as spotted by syzkaller.

The fix is to reference the queue object at the right time.
"

Even with that fix in place, syzkaller reported a use-after-free error.
It specifically pointed to the last instruction "return q->queue" in
snd_seq_queue_alloc(). The pointer q is being used after kfree() has
been called on it.

It turned out that there is still a small window where a race can
happen. The window opens at
snd_seq_ioctl_create_queue()->snd_seq_queue_alloc()->queue_list_add()
and closes at
snd_seq_ioctl_create_queue()->queueptr()->snd_use_lock_use(). Between
these two calls, a different thread could delete the queue and possibly
re-create a different queue in the same location in queue_list.

This change prevents this situation by calling snd_use_lock_use() from
snd_seq_queue_alloc() prior to calling queue_list_add(). It is then the
caller's responsibility to call snd_use_lock_free(&q->use_lock).

Fixes: 4842e98f26dd ("ALSA: seq: Fix race at creating a queue")
Reported-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: Daniel Mentz <danielmentz@google.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoInput: elan_i2c - Add antoher Lenovo ACPI ID for upcoming Lenovo NB
KT Liao [Tue, 15 Aug 2017 03:11:59 +0000 (20:11 -0700)]
Input: elan_i2c - Add antoher Lenovo ACPI ID for upcoming Lenovo NB

commit 76988690402dde2880bfe06ecccf381d48ba8e1c upstream.

Add 2 new IDs (ELAN0609 and ELAN060B) to the list of ACPI IDs that should
be handled by the driver.

Signed-off-by: KT Liao <kt.liao@emc.com.tw>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoInput: elan_i2c - add ELAN0608 to the ACPI table
Kai-Heng Feng [Tue, 15 Aug 2017 03:11:26 +0000 (20:11 -0700)]
Input: elan_i2c - add ELAN0608 to the ACPI table

commit 1874064eed0502bd9bef7be8023757b0c4f26883 upstream.

Similar to commit 722c5ac708b4f ("Input: elan_i2c - add ELAN0605 to the
ACPI table"), ELAN0608 should be handled by elan_i2c.

This touchpad can be found in Lenovo ideapad 320-14IKB.

BugLink: https://bugs.launchpad.net/bugs/1708852
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agocrypto: x86/sha1 - Fix reads beyond the number of blocks passed
megha.dey@linux.intel.com [Wed, 2 Aug 2017 20:49:09 +0000 (13:49 -0700)]
crypto: x86/sha1 - Fix reads beyond the number of blocks passed

commit 8861249c740fc4af9ddc5aee321eafefb960d7c6 upstream.

It was reported that the sha1 AVX2 function(sha1_transform_avx2) is
reading ahead beyond its intended data, and causing a crash if the next
block is beyond page boundary:
http://marc.info/?l=linux-crypto-vger&m=149373371023377

This patch makes sure that there is no overflow for any buffer length.

It passes the tests written by Jan Stancek that revealed this problem:
https://github.com/jstancek/sha1-avx2-crash

I have re-enabled sha1-avx2 by reverting commit
b82ce24426a4071da9529d726057e4e642948667

Fixes: b82ce24426a4 ("crypto: sha1-ssse3 - Disable avx2")
Originally-by: Ilya Albrekht <ilya.albrekht@intel.com>
Tested-by: Jan Stancek <jstancek@redhat.com>
Signed-off-by: Megha Dey <megha.dey@linux.intel.com>
Reported-by: Jan Stancek <jstancek@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoparisc: pci memory bar assignment fails with 64bit kernels on dino/cujo
Thomas Bogendoerfer [Sat, 12 Aug 2017 21:36:47 +0000 (23:36 +0200)]
parisc: pci memory bar assignment fails with 64bit kernels on dino/cujo

commit 4098116039911e8870d84c975e2ec22dab65a909 upstream.

For 64bit kernels the lmmio_space_offset of the host bridge window
isn't set correctly on systems with dino/cujo PCI host bridges.
This leads to not assigned memory bars and failing drivers, which
need to use these bars.

Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Acked-by: Helge Deller <deller@gmx.de>
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoaudit: Fix use after free in audit_remove_watch_rule()
Jan Kara [Tue, 15 Aug 2017 11:00:36 +0000 (13:00 +0200)]
audit: Fix use after free in audit_remove_watch_rule()

commit d76036ab47eafa6ce52b69482e91ca3ba337d6d6 upstream.

audit_remove_watch_rule() drops watch's reference to parent but then
continues to work with it. That is not safe as parent can get freed once
we drop our reference. The following is a trivial reproducer:

mount -o loop image /mnt
touch /mnt/file
auditctl -w /mnt/file -p wax
umount /mnt
auditctl -D
<crash in fsnotify_destroy_mark()>

Grab our own reference in audit_remove_watch_rule() earlier to make sure
mark does not get freed under us.

Reported-by: Tony Jones <tonyj@suse.de>
Signed-off-by: Jan Kara <jack@suse.cz>
Tested-by: Tony Jones <tonyj@suse.de>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agonetfilter: nf_ct_ext: fix possible panic after nf_ct_extend_unregister
Liping Zhang [Sat, 25 Mar 2017 08:35:29 +0000 (16:35 +0800)]
netfilter: nf_ct_ext: fix possible panic after nf_ct_extend_unregister

commit 9c3f3794926a997b1cab6c42480ff300efa2d162 upstream.

If one cpu is doing nf_ct_extend_unregister while another cpu is doing
__nf_ct_ext_add_length, then we may hit BUG_ON(t == NULL). Moreover,
there's no synchronize_rcu invocation after set nf_ct_ext_types[id] to
NULL, so it's possible that we may access invalid pointer.

But actually, most of the ct extends are built-in, so the problem listed
above will not happen. However, there are two exceptions: NF_CT_EXT_NAT
and NF_CT_EXT_SYNPROXY.

For _EXT_NAT, the panic will not happen, since adding the nat extend and
unregistering the nat extend are located in the same file(nf_nat_core.c),
this means that after the nat module is removed, we cannot add the nat
extend too.

For _EXT_SYNPROXY, synproxy extend may be added by init_conntrack, while
synproxy extend unregister will be done by synproxy_core_exit. So after
nf_synproxy_core.ko is removed, we may still try to add the synproxy
extend, then kernel panic may happen.

I know it's very hard to reproduce this issue, but I can play a tricky
game to make it happen very easily :)

Step 1. Enable SYNPROXY for tcp dport 1234 at FORWARD hook:
  # iptables -I FORWARD -p tcp --dport 1234 -j SYNPROXY
Step 2. Queue the syn packet to the userspace at raw table OUTPUT hook.
        Also note, in the userspace we only add a 20s' delay, then
        reinject the syn packet to the kernel:
  # iptables -t raw -I OUTPUT -p tcp --syn -j NFQUEUE --queue-num 1
Step 3. Using "nc 2.2.2.2 1234" to connect the server.
Step 4. Now remove the nf_synproxy_core.ko quickly:
  # iptables -F FORWARD
  # rmmod ipt_SYNPROXY
  # rmmod nf_synproxy_core
Step 5. After 20s' delay, the syn packet is reinjected to the kernel.

Now you will see the panic like this:
  kernel BUG at net/netfilter/nf_conntrack_extend.c:91!
  Call Trace:
   ? __nf_ct_ext_add_length+0x53/0x3c0 [nf_conntrack]
   init_conntrack+0x12b/0x600 [nf_conntrack]
   nf_conntrack_in+0x4cc/0x580 [nf_conntrack]
   ipv4_conntrack_local+0x48/0x50 [nf_conntrack_ipv4]
   nf_reinject+0x104/0x270
   nfqnl_recv_verdict+0x3e1/0x5f9 [nfnetlink_queue]
   ? nfqnl_recv_verdict+0x5/0x5f9 [nfnetlink_queue]
   ? nla_parse+0xa0/0x100
   nfnetlink_rcv_msg+0x175/0x6a9 [nfnetlink]
   [...]

One possible solution is to make NF_CT_EXT_SYNPROXY extend built-in, i.e.
introduce nf_conntrack_synproxy.c and only do ct extend register and
unregister in it, similar to nf_conntrack_timeout.c.

But having such a obscure restriction of nf_ct_extend_unregister is not a
good idea, so we should invoke synchronize_rcu after set nf_ct_ext_types
to NULL, and check the NULL pointer when do __nf_ct_ext_add_length. Then
it will be easier if we add new ct extend in the future.

Last, we use kfree_rcu to free nf_ct_ext, so rcu_barrier() is unnecessary
anymore, remove it too.

Signed-off-by: Liping Zhang <zlpnobody@gmail.com>
Acked-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoARM: dts: dra76-evm: shift to using common IOdelay data
Sekhar Nori [Wed, 23 Aug 2017 15:22:22 +0000 (20:52 +0530)]
ARM: dts: dra76-evm: shift to using common IOdelay data

Now that we have a device-tree include file with common
MMC/SD IOdelay data for DRA76x SoC, shift the EVM device-tree
file to using that.

Tested-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
3 years agoARM: dts: dra76x: create a common file with MMC/SD IOdelay data
Sekhar Nori [Wed, 23 Aug 2017 15:22:21 +0000 (20:52 +0530)]
ARM: dts: dra76x: create a common file with MMC/SD IOdelay data

Add a common device-tree include file with MMC/SD IOdelay data
for DRA76x SoC.

In the most common case, IOdelay data available in datamanual
can directly be used. This file caters to that common case.

Data is based on DRA76x datamanual, SPRS993A, revised July 2017.

Tested-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
3 years agoARM: DRA722: Add support for DRA71x Silicon Rev 2.1
Vishal Mahaveer [Tue, 22 Aug 2017 20:18:08 +0000 (15:18 -0500)]
ARM: DRA722: Add support for DRA71x Silicon Rev 2.1

commit 913e582135a1ad6eb91b743dcb5f64d2e15e025f branch ti-linux-4.9.y

DRA71x processors are reduced pin and software compatible
derivative of DRA72 processors.

Silicon Rev 2.1 is a minor variant of DRA71x Rev 2.0 with
various fixes including the following:
 - NAND boot fixes
 - ROM update for secure boot crypto enhancement

Signed-off-by: Vishal Mahaveer <vishalm@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
3 years agoarm: dts: dra76: enable auo fpdlink display
Praneeth Bajjuri [Thu, 17 Aug 2017 21:59:57 +0000 (16:59 -0500)]
arm: dts: dra76: enable auo fpdlink display

commit b479cc78e8c2 ("arm: dts: dra76: enable auo fpdlink display")
missed enabling the dts in makefile

this patch fixes it

Change-Id: I2acf74ec83a06095bd2e61df195435370070b5c8
Signed-off-by: Praneeth Bajjuri <praneeth@ti.com>
3 years agoMerge branch 'p-ti-lsk-linux-4.4.y' of git://git.omapzoom.org/kernel/omap into p...
David Huang [Fri, 18 Aug 2017 10:05:24 +0000 (05:05 -0500)]
Merge branch 'p-ti-lsk-linux-4.4.y' of git://git.omapzoom.org/kernel/omap into p-ti-lsk-linux-4.4.y-next

Auto Merge of:

TI-Feature: linux-4.4.y_linux-4.4.y-next
TI-Tree: git://git.omapzoom.org/kernel/omap.git
TI-Branch: p-ti-lsk-linux-4.4.y

* 'p-ti-lsk-linux-4.4.y' of git://git.omapzoom.org/kernel/omap: (24 commits)
  Linux 4.4.83
  pinctrl: samsung: Remove bogus irq_[un]mask from resource management
  pinctrl: sunxi: add a missing function of A10/A20 pinctrl driver
  pnfs/blocklayout: require 64-bit sector_t
  iio: adc: vf610_adc: Fix VALT selection value for REFSEL bits
  usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume
  usb: quirks: Add no-lpm quirk for Moshi USB to Ethernet Adapter
  usb: core: unlink urbs from the tail of the endpoint's urb_list
  USB: Check for dropped connection before switching to full speed
  uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069
  iio: light: tsl2563: use correct event code
  iio: accel: bmc150: Always restore device to normal mode after suspend-resume
  staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read
  USB: hcd: Mark secondary HCD as dead if the primary one died
  usb: musb: fix tx fifo flush handling again
  USB: serial: pl2303: add new ATEN device id
  USB: serial: cp210x: add support for Qivicon USB ZigBee dongle
  USB: serial: option: add D-Link DWM-222 device ID
  nfs/flexfiles: fix leak of nfs4_ff_ds_version arrays
  fuse: initialize the flock flag in fuse_file on allocation
  ...

Signed-off-by: David Huang <d-huang@ti.com>
3 years agoMerge branch 'ti-lsk-linux-4.4.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel...
David Huang [Fri, 18 Aug 2017 10:00:42 +0000 (05:00 -0500)]
Merge branch 'ti-lsk-linux-4.4.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel into p-ti-lsk-linux-4.4.y

Auto Merge of:

TI-Feature: lcpd-linux-4.4.y_linux-4.4.y
TI-Tree: git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git
TI-Branch: ti-lsk-linux-4.4.y

* 'ti-lsk-linux-4.4.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel: (24 commits)
  Linux 4.4.83
  pinctrl: samsung: Remove bogus irq_[un]mask from resource management
  pinctrl: sunxi: add a missing function of A10/A20 pinctrl driver
  pnfs/blocklayout: require 64-bit sector_t
  iio: adc: vf610_adc: Fix VALT selection value for REFSEL bits
  usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume
  usb: quirks: Add no-lpm quirk for Moshi USB to Ethernet Adapter
  usb: core: unlink urbs from the tail of the endpoint's urb_list
  USB: Check for dropped connection before switching to full speed
  uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069
  iio: light: tsl2563: use correct event code
  iio: accel: bmc150: Always restore device to normal mode after suspend-resume
  staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read
  USB: hcd: Mark secondary HCD as dead if the primary one died
  usb: musb: fix tx fifo flush handling again
  USB: serial: pl2303: add new ATEN device id
  USB: serial: cp210x: add support for Qivicon USB ZigBee dongle
  USB: serial: option: add D-Link DWM-222 device ID
  nfs/flexfiles: fix leak of nfs4_ff_ds_version arrays
  fuse: initialize the flock flag in fuse_file on allocation
  ...

Signed-off-by: David Huang <d-huang@ti.com>
3 years agoMerge branch 'ti-linux-4.4.y' of git.ti.com:ti-linux-kernel/ti-linux-kernel into...
LCPD Auto Merger [Thu, 17 Aug 2017 22:09:03 +0000 (17:09 -0500)]
Merge branch 'ti-linux-4.4.y' of git.ti.com:ti-linux-kernel/ti-linux-kernel into ti-lsk-linux-4.4.y

TI-Feature: ti_linux_base_lsk
TI-Tree: git@git.ti.com:ti-linux-kernel/ti-linux-kernel.git
TI-Branch: ti-linux-4.4.y

* 'ti-linux-4.4.y' of git.ti.com:ti-linux-kernel/ti-linux-kernel: (24 commits)
  Linux 4.4.83
  pinctrl: samsung: Remove bogus irq_[un]mask from resource management
  pinctrl: sunxi: add a missing function of A10/A20 pinctrl driver
  pnfs/blocklayout: require 64-bit sector_t
  iio: adc: vf610_adc: Fix VALT selection value for REFSEL bits
  usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume
  usb: quirks: Add no-lpm quirk for Moshi USB to Ethernet Adapter
  usb: core: unlink urbs from the tail of the endpoint's urb_list
  USB: Check for dropped connection before switching to full speed
  uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069
  iio: light: tsl2563: use correct event code
  iio: accel: bmc150: Always restore device to normal mode after suspend-resume
  staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read
  USB: hcd: Mark secondary HCD as dead if the primary one died
  usb: musb: fix tx fifo flush handling again
  USB: serial: pl2303: add new ATEN device id
  USB: serial: cp210x: add support for Qivicon USB ZigBee dongle
  USB: serial: option: add D-Link DWM-222 device ID
  nfs/flexfiles: fix leak of nfs4_ff_ds_version arrays
  fuse: initialize the flock flag in fuse_file on allocation
  ...

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
3 years agoarm: dts: dra76: enable auo fpdlink display
Venkateswara Rao Mandela [Thu, 10 Aug 2017 05:43:55 +0000 (11:13 +0530)]
arm: dts: dra76: enable auo fpdlink display

- setup the board mux to drive DSS signal to VOUT3
- toggle the onboard switch via GPIO to supply power to display via FPDLink.
- setup the serializer to map the I2C address of any accessed slave on
the remote I2C bus to 0x2d on the local bus on demand.
- link the DSS and fpdlink endpoints.

Change-Id: I6bd37f769405fc473e6275fa690c8ca88d79dd62
Signed-off-by: Venkateswara Rao Mandela <venkat.mandela@ti.com>
3 years agodrivers: video: serdes: support ub921 serializer
Venkateswara Rao Mandela [Wed, 9 Aug 2017 12:42:15 +0000 (18:12 +0530)]
drivers: video: serdes: support ub921 serializer

Change-Id: Iccb69f9c4a2e218e4fecd596dd6fa82e1f408074
Signed-off-by: Venkateswara Rao Mandela <venkat.mandela@ti.com>
3 years agoarm: dts: dra7: enable auo fpdlink display
Venkateswara Rao Mandela [Wed, 9 Aug 2017 12:42:15 +0000 (18:12 +0530)]
arm: dts: dra7: enable auo fpdlink display

- setup the board mux to drive DSS signal to VOUT3
- setup the serializer to map the I2C address of any accessed slave on
the remote I2C bus to 0x2d on the local bus on demand.
- link the DSS and fpdlink endpoints.

Change-Id: I7e91410f2ef69bde97fc4ce54a90f116c2fa4f21
Signed-off-by: Venkateswara Rao Mandela <venkat.mandela@ti.com>
3 years agoarm: dts: add auo fpdlink display dts fragment
Venkateswara Rao Mandela [Wed, 9 Aug 2017 10:56:47 +0000 (16:26 +0530)]
arm: dts: add auo fpdlink display dts fragment

This display board consists of

- 1280x800 LCD
- Goodix touch controller
- TLC59108 backlight controller
- RF430CL330H NFC chip
- EEPROM

Change-Id: Ib08c3183df2542bfb452603430aa3e5c9138296b
Signed-off-by: Venkateswara Rao Mandela <venkat.mandela@ti.com>
3 years agodrivers: video: serdes: support ub924 deserializer
Venkateswara Rao Mandela [Wed, 9 Aug 2017 12:43:32 +0000 (18:13 +0530)]
drivers: video: serdes: support ub924 deserializer

Change-Id: I510db7bc31fb7e9feb85d852437f64f8299181d4
Signed-off-by: Venkateswara Rao Mandela <venkat.mandela@ti.com>
3 years agoInput: goodix - add polling support for touch events
Venkateswara Rao Mandela [Mon, 8 May 2017 10:11:03 +0000 (15:41 +0530)]
Input: goodix - add polling support for touch events

poll for touchscreen events in case the touch irq is not specified.

Change-Id: I0a23d2cb3a185e3c2d2ff142eb37be738c10c557
Signed-off-by: Venkateswara Rao Mandela <venkat.mandela@ti.com>
3 years agodrivers: video: serdes: avoid splitting i2c transfer
Venkateswara Rao Mandela [Wed, 9 Aug 2017 10:17:24 +0000 (15:47 +0530)]
drivers: video: serdes: avoid splitting i2c transfer

Instead of calling the i2c transfer API once for each message in
the input, perform the address translation for all messages upfront
and issue one I2C transfer. This prevents other devices from
interrupting the I2C transfer between messages.

Change-Id: I15017e37efd00428b8f9896d03530a121f7ececb
Signed-off-by: Venkateswara Rao Mandela <venkat.mandela@ti.com>
3 years agodrivers: video: serdes: improve error message
Venkateswara Rao Mandela [Wed, 9 Aug 2017 09:31:30 +0000 (15:01 +0530)]
drivers: video: serdes: improve error message

In case of communication failure with remote device, print an error
message instead of failing silently.

Change-Id: I4f45c826f0e27c09d06c44582493395b162d8419
Signed-off-by: Venkateswara Rao Mandela <venkat.mandela@ti.com>
3 years agoarm: dts: dra7: fpdlink: restructure dts for reuse
Venkateswara Rao Mandela [Fri, 14 Jul 2017 09:58:47 +0000 (15:28 +0530)]
arm: dts: dra7: fpdlink: restructure dts for reuse

- move FPDlink display definition into a separate dtsi file.
- handle the board muxes in the final dts file
- reuse FPDLink display definition for multiple EVM's

This change is tested on dra74x and dra72x EVM's.

Change-Id: Ife57292e5ed3fc70d09607f6413d988065f93063
Signed-off-by: Venkateswara Rao Mandela <venkat.mandela@ti.com>
3 years agoMerge tag 'v4.4.83' of http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux...
LCPD Auto Merger [Wed, 16 Aug 2017 22:08:55 +0000 (17:08 -0500)]
Merge tag 'v4.4.83' of git./linux/kernel/git/stable/linux-stable into ti-linux-4.4.y

This is the 4.4.83 stable release

* tag 'v4.4.83' of http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable: (24 commits)
  Linux 4.4.83
  pinctrl: samsung: Remove bogus irq_[un]mask from resource management
  pinctrl: sunxi: add a missing function of A10/A20 pinctrl driver
  pnfs/blocklayout: require 64-bit sector_t
  iio: adc: vf610_adc: Fix VALT selection value for REFSEL bits
  usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume
  usb: quirks: Add no-lpm quirk for Moshi USB to Ethernet Adapter
  usb: core: unlink urbs from the tail of the endpoint's urb_list
  USB: Check for dropped connection before switching to full speed
  uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069
  iio: light: tsl2563: use correct event code
  iio: accel: bmc150: Always restore device to normal mode after suspend-resume
  staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read
  USB: hcd: Mark secondary HCD as dead if the primary one died
  usb: musb: fix tx fifo flush handling again
  USB: serial: pl2303: add new ATEN device id
  USB: serial: cp210x: add support for Qivicon USB ZigBee dongle
  USB: serial: option: add D-Link DWM-222 device ID
  nfs/flexfiles: fix leak of nfs4_ff_ds_version arrays
  fuse: initialize the flock flag in fuse_file on allocation
  ...

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
3 years agoLinux 4.4.83
Greg Kroah-Hartman [Wed, 16 Aug 2017 20:40:42 +0000 (13:40 -0700)]
Linux 4.4.83

3 years agopinctrl: samsung: Remove bogus irq_[un]mask from resource management
Thomas Gleixner [Thu, 29 Jun 2017 21:33:35 +0000 (23:33 +0200)]
pinctrl: samsung: Remove bogus irq_[un]mask from resource management

commit 3fa53ec2ed885b0aec3f0472e3b4a8a6f1cd748c upstream.

The irq chip callbacks irq_request/release_resources() have absolutely no
business with masking and unmasking the irq.

The core code unmasks the interrupt after complete setup and masks it
before invoking irq_release_resources().

The unmask is actually harmful as it happens before the interrupt is
completely initialized in __setup_irq().

Remove it.

Fixes: f6a8249f9e55 ("pinctrl: exynos: Lock GPIOs as interrupts when used as EINTs")
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Krzysztof Kozlowski <krzk@kernel.org>
Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Kukjin Kim <kgene@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-samsung-soc@vger.kernel.org
Cc: linux-gpio@vger.kernel.org
Acked-by: Tomasz Figa <tomasz.figa@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agopinctrl: sunxi: add a missing function of A10/A20 pinctrl driver
Icenowy Zheng [Sat, 22 Jul 2017 02:50:53 +0000 (10:50 +0800)]
pinctrl: sunxi: add a missing function of A10/A20 pinctrl driver

commit d81ece747d8727bb8b1cfc9a20dbe62f09a4e35a upstream.

The PH16 pin has a function with mux id 0x5, which is the DET pin of the
"sim" (smart card reader) IP block.

This function is missing in old versions of A10/A20 SoCs' datasheets and
user manuals, so it's also missing in the old drivers. The newest A10
Datasheet V1.70 and A20 Datasheet V1.41 contain this pin function, and
it's discovered during implementing R40 pinctrl driver.

Add it to the driver. As we now merged A20 pinctrl driver to the A10
one, we need to only fix the A10 driver now.

Fixes: f2821b1ca3a2 ("pinctrl: sunxi: Move Allwinner A10 pinctrl
driver to a driver of its own")

Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agopnfs/blocklayout: require 64-bit sector_t
Christoph Hellwig [Sat, 5 Aug 2017 08:59:14 +0000 (10:59 +0200)]
pnfs/blocklayout: require 64-bit sector_t

commit 8a9d6e964d318533ba3d2901ce153ba317c99a89 upstream.

The blocklayout code does not compile cleanly for a 32-bit sector_t,
and also has no reliable checks for devices sizes, which makes it
unsafe to use with a kernel that doesn't support large block devices.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reported-by: Arnd Bergmann <arnd@arndb.de>
Fixes: 5c83746a0cf2 ("pnfs/blocklayout: in-kernel GETDEVICEINFO XDR parsing")
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoiio: adc: vf610_adc: Fix VALT selection value for REFSEL bits
Stefan-Gabriel Mirea [Thu, 6 Jul 2017 09:06:41 +0000 (10:06 +0100)]
iio: adc: vf610_adc: Fix VALT selection value for REFSEL bits

commit d466d3c1217406b14b834335b5b4b33c0d45bd09 upstream.

In order to select the alternate voltage reference pair (VALTH/VALTL), the
right value for the REFSEL field in the ADCx_CFG register is "01", leading
to 0x800 as register mask. See section 8.2.6.4 in the reference manual[1].

[1] http://www.nxp.com/docs/en/reference-manual/VFXXXRM.pdf

Fixes: a775427632fd ("iio:adc:imx: add Freescale Vybrid vf610 adc driver")
Signed-off-by: Stefan-Gabriel Mirea <stefan-gabriel.mirea@nxp.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agousb:xhci:Add quirk for Certain failing HP keyboard on reset after resume
Sandeep Singh [Fri, 4 Aug 2017 11:05:56 +0000 (16:35 +0530)]
usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume

commit e788787ef4f9c24aafefc480a8da5f92b914e5e6 upstream.

Certain HP keyboards would keep inputting a character automatically which
is the wake-up key after S3 resume

On some AMD platforms USB host fails to respond (by holding resume-K) to
USB device (an HP keyboard) resume request within 1ms (TURSM) and ensures
that resume is signaled for at least 20 ms (TDRSMDN), which is defined in
USB 2.0 spec. The result is that the keyboard is out of function.

In SNPS USB design, the host responds to the resume request only after
system gets back to S0 and the host gets to functional after the internal
HW restore operation that is more than 1 second after the initial resume
request from the USB device.

As a workaround for specific keyboard ID(HP Keyboards), applying port reset
after resume when the keyboard is plugged in.

Signed-off-by: Sandeep Singh <Sandeep.Singh@amd.com>
Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
cc: Nehal Shah <Nehal-bakulchandra.Shah@amd.com>
Reviewed-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agousb: quirks: Add no-lpm quirk for Moshi USB to Ethernet Adapter
Kai-Heng Feng [Tue, 8 Aug 2017 09:51:27 +0000 (17:51 +0800)]
usb: quirks: Add no-lpm quirk for Moshi USB to Ethernet Adapter

commit 7496cfe5431f21da5d27a8388c326397e3f0a5db upstream.

Moshi USB to Ethernet Adapter internally uses a Genesys Logic hub to
connect to Realtek r8153.

The Realtek r8153 ethernet does not work on the internal hub, no-lpm quirk
can make it work.

Since another r8153 dongle at my hand does not have the issue, so add
the quirk to the Genesys Logic hub instead.

Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agousb: core: unlink urbs from the tail of the endpoint's urb_list
Bin Liu [Tue, 25 Jul 2017 14:31:33 +0000 (09:31 -0500)]
usb: core: unlink urbs from the tail of the endpoint's urb_list

commit 2eac13624364db5b5e1666ae0bb3a4d36bc56b6e upstream.

While unlink an urb, if the urb has been programmed in the controller,
the controller driver might do some hw related actions to tear down the
urb.

Currently usb_hcd_flush_endpoint() passes each urb from the head of the
endpoint's urb_list to the controller driver, which could make the
controller driver think each urb has been programmed and take the
unnecessary actions for each urb.

This patch changes the behavior in usb_hcd_flush_endpoint() to pass the
urbs from the tail of the list, to avoid any unnecessary actions in an
controller driver.

Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Bin Liu <b-liu@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoUSB: Check for dropped connection before switching to full speed
Alan Stern [Tue, 1 Aug 2017 14:41:56 +0000 (10:41 -0400)]
USB: Check for dropped connection before switching to full speed

commit 94c43b9897abf4ea366ed4dba027494e080c7050 upstream.

Some buggy USB disk adapters disconnect and reconnect multiple times
during the enumeration procedure.  This may lead to a device
connecting at full speed instead of high speed, because when the USB
stack sees that a device isn't able to enumerate at high speed, it
tries to hand the connection over to a full-speed companion
controller.

The logic for doing this is careful to check that the device is still
connected.  But this check is inadequate if the device disconnects and
reconnects before the check is done.  The symptom is that a device
works, but much more slowly than it is capable of operating.

The situation was made worse recently by commit 22547c4cc4fe ("usb:
hub: Wait for connection to be reestablished after port reset"), which
increases the delay following a reset before a disconnect is
recognized, thus giving the device more time to reconnect.

This patch makes the check more robust.  If the device was
disconnected at any time during enumeration, we will now skip the
full-speed handover.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Reported-and-tested-by: Zdenek Kabelac <zkabelac@redhat.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agouas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069
Alan Swanson [Wed, 26 Jul 2017 11:03:33 +0000 (12:03 +0100)]
uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069

commit 89f23d51defcb94a5026d4b5da13faf4e1150a6f upstream.

Similar to commit d595259fbb7a ("usb-storage: Add ignore-residue quirk for
Initio INIC-3619") for INIC-3169 in unusual_devs.h but INIC-3069 already
present in unusual_uas.h. Both in same controller IC family.

Issue is that MakeMKV fails during key exchange with installed bluray drive
with following error:

002004:0000 Error 'Scsi error - ILLEGAL REQUEST:COPY PROTECTION KEY EXCHANGE FAILURE - KEY NOT ESTABLISHED'
occurred while issuing SCSI command AD010..080002400 to device 'SG:dev_11:0'

Signed-off-by: Alan Swanson <reiver@improbability.net>
Acked-by: Oliver Neukum <oneukum@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoiio: light: tsl2563: use correct event code
Akinobu Mita [Tue, 20 Jun 2017 16:46:37 +0000 (01:46 +0900)]
iio: light: tsl2563: use correct event code

commit a3507e48d3f99a93a3056a34a5365f310434570f upstream.

The TSL2563 driver provides three iio channels, two of which are raw ADC
channels (channel 0 and channel 1) in the device and the remaining one
is calculated by the two.  The ADC channel 0 only supports programmable
interrupt with threshold settings and this driver supports the event but
the generated event code does not contain the corresponding iio channel
type.

This is going to change userspace ABI.  Hopefully fixing this to be
what it should always have been won't break any userspace code.

Cc: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoiio: accel: bmc150: Always restore device to normal mode after suspend-resume
Hans de Goede [Thu, 13 Jul 2017 13:13:41 +0000 (15:13 +0200)]
iio: accel: bmc150: Always restore device to normal mode after suspend-resume

commit e59e18989c68a8d7941005f81ad6abc4ca682de0 upstream.

After probe we would put the device in normal mode, after a runtime
suspend-resume we would put it back in normal mode. But for a regular
suspend-resume we would only put it back in normal mode if triggers
or events have been requested.  This is not consistent and breaks
reading raw values after a suspend-resume.

This commit changes the regular resume path to also unconditionally put
the device back in normal mode, fixing reading of raw values not working
after a regular suspend-resume cycle.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agostaging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read
Arnd Bergmann [Fri, 14 Jul 2017 09:31:03 +0000 (11:31 +0200)]
staging:iio:resolver:ad2s1210 fix negative IIO_ANGL_VEL read

commit 105967ad68d2eb1a041bc041f9cf96af2a653b65 upstream.

gcc-7 points out an older regression:

drivers/staging/iio/resolver/ad2s1210.c: In function 'ad2s1210_read_raw':
drivers/staging/iio/resolver/ad2s1210.c:515:42: error: '<<' in boolean context, did you mean '<' ? [-Werror=int-in-bool-context]

The original code had 'unsigned short' here, but incorrectly got
converted to 'bool'. This reverts the regression and uses a normal
type instead.

Fixes: 29148543c521 ("staging:iio:resolver:ad2s1210 minimal chan spec conversion.")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoUSB: hcd: Mark secondary HCD as dead if the primary one died
Rafael J. Wysocki [Tue, 25 Jul 2017 21:58:50 +0000 (23:58 +0200)]
USB: hcd: Mark secondary HCD as dead if the primary one died

commit cd5a6a4fdaba150089af2afc220eae0fef74878a upstream.

Make usb_hc_died() clear the HCD_FLAG_RH_RUNNING flag for the shared
HCD and set HCD_FLAG_DEAD for it, in analogy with what is done for
the primary one.

Among other thigs, this prevents check_root_hub_suspended() from
returning -EBUSY for dead HCDs which helps to work around system
suspend issues in some situations.

This actually fixes occasional suspend failures on one of my test
machines.

Suggested-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agousb: musb: fix tx fifo flush handling again
Bin Liu [Tue, 25 Jul 2017 14:31:34 +0000 (09:31 -0500)]
usb: musb: fix tx fifo flush handling again

commit 45d73860530a14c608f410b91c6c341777bfa85d upstream.

commit 68fe05e2a451 ("usb: musb: fix tx fifo flush handling") drops the
1ms delay trying to solve the long disconnect time issue when
application queued many tx urbs. However, the 1ms delay is needed for
some use cases, for example, without the delay, reconnecting AR9271 WIFI
dongle no longer works if the connection is dropped from the AP.

So let's add back the 1ms delay in musb_h_tx_flush_fifo(), and solve the
long disconnect time problem with a separate patch for
usb_hcd_flush_endpoint().

Signed-off-by: Bin Liu <b-liu@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoUSB: serial: pl2303: add new ATEN device id
Greg Kroah-Hartman [Thu, 10 Aug 2017 18:54:12 +0000 (11:54 -0700)]
USB: serial: pl2303: add new ATEN device id

commit 3b6bcd3d093c698d32e93d4da57679b8fbc5e01e upstream.

This adds a new ATEN device id for a new pl2303-based device.

Reported-by: Peter Kuo <PeterKuo@aten.com.tw>
Cc: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoUSB: serial: cp210x: add support for Qivicon USB ZigBee dongle
Stefan Triller [Fri, 30 Jun 2017 12:44:03 +0000 (14:44 +0200)]
USB: serial: cp210x: add support for Qivicon USB ZigBee dongle

commit 9585e340db9f6cc1c0928d82c3a23cc4460f0a3f upstream.

The German Telekom offers a ZigBee USB Stick under the brand name Qivicon
for their SmartHome Home Base in its 1. Generation. The productId is not
known by the according kernel module, this patch adds support for it.

Signed-off-by: Stefan Triller <github@stefantriller.de>
Reviewed-by: Frans Klaver <fransklaver@gmail.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoUSB: serial: option: add D-Link DWM-222 device ID
Hector Martin [Tue, 1 Aug 2017 15:45:06 +0000 (00:45 +0900)]
USB: serial: option: add D-Link DWM-222 device ID

commit fd1b8668af59a11bb754a6c9b0051c6c5ce73b74 upstream.

Add device id for D-Link DWM-222.

Signed-off-by: Hector Martin <marcan@marcan.st>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agonfs/flexfiles: fix leak of nfs4_ff_ds_version arrays
Weston Andros Adamson [Tue, 1 Aug 2017 20:25:01 +0000 (16:25 -0400)]
nfs/flexfiles: fix leak of nfs4_ff_ds_version arrays

commit 1feb26162bee7b2f110facfec71b5c7bdbc7d14d upstream.

The client was freeing the nfs4_ff_layout_ds, but not the contained
nfs4_ff_ds_version array.

Signed-off-by: Weston Andros Adamson <dros@primarydata.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agofuse: initialize the flock flag in fuse_file on allocation
Mateusz Jurczyk [Wed, 7 Jun 2017 10:26:49 +0000 (12:26 +0200)]
fuse: initialize the flock flag in fuse_file on allocation

commit 68227c03cba84a24faf8a7277d2b1a03c8959c2c upstream.

Before the patch, the flock flag could remain uninitialized for the
lifespan of the fuse_file allocation. Unless set to true in
fuse_file_flock(), it would remain in an indeterminate state until read in
an if statement in fuse_release_common(). This could consequently lead to
taking an unexpected branch in the code.

The bug was discovered by a runtime instrumentation designed to detect use
of uninitialized memory in the kernel.

Signed-off-by: Mateusz Jurczyk <mjurczyk@google.com>
Fixes: 37fb3a30b462 ("fuse: fix flock")
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoiscsi-target: Fix iscsi_np reset hung task during parallel delete
Nicholas Bellinger [Sat, 5 Aug 2017 06:59:31 +0000 (23:59 -0700)]
iscsi-target: Fix iscsi_np reset hung task during parallel delete

commit 978d13d60c34818a41fc35962602bdfa5c03f214 upstream.

This patch fixes a bug associated with iscsit_reset_np_thread()
that can occur during parallel configfs rmdir of a single iscsi_np
used across multiple iscsi-target instances, that would result in
hung task(s) similar to below where configfs rmdir process context
was blocked indefinately waiting for iscsi_np->np_restart_comp
to finish:

[ 6726.112076] INFO: task dcp_proxy_node_:15550 blocked for more than 120 seconds.
[ 6726.119440]       Tainted: G        W  O     4.1.26-3321 #2
[ 6726.125045] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 6726.132927] dcp_proxy_node_ D ffff8803f202bc88     0 15550      1 0x00000000
[ 6726.140058]  ffff8803f202bc88 ffff88085c64d960 ffff88083b3b1ad0 ffff88087fffeb08
[ 6726.147593]  ffff8803f202c000 7fffffffffffffff ffff88083f459c28 ffff88083b3b1ad0
[ 6726.155132]  ffff88035373c100 ffff8803f202bca8 ffffffff8168ced2 ffff8803f202bcb8
[ 6726.162667] Call Trace:
[ 6726.165150]  [<ffffffff8168ced2>] schedule+0x32/0x80
[ 6726.170156]  [<ffffffff8168f5b4>] schedule_timeout+0x214/0x290
[ 6726.176030]  [<ffffffff810caef2>] ? __send_signal+0x52/0x4a0
[ 6726.181728]  [<ffffffff8168d7d6>] wait_for_completion+0x96/0x100
[ 6726.187774]  [<ffffffff810e7c80>] ? wake_up_state+0x10/0x10
[ 6726.193395]  [<ffffffffa035d6e2>] iscsit_reset_np_thread+0x62/0xe0 [iscsi_target_mod]
[ 6726.201278]  [<ffffffffa0355d86>] iscsit_tpg_disable_portal_group+0x96/0x190 [iscsi_target_mod]
[ 6726.210033]  [<ffffffffa0363f7f>] lio_target_tpg_store_enable+0x4f/0xc0 [iscsi_target_mod]
[ 6726.218351]  [<ffffffff81260c5a>] configfs_write_file+0xaa/0x110
[ 6726.224392]  [<ffffffff811ea364>] vfs_write+0xa4/0x1b0
[ 6726.229576]  [<ffffffff811eb111>] SyS_write+0x41/0xb0
[ 6726.234659]  [<ffffffff8169042e>] system_call_fastpath+0x12/0x71

It would happen because each iscsit_reset_np_thread() sets state
to ISCSI_NP_THREAD_RESET, sends SIGINT, and then blocks waiting
for completion on iscsi_np->np_restart_comp.

However, if iscsi_np was active processing a login request and
more than a single iscsit_reset_np_thread() caller to the same
iscsi_np was blocked on iscsi_np->np_restart_comp, iscsi_np
kthread process context in __iscsi_target_login_thread() would
flush pending signals and only perform a single completion of
np->np_restart_comp before going back to sleep within transport
specific iscsit_transport->iscsi_accept_np code.

To address this bug, add a iscsi_np->np_reset_count and update
__iscsi_target_login_thread() to keep completing np->np_restart_comp
until ->np_reset_count has reached zero.

Reported-by: Gary Guo <ghg@datera.io>
Tested-by: Gary Guo <ghg@datera.io>
Cc: Mike Christie <mchristi@redhat.com>
Cc: Hannes Reinecke <hare@suse.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoiscsi-target: fix memory leak in iscsit_setup_text_cmd()
Varun Prakash [Sun, 23 Jul 2017 14:33:33 +0000 (20:03 +0530)]
iscsi-target: fix memory leak in iscsit_setup_text_cmd()

commit ea8dc5b4cd2195ee582cae28afa4164c6dea1738 upstream.

On receiving text request iscsi-target allocates buffer for
payload in iscsit_handle_text_cmd() and assigns buffer pointer
to cmd->text_in_ptr, this buffer is currently freed in
iscsit_release_cmd(), if iscsi-target sets 'C' bit in text
response then it will receive another text request from the
initiator with ttt != 0xffffffff in this case iscsi-target
will find cmd using itt and call iscsit_setup_text_cmd()
which will set cmd->text_in_ptr to NULL without freeing
previously allocated buffer.

This patch fixes this issue by calling kfree(cmd->text_in_ptr)
in iscsit_setup_text_cmd() before assigning NULL to it.

For the first text request cmd->text_in_ptr is NULL as
cmd is memset to 0 in iscsit_allocate_cmd().

Signed-off-by: Varun Prakash <varun@chelsio.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agomm: ratelimit PFNs busy info message
Jonathan Toppins [Thu, 10 Aug 2017 22:23:35 +0000 (15:23 -0700)]
mm: ratelimit PFNs busy info message

commit 75dddef32514f7aa58930bde6a1263253bc3d4ba upstream.

The RDMA subsystem can generate several thousand of these messages per
second eventually leading to a kernel crash.  Ratelimit these messages
to prevent this crash.

Doug said:
 "I've been carrying a version of this for several kernel versions. I
  don't remember when they started, but we have one (and only one) class
  of machines: Dell PE R730xd, that generate these errors. When it
  happens, without a rate limit, we get rcu timeouts and kernel oopses.
  With the rate limit, we just get a lot of annoying kernel messages but
  the machine continues on, recovers, and eventually the memory
  operations all succeed"

And:
 "> Well... why are all these EBUSY's occurring? It sounds inefficient
  > (at least) but if it is expected, normal and unavoidable then
  > perhaps we should just remove that message altogether?

  I don't have an answer to that question. To be honest, I haven't
  looked real hard. We never had this at all, then it started out of the
  blue, but only on our Dell 730xd machines (and it hits all of them),
  but no other classes or brands of machines. And we have our 730xd
  machines loaded up with different brands and models of cards (for
  instance one dedicated to mlx4 hardware, one for qib, one for mlx5, an
  ocrdma/cxgb4 combo, etc), so the fact that it hit all of the machines
  meant it wasn't tied to any particular brand/model of RDMA hardware.
  To me, it always smelled of a hardware oddity specific to maybe the
  CPUs or mainboard chipsets in these machines, so given that I'm not an
  mm expert anyway, I never chased it down.

  A few other relevant details: it showed up somewhere around 4.8/4.9 or
  thereabouts. It never happened before, but the prinkt has been there
  since the 3.18 days, so possibly the test to trigger this message was
  changed, or something else in the allocator changed such that the
  situation started happening on these machines?

  And, like I said, it is specific to our 730xd machines (but they are
  all identical, so that could mean it's something like their specific
  ram configuration is causing the allocator to hit this on these
  machine but not on other machines in the cluster, I don't want to say
  it's necessarily the model of chipset or CPU, there are other bits of
  identicalness between these machines)"

Link: http://lkml.kernel.org/r/499c0f6cc10d6eb829a67f2a4d75b4228a9b356e.1501695897.git.jtoppins@redhat.com
Signed-off-by: Jonathan Toppins <jtoppins@redhat.com>
Reviewed-by: Doug Ledford <dledford@redhat.com>
Tested-by: Doug Ledford <dledford@redhat.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Mel Gorman <mgorman@techsingularity.net>
Cc: Hillf Danton <hillf.zj@alibaba-inc.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agocpuset: fix a deadlock due to incomplete patching of cpusets_enabled()
Dima Zavin [Wed, 2 Aug 2017 20:32:18 +0000 (13:32 -0700)]
cpuset: fix a deadlock due to incomplete patching of cpusets_enabled()

commit 89affbf5d9ebb15c6460596822e8857ea2f9e735 upstream.

In codepaths that use the begin/retry interface for reading
mems_allowed_seq with irqs disabled, there exists a race condition that
stalls the patch process after only modifying a subset of the
static_branch call sites.

This problem manifested itself as a deadlock in the slub allocator,
inside get_any_partial.  The loop reads mems_allowed_seq value (via
read_mems_allowed_begin), performs the defrag operation, and then
verifies the consistency of mem_allowed via the read_mems_allowed_retry
and the cookie returned by xxx_begin.

The issue here is that both begin and retry first check if cpusets are
enabled via cpusets_enabled() static branch.  This branch can be
rewritted dynamically (via cpuset_inc) if a new cpuset is created.  The
x86 jump label code fully synchronizes across all CPUs for every entry
it rewrites.  If it rewrites only one of the callsites (specifically the
one in read_mems_allowed_retry) and then waits for the
smp_call_function(do_sync_core) to complete while a CPU is inside the
begin/retry section with IRQs off and the mems_allowed value is changed,
we can hang.

This is because begin() will always return 0 (since it wasn't patched
yet) while retry() will test the 0 against the actual value of the seq
counter.

The fix is to use two different static keys: one for begin
(pre_enable_key) and one for retry (enable_key).  In cpuset_inc(), we
first bump the pre_enable key to ensure that cpuset_mems_allowed_begin()
always return a valid seqcount if are enabling cpusets.  Similarly, when
disabling cpusets via cpuset_dec(), we first ensure that callers of
cpuset_mems_allowed_retry() will start ignoring the seqcount value
before we let cpuset_mems_allowed_begin() return 0.

The relevant stack traces of the two stuck threads:

  CPU: 1 PID: 1415 Comm: mkdir Tainted: G L  4.9.36-00104-g540c51286237 #4
  Hardware name: Default string Default string/Hardware, BIOS 4.29.1-20170526215256 05/26/2017
  task: ffff8817f9c28000 task.stack: ffffc9000ffa4000
  RIP: smp_call_function_many+0x1f9/0x260
  Call Trace:
    smp_call_function+0x3b/0x70
    on_each_cpu+0x2f/0x90
    text_poke_bp+0x87/0xd0
    arch_jump_label_transform+0x93/0x100
    __jump_label_update+0x77/0x90
    jump_label_update+0xaa/0xc0
    static_key_slow_inc+0x9e/0xb0
    cpuset_css_online+0x70/0x2e0
    online_css+0x2c/0xa0
    cgroup_apply_control_enable+0x27f/0x3d0
    cgroup_mkdir+0x2b7/0x420
    kernfs_iop_mkdir+0x5a/0x80
    vfs_mkdir+0xf6/0x1a0
    SyS_mkdir+0xb7/0xe0
    entry_SYSCALL_64_fastpath+0x18/0xad

  ...

  CPU: 2 PID: 1 Comm: init Tainted: G L  4.9.36-00104-g540c51286237 #4
  Hardware name: Default string Default string/Hardware, BIOS 4.29.1-20170526215256 05/26/2017
  task: ffff8818087c0000 task.stack: ffffc90000030000
  RIP: int3+0x39/0x70
  Call Trace:
    <#DB> ? ___slab_alloc+0x28b/0x5a0
    <EOE> ? copy_process.part.40+0xf7/0x1de0
    __slab_alloc.isra.80+0x54/0x90
    copy_process.part.40+0xf7/0x1de0
    copy_process.part.40+0xf7/0x1de0
    kmem_cache_alloc_node+0x8a/0x280
    copy_process.part.40+0xf7/0x1de0
    _do_fork+0xe7/0x6c0
    _raw_spin_unlock_irq+0x2d/0x60
    trace_hardirqs_on_caller+0x136/0x1d0
    entry_SYSCALL_64_fastpath+0x5/0xad
    do_syscall_64+0x27/0x350
    SyS_clone+0x19/0x20
    do_syscall_64+0x60/0x350
    entry_SYSCALL64_slow_path+0x25/0x25

Link: http://lkml.kernel.org/r/20170731040113.14197-1-dmitriyz@waymo.com
Fixes: 46e700abc44c ("mm, page_alloc: remove unnecessary taking of a seqlock when cpusets are disabled")
Signed-off-by: Dima Zavin <dmitriyz@waymo.com>
Reported-by: Cliff Spradlin <cspradlin@waymo.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Christopher Lameter <cl@linux.com>
Cc: Li Zefan <lizefan@huawei.com>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: David Rientjes <rientjes@google.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Mel Gorman <mgorman@techsingularity.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
3 years agoMerge branch 'p-ti-lsk-linux-4.4.y' of git://git.omapzoom.org/kernel/omap into p...
David Huang [Tue, 15 Aug 2017 15:42:03 +0000 (10:42 -0500)]
Merge branch 'p-ti-lsk-linux-4.4.y' of git://git.omapzoom.org/kernel/omap into p-ti-lsk-linux-4.4.y-next

Manual Merge of:

TI-Feature: linux-4.4.y_linux-4.4.y-next
TI-Tree: git://git.omapzoom.org/kernel/omap.git
TI-Branch: p-ti-lsk-linux-4.4.y

* 'p-ti-lsk-linux-4.4.y' of git://git.omapzoom.org/kernel/omap: (79 commits)
  kvm: arm64: Disable compiler instrumentation for hypervisor code
  Linux 4.4.82
  net: account for current skb length when deciding about UFO
  ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output
  mm/mempool: avoid KASAN marking mempool poison checks as use-after-free
  KVM: arm/arm64: Handle hva aging while destroying the vm
  sparc64: Prevent perf from running during super critical sections
  udp: consistently apply ufo or fragmentation
  revert "ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output"
  revert "net: account for current skb length when deciding about UFO"
  packet: fix tp_reserve race in packet_set_ring
  net: avoid skb_warn_bad_offload false positives on UFO
  tcp: fastopen: tcp_connect() must refresh the route
  net: sched: set xt_tgchk_param par.nft_compat as 0 in ipt_init_target
  bpf, s390: fix jit branch offset related to ldimm64
  net: fix keepalive code vs TCP_FASTOPEN_CONNECT
  tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states
  Linux 4.4.81
  workqueue: implicit ordered attribute should be overridable
  net: account for current skb length when deciding about UFO
  ...

Signed-off-by: David Huang <d-huang@ti.com>
Conflicts:
drivers/remoteproc/omap_remoteproc.c

3 years agoMerge branch 'ti-lsk-linux-4.4.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel...
David Huang [Tue, 15 Aug 2017 10:00:13 +0000 (05:00 -0500)]
Merge branch 'ti-lsk-linux-4.4.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel into p-ti-lsk-linux-4.4.y

Auto Merge of:

TI-Feature: lcpd-linux-4.4.y_linux-4.4.y
TI-Tree: git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git
TI-Branch: ti-lsk-linux-4.4.y

* 'ti-lsk-linux-4.4.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel: (76 commits)
  kvm: arm64: Disable compiler instrumentation for hypervisor code
  Linux 4.4.82
  net: account for current skb length when deciding about UFO
  ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output
  mm/mempool: avoid KASAN marking mempool poison checks as use-after-free
  KVM: arm/arm64: Handle hva aging while destroying the vm
  sparc64: Prevent perf from running during super critical sections
  udp: consistently apply ufo or fragmentation
  revert "ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output"
  revert "net: account for current skb length when deciding about UFO"
  packet: fix tp_reserve race in packet_set_ring
  net: avoid skb_warn_bad_offload false positives on UFO
  tcp: fastopen: tcp_connect() must refresh the route
  net: sched: set xt_tgchk_param par.nft_compat as 0 in ipt_init_target
  bpf, s390: fix jit branch offset related to ldimm64
  net: fix keepalive code vs TCP_FASTOPEN_CONNECT
  tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states
  Linux 4.4.81
  workqueue: implicit ordered attribute should be overridable
  net: account for current skb length when deciding about UFO
  ...

Signed-off-by: David Huang <d-huang@ti.com>
3 years agoMerge branch 'linux-linaro-lsk-v4.4' of http://git.linaro.org/kernel/linux-linaro...
LCPD Auto Merger [Mon, 14 Aug 2017 22:14:28 +0000 (17:14 -0500)]
Merge branch 'linux-linaro-lsk-v4.4' of git.linaro.org/kernel/linux-linaro-stable into ti-lsk-linux-4.4.y

TI-Feature: linaro-stable-4-4
TI-Tree: http://git.linaro.org/kernel/linux-linaro-stable.git
TI-Branch: linux-linaro-lsk-v4.4

* 'linux-linaro-lsk-v4.4' of http://git.linaro.org/kernel/linux-linaro-stable:
  kvm: arm64: Disable compiler instrumentation for hypervisor code
  Linux 4.4.82
  net: account for current skb length when deciding about UFO
  ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output
  mm/mempool: avoid KASAN marking mempool poison checks as use-after-free
  KVM: arm/arm64: Handle hva aging while destroying the vm
  sparc64: Prevent perf from running during super critical sections
  udp: consistently apply ufo or fragmentation
  revert "ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output"
  revert "net: account for current skb length when deciding about UFO"
  packet: fix tp_reserve race in packet_set_ring
  net: avoid skb_warn_bad_offload false positives on UFO
  tcp: fastopen: tcp_connect() must refresh the route
  net: sched: set xt_tgchk_param par.nft_compat as 0 in ipt_init_target
  bpf, s390: fix jit branch offset related to ldimm64
  net: fix keepalive code vs TCP_FASTOPEN_CONNECT
  tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
3 years agoMerge tag 'v4.4.82' of http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux...
LCPD Auto Merger [Mon, 14 Aug 2017 22:14:11 +0000 (17:14 -0500)]
Merge tag 'v4.4.82' of git./linux/kernel/git/stable/linux-stable into ti-linux-4.4.y

This is the 4.4.82 stable release

* tag 'v4.4.82' of http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable:
  Linux 4.4.82
  net: account for current skb length when deciding about UFO
  ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output
  mm/mempool: avoid KASAN marking mempool poison checks as use-after-free
  KVM: arm/arm64: Handle hva aging while destroying the vm
  sparc64: Prevent perf from running during super critical sections
  udp: consistently apply ufo or fragmentation
  revert "ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output"
  revert "net: account for current skb length when deciding about UFO"
  packet: fix tp_reserve race in packet_set_ring
  net: avoid skb_warn_bad_offload false positives on UFO
  tcp: fastopen: tcp_connect() must refresh the route
  net: sched: set xt_tgchk_param par.nft_compat as 0 in ipt_init_target
  bpf, s390: fix jit branch offset related to ldimm64
  net: fix keepalive code vs TCP_FASTOPEN_CONNECT
  tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states

Signed-off-by: LCPD Auto Merger <lcpd_integration@list.ti.com>
3 years ago Merge tag 'v4.4.82' into linux-linaro-lsk-v4.4
Alex Shi [Mon, 14 Aug 2017 04:01:22 +0000 (12:01 +0800)]
 Merge tag 'v4.4.82' into linux-linaro-lsk-v4.4

 This is the 4.4.82 stable release