Linux 5.4.134
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.134 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arm/boot/dts/am335x-cm-t335.dts | 2 arch/arm/boot/dts/am43x-epos-evm.dts | 4 arch/arm/boot/dts/bcm5301x.dtsi | 18 +- arch/arm/boot/dts/exynos5422-odroidhc1.dts | 2 arch/arm/boot/dts/exynos5422-odroidxu4.dts | 2 arch/arm/boot/dts/exynos54xx-odroidxu-leds.dtsi | 4 arch/arm/boot/dts/gemini-rut1xx.dts | 12 - arch/arm/boot/dts/imx6q-dhcom-som.dtsi | 41 ++++ arch/arm/boot/dts/r8a7779-marzen.dts | 2 arch/arm/boot/dts/r8a7779.dtsi | 1 arch/arm/mach-exynos/exynos.c | 2 arch/arm/probes/kprobes/test-thumb.c | 10 - arch/arm64/boot/dts/renesas/r8a77970-v3msk.dts | 2 arch/hexagon/kernel/vmlinux.lds.S | 7 arch/mips/boot/compressed/Makefile | 4 arch/mips/boot/compressed/decompress.c | 2 arch/mips/include/asm/vdso/vdso.h | 2 arch/powerpc/boot/devtree.c | 59 +++--- arch/powerpc/boot/ns16550.c | 9 - arch/powerpc/include/asm/ps3.h | 2 arch/powerpc/platforms/ps3/mm.c | 12 + arch/s390/boot/ipl_parm.c | 19 +- arch/s390/boot/mem_detect.c | 47 +++-- arch/s390/include/asm/processor.h | 4 arch/s390/kernel/setup.c | 2 arch/um/drivers/chan_user.c | 3 arch/um/drivers/slip_user.c | 3 arch/x86/include/asm/fpu/internal.h | 19 +- arch/x86/kernel/fpu/regset.c | 2 arch/x86/kernel/signal.c | 24 ++ arch/x86/kvm/cpuid.c | 8 arch/x86/kvm/x86.c | 2 drivers/acpi/acpi_amba.c | 1 drivers/acpi/acpi_video.c | 9 + drivers/block/virtio_blk.c | 2 drivers/char/virtio_console.c | 4 drivers/dma/fsl-qdma.c | 6 drivers/firmware/arm_scmi/driver.c | 4 drivers/firmware/tegra/bpmp-tegra210.c | 2 drivers/firmware/turris-mox-rwtm.c | 53 +++++- drivers/gpio/gpio-pca953x.c | 1 drivers/gpio/gpio-zynq.c | 5 drivers/hwtracing/intel_th/core.c | 17 + drivers/hwtracing/intel_th/gth.c | 16 + drivers/hwtracing/intel_th/intel_th.h | 3 drivers/i2c/i2c-core-base.c | 3 drivers/iio/gyro/fxas21002c_core.c | 11 - drivers/iio/magnetometer/bmc150_magn.c | 10 - drivers/input/touchscreen/hideep.c | 13 + drivers/iommu/arm-smmu.c | 10 - drivers/memory/atmel-ebi.c | 4 drivers/memory/fsl_ifc.c | 8 drivers/memory/pl353-smc.c | 1 drivers/mfd/da9052-i2c.c | 1 drivers/mfd/motorola-cpcap.c | 4 drivers/mfd/stmpe-i2c.c | 2 drivers/misc/cardreader/alcor_pci.c | 8 drivers/misc/ibmasm/module.c | 5 drivers/net/ethernet/moxa/moxart_ether.c | 4 drivers/net/virtio_net.c | 27 ++- drivers/nvme/target/tcp.c | 1 drivers/pci/controller/pci-tegra.c | 1 drivers/pci/controller/pcie-iproc-msi.c | 29 ++- drivers/pci/p2pdma.c | 34 +++ drivers/pci/pci-label.c | 2 drivers/power/reset/gpio-poweroff.c | 1 drivers/power/supply/Kconfig | 3 drivers/power/supply/ab8500_btemp.c | 1 drivers/power/supply/ab8500_charger.c | 19 ++ drivers/power/supply/ab8500_fg.c | 1 drivers/power/supply/charger-manager.c | 1 drivers/power/supply/max17042_battery.c | 2 drivers/power/supply/rt5033_battery.c | 7 drivers/power/supply/sc2731_charger.c | 1 drivers/power/supply/sc27xx_fuel_gauge.c | 1 drivers/pwm/pwm-img.c | 2 drivers/pwm/pwm-imx1.c | 2 drivers/pwm/pwm-spear.c | 4 drivers/pwm/pwm-tegra.c | 13 - drivers/reset/core.c | 5 drivers/reset/reset-a10sr.c | 1 drivers/reset/reset-brcmstb.c | 1 drivers/rtc/proc.c | 4 drivers/s390/char/sclp_vt220.c | 4 drivers/scsi/be2iscsi/be_main.c | 5 drivers/scsi/bnx2i/bnx2i_iscsi.c | 2 drivers/scsi/cxgbi/libcxgbi.c | 4 drivers/scsi/device_handler/scsi_dh_alua.c | 11 - drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 12 - drivers/scsi/hosts.c | 4 drivers/scsi/libiscsi.c | 122 ++++++-------- drivers/scsi/lpfc/lpfc_els.c | 9 + drivers/scsi/lpfc/lpfc_sli.c | 5 drivers/scsi/megaraid/megaraid_sas.h | 12 + drivers/scsi/megaraid/megaraid_sas_base.c | 96 ++++++++++- drivers/scsi/megaraid/megaraid_sas_fp.c | 6 drivers/scsi/megaraid/megaraid_sas_fusion.c | 10 - drivers/scsi/qedi/qedi_fw.c | 2 drivers/scsi/qedi/qedi_main.c | 2 drivers/scsi/scsi_transport_iscsi.c | 12 + drivers/staging/rtl8723bs/hal/odm.h | 5 drivers/thermal/rcar_gen3_thermal.c | 2 drivers/tty/serial/8250/serial_cs.c | 11 + drivers/tty/serial/fsl_lpuart.c | 3 drivers/tty/serial/uartlite.c | 27 --- drivers/usb/gadget/function/f_hid.c | 2 drivers/usb/gadget/legacy/hid.c | 4 drivers/video/backlight/lm3630a_bl.c | 12 - drivers/video/fbdev/core/fbmem.c | 12 - drivers/w1/slaves/w1_ds2438.c | 4 drivers/watchdog/aspeed_wdt.c | 2 drivers/watchdog/iTCO_wdt.c | 12 + drivers/watchdog/imx_sc_wdt.c | 11 - drivers/watchdog/lpc18xx_wdt.c | 2 drivers/watchdog/sbc60xxwdt.c | 2 drivers/watchdog/sc520_wdt.c | 2 drivers/watchdog/w83877f_wdt.c | 2 fs/ceph/addr.c | 10 - fs/f2fs/super.c | 1 fs/jfs/jfs_logmgr.c | 1 fs/nfs/inode.c | 4 fs/nfs/nfs3proc.c | 4 fs/nfs/nfs4client.c | 82 ++++----- fs/nfs/pnfs_nfs.c | 52 ++--- fs/orangefs/super.c | 2 fs/seq_file.c | 3 fs/ubifs/dir.c | 7 include/linux/nfs_fs.h | 1 include/linux/sched/signal.h | 19 +- include/scsi/libiscsi.h | 11 - include/scsi/scsi_transport_iscsi.h | 2 kernel/cgroup/cgroup-v1.c | 2 kernel/rcu/rcu.h | 2 kernel/rcu/srcutree.c | 3 kernel/rcu/tree.c | 16 + kernel/trace/trace_events_hist.c | 6 lib/decompress_unlz4.c | 8 sound/ac97/bus.c | 2 sound/firewire/Kconfig | 5 sound/firewire/bebob/bebob.c | 5 sound/firewire/oxfw/oxfw.c | 2 sound/isa/cmi8330.c | 2 sound/isa/sb/sb16_csp.c | 8 sound/pci/hda/hda_tegra.c | 3 sound/ppc/powermac.c | 6 sound/soc/img/img-i2s-in.c | 2 sound/soc/intel/boards/kbl_da7219_max98357a.c | 4 sound/soc/intel/common/soc-acpi-intel-kbl-match.c | 2 sound/soc/soc-core.c | 2 sound/usb/mixer_scarlett_gen2.c | 39 ++-- sound/usb/usx2y/usb_stream.c | 7 tools/testing/selftests/powerpc/pmu/ebb/no_handler_test.c | 2 tools/testing/selftests/timers/rtcpie.c | 10 + virt/kvm/coalesced_mmio.c | 2 155 files changed, 978 insertions(+), 498 deletions(-)
Alexander Shishkin (1):
intel_th: Wait until port is in reset before programming it
Arnd Bergmann (1):
mips: always link byteswap helpers into decompressor
Aswath Govindraju (2):
ARM: dts: am335x: align ti,pindir-d0-out-d1-in property with dt-shema
ARM: dts: am437x: align ti,pindir-d0-out-d1-in property with dt-shema
Athira Rajeev (1):
selftests/powerpc: Fix "no_handler" EBB selftest
Benjamin Herrenschmidt (1):
powerpc/boot: Fixup device-tree on little endian
Bixuan Cui (1):
power: reset: gpio-poweroff: add missing MODULE_DEVICE_TABLE
Chandrakanth Patil (2):
scsi: megaraid_sas: Fix resource leak in case of probe failure
scsi: megaraid_sas: Handle missing interrupts while re-enabling IRQs
Chang S. Bae (1):
x86/signal: Detect and prevent an alternate signal stack overflow
Chao Yu (1):
f2fs: add MODULE_SOFTDEP to ensure crc32 is included in the initramfs
Christian Brauner (1):
cgroup: verify that source is a string
Christoph Niedermaier (3):
ARM: dts: imx6q-dhcom: Fix ethernet reset time properties
ARM: dts: imx6q-dhcom: Fix ethernet plugin detection problems
ARM: dts: imx6q-dhcom: Add gpios pinctrl for i2c bus recovery
Christophe JAILLET (2):
tty: serial: 8250: serial_cs: Fix a memory leak in error handling path
scsi: be2iscsi: Fix an error handling path in beiscsi_dev_probe()
Corentin Labbe (1):
ARM: dts: gemini-rut1xx: remove duplicate ethernet node
Cristian Marussi (1):
firmware: arm_scmi: Reset Rx buffer to max size during async commands
Dan Carpenter (2):
rtc: fix snprintf() checking in is_rtc_hctosys()
scsi: scsi_dh_alua: Fix signedness bug in alua_rtpg()
Daniel Mack (1):
serial: tty: uartlite: fix console setup
Dimitri John Ledkov (1):
lib/decompress_unlz4.c: correctly handle zero-padding around initrds.
Dmitry Torokhov (1):
i2c: core: Disable client irq on reboot/shutdown
Eric Sandeen (1):
seq_file: disallow extremely large seq buffer allocations
Fabio Aiuto (1):
staging: rtl8723bs: fix macro value for 2.4Ghz only device
Frederic Weisbecker (1):
srcu: Fix broken node geometry after early ssp init
Gao Xiang (1):
nfs: fix acl memory leak of posix_acl_create()
Geert Uytterhoeven (1):
ARM: dts: r8a7779, marzen: Fix DU clock names
Geoff Levand (1):
powerpc/ps3: Add dma_mask to ps3_dma_region
Geoffrey D. Bennett (4):
ALSA: usb-audio: scarlett2: Fix 18i8 Gen 2 PCM Input count
ALSA: usb-audio: scarlett2: Fix data_mutex lock
ALSA: usb-audio: scarlett2: Fix scarlett2_*_ctl_put() return values
ALSA: usb-audio: scarlett2: Fix 6i6 Gen 2 line out descriptions
Greg Kroah-Hartman (1):
Linux 5.4.134
Hannes Reinecke (1):
scsi: scsi_dh_alua: Check for negative result value
Hans de Goede (1):
ACPI: video: Add quirk for the Dell Vostro 3350
Heiko Carstens (4):
s390/processor: always inline stap() and __load_psw_mask() s390/ipl_parm: fix program check new psw handling s390/mem_detect: fix diag260() program check new psw handling s390/mem_detect: fix tprot() program check new psw handling
James Smart (2):
scsi: lpfc: Fix "Unexpected timeout" error in direct attach topology
scsi: lpfc: Fix crash when lpfc_sli4_hba_setup() fails to initialize the SGLs
Jan Kiszka (1):
watchdog: iTCO_wdt: Account for rebooting on second timeout
Jeff Layton (1):
ceph: remove bogus checks and WARN_ONs from ceph_set_page_dirty
Jiajun Cao (1):
ALSA: hda: Add IRQ check for platform_get_irq()
Jiapeng Chong (1):
fs/jfs: Fix missing error code in lmLogInit()
John Garry (1):
scsi: core: Cap scsi_host cmd_per_lun at can_queue
Jonathan Cameron (2):
iio: gyro: fxa21002c: Balance runtime pm + use pm_runtime_resume_and_get().
iio: magn: bmc150: Balance runtime pm + use pm_runtime_resume_and_get()
Kashyap Desai (1):
scsi: megaraid_sas: Early detection of VD deletion through RaidMap update
Kefeng Wang (1):
KVM: mmio: Fix use-after-free Read in kvm_vm_ioctl_unregister_coalesced_mmio
Krzysztof Kozlowski (9):
power: supply: max17042: Do not enforce (incorrect) interrupt trigger type
reset: a10sr: add missing of_match_table reference
ARM: exynos: add missing of_node_put for loop iteration
ARM: dts: exynos: fix PWM LED max brightness on Odroid XU/XU3
ARM: dts: exynos: fix PWM LED max brightness on Odroid HC1
ARM: dts: exynos: fix PWM LED max brightness on Odroid XU4
memory: atmel-ebi: add missing of_node_put for loop iteration
memory: fsl_ifc: fix leak of IO mapping on probe failure
memory: fsl_ifc: fix leak of private memory on probe failure
Krzysztof Wilczyński (1):
PCI/sysfs: Fix dsm_label_utf16s_to_utf8s() buffer overrun
Lai Jiangshan (1):
KVM: X86: Disable hardware breakpoints unconditionally before kvm_x86->run()
Liguang Zhang (1):
ACPI: AMBA: Fix resource name in /proc/iomem
Linus Walleij (1):
power: supply: ab8500: Avoid NULL pointers
Logan Gunthorpe (1):
PCI/P2PDMA: Avoid pci_get_slot(), which may sleep
Luiz Sampaio (1):
w1: ds2438: fixing bug that would always get page0
Lv Yunlong (1):
misc/libmasm/module: Fix two use after free in ibmasm_init_one
Marek Behún (2):
firmware: turris-mox-rwtm: fix reply status decoding function
firmware: turris-mox-rwtm: report failures better
Martin Fäcknitz (1):
MIPS: vdso: Invalid GIC access through VDSO
Maurizio Lombardi (1):
nvme-tcp: can't set sk_user_data without write_lock
Michael S. Tsirkin (1):
virtio_net: move tx vq operation under tx queue lock
Mike Christie (4):
scsi: iscsi: Add iscsi_cls_conn refcount helpers
scsi: iscsi: Fix conn use after free during resets
scsi: iscsi: Fix shost->max_id use
scsi: qedi: Fix null ref during abort handling
Mike Marshall (1):
orangefs: fix orangefs df output.
Nathan Chancellor (1):
hexagon: use common DISCARDS macro
Nick Desaulniers (1):
ARM: 9087/1: kprobes: test-thumb: fix for LLVM_IAS=1
Niklas Söderlund (1):
thermal/drivers/rcar_gen3_thermal: Fix coefficient calculations
Pali Rohár (1):
firmware: turris-mox-rwtm: fail probing when firmware does not support hwrng
Peter Robinson (1):
gpio: pca953x: Add support for the On Semi pca9655
Philipp Zabel (1):
reset: bail if try_module_get() fails
Pierre-Louis Bossart (1):
ASoC: Intel: kbl_da7219_max98357a: shrink platform_id below 20 characters
Po-Hsu Lin (1):
selftests: timers: rtcpie: skip test if default RTC device does not exist
Rafał Miłecki (1):
ARM: dts: BCM5301X: Fixup SPI binding
Randy Dunlap (1):
mips: disable branch profiling in boot/decompress.o
Robin Gong (1):
dmaengine: fsl-qdma: check dma_set_mask return value
Ruslan Bilovol (1):
usb: gadget: f_hid: fix endianness issue with descriptors
Sandor Bodo-Merle (2):
PCI: iproc: Fix multi-MSI base vector number allocation
PCI: iproc: Support multi-MSI only on uniprocessor kernel
Sean Christopherson (1):
KVM: x86: Use guest MAXPHYADDR from CPUID.0x8000_0008 iff TDP is enabled
Sergey Shtylyov (1):
scsi: hisi_sas: Propagate errors in interrupt_init_v1_hw()
Sherry Sun (1):
tty: serial: fsl_lpuart: fix the potential risk of division or modulo by zero
Srinivas Neeli (1):
gpio: zynq: Check return value of pm_runtime_get_sync
Stefan Eichenberger (1):
watchdog: imx_sc_wdt: fix pretimeout
Stephan Gerhold (1):
power: supply: rt5033_battery: Fix device tree enumeration
Steven Rostedt (VMware) (1):
tracing: Do not reference char * as a string in histograms
Takashi Iwai (2):
ALSA: usx2y: Don't call free_pages_exact() with NULL address
ALSA: sb: Fix potential double-free of CSP mixer elements
Takashi Sakamoto (2):
Revert "ALSA: bebob/oxfw: fix Kconfig entry for Mackie d.2 Pro"
ALSA: bebob: add support for ToneWeal FW66
Tao Ren (1):
watchdog: aspeed: fix hardware timeout calculation
Thomas Gleixner (2):
x86/fpu: Return proper error codes from user access functions x86/fpu: Limit xstate copy size in xstateregs_set()
Tong Zhang (2):
misc: alcor_pci: fix null-ptr-deref when there is no PCI bridge
misc: alcor_pci: fix inverted branch condition
Tony Lindgren (1):
mfd: cpcap: Fix cpcap dmamask not set warnings
Trond Myklebust (3):
NFS: nfs_find_open_context() may only select open files
NFSv4: Initialise connection to the server in nfs4_alloc_client() NFSv4/pNFS: Don't call _nfs4_pnfs_v3_ds_connect multiple times
Tyrel Datwyler (1):
scsi: core: Fix bad pointer dereference when ehandler kthread is invalid
Uwe Kleine-König (4):
backlight: lm3630a: Fix return code of .update_status() callback
pwm: spear: Don't modify HW state in .remove callback
pwm: tegra: Don't modify HW state in .remove callback
pwm: imx1: Don't disable clocks at device remove time
Valentin Vidic (1):
s390/sclp_vt220: fix console name to match device
Valentine Barshak (1):
arm64: dts: renesas: v3msk: Fix memory size
Xie Yongji (3):
virtio-blk: Fix memory leak among suspend/resume procedure
virtio_net: Fix error handling in virtnet_restore()
virtio_console: Assure used length from device is limited
Xiyu Yang (2):
iommu/arm-smmu: Fix arm_smmu_device refcount leak when arm_smmu_rpm_get fails iommu/arm-smmu: Fix arm_smmu_device refcount leak in address translation
Yang Yingliang (3):
net: moxa: Use devm_platform_get_and_ioremap_resource()
ALSA: ppc: fix error return code in snd_pmac_probe()
usb: gadget: hid: fix error return code in hid_bind()
Yizhuo Zhai (1):
Input: hideep - fix the uninitialized use in hideep_nvm_unlock()
Yufen Yu (2):
ALSA: ac97: fix PM reference leak in ac97_bus_remove()
ASoC: img: Fix PM reference leak in img_i2s_in_probe()
Zhen Lei (7):
fbmem: Do not delete the mode that is still in use
ASoC: soc-core: Fix the error return code in snd_soc_of_parse_audio_routing()
um: fix error return code in slip_open()
um: fix error return code in winch_tramp()
ALSA: isa: Fix error return code in snd_cmi8330_probe()
memory: pl353: Fix error return code in pl353_smc_probe()
firmware: tegra: Fix error return code in tegra210_bpmp_init()
Zhihao Cheng (1):
ubifs: Set/Clear I_LINKABLE under i_lock for whiteout inode
Zou Wei (11):
mfd: da9052/stmpe: Add and modify MODULE_DEVICE_TABLE
power: supply: sc27xx: Add missing MODULE_DEVICE_TABLE
power: supply: sc2731_charger: Add missing MODULE_DEVICE_TABLE
watchdog: Fix possible use-after-free in wdt_startup()
watchdog: sc520_wdt: Fix possible use-after-free in wdt_turnoff()
watchdog: Fix possible use-after-free by calling del_timer_sync()
PCI: tegra: Add missing MODULE_DEVICE_TABLE
power: supply: charger-manager: add missing MODULE_DEVICE_TABLE
power: supply: ab8500: add missing MODULE_DEVICE_TABLE
pwm: img: Fix PM reference leak in img_pwm_enable()
reset: brcmstb: Add missing MODULE_DEVICE_TABLE
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 133 +SUBLEVEL = 134 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arm/boot/dts/am335x-cm-t335.dts +1 -1
@@ -516,7 +516,7 @@ status = "okay"; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&spi0_pins>; - ti,pindir-d0-out-d1-in = <1>; + ti,pindir-d0-out-d1-in; /* WLS1271 WiFi */ wlcore: wlcore@1 { compatible = "ti,wl1271";
arch/arm/boot/dts/am43x-epos-evm.dts +2 -2
@@ -848,7 +848,7 @@ pinctrl-names = "default", "sleep"; pinctrl-0 = <&spi0_pins_default>; pinctrl-1 = <&spi0_pins_sleep>; - ti,pindir-d0-out-d1-in = <1>; + ti,pindir-d0-out-d1-in; }; &spi1 {
@@ -856,7 +856,7 @@ pinctrl-names = "default", "sleep"; pinctrl-0 = <&spi1_pins_default>; pinctrl-1 = <&spi1_pins_sleep>; - ti,pindir-d0-out-d1-in = <1>; + ti,pindir-d0-out-d1-in; }; &usb2_phy1 {
arch/arm/boot/dts/bcm5301x.dtsi +9 -9
@@ -494,27 +494,27 @@ <0x1811b408 0x004>, <0x180293a0 0x01c>; reg-names = "mspi", "bspi", "intr_regs", "intr_status_reg"; - interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, + interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "spi_lr_fullness_reached", + <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "mspi_done", + "mspi_halted", + "spi_lr_fullness_reached", "spi_lr_session_aborted", "spi_lr_impatient", "spi_lr_session_done", - "spi_lr_overhead", - "mspi_done", - "mspi_halted"; + "spi_lr_overread"; clocks = <&iprocmed>; clock-names = "iprocmed"; num-cs = <2>; #address-cells = <1>; #size-cells = <0>; - spi_nor: spi-nor@0 { + spi_nor: flash@0 { compatible = "jedec,spi-nor"; reg = <0>; spi-max-frequency = <20000000>;
arch/arm/boot/dts/exynos5422-odroidhc1.dts +1 -1
@@ -22,7 +22,7 @@ label = "blue:heartbeat"; pwms = <&pwm 2 2000000 0>; pwm-names = "pwm2"; - max_brightness = <255>; + max-brightness = <255>; linux,default-trigger = "heartbeat"; }; };
arch/arm/boot/dts/exynos5422-odroidxu4.dts +1 -1
@@ -24,7 +24,7 @@ label = "blue:heartbeat"; pwms = <&pwm 2 2000000 0>; pwm-names = "pwm2"; - max_brightness = <255>; + max-brightness = <255>; linux,default-trigger = "heartbeat"; }; };
arch/arm/boot/dts/exynos54xx-odroidxu-leds.dtsi +2 -2
@@ -22,7 +22,7 @@ * Green LED is much brighter than the others * so limit its max brightness */ - max_brightness = <127>; + max-brightness = <127>; linux,default-trigger = "mmc0"; };
@@ -30,7 +30,7 @@ label = "blue:heartbeat"; pwms = <&pwm 2 2000000 0>; pwm-names = "pwm2"; - max_brightness = <255>; + max-brightness = <255>; linux,default-trigger = "heartbeat"; }; };
arch/arm/boot/dts/gemini-rut1xx.dts +0 -12
@@ -125,18 +125,6 @@ }; }; - ethernet@60000000 { - status = "okay"; - - ethernet-port@0 { - phy-mode = "rgmii"; - phy-handle = <&phy0>; - }; - ethernet-port@1 { - /* Not used in this platform */ - }; - }; - usb@68000000 { status = "okay"; };
arch/arm/boot/dts/imx6q-dhcom-som.dtsi +36 -5
84 lines not on this page · raw message
arch/arm/boot/dts/r8a7779-marzen.dts +1 -1
@@ -146,7 +146,7 @@ status = "okay"; clocks = <&mstp1_clks R8A7779_CLK_DU>, <&x3_clk>; - clock-names = "du", "dclkin.0"; + clock-names = "du.0", "dclkin.0"; ports { port@0 {
arch/arm/boot/dts/r8a7779.dtsi +1 -0
@@ -463,6 +463,7 @@ reg = <0xfff80000 0x40000>; interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; clocks = <&mstp1_clks R8A7779_CLK_DU>; + clock-names = "du.0"; power-domains = <&sysc R8A7779_PD_ALWAYS_ON>; status = "disabled";
arch/arm/mach-exynos/exynos.c +2 -0
@@ -46,6 +46,7 @@ void __init exynos_sysram_init(void) sysram_base_addr =of_iomap (node,0 ); sysram_base_phys =of_translate_address (node,of_get_address (node,0 ,NULL ,NULL )); +of_node_put (node);break ; }
@@ -53,6 +54,7 @@ void __init exynos_sysram_init(void)if (!of_device_is_available (node))continue ; sysram_ns_base_addr =of_iomap (node,0 ); +of_node_put (node);break ; } }
arch/arm/probes/kprobes/test-thumb.c +5 -5
@@ -441,21 +441,21 @@ void kprobe_thumb32_test_cases(void) "3: mvn r0, r0 \n\t" "2: nop \n\t") - TEST_RX("tbh [pc, r",7, (9f-(1f+4))>>1,"]", + TEST_RX("tbh [pc, r",7, (9f-(1f+4))>>1,", lsl #1]", "9: \n\t" ".short (2f-1b-4)>>1 \n\t" ".short (3f-1b-4)>>1 \n\t" "3: mvn r0, r0 \n\t" "2: nop \n\t") - TEST_RX("tbh [pc, r",12, ((9f-(1f+4))>>1)+1,"]", + TEST_RX("tbh [pc, r",12, ((9f-(1f+4))>>1)+1,", lsl #1]", "9: \n\t" ".short (2f-1b-4)>>1 \n\t" ".short (3f-1b-4)>>1 \n\t" "3: mvn r0, r0 \n\t" "2: nop \n\t") -TEST_RRX ("tbh [r" ,1 ,9f ,", r" ,14 ,1 ,"]" , +TEST_RRX ("tbh [r" ,1 ,9f ,", r" ,14 ,1 ,", lsl #1]" ,"9: \n\t" ".short (2f-1b-4)>>1 \n\t" ".short (3f-1b-4)>>1 \n\t"
@@ -468,10 +468,10 @@ void kprobe_thumb32_test_cases(void) TEST_UNSUPPORTED("strexb r0, r1, [r2]") TEST_UNSUPPORTED("strexh r0, r1, [r2]") - TEST_UNSUPPORTED("strexd r0, r1, [r2]") + TEST_UNSUPPORTED("strexd r0, r1, r2, [r2]") TEST_UNSUPPORTED("ldrexb r0, [r1]") TEST_UNSUPPORTED("ldrexh r0, [r1]") - TEST_UNSUPPORTED("ldrexd r0, [r1]") + TEST_UNSUPPORTED("ldrexd r0, r1, [r1]")TEST_GROUP ("Data-processing (shifted register) and (modified immediate)" )
arch/arm64/boot/dts/renesas/r8a77970-v3msk.dts +1 -1
@@ -59,7 +59,7 @@ memory@48000000 { device_type = "memory"; /* first 128MB is reserved for secure area. */ - reg = <0x0 0x48000000 0x0 0x38000000>; + reg = <0x0 0x48000000 0x0 0x78000000>; }; osc5_clk: osc5-clock {
arch/hexagon/kernel/vmlinux.lds.S +1 -6
@@ -60,13 +60,8 @@ SECTIONS _end = .; - /DISCARD/ : { - EXIT_TEXT - EXIT_DATA - EXIT_CALL - } - STABS_DEBUG DWARF_DEBUG + DISCARDS }
arch/mips/boot/compressed/Makefile +2 -2
@@ -33,7 +33,7 @@ KBUILD_AFLAGS := $(KBUILD_AFLAGS) -D__ASSEMBLY__ \ KCOV_INSTRUMENT := n # decompressor objects (linked with vmlinuz) -vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o +vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o $(obj)/bswapsi.o ifdef CONFIG_DEBUG_ZBOOT vmlinuzobjs-$(CONFIG_DEBUG_ZBOOT) += $(obj)/dbg.o
@@ -47,7 +47,7 @@ extra-y += uart-ath79.c $(obj)/uart-ath79.c: $(srctree)/arch/mips/ath79/early_printk.c $(call cmd,shipped) -vmlinuzobjs-$(CONFIG_KERNEL_XZ) += $(obj)/ashldi3.o $(obj)/bswapsi.o +vmlinuzobjs-$(CONFIG_KERNEL_XZ) += $(obj)/ashldi3.o extra-y += ashldi3.c $(obj)/ashldi3.c: $(obj)/%.c: $(srctree)/lib/%.c FORCE
arch/mips/boot/compressed/decompress.c +2 -0
@@ -7,6 +7,8 @@* Author: Wu Zhangjin <[email protected]> */ +#define DISABLE_BRANCH_PROFILING +#include <linux/types.h> #include <linux/kernel.h> #include <linux/string.h>
arch/mips/include/asm/vdso/vdso.h +1 -1
@@ -67,7 +67,7 @@ static inline const struct vdso_data *get_vdso_data(void)static inline void __iomem *get_gic (const struct vdso_data *data) { -return (void __iomem *)data -PAGE_SIZE ; +return (void __iomem *)((unsigned long )data &PAGE_MASK ) -PAGE_SIZE ; }#endif /* CONFIG_CLKSRC_MIPS_GIC */
arch/powerpc/boot/devtree.c +34 -25
165 lines not on this page · raw message
arch/powerpc/boot/ns16550.c +7 -2
@@ -15,6 +15,7 @@#include "stdio.h" #include "io.h" #include "ops.h" +#include "of.h" #define UART_DLL 0/* Out: Divisor Latch Low */ #define UART_DLM 1/* Out: Divisor Latch High */
@@ -58,16 +59,20 @@ int ns16550_console_init(void *devp, struct serial_console_data *scdp)int n;u32 reg_offset; -if (dt_get_virtual_reg (devp, (void **)®_base,1 ) <1 ) +if (dt_get_virtual_reg (devp, (void **)®_base,1 ) <1 ) { +printf ("virt reg parse fail...\r\n" );return -1 ; + } n =getprop (devp,"reg-offset" , ®_offset,sizeof (reg_offset));if (n ==sizeof (reg_offset)) - reg_base += reg_offset; + reg_base +=be32_to_cpu (reg_offset); n =getprop (devp,"reg-shift" , ®_shift,sizeof (reg_shift));if (n !=sizeof (reg_shift)) reg_shift =0 ; +else + reg_shift =be32_to_cpu (reg_shift); scdp->open = ns16550_open; scdp->putc = ns16550_putc;
arch/powerpc/include/asm/ps3.h +2 -0
@@ -71,6 +71,7 @@ struct ps3_dma_region_ops;* @bus_addr: The 'translated' bus address of the region. * @len: The length in bytes of the region. * @offset: The offset from the start of memory of the region. +* @dma_mask: Device dma_mask. * @ioid: The IOID of the device who owns this region * @chunk_list: Opaque variable used by the ioc page manager. * @region_ops: struct ps3_dma_region_ops - dma region operations
@@ -85,6 +86,7 @@ struct ps3_dma_region {enum ps3_dma_region_type region_type;unsigned long len;unsigned long offset; +u64 dma_mask;/* driver variables (set by ps3_dma_region_create) */ unsigned long bus_addr;
arch/powerpc/platforms/ps3/mm.c +12 -0
@@ -6,6 +6,7 @@* Copyright 2006 Sony Corp. */ +#include <linux/dma-mapping.h> #include <linux/kernel.h> #include <linux/export.h> #include <linux/memblock.h>
@@ -1118,6 +1119,7 @@ int ps3_dma_region_init(struct ps3_system_bus_device *dev, enum ps3_dma_region_type region_type, void *addr, unsigned long len) { unsigned long lpar_addr; +int result; lpar_addr = addr ?ps3_mm_phys_to_lpar (__pa (addr)) :0 ;
@@ -1129,6 +1131,16 @@ int ps3_dma_region_init(struct ps3_system_bus_device *dev, r->offset -= map.r1.offset; r->len = len ? len :_ALIGN_UP (map.total,1 << r->page_size); + dev->core.dma_mask = &r->dma_mask; + + result =dma_set_mask_and_coherent (&dev->core,DMA_BIT_MASK (32 )); + +if (result <0 ) { +dev_err (&dev->core,"%s:%d: dma_set_mask_and_coherent failed: %d\n" , + __func__, __LINE__, result); +return result; + } +switch (dev->dev_type) {case PS3_DEVICE_TYPE_SB : r->region_ops = (USE_DYNAMIC_DMA )
arch/s390/boot/ipl_parm.c +11 -8
@@ -27,22 +27,25 @@ static inline int __diag308(unsigned long subcode, void *addr) register unsigned long _addr asm("0") = (unsigned long)addr; register unsigned long _rc asm("1") = 0;unsigned long reg1, reg2; -psw_t old = S390_lowcore.program_new_psw; +psw_t old; asmvolatile ( +" mvc 0(16,%[psw_old]),0(%[psw_pgm])\n" " epsw %0,%1\n" -" st %0,%[psw_pgm]\n" -" st %1,%[psw_pgm]+4\n" +" st %0,0(%[psw_pgm])\n" +" st %1,4(%[psw_pgm])\n" " larl %0,1f\n" -" stg %0,%[psw_pgm]+8\n" +" stg %0,8(%[psw_pgm])\n" " diag %[addr],%[subcode],0x308\n" -"1: nopr %%r7\n" +"1: mvc 0(16,%[psw_pgm]),0(%[psw_old])\n" :"=&d" (reg1),"=&a" (reg2), - [psw_pgm]"=Q" (S390_lowcore.program_new_psw), +"+Q" (S390_lowcore.program_new_psw), +"=Q" (old), [addr]"+d" (_addr),"+d" (_rc) - : [subcode]"d" (subcode) + : [subcode]"d" (subcode), + [psw_old]"a" (&old), + [psw_pgm]"a" (&S390_lowcore.program_new_psw) :"cc" ,"memory" ); - S390_lowcore.program_new_psw = old;return _rc; }
arch/s390/boot/mem_detect.c +28 -19
76 lines not on this page · raw message
arch/s390/include/asm/processor.h +2 -2
@@ -215,7 +215,7 @@ static inline unsigned long current_stack_pointer(void)return sp; } -static __no_kasan_or_inline unsigned short stap (void ) +static __always_inline unsigned short stap (void ) {unsigned short cpu_address;
@@ -254,7 +254,7 @@ static inline void __load_psw(psw_t psw)* Set PSW mask to specified value, while leaving the * PSW addr pointing to the next instruction. */ -static __no_kasan_or_inline void __load_psw_mask(unsigned long mask) +static __always_inline void __load_psw_mask(unsigned long mask) {unsigned long addr;psw_t psw;
arch/s390/kernel/setup.c +1 -1
@@ -162,7 +162,7 @@ static void __init set_preferred_console(void)else if (CONSOLE_IS_3270 )add_preferred_console ("tty3270" ,0 ,NULL );else if (CONSOLE_IS_VT220 ) -add_preferred_console ("ttyS" ,1 ,NULL ); +add_preferred_console ("ttysclp" ,0 ,NULL );else if (CONSOLE_IS_HVC )add_preferred_console ("hvc" ,0 ,NULL ); }
arch/um/drivers/chan_user.c +2 -1
@@ -256,7 +256,8 @@ static int winch_tramp(int fd, struct tty_port *port, int *fd_out, goto out_close; } -if (os_set_fd_block (*fd_out,0 )) { + err =os_set_fd_block (*fd_out,0 ); +if (err) {printk (UM_KERN_ERR "winch_tramp: failed to set thread_fd " "non-blocking.\n" ); goto out_close;
arch/um/drivers/slip_user.c +2 -1
@@ -145,7 +145,8 @@ static int slip_open(void *data) } sfd = err; -if (set_up_tty (sfd)) + err =set_up_tty (sfd); +if (err) goto out_close2; pri->slave = sfd;
arch/x86/include/asm/fpu/internal.h +12 -7
@@ -102,6 +102,7 @@ static inline void fpstate_init_fxstate(struct fxregs_state *fx) }extern void fpstate_sanitize_xstate (struct fpu *fpu); +/* Returns 0 or the negated trap number, which results in -EFAULT for #PF */ #define user_insn(insn, output, input...) \ ({ \ int err; \
@@ -109,14 +110,14 @@ extern void fpstate_sanitize_xstate(struct fpu *fpu);might_fault (); \ \ asm volatile(ASM_STAC "\n" \ - "1:" #insn "\n\t" \ + "1: " #insn "\n" \ "2: " ASM_CLAC "\n" \ ".section .fixup,\"ax\"\n" \ - "3: movl $-1,%[err]\n" \ + "3: negl %%eax\n" \ " jmp 2b\n" \ ".previous\n" \ - _ASM_EXTABLE(1b, 3b) \ - : [err] "=r" (err), output \ + _ASM_EXTABLE_FAULT(1b, 3b) \ + : [err] "=a" (err), output \ : "0"(0), input); \ err; \ })
@@ -210,16 +211,20 @@ static inline void copy_fxregs_to_kernel(struct fpu *fpu)#define XRSTOR ".byte " REX_PREFIX "0x0f,0xae,0x2f"#define XRSTORS ".byte " REX_PREFIX "0x0f,0xc7,0x1f" +/* +* After this @err contains 0 on success or the negated trap number when +* the operation raises an exception. For faults this results in -EFAULT. +*/ #define XSTATE_OP (op, st, lmask, hmask, err) \ asm volatile("1:" op "\n\t" \ "xor %[err], %[err]\n" \ "2:\n\t" \ ".pushsection .fixup,\"ax\"\n\t" \ - "3: movl $-2,%[err]\n\t" \ + "3: negl %%eax\n\t" \ "jmp 2b\n\t" \ ".popsection\n\t" \ - _ASM_EXTABLE(1b, 3b) \ - : [err] "=r" (err) \ + _ASM_EXTABLE_FAULT(1b, 3b) \ + : [err] "=a" (err) \ : "D" (st), "m" (*st), "a" (lmask), "d" (hmask) \ : "memory")
arch/x86/kernel/fpu/regset.c +1 -1
@@ -124,7 +124,7 @@ int xstateregs_set(struct task_struct *target, const struct user_regset *regset,/* * A whole standard-format XSAVE buffer is needed: */ -if ((pos !=0 ) || (count < fpu_user_xstate_size)) +if (pos !=0 || count != fpu_user_xstate_size)return -EFAULT ; xsave = &fpu->state.xsave;
arch/x86/kernel/signal.c +20 -4
@@ -241,10 +241,11 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size, void __user **fpstate) {/* Default to using normal stack */ +bool nested_altstack =on_sig_stack (regs->sp); +bool entering_altstack = false;unsigned long math_size =0 ;unsigned long sp = regs->sp;unsigned long buf_fx =0 ; -int onsigstack =on_sig_stack (sp);int ret;/* redzone */
@@ -253,15 +254,23 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size,/* This is the X/Open sanctioned signal stack switching. */ if (ka->sa.sa_flags &SA_ONSTACK ) { -if (sas_ss_flags (sp) ==0 ) +/* +* This checks nested_altstack via sas_ss_flags(). Sensible +* programs use SS_AUTODISARM, which disables that check, and +* programs that don't use SS_AUTODISARM get compatible. +*/ +if (sas_ss_flags (sp) ==0 ) { sp = current->sas_ss_sp + current->sas_ss_size; + entering_altstack = true; + } }else if (IS_ENABLED (CONFIG_X86_32 ) && - !onsigstack && + !nested_altstack && regs->ss != __USER_DS && !(ka->sa.sa_flags &SA_RESTORER ) && ka->sa.sa_restorer) {/* This is the legacy signal stack switching. */ sp = (unsigned long ) ka->sa.sa_restorer; + entering_altstack = true; } sp = fpu__alloc_mathframe(sp, IS_ENABLED(CONFIG_X86_32),
@@ -274,8 +283,15 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size,* If we are on the alternate signal stack and would overflow it, don't. * Return an always-bogus address instead so we will die with SIGSEGV. */ -if (onsigstack && !likely (on_sig_stack (sp))) +if (unlikely ((nested_altstack || entering_altstack) && + !__on_sig_stack (sp))) { + +if (show_unhandled_signals &&printk_ratelimit ()) +pr_info ("%s[%d] overflowed sigaltstack\n" , + current->comm,task_pid_nr (current)); +return (void __user *)-1L ; + }/* save i387 and extended state */ ret =copy_fpstate_to_sigframe (*fpstate, (void __user *)buf_fx, math_size);
arch/x86/kvm/cpuid.c +7 -1
@@ -745,8 +745,14 @@ static inline int __do_cpuid_func(struct kvm_cpuid_entry2 *entry, u32 function,unsigned virt_as =max ((entry->eax >>8 ) &0xff ,48U );unsigned phys_as = entry->eax &0xff ; -if (!g_phys_as) +/* +* Use bare metal's MAXPHADDR if the CPU doesn't report guest +* MAXPHYADDR separately, or if TDP (NPT) is disabled, as the +* guest version "applies only to guests using nested paging". +*/ +if (!g_phys_as || !tdp_enabled) g_phys_as = phys_as; + entry->eax = g_phys_as | (virt_as <<8 ); entry->edx =0 ; entry->ebx &= kvm_cpuid_8000_0008_ebx_x86_features;
arch/x86/kvm/x86.c +2 -0
@@ -8271,6 +8271,8 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)set_debugreg (vcpu->arch.eff_db[3 ],3 );set_debugreg (vcpu->arch.dr6,6 ); vcpu->arch.switch_db_regs &= ~KVM_DEBUGREG_RELOAD ; + }else if (unlikely (hw_breakpoint_active ())) { +set_debugreg (0 ,7 ); } kvm_x86_ops->run (vcpu);
drivers/acpi/acpi_amba.c +1 -0
@@ -76,6 +76,7 @@ static int amba_handler_attach(struct acpi_device *adev,case IORESOURCE_MEM :if (!address_found) { dev->res = *rentry->res; + dev->res.name =dev_name (&dev->dev); address_found = true; }break ;
drivers/acpi/acpi_video.c +9 -0
@@ -543,6 +543,15 @@ static const struct dmi_system_id video_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "Vostro V131"), }, }, + { + .callback = video_set_report_key_events, + .driver_data = (void *)((uintptr_t)REPORT_BRIGHTNESS_KEY_EVENTS), + .ident = "Dell Vostro 3350", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 3350"), + }, + },/* * Some machines change the brightness themselves when a brightness * hotkey gets pressed, despite us telling them not to. In this case
drivers/block/virtio_blk.c +2 -0
@@ -1057,6 +1057,8 @@ static int virtblk_freeze(struct virtio_device *vdev)blk_mq_quiesce_queue (vblk->disk->queue); vdev->config->del_vqs (vdev); +kfree (vblk->vqs); +return 0 ; }
drivers/char/virtio_console.c +2 -2
@@ -475,7 +475,7 @@ static struct port_buffer *get_inbuf(struct port *port) buf =virtqueue_get_buf (port->in_vq, &len);if (buf) { - buf->len = len; + buf->len =min_t (size_t, len, buf->size); buf->offset =0 ; port->stats.bytes_received += len; }
@@ -1714,7 +1714,7 @@ static void control_work_handler(struct work_struct *work)while ((buf =virtqueue_get_buf (vq, &len))) {spin_unlock (&portdev->c_ivq_lock); - buf->len = len; + buf->len =min_t (size_t, len, buf->size); buf->offset =0 ;handle_control_message (vq->vdev, portdev, buf);
drivers/dma/fsl-qdma.c +5 -1
@@ -1184,7 +1184,11 @@ static int fsl_qdma_probe(struct platform_device *pdev) fsl_qdma->dma_dev.device_synchronize = fsl_qdma_synchronize; fsl_qdma->dma_dev.device_terminate_all = fsl_qdma_terminate_all; -dma_set_mask (&pdev->dev,DMA_BIT_MASK (40 )); + ret =dma_set_mask (&pdev->dev,DMA_BIT_MASK (40 )); +if (ret) { +dev_err (&pdev->dev,"dma_set_mask failure.\n" ); +return ret; + }platform_set_drvdata (pdev, fsl_qdma);
drivers/firmware/arm_scmi/driver.c +4 -0
@@ -370,6 +370,10 @@ static void scmi_rx_callback(struct mbox_client *cl, void *m) xfer = &minfo->xfer_block[xfer_id]; +/* rx.len could be shrunk in the sync do_xfer, so reset to maxsz */ +if (msg_type ==MSG_TYPE_DELAYED_RESP ) + xfer->rx.len = info->desc->max_msg_size; +scmi_dump_header_dbg (dev, &xfer->hdr);scmi_fetch_response (xfer, mem);
drivers/firmware/tegra/bpmp-tegra210.c +1 -1
@@ -210,7 +210,7 @@ static int tegra210_bpmp_init(struct tegra_bpmp *bpmp) priv->tx_irq_data =irq_get_irq_data (err);if (!priv->tx_irq_data) {dev_err (&pdev->dev,"failed to get IRQ data for TX IRQ\n" ); -return err; +return -ENOENT ; } err =platform_get_irq_byname (pdev,"rx" );
drivers/firmware/turris-mox-rwtm.c +45 -8
89 lines not on this page · raw message
drivers/gpio/gpio-pca953x.c +1 -0
@@ -1272,6 +1272,7 @@ static const struct of_device_id pca953x_dt_ids[] = { { .compatible = "onnn,cat9554", .data = OF_953X( 8, PCA_INT), }, { .compatible = "onnn,pca9654", .data = OF_953X( 8, PCA_INT), }, + { .compatible = "onnn,pca9655", .data = OF_953X(16, PCA_INT), }, { .compatible = "exar,xra1202", .data = OF_953X( 8, 0), }, { }
drivers/gpio/gpio-zynq.c +4 -1
@@ -938,8 +938,11 @@ static int zynq_gpio_probe(struct platform_device *pdev)static int zynq_gpio_remove (struct platform_device *pdev) {struct zynq_gpio *gpio =platform_get_drvdata (pdev); +int ret; -pm_runtime_get_sync (&pdev->dev); + ret =pm_runtime_get_sync (&pdev->dev); +if (ret <0 ) +dev_warn (&pdev->dev,"pm_runtime_get_sync() Failed\n" );gpiochip_remove (&gpio->chip);clk_disable_unprepare (gpio->clk);device_set_wakeup_capable (&pdev->dev,0 );
drivers/hwtracing/intel_th/core.c +17 -0
@@ -215,6 +215,22 @@ static ssize_t port_show(struct device *dev, struct device_attribute *attr,static DEVICE_ATTR_RO (port); +static void intel_th_trace_prepare (struct intel_th_device *thdev) +{ +struct intel_th_device *hub =to_intel_th_hub (thdev); +struct intel_th_driver *hubdrv =to_intel_th_driver (hub->dev.driver); + +if (hub->type !=INTEL_TH_SWITCH ) +return ; + +if (thdev->type !=INTEL_TH_OUTPUT ) +return ; + +pm_runtime_get_sync (&thdev->dev); + hubdrv->prepare (hub, &thdev->output); +pm_runtime_put (&thdev->dev); +} +static int intel_th_output_activate (struct intel_th_device *thdev) { struct intel_th_driver *thdrv =
@@ -235,6 +251,7 @@ static int intel_th_output_activate(struct intel_th_device *thdev)if (ret) goto fail_put; +intel_th_trace_prepare (thdev);if (thdrv->activate) ret = thdrv->activate (thdev);else
drivers/hwtracing/intel_th/gth.c +16 -0
@@ -564,6 +564,21 @@ static void gth_tscu_resync(struct gth_device *gth)iowrite32 (reg, gth->base +REG_TSCU_TSUCTRL ); } +static void intel_th_gth_prepare (struct intel_th_device *thdev, +struct intel_th_output *output) +{ +struct gth_device *gth =dev_get_drvdata (&thdev->dev); +int count; + +/* +* Wait until the output port is in reset before we start +* programming it. +*/ +for (count =GTH_PLE_WAITLOOP_DEPTH ; + count && !(gth_output_get (gth, output->port) &BIT (5 )); count--) +cpu_relax (); +} +/** * intel_th_gth_enable() - enable tracing to an output device * @thdev: GTH device
@@ -815,6 +830,7 @@ static struct intel_th_driver intel_th_gth_driver = { .assign = intel_th_gth_assign, .unassign = intel_th_gth_unassign, .set_output = intel_th_gth_set_output, + .prepare = intel_th_gth_prepare, .enable = intel_th_gth_enable, .trig_switch = intel_th_gth_switch, .disable = intel_th_gth_disable,
drivers/hwtracing/intel_th/intel_th.h +3 -0
@@ -143,6 +143,7 @@ intel_th_output_assigned(struct intel_th_device *thdev)* @remove: remove method * @assign: match a given output type device against available outputs * @unassign: deassociate an output type device from an output port +* @prepare: prepare output port for tracing * @enable: enable tracing for a given output device * @disable: disable tracing for a given output device * @irq: interrupt callback
@@ -164,6 +165,8 @@ struct intel_th_driver { struct intel_th_device *othdev);void (*unassign)(struct intel_th_device *thdev,struct intel_th_device *othdev); +void (*prepare)(struct intel_th_device *thdev, +struct intel_th_output *output);void (*enable)(struct intel_th_device *thdev,struct intel_th_output *output); void (*trig_switch)(struct intel_th_device *thdev,
drivers/i2c/i2c-core-base.c +3 -0
@@ -24,6 +24,7 @@#include <linux/i2c-smbus.h> #include <linux/idr.h> #include <linux/init.h> +#include <linux/interrupt.h> #include <linux/irqflags.h> #include <linux/jump_label.h> #include <linux/kernel.h>
@@ -459,6 +460,8 @@ static void i2c_device_shutdown(struct device *dev) driver =to_i2c_driver (dev->driver);if (driver->shutdown) driver->shutdown (client); +else if (client->irq >0 ) +disable_irq (client->irq); }static void i2c_client_dev_release (struct device *dev)
drivers/iio/gyro/fxas21002c_core.c +1 -10
@@ -300,14 +300,7 @@ static int fxas21002c_write(struct fxas21002c_data *data,static int fxas21002c_pm_get (struct fxas21002c_data *data) { -struct device *dev =regmap_get_device (data->regmap); -int ret; - - ret =pm_runtime_get_sync (dev); -if (ret <0 ) -pm_runtime_put_noidle (dev); - -return ret; +return pm_runtime_resume_and_get (regmap_get_device (data->regmap)); }static int fxas21002c_pm_put (struct fxas21002c_data *data)
@@ -940,7 +933,6 @@ int fxas21002c_core_probe(struct device *dev, struct regmap *regmap, int irq, pm_disable:pm_runtime_disable (dev);pm_runtime_set_suspended (dev); -pm_runtime_put_noidle (dev);return ret; }
@@ -954,7 +946,6 @@ void fxas21002c_core_remove(struct device *dev)pm_runtime_disable (dev);pm_runtime_set_suspended (dev); -pm_runtime_put_noidle (dev); }EXPORT_SYMBOL_GPL (fxas21002c_core_remove);
drivers/iio/magnetometer/bmc150_magn.c +4 -6
@@ -263,7 +263,7 @@ static int bmc150_magn_set_power_state(struct bmc150_magn_data *data, bool on)int ret;if (on) { - ret =pm_runtime_get_sync (data->dev); + ret =pm_runtime_resume_and_get (data->dev); }else {pm_runtime_mark_last_busy (data->dev); ret =pm_runtime_put_autosuspend (data->dev);
@@ -272,9 +272,6 @@ static int bmc150_magn_set_power_state(struct bmc150_magn_data *data, bool on)if (ret <0 ) {dev_err (data->dev,"failed to change power state to %d\n" , on); -if (on) -pm_runtime_put_noidle (data->dev); -return ret; }#endif
@@ -947,12 +944,14 @@ int bmc150_magn_probe(struct device *dev, struct regmap *regmap, ret =iio_device_register (indio_dev);if (ret <0 ) {dev_err (dev,"unable to register iio device\n" ); - goto err_buffer_cleanup; + goto err_disable_runtime_pm; }dev_dbg (dev,"Registered device %s\n" , name);return 0 ; +err_disable_runtime_pm: +pm_runtime_disable (dev); err_buffer_cleanup:iio_triggered_buffer_cleanup (indio_dev); err_free_irq:
@@ -976,7 +975,6 @@ int bmc150_magn_remove(struct device *dev)pm_runtime_disable (dev);pm_runtime_set_suspended (dev); -pm_runtime_put_noidle (dev);iio_triggered_buffer_cleanup (indio_dev);
drivers/input/touchscreen/hideep.c +10 -3
@@ -361,13 +361,16 @@ static int hideep_enter_pgm(struct hideep_ts *ts)return -EIO ; } -static void hideep_nvm_unlock (struct hideep_ts *ts) +static int hideep_nvm_unlock (struct hideep_ts *ts) {u32 unmask_code; +int error;hideep_pgm_w_reg (ts,HIDEEP_FLASH_CFG ,HIDEEP_NVM_SFR_RPAGE ); -hideep_pgm_r_reg (ts,0x0000000C , &unmask_code); + error =hideep_pgm_r_reg (ts,0x0000000C , &unmask_code);hideep_pgm_w_reg (ts,HIDEEP_FLASH_CFG ,HIDEEP_NVM_DEFAULT_PAGE ); +if (error) +return error;/* make it unprotected code */ unmask_code &= ~HIDEEP_PROT_MODE ;
@@ -384,6 +387,8 @@ static void hideep_nvm_unlock(struct hideep_ts *ts)NVM_W_SFR (HIDEEP_NVM_MASK_OFS , ts->nvm_mask);SET_FLASH_HWCONTROL ();hideep_pgm_w_reg (ts,HIDEEP_FLASH_CFG ,HIDEEP_NVM_DEFAULT_PAGE ); + +return 0 ; }static int hideep_check_status (struct hideep_ts *ts)
@@ -462,7 +467,9 @@ static int hideep_program_nvm(struct hideep_ts *ts,u32 addr =0 ;int error; -hideep_nvm_unlock (ts); + error =hideep_nvm_unlock (ts); +if (error) +return error;while (ucode_len >0 ) { xfer_len =min_t (size_t, ucode_len,HIDEEP_NVM_PAGE_SIZE );
drivers/iommu/arm-smmu.c +7 -3
@@ -114,7 +114,7 @@ static bool using_legacy_binding, using_generic_binding;static inline int arm_smmu_rpm_get (struct arm_smmu_device *smmu) {if (pm_runtime_enabled (smmu->dev)) -return pm_runtime_get_sync (smmu->dev); +return pm_runtime_resume_and_get (smmu->dev);return 0 ; }
@@ -1231,6 +1231,7 @@ static phys_addr_t arm_smmu_iova_to_phys_hard(struct iommu_domain *domain,u64 phys;unsigned long va, flags;int ret, idx = cfg->cbndx; +phys_addr_t addr =0 ; ret =arm_smmu_rpm_get (smmu);if (ret <0 )
@@ -1249,6 +1250,7 @@ static phys_addr_t arm_smmu_iova_to_phys_hard(struct iommu_domain *domain,dev_err (dev,"iova to phys timed out on %pad. Falling back to software table walk.\n" , &iova); +arm_smmu_rpm_put (smmu);return ops->iova_to_phys (ops, iova); }
@@ -1257,12 +1259,14 @@ static phys_addr_t arm_smmu_iova_to_phys_hard(struct iommu_domain *domain,if (phys &CB_PAR_F ) {dev_err (dev,"translation fault!\n" );dev_err (dev,"PAR = 0x%llx\n" , phys); -return 0 ; + goto out; } + addr = (phys &GENMASK_ULL (39 ,12 )) | (iova &0xfff ); +out:arm_smmu_rpm_put (smmu); -return (phys &GENMASK_ULL (39 ,12 )) | (iova &0xfff ); +return addr; } static phys_addr_t arm_smmu_iova_to_phys(struct iommu_domain *domain,
drivers/memory/atmel-ebi.c +3 -1
@@ -601,8 +601,10 @@ static int atmel_ebi_probe(struct platform_device *pdev) child); ret =atmel_ebi_dev_disable (ebi, child); -if (ret) +if (ret) { +of_node_put (child);return ret; + } } }
drivers/memory/fsl_ifc.c +4 -4
@@ -96,7 +96,6 @@ static int fsl_ifc_ctrl_remove(struct platform_device *dev)iounmap (ctrl->gregs);dev_set_drvdata (&dev->dev,NULL ); -kfree (ctrl);return 0 ; }
@@ -208,7 +207,8 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev)dev_info (&dev->dev,"Freescale Integrated Flash Controller\n" ); - fsl_ifc_ctrl_dev =kzalloc (sizeof (*fsl_ifc_ctrl_dev),GFP_KERNEL ); + fsl_ifc_ctrl_dev =devm_kzalloc (&dev->dev,sizeof (*fsl_ifc_ctrl_dev), +GFP_KERNEL );if (!fsl_ifc_ctrl_dev)return -ENOMEM ;
@@ -218,8 +218,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev) fsl_ifc_ctrl_dev->gregs =of_iomap (dev->dev.of_node,0 );if (!fsl_ifc_ctrl_dev->gregs) {dev_err (&dev->dev,"failed to get memory region\n" ); - ret = -ENODEV ; - goto err; +return -ENODEV ; }if (of_property_read_bool (dev->dev.of_node,"little-endian" )) {
@@ -295,6 +294,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev)free_irq (fsl_ifc_ctrl_dev->irq, fsl_ifc_ctrl_dev);irq_dispose_mapping (fsl_ifc_ctrl_dev->irq); err: +iounmap (fsl_ifc_ctrl_dev->gregs);return ret; }
drivers/memory/pl353-smc.c +1 -0
@@ -407,6 +407,7 @@ static int pl353_smc_probe(struct amba_device *adev, const struct amba_id *id)break ; }if (!match) { + err = -ENODEV ;dev_err (&adev->dev,"no matching children\n" ); goto out_clk_disable; }
drivers/mfd/da9052-i2c.c +1 -0
@@ -113,6 +113,7 @@ static const struct i2c_device_id da9052_i2c_id[] = { {"da9053-bc", DA9053_BC}, {} }; +MODULE_DEVICE_TABLE (i2c, da9052_i2c_id);#ifdef CONFIG_OF static const struct of_device_id dialog_dt_ids[] = {
drivers/mfd/motorola-cpcap.c +4 -0
@@ -305,6 +305,10 @@ static int cpcap_probe(struct spi_device *spi)if (ret)return ret; +/* Parent SPI controller uses DMA, CPCAP and child devices do not */ + spi->dev.coherent_dma_mask =0 ; + spi->dev.dma_mask = &spi->dev.coherent_dma_mask; +return devm_mfd_add_devices (&spi->dev,0 , cpcap_mfd_devices,ARRAY_SIZE (cpcap_mfd_devices),NULL ,0 ,NULL ); }
drivers/mfd/stmpe-i2c.c +1 -1
@@ -109,7 +109,7 @@ static const struct i2c_device_id stmpe_i2c_id[] = { { "stmpe2403", STMPE2403 }, { } }; -MODULE_DEVICE_TABLE(i2c, stmpe_id); +MODULE_DEVICE_TABLE(i2c, stmpe_i2c_id); static struct i2c_driver stmpe_i2c_driver = { .driver = {
drivers/misc/cardreader/alcor_pci.c +7 -1
@@ -133,7 +133,13 @@ static void alcor_pci_init_check_aspm(struct alcor_pci_priv *priv)u32 val32; priv->pdev_cap_off =alcor_pci_find_cap_offset (priv, priv->pdev); - priv->parent_cap_off =alcor_pci_find_cap_offset (priv, +/* +* A device might be attached to root complex directly and +* priv->parent_pdev will be NULL. In this case we don't check its +* capability and disable ASPM completely. +*/ +if (priv->parent_pdev) + priv->parent_cap_off =alcor_pci_find_cap_offset (priv, priv->parent_pdev);if ((priv->pdev_cap_off ==0 ) || (priv->parent_cap_off ==0 )) {
drivers/misc/ibmasm/module.c +3 -2
@@ -111,7 +111,7 @@ static int ibmasm_init_one(struct pci_dev *pdev, const struct pci_device_id *id) result =ibmasm_init_remote_input_dev (sp);if (result) {dev_err (sp->dev,"Failed to initialize remote queue\n" ); - goto error_send_message; + goto error_init_remote; } result =ibmasm_send_driver_vpd (sp);
@@ -131,8 +131,9 @@ static int ibmasm_init_one(struct pci_dev *pdev, const struct pci_device_id *id)return 0 ; error_send_message: -disable_sp_interrupts (sp->base_address);ibmasm_free_remote_input_dev (sp); +error_init_remote: +disable_sp_interrupts (sp->base_address);free_irq (sp->irq, (void *)sp); error_request_irq:iounmap (sp->base_address);
drivers/net/ethernet/moxa/moxart_ether.c +4 -0
@@ -481,6 +481,10 @@ static int moxart_mac_probe(struct platform_device *pdev) priv->pdev = pdev; res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); +if (!res) { + ret = -EINVAL ; + goto init_fail; + } ndev->base_addr = res->start; priv->base =devm_ioremap_resource (p_dev, res);if (IS_ERR (priv->base)) {
drivers/net/virtio_net.c +25 -2
@@ -1504,6 +1504,8 @@ static int virtnet_poll_tx(struct napi_struct *napi, int budget)struct virtnet_info *vi = sq->vq->vdev->priv;unsigned int index =vq2txq (sq->vq);struct netdev_queue *txq; +int opaque; +bool done;if (unlikely (is_xdp_raw_buffer_queue (vi, index))) {/* We don't need to enable cb for XDP */
@@ -1513,10 +1515,28 @@ static int virtnet_poll_tx(struct napi_struct *napi, int budget) txq =netdev_get_tx_queue (vi->dev, index);__netif_tx_lock (txq,raw_smp_processor_id ()); +virtqueue_disable_cb (sq->vq);free_old_xmit_skbs (sq, true); + + opaque =virtqueue_enable_cb_prepare (sq->vq); + + done =napi_complete_done (napi,0 ); + +if (!done) +virtqueue_disable_cb (sq->vq); +__netif_tx_unlock (txq); -virtqueue_napi_complete (napi, sq->vq,0 ); +if (done) { +if (unlikely (virtqueue_poll (sq->vq, opaque))) { +if (napi_schedule_prep (napi)) { +__netif_tx_lock (txq,raw_smp_processor_id ()); +virtqueue_disable_cb (sq->vq); +__netif_tx_unlock (txq); +__napi_schedule (napi); + } + } + }if (sq->vq->num_free >=2 +MAX_SKB_FRAGS )netif_tx_wake_queue (txq);
@@ -3282,8 +3302,11 @@ static __maybe_unused int virtnet_restore(struct virtio_device *vdev)virtnet_set_queues (vi, vi->curr_queue_pairs); err =virtnet_cpu_notif_add (vi); -if (err) +if (err) { +virtnet_freeze_down (vdev); +remove_vq_common (vi);return err; + }return 0 ; }
drivers/nvme/target/tcp.c +0 -1
@@ -1412,7 +1412,6 @@ static void nvmet_tcp_state_change(struct sock *sk)case TCP_CLOSE_WAIT :case TCP_CLOSE :/* FALLTHRU */ - sk->sk_user_data =NULL ;nvmet_tcp_schedule_release_queue (queue);break ;default :
drivers/pci/controller/pci-tegra.c +1 -0
@@ -2613,6 +2613,7 @@ static const struct of_device_id tegra_pcie_of_match[] = { { .compatible = "nvidia,tegra20-pcie", .data = &tegra20_pcie }, { }, }; +MODULE_DEVICE_TABLE (of, tegra_pcie_of_match);static void *tegra_pcie_ports_seq_start (struct seq_file *s,loff_t *pos) {
drivers/pci/controller/pcie-iproc-msi.c +18 -11
@@ -171,7 +171,7 @@ static struct irq_chip iproc_msi_irq_chip = {static struct msi_domain_info iproc_msi_domain_info = { .flags =MSI_FLAG_USE_DEF_DOM_OPS |MSI_FLAG_USE_DEF_CHIP_OPS | -MSI_FLAG_MULTI_PCI_MSI |MSI_FLAG_PCI_MSIX , +MSI_FLAG_PCI_MSIX , .chip = &iproc_msi_irq_chip, };
@@ -250,20 +250,23 @@ static int iproc_msi_irq_domain_alloc(struct irq_domain *domain,struct iproc_msi *msi = domain->host_data;int hwirq, i; +if (msi->nr_cpus >1 && nr_irqs >1 ) +return -EINVAL ; +mutex_lock (&msi->bitmap_lock); -/* Allocate 'nr_cpus' number of MSI vectors each time */ - hwirq =bitmap_find_next_zero_area (msi->bitmap, msi->nr_msi_vecs,0 , - msi->nr_cpus,0 ); -if (hwirq < msi->nr_msi_vecs) { -bitmap_set (msi->bitmap, hwirq, msi->nr_cpus); - }else { -mutex_unlock (&msi->bitmap_lock); -return -ENOSPC ; - } +/* +* Allocate 'nr_irqs' multiplied by 'nr_cpus' number of MSI vectors +* each time +*/ + hwirq =bitmap_find_free_region (msi->bitmap, msi->nr_msi_vecs, +order_base_2 (msi->nr_cpus * nr_irqs));mutex_unlock (&msi->bitmap_lock); +if (hwirq <0 ) +return -ENOSPC ; +for (i =0 ; i < nr_irqs; i++) { irq_domain_set_info(domain, virq + i, hwirq + i, &iproc_msi_bottom_irq_chip,
@@ -284,7 +287,8 @@ static void iproc_msi_irq_domain_free(struct irq_domain *domain,mutex_lock (&msi->bitmap_lock); hwirq =hwirq_to_canonical_hwirq (msi, data->hwirq); -bitmap_clear (msi->bitmap, hwirq, msi->nr_cpus); +bitmap_release_region (msi->bitmap, hwirq, +order_base_2 (msi->nr_cpus * nr_irqs));mutex_unlock (&msi->bitmap_lock);
@@ -538,6 +542,9 @@ int iproc_msi_init(struct iproc_pcie *pcie, struct device_node *node)mutex_init (&msi->bitmap_lock); msi->nr_cpus =num_possible_cpus (); +if (msi->nr_cpus ==1 ) + iproc_msi_domain_info.flags |=MSI_FLAG_MULTI_PCI_MSI ; + msi->nr_irqs =of_irq_count (node);if (!msi->nr_irqs) {dev_err (pcie->dev,"found no MSI GIC interrupt\n" );
drivers/pci/p2pdma.c +32 -2
@@ -292,10 +292,41 @@ static const struct pci_p2pdma_whitelist_entry { {} }; +/* +* This lookup function tries to find the PCI device corresponding to a given +* host bridge. +* +* It assumes the host bridge device is the first PCI device in the +* bus->devices list and that the devfn is 00.0. These assumptions should hold +* for all the devices in the whitelist above. +* +* This function is equivalent to pci_get_slot(host->bus, 0), however it does +* not take the pci_bus_sem lock seeing __host_bridge_whitelist() must not +* sleep. +* +* For this to be safe, the caller should hold a reference to a device on the +* bridge, which should ensure the host_bridge device will not be freed +* or removed from the head of the devices list. +*/ +static struct pci_dev *pci_host_bridge_dev (struct pci_host_bridge *host) +{ +struct pci_dev *root; + + root =list_first_entry_or_null (&host->bus->devices, + struct pci_dev, bus_list); + +if (!root) +return NULL ; +if (root->devfn !=PCI_DEVFN (0 ,0 )) +return NULL ; + +return root; +} +static bool __host_bridge_whitelist (struct pci_host_bridge *host,bool same_host_bridge) { -struct pci_dev *root =pci_get_slot (host->bus,PCI_DEVFN (0 ,0 )); +struct pci_dev *root =pci_host_bridge_dev (host);const struct pci_p2pdma_whitelist_entry *entry;unsigned short vendor, device;
@@ -304,7 +335,6 @@ static bool __host_bridge_whitelist(struct pci_host_bridge *host, vendor = root->vendor; device = root->device; -pci_dev_put (root);for (entry = pci_p2pdma_whitelist; entry->vendor; entry++) {if (vendor != entry->vendor || device != entry->device)
drivers/pci/pci-label.c +1 -1
@@ -162,7 +162,7 @@ static void dsm_label_utf16s_to_utf8s(union acpi_object *obj, char *buf) len =utf16s_to_utf8s ((const wchar_t *)obj->buffer.pointer, obj->buffer.length,UTF16_LITTLE_ENDIAN , - buf,PAGE_SIZE ); + buf,PAGE_SIZE -1 ); buf[len] ='\n' ; }
drivers/power/reset/gpio-poweroff.c +1 -0
@@ -90,6 +90,7 @@ static const struct of_device_id of_gpio_poweroff_match[] = { { .compatible = "gpio-poweroff", }, {}, }; +MODULE_DEVICE_TABLE (of, of_gpio_poweroff_match);static struct platform_driver gpio_poweroff_driver = { .probe = gpio_poweroff_probe,
drivers/power/supply/Kconfig +2 -1
@@ -643,7 +643,8 @@ config BATTERY_GOLDFISH config BATTERY_RT5033 tristate "RT5033 fuel gauge support" - depends on MFD_RT5033 + depends on I2C + select REGMAP_I2C help This adds support for battery fuel gauge in Richtek RT5033 PMIC. The fuelgauge calculates and determines the battery state of charge
drivers/power/supply/ab8500_btemp.c +1 -0
@@ -1120,6 +1120,7 @@ static const struct of_device_id ab8500_btemp_match[] = { { .compatible = "stericsson,ab8500-btemp", }, { }, }; +MODULE_DEVICE_TABLE (of, ab8500_btemp_match);static struct platform_driver ab8500_btemp_driver = { .probe = ab8500_btemp_probe,
drivers/power/supply/ab8500_charger.c +18 -1
@@ -407,6 +407,14 @@ static void ab8500_enable_disable_sw_fallback(struct ab8500_charger *di,static void ab8500_power_supply_changed (struct ab8500_charger *di,struct power_supply *psy) { +/* +* This happens if we get notifications or interrupts and +* the platform has been configured not to support one or +* other type of charging. +*/ +if (!psy) +return ; +if (di->autopower_cfg) { if (!di->usb.charger_connected && !di->ac.charger_connected &&
@@ -433,7 +441,15 @@ static void ab8500_charger_set_usb_connected(struct ab8500_charger *di,if (!connected) di->flags.vbus_drop_end = false; -sysfs_notify (&di->usb_chg.psy->dev.kobj,NULL ,"present" ); +/* +* Sometimes the platform is configured not to support +* USB charging and no psy has been created, but we still +* will get these notifications. +*/ +if (di->usb_chg.psy) { +sysfs_notify (&di->usb_chg.psy->dev.kobj,NULL , +"present" ); + }if (connected) {mutex_lock (&di->charger_attached_mutex);
@@ -3617,6 +3633,7 @@ static const struct of_device_id ab8500_charger_match[] = { { .compatible = "stericsson,ab8500-charger", }, { }, }; +MODULE_DEVICE_TABLE (of, ab8500_charger_match);static struct platform_driver ab8500_charger_driver = { .probe = ab8500_charger_probe,
drivers/power/supply/ab8500_fg.c +1 -0
@@ -3230,6 +3230,7 @@ static const struct of_device_id ab8500_fg_match[] = { { .compatible = "stericsson,ab8500-fg", }, { }, }; +MODULE_DEVICE_TABLE (of, ab8500_fg_match);static struct platform_driver ab8500_fg_driver = { .probe = ab8500_fg_probe,
drivers/power/supply/charger-manager.c +1 -0
@@ -1470,6 +1470,7 @@ static const struct of_device_id charger_manager_match[] = { }, {}, }; +MODULE_DEVICE_TABLE (of, charger_manager_match);static struct charger_desc *of_cm_parse_desc (struct device *dev) {
drivers/power/supply/max17042_battery.c +1 -1
@@ -1076,7 +1076,7 @@ static int max17042_probe(struct i2c_client *client, }if (client->irq) { -unsigned int flags =IRQF_TRIGGER_FALLING |IRQF_ONESHOT ; +unsigned int flags =IRQF_ONESHOT ;/* * On ACPI systems the IRQ may be handled by ACPI-event code,
drivers/power/supply/rt5033_battery.c +7 -0
@@ -164,9 +164,16 @@ static const struct i2c_device_id rt5033_battery_id[] = { };MODULE_DEVICE_TABLE (i2c, rt5033_battery_id); +static const struct of_device_id rt5033_battery_of_match[] = { + { .compatible ="richtek,rt5033-battery" , }, + { } +}; +MODULE_DEVICE_TABLE (of, rt5033_battery_of_match); +static struct i2c_driver rt5033_battery_driver = { .driver = { .name ="rt5033-battery" , + .of_match_table = rt5033_battery_of_match, }, .probe = rt5033_battery_probe, .remove = rt5033_battery_remove,
drivers/power/supply/sc2731_charger.c +1 -0
@@ -524,6 +524,7 @@ static const struct of_device_id sc2731_charger_of_match[] = { { .compatible = "sprd,sc2731-charger", }, { } }; +MODULE_DEVICE_TABLE (of, sc2731_charger_of_match);static struct platform_driver sc2731_charger_driver = { .driver = {
drivers/power/supply/sc27xx_fuel_gauge.c +1 -0
@@ -1215,6 +1215,7 @@ static const struct of_device_id sc27xx_fgu_of_match[] = { { .compatible = "sprd,sc2731-fgu", }, { } }; +MODULE_DEVICE_TABLE (of, sc27xx_fgu_of_match);static struct platform_driver sc27xx_fgu_driver = { .probe = sc27xx_fgu_probe,
drivers/pwm/pwm-img.c +1 -1
@@ -156,7 +156,7 @@ static int img_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)struct img_pwm_chip *pwm_chip =to_img_pwm_chip (chip);int ret; - ret =pm_runtime_get_sync (chip->dev); + ret =pm_runtime_resume_and_get (chip->dev);if (ret <0 )return ret;
drivers/pwm/pwm-imx1.c +0 -2
@@ -180,8 +180,6 @@ static int pwm_imx1_remove(struct platform_device *pdev) {struct pwm_imx1_chip *imx =platform_get_drvdata (pdev); -pwm_imx1_clk_disable_unprepare (&imx->chip); -return pwmchip_remove (&imx->chip); }
drivers/pwm/pwm-spear.c +0 -4
@@ -231,10 +231,6 @@ static int spear_pwm_probe(struct platform_device *pdev)static int spear_pwm_remove (struct platform_device *pdev) {struct spear_pwm_chip *pc =platform_get_drvdata (pdev); -int i; - -for (i =0 ; i <NUM_PWM ; i++) -pwm_disable (&pc->chip.pwms[i]);/* clk was prepared in probe, hence unprepare it here */ clk_unprepare (pc->clk);
drivers/pwm/pwm-tegra.c +0 -13
@@ -232,7 +232,6 @@ static int tegra_pwm_probe(struct platform_device *pdev)static int tegra_pwm_remove (struct platform_device *pdev) {struct tegra_pwm_chip *pc =platform_get_drvdata (pdev); -unsigned int i;int err;if (WARN_ON (!pc))
@@ -242,18 +241,6 @@ static int tegra_pwm_remove(struct platform_device *pdev)if (err <0 )return err; -for (i =0 ; i < pc->chip.npwm; i++) { -struct pwm_device *pwm = &pc->chip.pwms[i]; - -if (!pwm_is_enabled (pwm)) -if (clk_prepare_enable (pc->clk) <0 ) -continue ; - -pwm_writel (pc, i,0 ); - -clk_disable_unprepare (pc->clk); - } -reset_control_assert (pc->rst);clk_disable_unprepare (pc->clk);
drivers/reset/core.c +4 -1
@@ -565,7 +565,10 @@ static struct reset_control *__reset_control_get_internal(if (!rstc)return ERR_PTR (-ENOMEM ); -try_module_get (rcdev->owner); +if (!try_module_get (rcdev->owner)) { +kfree (rstc); +return ERR_PTR (-ENODEV ); + } rstc->rcdev = rcdev;list_add (&rstc->list, &rcdev->reset_control_head);
drivers/reset/reset-a10sr.c +1 -0
@@ -118,6 +118,7 @@ static struct platform_driver a10sr_reset_driver = { .probe = a10sr_reset_probe, .driver = { .name = "altr_a10sr_reset", + .of_match_table = a10sr_reset_of_match, }, };module_platform_driver (a10sr_reset_driver);
drivers/reset/reset-brcmstb.c +1 -0
@@ -111,6 +111,7 @@ static const struct of_device_id brcmstb_reset_of_match[] = { { .compatible = "brcm,brcmstb-reset" }, {/* sentinel */ } }; +MODULE_DEVICE_TABLE (of, brcmstb_reset_of_match);static struct platform_driver brcmstb_reset_driver = { .probe = brcmstb_reset_probe,
drivers/rtc/proc.c +2 -2
@@ -23,8 +23,8 @@ static bool is_rtc_hctosys(struct rtc_device *rtc)int size;char name[NAME_SIZE ]; - size =scnprintf (name,NAME_SIZE ,"rtc%d" , rtc->id); -if (size >NAME_SIZE ) + size =snprintf (name,NAME_SIZE ,"rtc%d" , rtc->id); +if (size >=NAME_SIZE )return false;return !strncmp (name,CONFIG_RTC_HCTOSYS_DEVICE ,NAME_SIZE );
drivers/s390/char/sclp_vt220.c +2 -2
@@ -35,8 +35,8 @@#define SCLP_VT220_MINOR 65#define SCLP_VT220_DRIVER_NAME "sclp_vt220"#define SCLP_VT220_DEVICE_NAME "ttysclp" -#define SCLP_VT220_CONSOLE_NAME "ttyS" -#define SCLP_VT220_CONSOLE_INDEX 1/* console=ttyS1 */ +#define SCLP_VT220_CONSOLE_NAME "ttysclp" +#define SCLP_VT220_CONSOLE_INDEX 0/* console=ttysclp0 */ /* Representation of a single write request */ struct sclp_vt220_request {
drivers/scsi/be2iscsi/be_main.c +3 -2
@@ -416,7 +416,7 @@ static struct beiscsi_hba *beiscsi_hba_alloc(struct pci_dev *pcidev) "beiscsi_hba_alloc - iscsi_host_alloc failed\n");return NULL ; } - shost->max_id =BE2_MAX_SESSIONS ; + shost->max_id =BE2_MAX_SESSIONS -1 ; shost->max_channel =0 ; shost->max_cmd_len =BEISCSI_MAX_CMD_LEN ; shost->max_lun =BEISCSI_NUM_MAX_LUN ;
@@ -5318,7 +5318,7 @@ static int beiscsi_enable_port(struct beiscsi_hba *phba)/* Re-enable UER. If different TPE occurs then it is recoverable. */ beiscsi_set_uer_feature (phba); - phba->shost->max_id = phba->params.cxns_per_ctrl; + phba->shost->max_id = phba->params.cxns_per_ctrl -1 ; phba->shost->can_queue = phba->params.ios_per_ctrl; ret =beiscsi_init_port (phba);if (ret <0 ) {
@@ -5745,6 +5745,7 @@ static int beiscsi_dev_probe(struct pci_dev *pcidev,pci_disable_msix (phba->pcidev);pci_dev_put (phba->pcidev);iscsi_host_free (phba->shost); +pci_disable_pcie_error_reporting (pcidev);pci_set_drvdata (pcidev,NULL ); disable_pci:pci_release_regions (pcidev);
drivers/scsi/bnx2i/bnx2i_iscsi.c +1 -1
@@ -793,7 +793,7 @@ struct bnx2i_hba *bnx2i_alloc_hba(struct cnic_dev *cnic)return NULL ; shost->dma_boundary = cnic->pcidev->dma_mask; shost->transportt = bnx2i_scsi_xport_template; - shost->max_id =ISCSI_MAX_CONNS_PER_HBA ; + shost->max_id =ISCSI_MAX_CONNS_PER_HBA -1 ; shost->max_channel =0 ; shost->max_lun =512 ; shost->max_cmd_len =16 ;
drivers/scsi/cxgbi/libcxgbi.c +2 -2
@@ -337,7 +337,7 @@ void cxgbi_hbas_remove(struct cxgbi_device *cdev)EXPORT_SYMBOL_GPL (cxgbi_hbas_remove);int cxgbi_hbas_add (struct cxgbi_device *cdev,u64 max_lun, -unsigned int max_id,struct scsi_host_template *sht, +unsigned int max_conns,struct scsi_host_template *sht,struct scsi_transport_template *stt) {struct cxgbi_hba *chba;
@@ -357,7 +357,7 @@ int cxgbi_hbas_add(struct cxgbi_device *cdev, u64 max_lun, shost->transportt = stt; shost->max_lun = max_lun; - shost->max_id = max_id; + shost->max_id = max_conns -1 ; shost->max_channel =0 ; shost->max_cmd_len =16 ;
drivers/scsi/device_handler/scsi_dh_alua.c +6 -5
@@ -508,7 +508,8 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_port_group *pg)struct alua_port_group *tmp_pg;int len, k, off, bufflen =ALUA_RTPG_SIZE ;unsigned char *desc, *buff; -unsigned err, retval; +unsigned err; +int retval;unsigned int tpg_desc_tbl_off;unsigned char orig_transition_tmo;unsigned long flags;
@@ -548,12 +549,12 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_port_group *pg)kfree (buff);return SCSI_DH_OK ; } -if (!scsi_sense_valid (&sense_hdr)) { +if (retval <0 || !scsi_sense_valid (&sense_hdr)) {sdev_printk (KERN_INFO , sdev,"%s: rtpg failed, result %d\n" ,ALUA_DH_NAME , retval);kfree (buff); -if (driver_byte (retval) ==DRIVER_ERROR ) +if (retval <0 )return SCSI_DH_DEV_TEMP_BUSY ;return SCSI_DH_IO ; }
@@ -775,11 +776,11 @@ static unsigned alua_stpg(struct scsi_device *sdev, struct alua_port_group *pg) retval =submit_stpg (sdev, pg->group_id, &sense_hdr);if (retval) { -if (!scsi_sense_valid (&sense_hdr)) { +if (retval <0 || !scsi_sense_valid (&sense_hdr)) {sdev_printk (KERN_INFO , sdev,"%s: stpg failed, result %d" ,ALUA_DH_NAME , retval); -if (driver_byte (retval) ==DRIVER_ERROR ) +if (retval <0 )return SCSI_DH_DEV_TEMP_BUSY ; }else { sdev_printk(KERN_INFO, sdev, "%s: stpg failed\n",
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c +6 -6
@@ -1648,7 +1648,7 @@ static int interrupt_init_v1_hw(struct hisi_hba *hisi_hba)if (irq <0 ) {dev_err (dev,"irq init: fail map phy interrupt %d\n" , idx); -return -ENOENT ; +return irq; } rc = devm_request_irq(dev, irq, phy_interrupts[j], 0,
@@ -1656,7 +1656,7 @@ static int interrupt_init_v1_hw(struct hisi_hba *hisi_hba)if (rc) {dev_err (dev,"irq init: could not request phy interrupt %d, rc=%d\n" , irq, rc); -return -ENOENT ; +return rc; } } }
@@ -1667,7 +1667,7 @@ static int interrupt_init_v1_hw(struct hisi_hba *hisi_hba)if (irq <0 ) {dev_err (dev,"irq init: could not map cq interrupt %d\n" , idx); -return -ENOENT ; +return irq; } rc = devm_request_irq(dev, irq, cq_interrupt_v1_hw, 0,
@@ -1675,7 +1675,7 @@ static int interrupt_init_v1_hw(struct hisi_hba *hisi_hba)if (rc) {dev_err (dev,"irq init: could not request cq interrupt %d, rc=%d\n" , irq, rc); -return -ENOENT ; +return rc; } }
@@ -1685,7 +1685,7 @@ static int interrupt_init_v1_hw(struct hisi_hba *hisi_hba)if (irq <0 ) {dev_err (dev,"irq init: could not map fatal interrupt %d\n" , idx); -return -ENOENT ; +return irq; } rc = devm_request_irq(dev, irq, fatal_interrupts[i], 0,
@@ -1693,7 +1693,7 @@ static int interrupt_init_v1_hw(struct hisi_hba *hisi_hba)if (rc) {dev_err (dev,"irq init: could not request fatal interrupt %d, rc=%d\n" , irq, rc); -return -ENOENT ; +return rc; } }
drivers/scsi/hosts.c +4 -0
@@ -219,6 +219,9 @@ int scsi_add_host_with_dma(struct Scsi_Host *shost, struct device *dev, goto fail; } + shost->cmd_per_lun =min_t (short, shost->cmd_per_lun, + shost->can_queue); + error =scsi_init_sense_cache (shost);if (error) goto fail;
@@ -486,6 +489,7 @@ struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *sht, int privsize)shost_printk (KERN_WARNING , shost,"error handler thread failed to spawn, error = %ld\n" ,PTR_ERR (shost->ehandler)); + shost->ehandler =NULL ; goto fail; }
drivers/scsi/libiscsi.c +57 -65
345 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_els.c +9 -0
@@ -1179,6 +1179,15 @@ lpfc_cmpl_els_flogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, phba->fcf.fcf_redisc_attempted =0 ;/* reset */ goto out; } + }else if (vport->port_state >LPFC_FLOGI && + vport->fc_flag &FC_PT2PT ) { +/* +* In a p2p topology, it is possible that discovery has +* already progressed, and this completion can be ignored. +* Recheck the indicated topology. +*/ +if (!sp->cmn.fPort) + goto out; } flogifail:
drivers/scsi/lpfc/lpfc_sli.c +3 -2
@@ -7602,7 +7602,7 @@ lpfc_sli4_hba_setup(struct lpfc_hba *phba)"0393 Error %d during rpi post operation\n" , rc); rc = -ENODEV ; - goto out_destroy_queue; + goto out_free_iocblist; }lpfc_sli4_node_prep (phba);
@@ -7765,8 +7765,9 @@ lpfc_sli4_hba_setup(struct lpfc_hba *phba) out_unset_queue:/* Unset all the queues set up in this routine when error out */ lpfc_sli4_queue_unset (phba); -out_destroy_queue: +out_free_iocblist:lpfc_free_iocb_list (phba); +out_destroy_queue:lpfc_sli4_queue_destroy (phba); out_stop_timers:lpfc_stop_hba_timers (phba);
drivers/scsi/megaraid/megaraid_sas.h +12 -0
@@ -2256,6 +2256,15 @@ enum MR_PERF_MODE { (mode) == MR_LATENCY_PERF_MODE ? "Latency" : \ "Unknown") +enum MEGASAS_LD_TARGET_ID_STATUS { +LD_TARGET_ID_INITIAL , +LD_TARGET_ID_ACTIVE , +LD_TARGET_ID_DELETED , +}; + +#define MEGASAS_TARGET_ID (sdev) \ + (((sdev->channel % 2) * MEGASAS_MAX_DEV_PER_CHANNEL) + sdev->id) +struct megasas_instance {unsigned int *reply_map;
@@ -2320,6 +2329,9 @@ struct megasas_instance {struct megasas_pd_list pd_list[MEGASAS_MAX_PD ];struct megasas_pd_list local_pd_list[MEGASAS_MAX_PD ];u8 ld_ids[MEGASAS_MAX_LD_IDS ]; +u8 ld_tgtid_status[MEGASAS_MAX_LD_IDS ]; +u8 ld_ids_prev[MEGASAS_MAX_LD_IDS ]; +u8 ld_ids_from_raidmap[MEGASAS_MAX_LD_IDS ];s8 init_id;u16 max_num_sge;
drivers/scsi/megaraid/megaraid_sas_base.c +88 -8
196 lines not on this page · raw message
drivers/scsi/megaraid/megaraid_sas_fp.c +5 -1
@@ -350,6 +350,10 @@ u8 MR_ValidateMapInfo(struct megasas_instance *instance, u64 map_id) num_lds =le16_to_cpu (drv_map->raidMap.ldCount); +memcpy (instance->ld_ids_prev, + instance->ld_ids_from_raidmap, +sizeof (instance->ld_ids_from_raidmap)); +memset (instance->ld_ids_from_raidmap,0xff ,MEGASAS_MAX_LD_IDS );/*Convert Raid capability values to CPU arch */ for (i =0 ; (num_lds >0 ) && (i <MAX_LOGICAL_DRIVES_EXT ); i++) { ld =MR_TargetIdToLdGet (i, drv_map);
@@ -360,7 +364,7 @@ u8 MR_ValidateMapInfo(struct megasas_instance *instance, u64 map_id) raid =MR_LdRaidGet (ld, drv_map);le32_to_cpus ((u32 *)&raid->capability); - + instance->ld_ids_from_raidmap[i] = i; num_lds--; }
drivers/scsi/megaraid/megaraid_sas_fusion.c +8 -2
@@ -3716,6 +3716,7 @@ static void megasas_sync_irqs(unsigned long instance_addr)if (irq_ctx->irq_poll_scheduled) { irq_ctx->irq_poll_scheduled = false;enable_irq (irq_ctx->os_irq); +complete_cmd_fusion (instance, irq_ctx->MSIxIndex, irq_ctx); } } }
@@ -3747,6 +3748,7 @@ int megasas_irqpoll(struct irq_poll *irqpoll, int budget)irq_poll_complete (irqpoll); irq_ctx->irq_poll_scheduled = false;enable_irq (irq_ctx->os_irq); +complete_cmd_fusion (instance, irq_ctx->MSIxIndex, irq_ctx); }return num_entries;
@@ -3763,6 +3765,7 @@ megasas_complete_cmd_dpc_fusion(unsigned long instance_addr) {struct megasas_instance *instance = (struct megasas_instance *)instance_addr; +struct megasas_irq_context *irq_ctx =NULL ;u32 count, MSIxIndex; count = instance->msix_vectors >0 ? instance->msix_vectors :1 ;
@@ -3771,8 +3774,10 @@ megasas_complete_cmd_dpc_fusion(unsigned long instance_addr)if (atomic_read (&instance->adprecovery) ==MEGASAS_HW_CRITICAL_ERROR )return ; -for (MSIxIndex =0 ; MSIxIndex < count; MSIxIndex++) -complete_cmd_fusion (instance, MSIxIndex,NULL ); +for (MSIxIndex =0 ; MSIxIndex < count; MSIxIndex++) { + irq_ctx = &instance->irq_context[MSIxIndex]; +complete_cmd_fusion (instance, MSIxIndex, irq_ctx); + } }/**
@@ -5177,6 +5182,7 @@ megasas_alloc_fusion_context(struct megasas_instance *instance)if (!fusion->log_to_span) {dev_err (&instance->pdev->dev,"Failed from %s %d\n" , __func__, __LINE__); +kfree (instance->ctrl_context);return -ENOMEM ; } }
drivers/scsi/qedi/qedi_fw.c +1 -1
@@ -1451,7 +1451,7 @@ static void qedi_tmf_work(struct work_struct *work) ldel_exit:spin_lock_bh (&qedi_conn->tmf_work_lock); -if (!qedi_cmd->list_tmf_work) { +if (qedi_cmd->list_tmf_work) {list_del_init (&list_work->list); qedi_cmd->list_tmf_work =NULL ;kfree (list_work);
drivers/scsi/qedi/qedi_main.c +1 -1
@@ -631,7 +631,7 @@ static struct qedi_ctx *qedi_host_alloc(struct pci_dev *pdev) goto exit_setup_shost; } - shost->max_id =QEDI_MAX_ISCSI_CONNS_PER_HBA ; + shost->max_id =QEDI_MAX_ISCSI_CONNS_PER_HBA -1 ; shost->max_channel =0 ; shost->max_lun = ~0 ; shost->max_cmd_len =16 ;
drivers/scsi/scsi_transport_iscsi.c +12 -0
@@ -2308,6 +2308,18 @@ int iscsi_destroy_conn(struct iscsi_cls_conn *conn) }EXPORT_SYMBOL_GPL (iscsi_destroy_conn); +void iscsi_put_conn (struct iscsi_cls_conn *conn) +{ +put_device (&conn->dev); +} +EXPORT_SYMBOL_GPL (iscsi_put_conn); + +void iscsi_get_conn (struct iscsi_cls_conn *conn) +{ +get_device (&conn->dev); +} +EXPORT_SYMBOL_GPL (iscsi_get_conn); +/* * iscsi interface functions */
drivers/staging/rtl8723bs/hal/odm.h +1 -4
@@ -197,10 +197,7 @@ typedef struct _ODM_RATE_ADAPTIVE {#define AVG_THERMAL_NUM 8#define IQK_Matrix_REG_NUM 8 -#define IQK_Matrix_Settings_NUM (14 + 24 + 21)/* Channels_2_4G_NUM -* + Channels_5G_20M_NUM -* + Channels_5G -*/ +#define IQK_Matrix_Settings_NUM 14/* Channels_2_4G_NUM */ #define DM_Type_ByFW 0#define DM_Type_ByDriver 1
drivers/thermal/rcar_gen3_thermal.c +1 -1
@@ -143,7 +143,7 @@ static void rcar_gen3_thermal_calc_coefs(struct rcar_gen3_thermal_tsc *tsc,* Division is not scaled in BSP and if scaled it might overflow * the dividend (4095 * 4095 << 14 > INT_MAX) so keep it unscaled */ - tsc->tj_t = (FIXPT_INT ((ptat[1 ] - ptat[2 ]) *157 ) + tsc->tj_t = (FIXPT_INT ((ptat[1 ] - ptat[2 ]) * (ths_tj_1 -TJ_3 )) / (ptat[0 ] - ptat[2 ])) +FIXPT_INT (TJ_3 ); tsc->coef.a1 = FIXPT_DIV(FIXPT_INT(thcode[1] - thcode[2]),
drivers/tty/serial/8250/serial_cs.c +10 -1
@@ -306,6 +306,7 @@ static int serial_resume(struct pcmcia_device *link)static int serial_probe (struct pcmcia_device *link) {struct serial_info *info; +int ret;dev_dbg (&link->dev,"serial_attach()\n" );
@@ -320,7 +321,15 @@ static int serial_probe(struct pcmcia_device *link)if (do_sound) link->config_flags |=CONF_ENABLE_SPKR ; -return serial_config (link); + ret =serial_config (link); +if (ret) + goto free_info; + +return 0 ; + +free_info: +kfree (info); +return ret; }static void serial_detach (struct pcmcia_device *link)
drivers/tty/serial/fsl_lpuart.c +3 -0
@@ -2253,6 +2253,9 @@ lpuart32_console_get_options(struct lpuart_port *sport, int *baud, bd =lpuart32_read (&sport->port,UARTBAUD ); bd &=UARTBAUD_SBR_MASK ; +if (!bd) +return ; + sbr = bd; uartclk =lpuart_get_baud_clk_rate (sport);/*
drivers/tty/serial/uartlite.c +6 -21
@@ -508,21 +508,23 @@ static void ulite_console_write(struct console *co, const char *s,static int ulite_console_setup (struct console *co,char *options) { -struct uart_port *port; +struct uart_port *port =NULL ;int baud =9600 ;int bits =8 ;int parity ='n' ;int flow ='n' ; - - port = console_port; +if (co->index >=0 && co->index <ULITE_NR_UARTS ) + port = ulite_ports + co->index;/* Has the device been initialized yet? */ -if (!port->mapbase) { +if (!port || !port->mapbase) {pr_debug ("console on ttyUL%i not present\n" , co->index);return -ENODEV ; } + console_port = port; +/* not initialized yet? */ if (!port->membase) {if (ulite_request_port (port))
@@ -658,17 +660,6 @@ static int ulite_assign(struct device *dev, int id, u32 base, int irq,dev_set_drvdata (dev, port); -#ifdef CONFIG_SERIAL_UARTLITE_CONSOLE -/* -* If console hasn't been found yet try to assign this port -* because it is required to be assigned for console setup function. -* If register_console() don't assign value, then console_port pointer -* is cleanup. -*/ -if (ulite_uart_driver.cons->index ==-1 ) - console_port = port; -#endif -/* Register the port */ rc =uart_add_one_port (&ulite_uart_driver, port);if (rc) {
@@ -678,12 +669,6 @@ static int ulite_assign(struct device *dev, int id, u32 base, int irq,return rc; } -#ifdef CONFIG_SERIAL_UARTLITE_CONSOLE -/* This is not port which is used for console that's why clean it up */ -if (ulite_uart_driver.cons->index ==-1 ) - console_port =NULL ; -#endif -return 0 ; }
drivers/usb/gadget/function/f_hid.c +1 -1
@@ -88,7 +88,7 @@ static struct usb_interface_descriptor hidg_interface_desc = {static struct hid_descriptor hidg_desc = { .bLength =sizeof hidg_desc, .bDescriptorType =HID_DT_HID , - .bcdHID =0x0101 , + .bcdHID =cpu_to_le16 (0x0101 ), .bCountryCode =0x00 , .bNumDescriptors =0x1 ,/*.desc[0].bDescriptorType = DYNAMIC */
drivers/usb/gadget/legacy/hid.c +3 -1
@@ -171,8 +171,10 @@ static int hid_bind(struct usb_composite_dev *cdev)struct usb_descriptor_header *usb_desc; usb_desc =usb_otg_descriptor_alloc (gadget); -if (!usb_desc) +if (!usb_desc) { + status = -ENOMEM ; goto put; + }usb_otg_descriptor_init (gadget, usb_desc); otg_desc[0 ] = usb_desc; otg_desc[1 ] =NULL ;
drivers/video/backlight/lm3630a_bl.c +6 -6
@@ -188,7 +188,7 @@ static int lm3630a_bank_a_update_status(struct backlight_device *bl)if ((pwm_ctrl &LM3630A_PWM_BANK_A ) !=0 ) {lm3630a_pwm_ctrl (pchip, bl->props.brightness, bl->props.max_brightness); -return bl->props.brightness; +return 0 ; }/* disable sleep */
@@ -208,8 +208,8 @@ static int lm3630a_bank_a_update_status(struct backlight_device *bl)return 0 ; out_i2c_err: -dev_err (pchip->dev,"i2c failed to access\n" ); -return bl->props.brightness; +dev_err (pchip->dev,"i2c failed to access (%pe)\n" ,ERR_PTR (ret)); +return ret; }static int lm3630a_bank_a_get_brightness (struct backlight_device *bl)
@@ -265,7 +265,7 @@ static int lm3630a_bank_b_update_status(struct backlight_device *bl)if ((pwm_ctrl &LM3630A_PWM_BANK_B ) !=0 ) {lm3630a_pwm_ctrl (pchip, bl->props.brightness, bl->props.max_brightness); -return bl->props.brightness; +return 0 ; }/* disable sleep */
@@ -285,8 +285,8 @@ static int lm3630a_bank_b_update_status(struct backlight_device *bl)return 0 ; out_i2c_err: -dev_err (pchip->dev,"i2c failed to access REG_CTRL\n" ); -return bl->props.brightness; +dev_err (pchip->dev,"i2c failed to access (%pe)\n" ,ERR_PTR (ret)); +return ret; }static int lm3630a_bank_b_get_brightness (struct backlight_device *bl)
drivers/video/fbdev/core/fbmem.c +5 -7
@@ -965,13 +965,11 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)fb_var_to_videomode (&mode2, &info->var);/* make sure we don't delete the videomode of current var */ ret =fb_mode_is_equal (&mode1, &mode2); - -if (!ret) -fbcon_mode_deleted (info, &mode1); - -if (!ret) -fb_delete_videomode (&mode1, &info->modelist); - +if (!ret) { + ret =fbcon_mode_deleted (info, &mode1); +if (!ret) +fb_delete_videomode (&mode1, &info->modelist); + }return ret ? -EINVAL :0 ; }
drivers/w1/slaves/w1_ds2438.c +2 -2
@@ -62,13 +62,13 @@ static int w1_ds2438_get_page(struct w1_slave *sl, int pageno, u8 *buf)if (w1_reset_select_slave (sl))continue ; w1_buf[0 ] =W1_DS2438_RECALL_MEMORY ; - w1_buf[1 ] =0x00 ; + w1_buf[1 ] = (u8 )pageno;w1_write_block (sl->master, w1_buf,2 );if (w1_reset_select_slave (sl))continue ; w1_buf[0 ] =W1_DS2438_READ_SCRATCH ; - w1_buf[1 ] =0x00 ; + w1_buf[1 ] = (u8 )pageno;w1_write_block (sl->master, w1_buf,2 ); count =w1_read_block (sl->master, buf,DS2438_PAGE_SIZE +1 );
drivers/watchdog/aspeed_wdt.c +1 -1
@@ -147,7 +147,7 @@ static int aspeed_wdt_set_timeout(struct watchdog_device *wdd, wdd->timeout = timeout; - actual =min (timeout, wdd->max_hw_heartbeat_ms *1000 ); + actual =min (timeout, wdd->max_hw_heartbeat_ms /1000 );writel (actual *WDT_RATE_1MHZ , wdt->base +WDT_RELOAD_VALUE );writel (WDT_RESTART_MAGIC , wdt->base +WDT_RESTART );
drivers/watchdog/iTCO_wdt.c +9 -3
@@ -72,6 +72,8 @@#define TCOBASE (p) ((p)->tco_res->start)/* SMI Control and Enable Register */ #define SMI_EN (p) ((p)->smi_res->start) +#define TCO_EN (1 << 13) +#define GBL_SMI_EN (1 << 0)#define TCO_RLD (p) (TCOBASE(p) + 0x00)/* TCO Timer Reload/Curr. Value */ #define TCOv1_TMR (p) (TCOBASE(p) + 0x01)/* TCOv1 Timer Initial Value*/
@@ -344,8 +346,12 @@ static int iTCO_wdt_set_timeout(struct watchdog_device *wd_dev, unsigned int t) tmrval =seconds_to_ticks (p, t); -/* For TCO v1 the timer counts down twice before rebooting */ -if (p->iTCO_version ==1 ) +/* +* If TCO SMIs are off, the timer counts down twice before rebooting. +* Otherwise, the BIOS generally reboots when the SMI triggers. +*/ +if (p->smi_res && + (SMI_EN (p) & (TCO_EN |GBL_SMI_EN )) != (TCO_EN |GBL_SMI_EN )) tmrval /=2 ;/* from the specs: */
@@ -510,7 +516,7 @@ static int iTCO_wdt_probe(struct platform_device *pdev)* Disables TCO logic generating an SMI# */ val32 =inl (SMI_EN (p)); - val32 &=0xffffdfff ;/* Turn off SMI clearing watchdog */ + val32 &= ~TCO_EN ;/* Turn off SMI clearing watchdog */ outl (val32,SMI_EN (p)); }
drivers/watchdog/imx_sc_wdt.c +4 -7
@@ -185,16 +185,12 @@ static int imx_sc_wdt_probe(struct platform_device *pdev)watchdog_stop_on_reboot (wdog);watchdog_stop_on_unregister (wdog); - ret =devm_watchdog_register_device (dev, wdog); -if (ret) -return ret; - ret =imx_scu_irq_group_enable (SC_IRQ_GROUP_WDOG ,SC_IRQ_WDOG , true);if (ret) {dev_warn (dev,"Enable irq failed, pretimeout NOT supported\n" ); -return 0 ; + goto register_device; } imx_sc_wdd->wdt_notifier.notifier_call = imx_sc_wdt_notify;
@@ -205,7 +201,7 @@ static int imx_sc_wdt_probe(struct platform_device *pdev) false);dev_warn (dev,"Register irq notifier failed, pretimeout NOT supported\n" ); -return 0 ; + goto register_device; } ret = devm_add_action_or_reset(dev, imx_sc_wdt_action,
@@ -215,7 +211,8 @@ static int imx_sc_wdt_probe(struct platform_device *pdev)else dev_warn (dev,"Add action failed, pretimeout NOT supported\n" ); -return 0 ; +register_device: +return devm_watchdog_register_device (dev, wdog); }static int __maybe_unused imx_sc_wdt_suspend (struct device *dev)
drivers/watchdog/lpc18xx_wdt.c +1 -1
@@ -292,7 +292,7 @@ static int lpc18xx_wdt_remove(struct platform_device *pdev)struct lpc18xx_wdt_dev *lpc18xx_wdt =platform_get_drvdata (pdev);dev_warn (&pdev->dev,"I quit now, hardware will probably reboot!\n" ); -del_timer (&lpc18xx_wdt->timer); +del_timer_sync (&lpc18xx_wdt->timer);return 0 ; }
drivers/watchdog/sbc60xxwdt.c +1 -1
@@ -146,7 +146,7 @@ static void wdt_startup(void)static void wdt_turnoff (void ) {/* Stop the timer */ -del_timer (&timer); +del_timer_sync (&timer);inb_p (wdt_stop);pr_info ("Watchdog timer is now disabled...\n" ); }
drivers/watchdog/sc520_wdt.c +1 -1
@@ -186,7 +186,7 @@ static int wdt_startup(void)static int wdt_turnoff (void ) {/* Stop the timer */ -del_timer (&timer); +del_timer_sync (&timer);/* Stop the watchdog */ wdt_config (0 );
drivers/watchdog/w83877f_wdt.c +1 -1
@@ -166,7 +166,7 @@ static void wdt_startup(void)static void wdt_turnoff (void ) {/* Stop the timer */ -del_timer (&timer); +del_timer_sync (&timer);wdt_change (WDT_DISABLE );
fs/ceph/addr.c +1 -9
@@ -76,10 +76,6 @@ static int ceph_set_page_dirty(struct page *page)struct inode *inode;struct ceph_inode_info *ci;struct ceph_snap_context *snapc; -int ret; - -if (unlikely (!mapping)) -return !TestSetPageDirty (page);if (PageDirty (page)) { dout("%p set_page_dirty %p idx %lu -- already dirty\n",
@@ -125,11 +121,7 @@ static int ceph_set_page_dirty(struct page *page) page->private = (unsigned long )snapc;SetPagePrivate (page); - ret =__set_page_dirty_nobuffers (page); -WARN_ON (!PageLocked (page)); -WARN_ON (!page->mapping); - -return ret; +return __set_page_dirty_nobuffers (page); }/*
fs/f2fs/super.c +1 -0
@@ -3804,4 +3804,5 @@ module_exit(exit_f2fs_fs)MODULE_AUTHOR ("Samsung Electronics's Praesto Team" );MODULE_DESCRIPTION ("Flash Friendly File System" );MODULE_LICENSE ("GPL" ); +MODULE_SOFTDEP ("pre: crc32" );
fs/jfs/jfs_logmgr.c +1 -0
@@ -1324,6 +1324,7 @@ int lmLogInit(struct jfs_log * log) }else {if (!uuid_equal (&logsuper->uuid, &log->uuid)) {jfs_warn ("wrong uuid on JFS log device" ); + rc = -EINVAL ; goto errout20; } log->size =le32_to_cpu (logsuper->size);
fs/nfs/inode.c +4 -0
@@ -1048,6 +1048,7 @@ EXPORT_SYMBOL_GPL(nfs_inode_attach_open_context);void nfs_file_set_open_context (struct file *filp,struct nfs_open_context *ctx) { filp->private_data =get_nfs_open_context (ctx); +set_bit (NFS_CONTEXT_FILE_OPEN , &ctx->flags);if (list_empty (&ctx->list))nfs_inode_attach_open_context (ctx); }
@@ -1067,6 +1068,8 @@ struct nfs_open_context *nfs_find_open_context(struct inode *inode, const structcontinue ;if ((pos->mode & (FMODE_READ |FMODE_WRITE )) != mode)continue ; +if (!test_bit (NFS_CONTEXT_FILE_OPEN , &pos->flags)) +continue ; ctx =get_nfs_open_context (pos);if (ctx)break ;
@@ -1082,6 +1085,7 @@ void nfs_file_clear_open_context(struct file *filp)if (ctx) {struct inode *inode =d_inode (ctx->dentry); +clear_bit (NFS_CONTEXT_FILE_OPEN , &ctx->flags);/* * We fatal error on write before. Try to writeback * every page again.
fs/nfs/nfs3proc.c +2 -2
@@ -350,7 +350,7 @@ nfs3_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr,break ;case NFS3_CREATE_UNCHECKED : - goto out; + goto out_release_acls; }nfs_fattr_init (data->res.dir_attr);nfs_fattr_init (data->res.fattr);
@@ -717,7 +717,7 @@ nfs3_proc_mknod(struct inode *dir, struct dentry *dentry, struct iattr *sattr,break ;default : status = -EINVAL ; - goto out; + goto out_release_acls; } d_alias =nfs3_do_create (dir, dentry, data);
fs/nfs/nfs4client.c +42 -40
34 lines not on this page · raw message
fs/nfs/pnfs_nfs.c +26 -26
52 lines not on this page · raw message
sound/soc/intel/boards/kbl_da7219_max98357a.c +2 -2
Lines of this file are not shown. View the raw message.
sound/soc/intel/common/soc-acpi-intel-kbl-match.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/powerpc/pmu/ebb/no_handler_test.c +0 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/timers/rtcpie.c +9 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.