Linux 4.14.213
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.213 kernel.
All users of the 4.14 kernel series must upgrade.
The updated 4.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.14.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
------------
Documentation/admin-guide/kernel-parameters.txt | 1 Makefile | 2 arch/arc/kernel/stacktrace.c | 23 ++- arch/arm/boot/dts/armada-xp-98dx3236.dtsi | 5 arch/arm/boot/dts/at91-sama5d3_xplained.dts | 7 + arch/arm/boot/dts/at91-sama5d4_xplained.dts | 7 + arch/arm/boot/dts/at91sam9rl.dtsi | 19 +- arch/arm/boot/dts/exynos5410-odroidxu.dts | 6 arch/arm/boot/dts/exynos5410-pinctrl.dtsi | 28 ++++ arch/arm/boot/dts/exynos5410.dtsi | 4 arch/arm/boot/dts/sama5d2.dtsi | 7 - arch/arm/boot/dts/sun8i-v3s.dtsi | 2 arch/arm/kernel/head.S | 6 arch/arm/mach-shmobile/pm-rmobile.c | 1 arch/arm64/boot/dts/exynos/exynos7.dtsi | 4 arch/arm64/boot/dts/rockchip/rk3328.dtsi | 16 +- arch/arm64/boot/dts/rockchip/rk3399.dtsi | 3 arch/arm64/include/asm/kvm_host.h | 1 arch/arm64/kvm/sys_regs.c | 1 arch/mips/bcm47xx/Kconfig | 1 arch/powerpc/include/asm/cputable.h | 5 arch/powerpc/kernel/rtas.c | 2 arch/powerpc/perf/core-book3s.c | 10 + arch/powerpc/platforms/powernv/memtrace.c | 22 +++ arch/powerpc/platforms/pseries/suspend.c | 4 arch/powerpc/xmon/nonstdio.c | 2 arch/s390/kernel/smp.c | 18 -- arch/um/drivers/xterm.c | 5 arch/x86/include/asm/pgtable_types.h | 1 arch/x86/kernel/kprobes/core.c | 5 arch/x86/mm/ident_map.c | 12 + arch/x86/mm/mem_encrypt.c | 4 crypto/af_alg.c | 10 + crypto/ecdh.c | 9 - drivers/acpi/acpi_pnp.c | 3 drivers/acpi/device_pm.c | 41 +---- drivers/acpi/resource.c | 2 drivers/block/xen-blkback/xenbus.c | 4 drivers/bus/mips_cdmm.c | 4 drivers/clk/clk-s2mps11.c | 1 drivers/clk/mvebu/armada-37xx-xtal.c | 4 drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 1 drivers/clk/sunxi-ng/ccu-sun8i-h3.c | 1 drivers/clk/tegra/clk-id.h | 1 drivers/clk/tegra/clk-tegra-periph.c | 2 drivers/clk/ti/fapll.c | 11 + drivers/clocksource/arm_arch_timer.c | 23 ++- drivers/clocksource/cadence_ttc_timer.c | 18 +- drivers/cpufreq/highbank-cpufreq.c | 7 + drivers/cpufreq/loongson1-cpufreq.c | 1 drivers/cpufreq/mediatek-cpufreq.c | 1 drivers/cpufreq/scpi-cpufreq.c | 1 drivers/cpufreq/sti-cpufreq.c | 7 + drivers/crypto/omap-aes.c | 3 drivers/crypto/talitos.c | 6 drivers/edac/amd64_edac.c | 26 ++- drivers/extcon/extcon-max77693.c | 2 drivers/gpio/gpio-mvebu.c | 16 +- drivers/gpu/drm/drm_dp_aux_dev.c | 2 drivers/gpu/drm/drm_dp_mst_topology.c | 7 - drivers/gpu/drm/gma500/cdv_intel_dp.c | 2 drivers/gpu/drm/omapdrm/omap_dmm_tiler.c | 1 drivers/gpu/drm/tegra/sor.c | 10 + drivers/hid/i2c-hid/i2c-hid-dmi-quirks.c | 8 + drivers/hsi/controllers/omap_ssi_core.c | 2 drivers/iio/adc/rockchip_saradc.c | 2 drivers/iio/imu/bmi160/bmi160_core.c | 4 drivers/iio/industrialio-buffer.c | 6 drivers/iio/light/rpr0521.c | 17 +- drivers/iio/pressure/mpl3115.c | 9 + drivers/infiniband/core/cm.c | 2 drivers/infiniband/hw/bnxt_re/ib_verbs.c | 1 drivers/infiniband/hw/cxgb4/cq.c | 3 drivers/infiniband/hw/mthca/mthca_cq.c | 2 drivers/infiniband/hw/mthca/mthca_dev.h | 1 drivers/infiniband/sw/rxe/rxe_req.c | 3 drivers/input/keyboard/cros_ec_keyb.c | 1 drivers/input/keyboard/omap4-keypad.c | 89 +++++++----- drivers/input/misc/cm109.c | 7 - drivers/input/mouse/cyapa_gen6.c | 2 drivers/input/serio/i8042-x86ia64io.h | 42 ++++++ drivers/input/touchscreen/ads7846.c | 52 ++++--- drivers/input/touchscreen/goodix.c | 12 + drivers/irqchip/irq-alpine-msi.c | 3 drivers/md/dm-ioctl.c | 1 drivers/md/dm-table.c | 6 drivers/md/md-cluster.c | 67 +++++---- drivers/md/md.c | 13 + drivers/media/common/siano/smsdvb-main.c | 5 drivers/media/i2c/max2175.c | 2 drivers/media/pci/netup_unidvb/netup_unidvb_spi.c | 5 drivers/media/pci/saa7146/mxb.c | 19 +- drivers/media/pci/solo6x10/solo6x10-g723.c | 2 drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c | 1 drivers/media/rc/sunxi-cir.c | 2 drivers/media/usb/gspca/gspca.c | 1 drivers/media/usb/msi2500/msi2500.c | 2 drivers/memstick/core/memstick.c | 1 drivers/memstick/host/r592.c | 12 + drivers/mtd/cmdlinepart.c | 14 +- drivers/net/can/softing/softing_main.c | 9 + drivers/net/ethernet/allwinner/sun4i-emac.c | 7 - drivers/net/ethernet/broadcom/genet/bcmgenet.c | 4 drivers/net/ethernet/korina.c | 2 drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 21 ++- drivers/net/ethernet/mellanox/mlx4/en_tx.c | 40 ++++- drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 12 + drivers/net/ethernet/mellanox/mlx5/core/main.c | 6 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 1 drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c | 6 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 27 +++ drivers/net/vxlan.c | 3 drivers/net/wireless/ath/ath10k/usb.c | 7 - drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 2 drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 36 +++-- drivers/net/wireless/intersil/orinoco/orinoco_usb.c | 14 +- drivers/net/wireless/marvell/mwifiex/main.c | 2 drivers/net/wireless/st/cw1200/main.c | 2 drivers/net/xen-netback/xenbus.c | 6 drivers/nfc/s3fwrn5/firmware.c | 4 drivers/nvdimm/label.c | 9 + drivers/pci/dwc/pcie-qcom.c | 12 + drivers/pci/host/pcie-iproc.c | 10 - drivers/pci/pci-acpi.c | 4 drivers/pci/slot.c | 6 drivers/pinctrl/intel/pinctrl-baytrail.c | 8 + drivers/pinctrl/intel/pinctrl-merrifield.c | 8 + drivers/pinctrl/pinctrl-amd.c | 7 - drivers/pinctrl/pinctrl-falcon.c | 14 +- drivers/platform/x86/acer-wmi.c | 1 drivers/power/supply/bq24190_charger.c | 20 ++ drivers/ps3/ps3stor_lib.c | 2 drivers/pwm/pwm-lp3943.c | 1 drivers/pwm/pwm-zx.c | 1 drivers/s390/block/dasd_alias.c | 12 + drivers/scsi/be2iscsi/be_main.c | 4 drivers/scsi/bnx2i/Kconfig | 1 drivers/scsi/fnic/fnic_main.c | 1 drivers/scsi/mpt3sas/mpt3sas_base.c | 2 drivers/scsi/pm8001/pm8001_init.c | 3 drivers/scsi/qedi/qedi_main.c | 4 drivers/scsi/scsi_lib.c | 126 ++++++++++++------ drivers/scsi/ufs/ufshcd.c | 7 + drivers/soc/mediatek/mtk-scpsys.c | 5 drivers/soc/qcom/smp2p.c | 5 drivers/soc/tegra/fuse/speedo-tegra210.c | 2 drivers/soc/ti/knav_dma.c | 13 + drivers/soc/ti/knav_qmss_queue.c | 4 drivers/spi/spi-bcm2835aux.c | 17 -- drivers/spi/spi-davinci.c | 2 drivers/spi/spi-img-spfi.c | 4 drivers/spi/spi-pic32.c | 1 drivers/spi/spi-rb4xx.c | 2 drivers/spi/spi-sc18is602.c | 13 - drivers/spi/spi-sh.c | 13 - drivers/spi/spi-st-ssc4.c | 5 drivers/spi/spi-tegra114.c | 2 drivers/spi/spi-tegra20-sflash.c | 1 drivers/spi/spi-tegra20-slink.c | 2 drivers/spi/spi-ti-qspi.c | 1 drivers/staging/comedi/drivers/mf6x4.c | 3 drivers/staging/fsl-mc/bus/dpio/dpio-driver.c | 5 drivers/staging/greybus/audio_codec.c | 2 drivers/staging/speakup/speakup_dectlk.c | 2 drivers/tty/serial/8250/8250_omap.c | 5 drivers/tty/serial/serial_core.c | 4 drivers/usb/chipidea/ci_hdrc_imx.c | 3 drivers/usb/core/quirks.c | 3 drivers/usb/gadget/function/f_acm.c | 2 drivers/usb/gadget/function/f_fs.c | 5 drivers/usb/gadget/function/f_midi.c | 6 drivers/usb/gadget/function/f_rndis.c | 4 drivers/usb/gadget/udc/dummy_hcd.c | 2 drivers/usb/host/ehci-omap.c | 1 drivers/usb/host/oxu210hp-hcd.c | 4 drivers/usb/host/xhci-hub.c | 4 drivers/usb/misc/sisusbvga/Kconfig | 2 drivers/usb/serial/keyspan_pda.c | 63 ++++----- drivers/usb/serial/mos7720.c | 2 drivers/usb/serial/option.c | 23 +++ drivers/usb/storage/uas.c | 3 drivers/usb/storage/unusual_uas.h | 7 - drivers/usb/storage/usb.c | 3 drivers/vfio/pci/vfio_pci.c | 4 drivers/watchdog/Kconfig | 3 drivers/watchdog/qcom-wdt.c | 2 drivers/xen/xen-pciback/xenbus.c | 2 drivers/xen/xenbus/xenbus.h | 2 drivers/xen/xenbus/xenbus_client.c | 8 + drivers/xen/xenbus/xenbus_probe.c | 1 drivers/xen/xenbus/xenbus_probe_backend.c | 7 + drivers/xen/xenbus/xenbus_xs.c | 34 +++- fs/btrfs/inode.c | 2 fs/btrfs/tests/btrfs-tests.c | 8 + fs/ceph/caps.c | 11 + fs/ext4/inode.c | 19 ++ fs/ext4/mballoc.c | 1 fs/jffs2/readinode.c | 16 ++ fs/jfs/jfs_dmap.h | 2 fs/lockd/host.c | 20 +- fs/nfs/inode.c | 2 fs/nfs/nfs4proc.c | 10 + fs/nfs_common/grace.c | 6 fs/nfsd/nfssvc.c | 3 fs/quota/quota_v2.c | 19 ++ include/acpi/acpi_bus.h | 5 include/linux/build_bug.h | 5 include/linux/security.h | 2 include/linux/seq_buf.h | 2 include/linux/sunrpc/xprt.h | 1 include/linux/trace_seq.h | 4 include/linux/usb_usual.h | 2 include/uapi/linux/if_alg.h | 16 ++ include/xen/xenbus.h | 15 ++ kernel/cpu.c | 6 kernel/irq/irqdomain.c | 11 + kernel/sched/core.c | 6 kernel/sched/deadline.c | 5 kernel/sched/sched.h | 42 ++---- net/bluetooth/hci_event.c | 17 +- net/bridge/br_vlan.c | 4 net/ipv4/tcp_output.c | 9 - net/mac80211/mesh_pathtbl.c | 4 net/sunrpc/xprt.c | 65 +++++++-- net/sunrpc/xprtrdma/module.c | 1 net/sunrpc/xprtrdma/transport.c | 1 net/sunrpc/xprtsock.c | 4 net/wireless/nl80211.c | 2 samples/bpf/lwt_len_hist.sh | 2 scripts/checkpatch.pl | 2 security/integrity/ima/ima_crypto.c | 20 -- security/selinux/hooks.c | 16 +- sound/core/oss/pcm_oss.c | 28 ++-- sound/pci/hda/patch_realtek.c | 1 sound/soc/codecs/wm8997.c | 2 sound/soc/codecs/wm8998.c | 4 sound/soc/codecs/wm_adsp.c | 5 sound/soc/jz4740/jz4740-i2s.c | 4 sound/soc/soc-pcm.c | 2 sound/usb/clock.c | 6 sound/usb/format.c | 2 sound/usb/stream.c | 6 tools/perf/util/parse-regs-options.c | 2 243 files changed, 1447 insertions(+), 672 deletions(-)
Alan Stern (1):
media: gspca: Fix memory leak in probe
Alexander Sverdlin (1):
serial: 8250_omap: Avoid FIFO corruption caused by MDR1 access
Alexandre Belloni (1):
ARM: dts: at91: at91sam9rl: fix ADC triggers
Alexey Kardashevskiy (1):
serial_core: Check for port state when tty is in error state
Andy Shevchenko (2):
pinctrl: merrifield: Set default bias in case no particular value given
pinctrl: baytrail: Avoid clearing debounce value when turning it off
Anmol Karn (1):
Bluetooth: Fix null pointer dereference in hci_event_packet()
Ansuel Smith (1):
PCI: qcom: Add missing reset for ipq806x
Anton Ivanov (1):
um: chan_xterm: Fix fd leak
Antti Palosaari (1):
media: msi2500: assign SPI bus number dynamically
Ard Biesheuvel (2):
ARM: p2v: fix handling of LPAE translation in BE mode
crypto: ecdh - avoid unaligned accesses in ecdh_set_secret()
Arnd Bergmann (5):
kbuild: avoid static_assert for genksyms RDMa/mthca: Work around -Wenum-conversion warning
seq_buf: Avoid type mismatch for seq_buf_init
watchdog: coh901327: add COMMON_CLK dependency
Input: cyapa_gen6 - fix out-of-bounds stack access
Arvind Sankar (2):
x86/mm/mem_encrypt: Fix definition of PMD_FLAGS_DEC_WP x86/mm/ident_map: Check for errors from ident_pud_init()
Athira Rajeev (1):
powerpc/perf: Exclude kernel samples while counting events in user space.
Baruch Siach (1):
gpio: mvebu: fix potential user-after-free on probe
Bharat Gooty (1):
PCI: iproc: Fix out-of-bound array accesses
Bob Pearson (1):
RDMA/rxe: Compute PSN windows correctly
Bongsu Jeon (1):
nfc: s3fwrn5: Release the nfc firmware
Borislav Petkov (1):
EDAC/amd64: Fix PCI component registration
Bui Quang Minh (1):
USB: dummy-hcd: Fix uninitialized array use in init()
Calum Mackay (1):
lockd: don't use interval-based rebinding over TCP
Can Guo (1):
scsi: ufs: Make sure clk scaling happens only when HBA is runtime ACTIVE
Cezary Rojewski (1):
ASoC: pcm: DRAIN support reactivation
Chen-Yu Tsai (1):
arm64: dts: rockchip: Fix UART pull-ups on rk3328
Cheng Lin (1):
nfs_common: need lock during iterate through the list
Chris Chiu (2):
Input: i8042 - add Acer laptops to the i8042 reset list
ALSA: hda/realtek - Enable headset mic of ASUS Q524UQK with ALC255
Chris Packham (1):
ARM: dts: Remove non-existent i2c1 from 98dx3236
Christophe JAILLET (5):
ath10k: Fix an error handling path
ath10k: Release some resources in an error handling path
net: bcmgenet: Fix a resource leak in an error handling path in the probe functin
net: allwinner: Fix some resources leak in the error handling path of the probe and in the remove function
clk: s2mps11: Fix a resource leak in error handling paths in the probe function
Christophe Leroy (3):
crypto: talitos - Fix return type of current_desc_hdr() powerpc/feature: Fix CPU_FTRS_ALWAYS by removing CPU_FTRS_GENERIC_32 powerpc/xmon: Change printk() to pr_cont()
Chuhong Yuan (1):
ASoC: jz4740-i2s: add missed checks for clk_get()
Chunguang Xu (1):
ext4: fix a memory leak of ext4_free_data
Claudiu Beznea (1):
ARM: dts: at91: sama5d2: map securam as device
Coiby Xu (1):
pinctrl: amd: remove debounce filter setting in IRQ type setting
Cristian Birsan (2):
ARM: dts: at91: sama5d4_xplained: add pincontrol for USB Host
ARM: dts: at91: sama5d3_xplained: add pincontrol for USB Host
Dae R. Jeong (1):
md: fix a warning caused by a race between concurrent md_ioctl()s
Dan Carpenter (6):
scsi: be2iscsi: Revert "Fix a theoretical leak in beiscsi_create_eqs()"
soc: renesas: rmobile-sysc: Fix some leaks in rmobile_init_pm_domains()
media: max2175: fix max2175_set_csm_mode() error code
media: saa7146: fix array overflow in vidioc_s_audio()
ASoC: wm_adsp: remove "ctl" from list on error in wm_adsp_create_control()
qlcnic: Fix error code in probe
Dan Williams (1):
libnvdimm/namespace: Fix reaping of invalidated block-window-namespace labels
Daniel Scally (1):
Revert "ACPI / resources: Use AE_CTRL_TERMINATE to terminate resources walks"
Daniel T. Lee (1):
samples: bpf: Fix lwt_len_hist reusing previous BPF map
Dave Kleikamp (1):
jfs: Fix array index bounds check in dbAdjTree
David Hildenbrand (1):
powerpc/powernv/memtrace: Don't leak kernel memory to user space
David Jander (1):
Input: ads7846 - fix race that causes missing releases
Dmitry Osipenko (1):
clk: tegra: Fix duplicated SE clock entry
Dmitry Torokhov (3):
Input: cm109 - do not stomp on control URB
Input: ads7846 - fix unaligned access on 7845
Input: cros_ec_keyb - send 'scancodes' in addition to key events
Dwaipayan Ray (1):
checkpatch: fix unescaped left brace
Eric Biggers (1):
crypto: af_alg - avoid undefined behavior accessing salg_name
Eric Dumazet (1):
mac80211: mesh: fix mesh_pathtbl_init() error path
Evan Green (1):
soc: qcom: smp2p: Safely acquire spinlock without IRQs
Fabio Estevam (1):
usb: chipidea: ci_hdrc_imx: Pass DISABLE_DEVICE_STREAMING flag to imx6ul
Filipe Manana (1):
Btrfs: fix selftests failure due to uninitialized i_mode in test inodes
Fugang Duan (2):
net: stmmac: free tx skb buffer in stmmac_resume()
net: stmmac: delete the eee_ctrl_timer after napi disabled
Greg Kroah-Hartman (1):
Linux 4.14.213
Guenter Roeck (1):
watchdog: sirfsoc: Add missing dependency on HAS_IOMEM
Hao Si (1):
soc: fsl: dpio: Get the cpumask through cpumask_of(cpu)
Hui Wang (1):
ACPI: PNP: compare the string length in the matching_id()
Ian Abbott (1):
staging: comedi: mf6x4: Fix AI end-of-conversion detection
Icenowy Zheng (1):
ARM: dts: sun8i: v3s: fix GIC node memory range
Jack Pham (1):
usb: gadget: f_fs: Re-use SS descriptors for SuperSpeedPlus
Jan Kara (2):
quota: Sanity-check quota file headers on load
ext4: fix deadlock with fs freezing and EA inodes
Jason Gunthorpe (1):
vfio-pci: Use io_remap_pfn_range() for PCI IO memory
Jernej Skrabec (1):
clk: sunxi-ng: Make sure divider tables have sentinel
Jing Xiangfeng (2):
HSI: omap_ssi: Don't jump to free ID in ssi_add_controller()
memstick: r592: Fix error return in r592_probe()
Johan Hovold (8):
USB: serial: option: add interface-number sanity check to flag handling
USB: serial: mos7720: fix parallel-port state restore
USB: serial: keyspan_pda: fix dropped unthrottle interrupts
USB: serial: keyspan_pda: fix write deadlock
USB: serial: keyspan_pda: fix stalled writes
USB: serial: keyspan_pda: fix write-wakeup use-after-free
USB: serial: keyspan_pda: fix tx-unthrottle use-after-free
USB: serial: keyspan_pda: fix write unthrottling
Johannes Berg (1):
iwlwifi: pcie: limit memory read spin time
Jonathan Cameron (3):
iio:light:rpr0521: Fix timestamp alignment and prevent data leak. iio:pressure:mpl3115: Force alignment of buffer iio:imu:bmi160: Fix too large a buffer.
Jubin Zhong (1):
PCI: Fix pci_slot_release() NULL pointer dereference
Julian Sax (1):
HID: i2c-hid: add Vero K147 to descriptor override
Kamal Heib (2):
RDMA/bnxt_re: Set queue pair state when being queried RDMA/cxgb4: Validate the number of CQEs
Keita Suzuki (1):
media: siano: fix memory leak of debugfs members in smsdvb_hotplug
Keqian Zhu (1):
clocksource/drivers/arm_arch_timer: Correct fault programming of CNTKCTL_EL1.EVNTI
Krzysztof Kozlowski (3):
ARM: dts: exynos: fix roles of USB 3.0 ports on Odroid XU
ARM: dts: exynos: fix USB 3.0 VBUS control and over-current pins on Exynos5410
ARM: dts: exynos: fix USB 3.0 pins supply being turned off on Odroid XU
Leon Romanovsky (2):
RDMA/cm: Fix an attempt to use non-valid pointer when cleaning timewait net/mlx5: Properly convey driver version to firmware
Li Jun (1):
xhci: Give USB2 ports time to enter U3 in bus suspend
Lokesh Vutla (1):
pwm: lp3943: Dynamically allocate PWM chip base
Luis Henriques (1):
ceph: fix race in concurrent __ceph_remove_cap invocations
Lukas Wunner (8):
spi: bcm2835aux: Fix use-after-free on unbind
media: netup_unidvb: Don't leak SPI master in probe error path
spi: spi-sh: Fix use-after-free on unbind
spi: davinci: Fix use-after-free on unbind
spi: pic32: Don't leak DMA channels in probe error path
spi: rb4xx: Don't leak SPI master in probe error path
spi: sc18is602: Don't leak SPI master in probe error path
spi: st-ssc4: Fix unbalanced pm_runtime_disable() in probe error path
Manivannan Sadhasivam (1):
watchdog: qcom: Avoid context switch in restart handler
Marc Zyngier (3):
genirq/irqdomain: Don't try to free an interrupt that has no mapping irqchip/alpine-msi: Fix freeing of interrupts on allocation error path
KVM: arm64: Introduce handling of AArch32 TTBCR2 traps
Marek Szyprowski (1):
extcon: max77693: Fix modalias string
Markus Reichl (1):
arm64: dts: rockchip: Assign a fixed index to mmc devices on rk3399 boards.
Martin Blumenstingl (1):
net: stmmac: dwmac-meson8b: fix mask definition of the m250_sel mux
Martin Wilck (1):
scsi: core: Fix VPD LUN ID designator priorities
Masami Hiramatsu (1):
x86/kprobes: Restore BTF if the single-stepping is cancelled
Moshe Shemesh (2):
net/mlx4_en: Avoid scheduling restart task if it is already running net/mlx4_en: Handle TX error CQE
Nathan Chancellor (1):
spi: bcm2835aux: Restore err assignment in bcm2835aux_spi_probe
Nathan Lynch (2):
powerpc/pseries/hibernation: drop pseries_suspend_begin() from suspend ops powerpc/pseries/hibernation: remove redundant cacheinfo update
Neal Cardwell (1):
tcp: fix cwnd-limited bug for TSO deferral where we send nothing
Necip Fazil Yildiran (1):
MIPS: BCM47XX: fix kconfig dependency bug for BCM47XX_BCMA
NeilBrown (1):
NFS: switch nfsiod to be an UNBOUND workqueue.
Nicholas Piggin (1):
kernel/cpu: add arch override for clear_tasks_mm_cpumask() mm handling
Nicolas Boichat (1):
soc: mediatek: Check if power domains can be powered on at boot time
Nicolas Ferre (1):
ARM: dts: at91: sama5d2: fix CAN message ram offset and size
Nicolin Chen (1):
soc/tegra: fuse: Fix index bug in get_process_id
Nuno Sá (1):
iio: buffer: Fix demux update
Oleksij Rempel (1):
Input: ads7846 - fix integer overflow on Rt calculation
Olga Kornievskaia (1):
NFSv4.2: condition READDIR's mask for security label based on LSM state
Oliver Neukum (2):
USB: add RESET_RESUME quirk for Snapscan 1212
USB: UAS: introduce a quirk to set no_write_same
Pali Rohár (5):
cpufreq: highbank: Add missing MODULE_DEVICE_TABLE
cpufreq: mediatek: Add missing MODULE_DEVICE_TABLE
cpufreq: st: Add missing MODULE_DEVICE_TABLE
cpufreq: loongson1: Add missing MODULE_ALIAS
cpufreq: scpi: Add missing MODULE_ALIAS
Paul Moore (1):
selinux: fix inode_doinit_with_dentry() LABEL_INVALID error handling
Pavel Machek (1):
btrfs: fix return value mixup in btrfs_get_extent
Pawel Wieczorkiewicz (1):
xen-blkback: set ring->xenblkd to NULL after kthread_stop()
Paweł Chmiel (1):
arm64: dts: exynos: Correct psci compatible used on Exynos7
Peilin Ye (1):
Bluetooth: Fix slab-out-of-bounds read in hci_le_direct_adv_report_evt()
Peng Liu (1):
sched/deadline: Fix sched_dl_global_validate()
Qinglang Miao (8):
drm/tegra: sor: Disable clocks on error in tegra_sor_init()
media: solo6x10: fix missing snd_card_free in error handling case
memstick: fix a double-free bug in memstick_check
cw1200: fix missing destroy_workqueue() on error in cw1200_init_common
mips: cdmm: fix use-after-free in mips_cdmm_bus_discover
dm ioctl: fix error return code in target_message
scsi: qedi: Fix missing destroy_workqueue() on error in __qedi_probe
iio: adc: rockchip_saradc: fix missing clk_disable_unprepare() on error in rockchip_saradc_resume
Rafael J. Wysocki (1):
PM: ACPI: PCI: Drop acpi_pm_set_bridge_wakeup()
Randy Dunlap (1):
scsi: bnx2i: Requires MMU
Roberto Sassu (1):
ima: Don't modify file descriptor mode on the fly
Sara Sharon (2):
iwlwifi: mvm: fix kernel panic in case of assert during CSA
cfg80211: initialize rekey_data
Sean Young (1):
media: sunxi-cir: ensure IR is handled when it is continuous
Sebastian Andrzej Siewior (1):
orinoco: Move context allocation after processing the skb
SeongJae Park (5):
xen/xenbus: Allow watches discard events before queueing xen/xenbus: Add 'will_handle' callback support in xenbus_watch_path() xen/xenbus/xen_bus_type: Support will_handle watch callback xen/xenbus: Count pending messages for each watch xenbus/xenbus_backend: Disallow pending watch messages
Serge Hallyn (1):
fix namespaced fscaps when !CONFIG_SECURITY
Simon Beginn (1):
Input: goodix - add upside-down quirk for Teclast X98 Pro tablet
Sreekanth Reddy (1):
scsi: mpt3sas: Increase IOCInit request timeout to 30s
Stefan Haberland (3):
s390/dasd: prevent inconsistent LCU device data s390/dasd: fix list corruption of pavgroup group list s390/dasd: fix list corruption of lcu list
Sven Eckelmann (3):
vxlan: Add needed_headroom for lower device
vxlan: Copy needed_tailroom from lowerdev
mtd: parser: cmdline: Fix parsing of part-names with colons
Sven Schnelle (1):
s390/smp: perform initial CPU reset also for SMT siblings
Takashi Iwai (5):
ALSA: usb-audio: Fix potential out-of-bounds shift
ALSA: usb-audio: Fix control 'access overflow' errors from chmap
ALSA: pcm: oss: Fix potential out-of-bounds shift
ALSA: pcm: oss: Fix a few more UBSAN fixes
ALSA: usb-audio: Disable sample read check if firmware doesn't give back
Terry Zhou (1):
clk: mvebu: a3700: fix the XTAL MODE pin to MPP1_9
Thomas Gleixner (3):
USB: sisusbvga: Make console support depend on BROKEN dm table: Remove BUG_ON(in_interrupt())
sched: Reenable interrupts in do_sched_yield()
Tianyue Ren (1):
selinux: fix error initialization in inode_doinit_with_dentry()
Timo Witte (1):
platform/x86: acer-wmi: add automatic keyboard background light toggle key as KEY_LIGHTS_TOGGLE
Tom Rix (1):
drm/gma500: fix double free of gma_connector
Trond Myklebust (1):
SUNRPC: xprt_load_transport() needs to support the netid "rdma6"
Tsuchiya Yuto (1):
mwifiex: fix mwifiex_shutdown_sw() causing sw reset failure
Tyrel Datwyler (1):
powerpc/rtas: Fix typo of ibm,open-errinjct in RTAS filter
Uwe Kleine-König (1):
pwm: zx: Add missing cleanup in error path
Vincent Stehlé (2):
powerpc/ps3: use dma_mapping_error()
net: korina: fix return value
Vineet Gupta (1):
ARC: stack unwinding: don't assume non-current task is sleeping
Will McVicker (2):
USB: gadget: f_midi: setup SuperSpeed Plus descriptors
USB: gadget: f_rndis: fix bitrate for SuperSpeed and above
Xin Xiong (1):
drm: fix drm_dp_mst_port refcount leaks in drm_dp_mst_allocate_vcpi
Yang Yingliang (2):
drm/omap: dmm_tiler: fix return error code in omap_dmm_probe()
speakup: fix uninitialized flush_lock
Yu Kuai (3):
media: mtk-vcodec: add missing put_device() call in mtk_vcodec_release_dec_pm() clocksource/drivers/cadence_ttc: Fix memory leak in ttc_setup_clockevent()
pinctrl: falcon: add missing put_device() call in pinctrl_falcon_probe()
Zhang Changzhong (2):
net: bridge: vlan: fix error return code in __vlan_add()
scsi: fnic: Fix error return code in fnic_probe()
Zhang Qilong (18):
can: softing: softing_netdev_open(): fix error handling
spi: img-spfi: fix reference leak in img_spfi_resume
spi: spi-ti-qspi: fix reference leak in ti_qspi_setup
spi: tegra20-slink: fix reference leak in slink ops of tegra20
spi: tegra20-sflash: fix reference leak in tegra_sflash_resume
spi: tegra114: fix reference leak in tegra spi ops
ASoC: wm8998: Fix PM disable depth imbalance on error
ASoC: arizona: Fix a wrong free in wm8997_probe
staging: greybus: codecs: Fix reference counter leak in error handling
crypto: omap-aes - Fix PM disable depth imbalance in omap_aes_probe
soc: ti: knav_qmss: fix reference leak in knav_queue_probe
soc: ti: Fix reference imbalance in knav_dma_probe
Input: omap4-keypad - fix runtime PM error handling
power: supply: bq24190_charger: fix reference leak
scsi: pm80xx: Fix error return in pm8001_pci_probe()
usb: ehci-omap: Fix PM disable depth umbalance in ehci_hcd_omap_probe
usb: oxu210hp-hcd: Fix memory leak in oxu_create
clk: ti: Fix memleak in ti_fapll_synth_setup
Zhao Heming (1):
md/cluster: fix deadlock when node is doing resync job
Zhe Li (1):
jffs2: Fix GC exit abnormally
Zheng Zengkai (1):
perf record: Fix memory leak when using '--user-regs=?' to list registers
Zhihao Cheng (1):
drivers: soc: ti: knav_qmss_queue: Fix error return code in knav_queue_probe
Zwane Mwaikambo (1):
drm/dp_aux_dev: check aux_dev before use in drm_dp_aux_dev_get_by_minor()
kazuo ito (1):
nfsd: Fix message level for normal termination
taehyun.cho (1):
USB: gadget: f_acm: add support for SuperSpeed Plus
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/kernel-parameters.txt +1 -0
@@ -4750,6 +4750,7 @@ device); j = NO_REPORT_LUNS (don't use report luns command, uas only); + k = NO_SAME (do not use WRITE_SAME, uas only) l = NOT_LOCKABLE (don't try to lock and unlock ejectable media, not on uas); m = MAX_SECTORS_64 (don't transfer more
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 14 -SUBLEVEL = 212 +SUBLEVEL = 213 EXTRAVERSION = NAME = Petit Gorille
arch/arc/kernel/stacktrace.c +15 -8
@@ -41,15 +41,15 @@#ifdef CONFIG_ARC_DW2_UNWIND -static void seed_unwind_frame_info (struct task_struct *tsk, -struct pt_regs *regs, -struct unwind_frame_info *frame_info) +static int +seed_unwind_frame_info (struct task_struct *tsk,struct pt_regs *regs, +struct unwind_frame_info *frame_info) {/* * synchronous unwinding (e.g. dump_stack) * - uses current values of SP and friends */ -if (tsk ==NULL && regs ==NULL ) { +if (regs ==NULL && (tsk ==NULL || tsk == current)) {unsigned long fp, sp, blink, ret; frame_info->task = current;
@@ -68,11 +68,15 @@ static void seed_unwind_frame_info(struct task_struct *tsk, frame_info->call_frame =0 ; }else if (regs ==NULL ) {/* -* Asynchronous unwinding of sleeping task -* - Gets SP etc from task's pt_regs (saved bottom of kernel -* mode stack of task) +* Asynchronous unwinding of a likely sleeping task +* - first ensure it is actually sleeping +* - if so, it will be in __switch_to, kernel mode SP of task +* is safe-kept and BLINK at a well known location in there */ +if (tsk->state ==TASK_RUNNING ) +return -1 ; + frame_info->task = tsk; frame_info->regs.r27 =TSK_K_FP (tsk);
@@ -106,6 +110,8 @@ static void seed_unwind_frame_info(struct task_struct *tsk, frame_info->regs.r63 = regs->ret; frame_info->call_frame = 0; } + +return 0 ; }#endif
@@ -119,7 +125,8 @@ arc_unwind_core(struct task_struct *tsk, struct pt_regs *regs,unsigned int address;struct unwind_frame_info frame_info; -seed_unwind_frame_info (tsk, regs, &frame_info); +if (seed_unwind_frame_info (tsk, regs, &frame_info)) +return 0 ;while (1 ) { address =UNW_PC (&frame_info);
arch/arm/boot/dts/armada-xp-98dx3236.dtsi +0 -5
@@ -303,11 +303,6 @@ reg = <0x11000 0x100>; }; -&i2c1 { - compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c"; - reg = <0x11100 0x100>; -}; - &mpic { reg = <0x20a00 0x2d0>, <0x21070 0x58>; };
arch/arm/boot/dts/at91-sama5d3_xplained.dts +7 -0
@@ -231,6 +231,11 @@ atmel,pins = <AT91_PIOE 9 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* PE9, conflicts with A9 */ }; + pinctrl_usb_default: usb_default { + atmel,pins = + <AT91_PIOE 3 AT91_PERIPH_GPIO AT91_PINCTRL_NONE + AT91_PIOE 4 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>; + }; }; }; };
@@ -248,6 +253,8 @@ &pioE 3 GPIO_ACTIVE_LOW &pioE 4 GPIO_ACTIVE_LOW >; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usb_default>; status = "okay"; };
arch/arm/boot/dts/at91-sama5d4_xplained.dts +7 -0
@@ -158,6 +158,11 @@ atmel,pins = <AT91_PIOE 31 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; }; + pinctrl_usb_default: usb_default { + atmel,pins = + <AT91_PIOE 11 AT91_PERIPH_GPIO AT91_PINCTRL_NONE + AT91_PIOE 14 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>; + }; pinctrl_key_gpio: key_gpio_0 { atmel,pins = <AT91_PIOE 8 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
@@ -183,6 +188,8 @@ &pioE 11 GPIO_ACTIVE_HIGH &pioE 14 GPIO_ACTIVE_HIGH >; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usb_default>; status = "okay"; };
arch/arm/boot/dts/at91sam9rl.dtsi +11 -8
@@ -274,23 +274,26 @@ atmel,adc-use-res = "highres"; trigger0 { - trigger-name = "timer-counter-0"; + trigger-name = "external-rising"; trigger-value = <0x1>; + trigger-external; }; + trigger1 { - trigger-name = "timer-counter-1"; - trigger-value = <0x3>; + trigger-name = "external-falling"; + trigger-value = <0x2>; + trigger-external; }; trigger2 { - trigger-name = "timer-counter-2"; - trigger-value = <0x5>; + trigger-name = "external-any"; + trigger-value = <0x3>; + trigger-external; }; trigger3 { - trigger-name = "external"; - trigger-value = <0x13>; - trigger-external; + trigger-name = "continuous"; + trigger-value = <0x6>; }; };
arch/arm/boot/dts/exynos5410-odroidxu.dts +4 -2
@@ -327,6 +327,8 @@ regulator-name = "vddq_lcd"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; + /* Supplies also GPK and GPJ */ + regulator-always-on; }; ldo8_reg: LDO8 {
@@ -629,11 +631,11 @@ }; &usbdrd_dwc3_0 { - dr_mode = "host"; + dr_mode = "peripheral"; }; &usbdrd_dwc3_1 { - dr_mode = "peripheral"; + dr_mode = "host"; }; &usbdrd3_0 {
arch/arm/boot/dts/exynos5410-pinctrl.dtsi +28 -0
@@ -563,6 +563,34 @@ interrupt-controller; #interrupt-cells = <2>; }; + + usb3_1_oc: usb3-1-oc { + samsung,pins = "gpk2-4", "gpk2-5"; + samsung,pin-function = <EXYNOS_PIN_FUNC_2>; + samsung,pin-pud = <EXYNOS_PIN_PULL_UP>; + samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>; + }; + + usb3_1_vbusctrl: usb3-1-vbusctrl { + samsung,pins = "gpk2-6", "gpk2-7"; + samsung,pin-function = <EXYNOS_PIN_FUNC_2>; + samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; + samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>; + }; + + usb3_0_oc: usb3-0-oc { + samsung,pins = "gpk3-0", "gpk3-1"; + samsung,pin-function = <EXYNOS_PIN_FUNC_2>; + samsung,pin-pud = <EXYNOS_PIN_PULL_UP>; + samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>; + }; + + usb3_0_vbusctrl: usb3-0-vbusctrl { + samsung,pins = "gpk3-2", "gpk3-3"; + samsung,pin-function = <EXYNOS_PIN_FUNC_2>; + samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; + samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>; + }; }; &pinctrl_2 {
arch/arm/boot/dts/exynos5410.dtsi +4 -0
@@ -381,6 +381,8 @@ &usbdrd3_0 { clocks = <&clock CLK_USBD300>; clock-names = "usbdrd30"; + pinctrl-names = "default"; + pinctrl-0 = <&usb3_0_oc>, <&usb3_0_vbusctrl>; }; &usbdrd_phy0 {
@@ -392,6 +394,8 @@ &usbdrd3_1 { clocks = <&clock CLK_USBD301>; clock-names = "usbdrd30"; + pinctrl-names = "default"; + pinctrl-0 = <&usb3_1_oc>, <&usb3_1_vbusctrl>; }; &usbdrd_dwc3_1 {
arch/arm/boot/dts/sama5d2.dtsi +4 -3
@@ -1243,6 +1243,7 @@ clocks = <&securam_clk>; #address-cells = <1>; #size-cells = <1>; + no-memory-wc; ranges = <0 0xf8044000 0x1420>; };
@@ -1293,7 +1294,7 @@ can0: can@f8054000 { compatible = "bosch,m_can"; - reg = <0xf8054000 0x4000>, <0x210000 0x4000>; + reg = <0xf8054000 0x4000>, <0x210000 0x1c00>; reg-names = "m_can", "message_ram"; interrupts = <56 IRQ_TYPE_LEVEL_HIGH 7>, <64 IRQ_TYPE_LEVEL_HIGH 7>;
@@ -1484,7 +1485,7 @@ can1: can@fc050000 { compatible = "bosch,m_can"; - reg = <0xfc050000 0x4000>, <0x210000 0x4000>; + reg = <0xfc050000 0x4000>, <0x210000 0x3800>; reg-names = "m_can", "message_ram"; interrupts = <57 IRQ_TYPE_LEVEL_HIGH 7>, <65 IRQ_TYPE_LEVEL_HIGH 7>;
@@ -1494,7 +1495,7 @@ assigned-clocks = <&can1_gclk>; assigned-clock-parents = <&utmi>; assigned-clock-rates = <40000000>; - bosch,mram-cfg = <0x1100 0 0 64 0 0 32 32>; + bosch,mram-cfg = <0x1c00 0 0 64 0 0 32 32>; status = "disabled"; };
arch/arm/boot/dts/sun8i-v3s.dtsi +1 -1
@@ -419,7 +419,7 @@ gic: interrupt-controller@01c81000 { compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic"; reg = <0x01c81000 0x1000>, - <0x01c82000 0x1000>, + <0x01c82000 0x2000>, <0x01c84000 0x2000>, <0x01c86000 0x2000>; interrupt-controller;
arch/arm/kernel/head.S +1 -5
@@ -674,12 +674,8 @@ ARM_BE8(rev16 ip, ip) ldrcc r7, [r4], #4 @ use branch for delay slot bcc 1b bx lr -#else -#ifdef CONFIG_CPU_ENDIAN_BE8 - moveq r0, #0x00004000 @ set bit 22, mov to mvn instruction #else moveq r0, #0x400000 @ set bit 22, mov to mvn instruction -#endif b 2f 1: ldr ip, [r7, r3] #ifdef CONFIG_CPU_ENDIAN_BE8
@@ -688,7 +684,7 @@ ARM_BE8(rev16 ip, ip) tst ip, #0x000f0000 @ check the rotation field orrne ip, ip, r6, lsl #24 @ mask in offset bits 31-24 biceq ip, ip, #0x00004000 @ clear bit 22 - orreq ip, ip, r0 @ mask in offset bits 7-0 + orreq ip, ip, r0, ror #8 @ mask in offset bits 7-0 #else bic ip, ip, #0x000000ff tst ip, #0xf00 @ check the rotation field
arch/arm/mach-shmobile/pm-rmobile.c +1 -0
@@ -336,6 +336,7 @@ static int __init rmobile_init_pm_domains(void) pmd =of_get_child_by_name (np,"pm-domains" );if (!pmd) { +iounmap (base);pr_warn ("%pOF lacks pm-domains node\n" , np);continue ; }
arch/arm64/boot/dts/exynos/exynos7.dtsi +3 -1
@@ -65,8 +65,10 @@ }; psci { - compatible = "arm,psci-0.2"; + compatible = "arm,psci"; method = "smc"; + cpu_off = <0x84000002>; + cpu_on = <0xC4000003>; }; soc: soc {
arch/arm64/boot/dts/rockchip/rk3328.dtsi +8 -8
@@ -1062,8 +1062,8 @@ uart0 { uart0_xfer: uart0-xfer { - rockchip,pins = <1 RK_PB1 1 &pcfg_pull_up>, - <1 RK_PB0 1 &pcfg_pull_none>; + rockchip,pins = <1 RK_PB1 1 &pcfg_pull_none>, + <1 RK_PB0 1 &pcfg_pull_up>; }; uart0_cts: uart0-cts {
@@ -1081,8 +1081,8 @@ uart1 { uart1_xfer: uart1-xfer { - rockchip,pins = <3 RK_PA4 4 &pcfg_pull_up>, - <3 RK_PA6 4 &pcfg_pull_none>; + rockchip,pins = <3 RK_PA4 4 &pcfg_pull_none>, + <3 RK_PA6 4 &pcfg_pull_up>; }; uart1_cts: uart1-cts {
@@ -1100,15 +1100,15 @@ uart2-0 { uart2m0_xfer: uart2m0-xfer { - rockchip,pins = <1 RK_PA0 2 &pcfg_pull_up>, - <1 RK_PA1 2 &pcfg_pull_none>; + rockchip,pins = <1 RK_PA0 2 &pcfg_pull_none>, + <1 RK_PA1 2 &pcfg_pull_up>; }; }; uart2-1 { uart2m1_xfer: uart2m1-xfer { - rockchip,pins = <2 RK_PA0 1 &pcfg_pull_up>, - <2 RK_PA1 1 &pcfg_pull_none>; + rockchip,pins = <2 RK_PA0 1 &pcfg_pull_none>, + <2 RK_PA1 1 &pcfg_pull_up>; }; };
arch/arm64/boot/dts/rockchip/rk3399.dtsi +3 -0
@@ -66,6 +66,9 @@ i2c6 = &i2c6; i2c7 = &i2c7; i2c8 = &i2c8; + mmc0 = &sdio0; + mmc1 = &sdmmc; + mmc2 = &sdhci; serial0 = &uart0; serial1 = &uart1; serial2 = &uart2;
arch/arm64/include/asm/kvm_host.h +1 -0
@@ -158,6 +158,7 @@ enum vcpu_sysreg {#define c2_TTBR1 (TTBR1_EL1 * 2)/* Translation Table Base Register 1 */ #define c2_TTBR1_high (c2_TTBR1 + 1)/* TTBR1 top 32 bits */ #define c2_TTBCR (TCR_EL1 * 2)/* Translation Table Base Control R. */ +#define c2_TTBCR2 (c2_TTBCR + 1)/* Translation Table Base Control R. 2 */ #define c3_DACR (DACR32_EL2 * 2)/* Domain Access Control Register */ #define c5_DFSR (ESR_EL1 * 2)/* Data Fault Status Register */ #define c5_IFSR (IFSR32_EL2 * 2)/* Instruction Fault Status Register */
arch/arm64/kvm/sys_regs.c +1 -0
@@ -1286,6 +1286,7 @@ static const struct sys_reg_desc cp15_regs[] = { { Op1( 0), CRn( 2), CRm( 0), Op2( 0), access_vm_reg, NULL, c2_TTBR0 }, { Op1( 0), CRn( 2), CRm( 0), Op2( 1), access_vm_reg, NULL, c2_TTBR1 }, { Op1( 0), CRn( 2), CRm( 0), Op2( 2), access_vm_reg, NULL, c2_TTBCR }, + { Op1( 0), CRn( 2), CRm( 0), Op2( 3), access_vm_reg, NULL, c2_TTBCR2 }, { Op1( 0), CRn( 3), CRm( 0), Op2( 0), access_vm_reg, NULL, c3_DACR }, { Op1( 0), CRn( 5), CRm( 0), Op2( 0), access_vm_reg, NULL, c5_DFSR }, { Op1( 0), CRn( 5), CRm( 0), Op2( 1), access_vm_reg, NULL, c5_IFSR },
arch/mips/bcm47xx/Kconfig +1 -0
@@ -27,6 +27,7 @@ config BCM47XX_BCMA select BCMA select BCMA_HOST_SOC select BCMA_DRIVER_MIPS + select BCMA_DRIVER_PCI if PCI select BCMA_DRIVER_PCI_HOSTMODE if PCI select BCMA_DRIVER_GPIO default y
arch/powerpc/include/asm/cputable.h +0 -5
@@ -423,7 +423,6 @@ enum { CPU_FTR_DBELL | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \ CPU_FTR_DEBUG_LVL_EXC | CPU_FTR_EMB_HV | CPU_FTR_ALTIVEC_COMP | \ CPU_FTR_CELL_TB_BUG | CPU_FTR_SMT) -#define CPU_FTRS_GENERIC_32 (CPU_FTR_COMMON | CPU_FTR_NODSISRALIGN)/* 64-bit CPUs */ #define CPU_FTRS_POWER4 (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \
@@ -515,8 +514,6 @@ enum { CPU_FTRS_7447 | CPU_FTRS_7447A | CPU_FTRS_82XX | CPU_FTRS_G2_LE | CPU_FTRS_E300 | CPU_FTRS_E300C2 | CPU_FTRS_CLASSIC32 | -#else - CPU_FTRS_GENERIC_32 |#endif #ifdef CONFIG_PPC_8xx CPU_FTRS_8XX |
@@ -567,8 +564,6 @@ enum { CPU_FTRS_7447 & CPU_FTRS_7447A & CPU_FTRS_82XX & CPU_FTRS_G2_LE & CPU_FTRS_E300 & CPU_FTRS_E300C2 & CPU_FTRS_CLASSIC32 & -#else - CPU_FTRS_GENERIC_32 &#endif #ifdef CONFIG_PPC_8xx CPU_FTRS_8XX &
arch/powerpc/kernel/rtas.c +1 -1
@@ -1094,7 +1094,7 @@ static struct rtas_filter rtas_filters[] __ro_after_init = { { "ibm,display-message", -1, 0, -1, -1, -1 }, { "ibm,errinjct", -1, 2, -1, -1, -1, 1024 }, { "ibm,close-errinjct", -1, -1, -1, -1, -1 }, - { "ibm,open-errinct", -1, -1, -1, -1, -1 }, + { "ibm,open-errinjct", -1, -1, -1, -1, -1 }, { "ibm,get-config-addr-info2", -1, -1, -1, -1, -1 }, { "ibm,get-dynamic-sensor-state", -1, 1, -1, -1, -1 }, { "ibm,get-indices", -1, 2, 3, -1, -1 },
arch/powerpc/perf/core-book3s.c +10 -0
@@ -2067,6 +2067,16 @@ static void record_and_restart(struct perf_event *event, unsigned long val,local64_set (&event->hw.period_left, left);perf_event_update_userpage (event); +/* +* Due to hardware limitation, sometimes SIAR could sample a kernel +* address even when freeze on supervisor state (kernel) is set in +* MMCR2. Check attr.exclude_kernel and address to drop the sample in +* these cases. +*/ +if (event->attr.exclude_kernel && record) +if (is_kernel_addr (mfspr (SPRN_SIAR ))) + record =0 ; +/* * Finally record data if requested. */
arch/powerpc/platforms/powernv/memtrace.c +22 -0
@@ -99,6 +99,23 @@ static int change_memblock_state(struct memory_block *mem, void *arg)return 0 ; } +static void memtrace_clear_range (unsigned long start_pfn, +unsigned long nr_pages) +{ +unsigned long pfn; + +/* +* As pages are offline, we cannot trust the memmap anymore. As HIGHMEM +* does not apply, avoid passing around "struct page" and use +* clear_page() instead directly. +*/ +for (pfn = start_pfn; pfn < start_pfn + nr_pages; pfn++) { +if (IS_ALIGNED (pfn,PAGES_PER_SECTION )) +cond_resched (); +clear_page (__va (PFN_PHYS (pfn))); + } +} +/* called with device_hotplug_lock held */ static bool memtrace_offline_pages (u32 nid,u64 start_pfn,u64 nr_pages) {
@@ -143,6 +160,11 @@ static u64 memtrace_alloc_node(u32 nid, u64 size)lock_device_hotplug ();for (base_pfn = end_pfn; base_pfn > start_pfn; base_pfn -= nr_pages) {if (memtrace_offline_pages (nid, base_pfn, nr_pages) == true) { +/* +* Clear the range while we still have a linear +* mapping. +*/ +memtrace_clear_range (base_pfn, nr_pages);/* * Remove memory in memory block size chunks so that * iomem resources are always split to the same size and
arch/powerpc/platforms/pseries/suspend.c +0 -4
@@ -26,7 +26,6 @@#include <asm/mmu.h> #include <asm/rtas.h> #include <asm/topology.h> -#include "../../kernel/cacheinfo.h" static u64 stream_id;static struct device suspend_dev;
@@ -91,9 +90,7 @@ static void pseries_suspend_enable_irqs(void)* Update configuration which can be modified based on device tree * changes during resume. */ -cacheinfo_cpu_offline (smp_processor_id ());post_mobility_fixup (); -cacheinfo_cpu_online (smp_processor_id ()); }/**
@@ -224,7 +221,6 @@ static struct bus_type suspend_subsys = {static const struct platform_suspend_ops pseries_suspend_ops = { .valid = suspend_valid_only_mem, - .begin = pseries_suspend_begin, .prepare_late = pseries_prepare_late, .enter = pseries_suspend_enter, };
arch/powerpc/xmon/nonstdio.c +1 -1
@@ -182,7 +182,7 @@ void xmon_printf(const char *format, ...)if (n && rc ==0 ) {/* No udbg hooks, fallback to printk() - dangerous */ -printk ("%s" , xmon_outbuf); +pr_cont ("%s" , xmon_outbuf); } }
arch/s390/kernel/smp.c +3 -15
@@ -864,24 +864,12 @@ static void smp_start_secondary(void *cpuvoid)/* Upping and downing of CPUs */ int __cpu_up (unsigned int cpu,struct task_struct *tidle) { -struct pcpu *pcpu; -int base, i, rc; +struct pcpu *pcpu = pcpu_devices + cpu; +int rc; - pcpu = pcpu_devices + cpu;if (pcpu->state !=CPU_STATE_CONFIGURED )return -EIO ; - base =smp_get_base_cpu (cpu); -for (i =0 ; i <= smp_cpu_mtid; i++) { -if (base + i < nr_cpu_ids) -if (cpu_online (base + i)) -break ; - } -/* -* If this is the first CPU of the core to get online -* do an initial CPU reset. -*/ -if (i > smp_cpu_mtid && -pcpu_sigp_retry (pcpu_devices + base,SIGP_INITIAL_CPU_RESET ,0 ) != +if (pcpu_sigp_retry (pcpu,SIGP_INITIAL_CPU_RESET ,0 ) !=SIGP_CC_ORDER_CODE_ACCEPTED )return -EIO ;
arch/um/drivers/xterm.c +5 -0
@@ -18,6 +18,7 @@struct xterm_chan {int pid;int helper_pid; +int chan_fd;char *title;int device;int raw;
@@ -33,6 +34,7 @@ static void *xterm_init(char *str, int device, const struct chan_opts *opts)return NULL ; *data = ((struct xterm_chan ) { .pid =-1 , .helper_pid =-1 , + .chan_fd =-1 , .device = device, .title = opts->xterm_title, .raw = opts->raw } );
@@ -149,6 +151,7 @@ static int xterm_open(int input, int output, int primary, void *d, goto out_kill; } + data->chan_fd = fd; new =xterm_fd (fd, &data->helper_pid);if (new <0 ) { err = new;
@@ -206,6 +209,8 @@ static void xterm_close(int fd, void *d)os_kill_process (data->helper_pid,0 ); data->helper_pid =-1 ; +if (data->chan_fd !=-1 ) +os_close_file (data->chan_fd);os_close_file (fd); }
arch/x86/include/asm/pgtable_types.h +1 -0
@@ -148,6 +148,7 @@ enum page_cache_mode {#endif #define _PAGE_CACHE_MASK (_PAGE_PAT | _PAGE_PCD | _PAGE_PWT) +#define _PAGE_LARGE_CACHE_MASK (_PAGE_PWT | _PAGE_PCD | _PAGE_PAT_LARGE)#define _PAGE_NOCACHE (cachemode2protval(_PAGE_CACHE_MODE_UC))#define _PAGE_CACHE_WP (cachemode2protval(_PAGE_CACHE_MODE_WP))
arch/x86/kernel/kprobes/core.c +5 -0
@@ -1022,6 +1022,11 @@ int kprobe_fault_handler(struct pt_regs *regs, int trapnr)* So clear it by resetting the current kprobe: */ regs->flags &= ~X86_EFLAGS_TF ; +/* +* Since the single step (trap) has been cancelled, +* we need to restore BTF here. +*/ +restore_btf ();/* * If the TF flag was set before the kprobe hit,
arch/x86/mm/ident_map.c +10 -2
@@ -62,6 +62,7 @@ static int ident_p4d_init(struct x86_mapping_info *info, p4d_t *p4d_page, unsigned long addr, unsigned long end) {unsigned long next; +int result;for (; addr < end; addr = next) {p4d_t *p4d = p4d_page +p4d_index (addr);
@@ -73,13 +74,20 @@ static int ident_p4d_init(struct x86_mapping_info *info, p4d_t *p4d_page,if (p4d_present (*p4d)) { pud =pud_offset (p4d,0 ); -ident_pud_init (info, pud, addr, next); + result =ident_pud_init (info, pud, addr, next); +if (result) +return result; +continue ; } pud = (pud_t *)info->alloc_pgt_page (info->context);if (!pud)return -ENOMEM ; -ident_pud_init (info, pud, addr, next); + + result =ident_pud_init (info, pud, addr, next); +if (result) +return result; +set_p4d (p4d,__p4d (__pa (pud) | info->kernpg_flag)); }
arch/x86/mm/mem_encrypt.c +2 -2
@@ -248,8 +248,8 @@ static void __init sme_clear_pgd(struct sme_populate_pgd_data *ppd)#define PMD_FLAGS_LARGE (__PAGE_KERNEL_LARGE_EXEC & ~_PAGE_GLOBAL)#define PMD_FLAGS_DEC PMD_FLAGS_LARGE -#define PMD_FLAGS_DEC_WP ((PMD_FLAGS_DEC & ~_PAGE_CACHE_MASK) | \ - (_PAGE_PAT | _PAGE_PWT)) +#define PMD_FLAGS_DEC_WP ((PMD_FLAGS_DEC & ~_PAGE_LARGE_CACHE_MASK) | \ + (_PAGE_PAT_LARGE | _PAGE_PWT))#define PMD_FLAGS_ENC (PMD_FLAGS_LARGE | _PAGE_ENC)
crypto/af_alg.c +7 -3
@@ -151,7 +151,7 @@ static int alg_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)const u32 allowed =CRYPTO_ALG_KERN_DRIVER_ONLY ;struct sock *sk = sock->sk;struct alg_sock *ask =alg_sk (sk); -struct sockaddr_alg *sa = (void *)uaddr; +struct sockaddr_alg_new *sa = (void *)uaddr;const struct af_alg_type *type;void *private;int err;
@@ -159,7 +159,11 @@ static int alg_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)if (sock->state ==SS_CONNECTED )return -EINVAL ; -if (addr_len <sizeof (*sa)) +BUILD_BUG_ON (offsetof(struct sockaddr_alg_new , salg_name) != + offsetof(struct sockaddr_alg , salg_name)); +BUILD_BUG_ON (offsetof(struct sockaddr_alg , salg_name) !=sizeof (*sa)); + +if (addr_len <sizeof (*sa) +1 )return -EINVAL ;/* If caller uses non-allowed flag, return error. */
@@ -167,7 +171,7 @@ static int alg_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)return -EINVAL ; sa->salg_type[sizeof (sa->salg_type) -1 ] =0 ; - sa->salg_name[sizeof (sa->salg_name) + addr_len -sizeof (*sa) -1 ] =0 ; + sa->salg_name[addr_len -sizeof (*sa) -1 ] =0 ; type =alg_get_type (sa->salg_type);if (IS_ERR (type) &&PTR_ERR (type) == -ENOENT ) {
crypto/ecdh.c +5 -4
@@ -57,12 +57,13 @@ static int ecdh_set_secret(struct crypto_kpp *tfm, const void *buf,return ecc_gen_privkey (ctx->curve_id, ctx->ndigits, ctx->private_key); -if (ecc_is_key_valid (ctx->curve_id, ctx->ndigits, - (const u64 *)params.key, params.key_size) <0 ) -return -EINVAL ; -memcpy (ctx->private_key, params.key, params.key_size); +if (ecc_is_key_valid (ctx->curve_id, ctx->ndigits, + ctx->private_key, params.key_size) <0 ) { +memzero_explicit (ctx->private_key, params.key_size); +return -EINVAL ; + }return 0 ; }
drivers/acpi/acpi_pnp.c +3 -0
@@ -320,6 +320,9 @@ static bool matching_id(const char *idstr, const char *list_id) {int i; +if (strlen (idstr) !=strlen (list_id)) +return false; +if (memcmp (idstr, list_id,3 ))return false;
drivers/acpi/device_pm.c +12 -29
79 lines not on this page · raw message
drivers/acpi/resource.c +1 -1
@@ -548,7 +548,7 @@ static acpi_status acpi_dev_process_resource(struct acpi_resource *ares, ret = c->preproc (ares, c->preproc_data);if (ret <0 ) { c->error = ret; -return AE_CTRL_TERMINATE ; +return AE_ABORT_METHOD ; }else if (ret >0 ) {return AE_OK ; }
drivers/block/xen-blkback/xenbus.c +3 -1
@@ -263,6 +263,7 @@ static int xen_blkif_disconnect(struct xen_blkif *blkif)if (ring->xenblkd) {kthread_stop (ring->xenblkd); + ring->xenblkd =NULL ;wake_up (&ring->shutdown_wq); }
@@ -650,7 +651,8 @@ static int xen_blkbk_probe(struct xenbus_device *dev,/* setup back pointer */ be->blkif->be = be; - err =xenbus_watch_pathfmt (dev, &be->backend_watch, backend_changed, + err =xenbus_watch_pathfmt (dev, &be->backend_watch,NULL , + backend_changed,"%s/%s" , dev->nodename,"physical-device" );if (err) goto fail;
drivers/bus/mips_cdmm.c +1 -3
@@ -544,10 +544,8 @@ static void mips_cdmm_bus_discover(struct mips_cdmm_bus *bus)dev_set_name (&dev->dev,"cdmm%u-%u" , cpu, id); ++id; ret =device_register (&dev->dev); -if (ret) { +if (ret)put_device (&dev->dev); -kfree (dev); - } } }
drivers/clk/clk-s2mps11.c +1 -0
@@ -211,6 +211,7 @@ static int s2mps11_clk_probe(struct platform_device *pdev)return ret; err_reg: +of_node_put (s2mps11_clks[0 ].clk_np);while (--i >=0 )clkdev_drop (s2mps11_clks[i].lookup);
drivers/clk/mvebu/armada-37xx-xtal.c +2 -2
@@ -15,8 +15,8 @@#include <linux/platform_device.h> #include <linux/regmap.h> -#define NB_GPIO1_LATCH 0xC -#define XTAL_MODE BIT(31) +#define NB_GPIO1_LATCH 0x8 +#define XTAL_MODE BIT(9)static int armada_3700_xtal_clock_probe (struct platform_device *pdev) {
drivers/clk/sunxi-ng/ccu-sun50i-a64.c +1 -0
@@ -381,6 +381,7 @@ static struct clk_div_table ths_div_table[] = { { .val = 1, .div = 2 }, { .val = 2, .div = 4 }, { .val = 3, .div = 6 }, + { /* Sentinel */ }, };static const char *const ths_parents[] = {"osc24M" };static struct ccu_div ths_clk = {
drivers/clk/sunxi-ng/ccu-sun8i-h3.c +1 -0
@@ -315,6 +315,7 @@ static struct clk_div_table ths_div_table[] = { { .val = 1, .div = 2 }, { .val = 2, .div = 4 }, { .val = 3, .div = 6 }, + { /* Sentinel */ }, }; static SUNXI_CCU_DIV_TABLE_WITH_GATE(ths_clk, "ths", "osc24M", 0x074, 0, 2, ths_div_table, BIT(31), 0);
drivers/clk/tegra/clk-id.h +1 -0
@@ -234,6 +234,7 @@ enum clk_id { tegra_clk_sdmmc4_8, tegra_clk_sdmmc4_9, tegra_clk_se, + tegra_clk_se_10, tegra_clk_soc_therm, tegra_clk_soc_therm_8, tegra_clk_sor0,
drivers/clk/tegra/clk-tegra-periph.c +1 -1
@@ -673,7 +673,7 @@ static struct tegra_periph_init_data periph_clks[] = {INT8 ("host1x" , mux_pllm_pllc2_c_c3_pllp_plla,CLK_SOURCE_HOST1X ,28 ,0 , tegra_clk_host1x_8),INT8 ("host1x" , mux_pllc4_out1_pllc_pllc4_out2_pllp_clkm_plla_pllc4_out0,CLK_SOURCE_HOST1X ,28 ,0 , tegra_clk_host1x_9),INT8 ("se" , mux_pllp_pllc2_c_c3_pllm_clkm,CLK_SOURCE_SE ,127 ,TEGRA_PERIPH_ON_APB , tegra_clk_se), -INT8 ("se" , mux_pllp_pllc2_c_c3_clkm,CLK_SOURCE_SE ,127 ,TEGRA_PERIPH_ON_APB , tegra_clk_se), +INT8 ("se" , mux_pllp_pllc2_c_c3_clkm,CLK_SOURCE_SE ,127 ,TEGRA_PERIPH_ON_APB , tegra_clk_se_10),INT8 ("2d" , mux_pllm_pllc2_c_c3_pllp_plla,CLK_SOURCE_2D ,21 ,0 , tegra_clk_gr2d_8),INT8 ("3d" , mux_pllm_pllc2_c_c3_pllp_plla,CLK_SOURCE_3D ,24 ,0 , tegra_clk_gr3d_8), INT8("vic03", mux_pllm_pllc_pllp_plla_pllc2_c3_clkm, CLK_SOURCE_VIC03, 178, 0, tegra_clk_vic03),
drivers/clk/ti/fapll.c +9 -2
@@ -497,6 +497,7 @@ static struct clk * __init ti_fapll_synth_setup(struct fapll_data *fd, {struct clk_init_data *init;struct fapll_synth *synth; +struct clk *clk =ERR_PTR (-ENOMEM ); init =kzalloc (sizeof (*init),GFP_KERNEL );if (!init)
@@ -519,13 +520,19 @@ static struct clk * __init ti_fapll_synth_setup(struct fapll_data *fd, synth->hw.init = init; synth->clk_pll = pll_clk; -return clk_register (NULL , &synth->hw); + clk =clk_register (NULL , &synth->hw); +if (IS_ERR (clk)) { +pr_err ("failed to register clock\n" ); + goto free; + } + +return clk; free:kfree (synth);kfree (init); -return ERR_PTR (-ENOMEM ); +return clk; }static void __init ti_fapll_setup (struct device_node *node)
drivers/clocksource/arm_arch_timer.c +16 -7
@@ -744,15 +744,24 @@ static void arch_timer_evtstrm_enable(int divider)static void arch_timer_configure_evtstream (void ) { -int evt_stream_div, pos; +int evt_stream_div, lsb; + +/* +* As the event stream can at most be generated at half the frequency +* of the counter, use half the frequency when computing the divider. +*/ + evt_stream_div = arch_timer_rate /ARCH_TIMER_EVT_STREAM_FREQ /2 ; + +/* +* Find the closest power of two to the divisor. If the adjacent bit +* of lsb (last set bit, starts from 0) is set, then we use (lsb + 1). +*/ + lsb =fls (evt_stream_div) -1 ; +if (lsb >0 && (evt_stream_div &BIT (lsb -1 ))) + lsb++; -/* Find the closest power of two to the divisor */ - evt_stream_div = arch_timer_rate /ARCH_TIMER_EVT_STREAM_FREQ ; - pos =fls (evt_stream_div); -if (pos >1 && !(evt_stream_div & (1 << (pos -2 )))) - pos--;/* enable event stream */ -arch_timer_evtstrm_enable (min (pos,15 )); +arch_timer_evtstrm_enable (max (0 ,min (lsb,15 ))); }static void arch_counter_set_user_access (void )
drivers/clocksource/cadence_ttc_timer.c +9 -9
@@ -419,10 +419,8 @@ static int __init ttc_setup_clockevent(struct clk *clk, ttcce->ttc.clk = clk; err =clk_prepare_enable (ttcce->ttc.clk); -if (err) { -kfree (ttcce); -return err; - } +if (err) + goto out_kfree; ttcce->ttc.clk_rate_change_nb.notifier_call = ttc_rate_change_clockevent_cb;
@@ -432,7 +430,7 @@ static int __init ttc_setup_clockevent(struct clk *clk, &ttcce->ttc.clk_rate_change_nb);if (err) {pr_warn ("Unable to register clock notifier.\n" ); -return err; + goto out_kfree; } ttcce->ttc.freq =clk_get_rate (ttcce->ttc.clk);
@@ -461,15 +459,17 @@ static int __init ttc_setup_clockevent(struct clk *clk, err =request_irq (irq, ttc_clock_event_interrupt,IRQF_TIMER , ttcce->ce.name, ttcce); -if (err) { -kfree (ttcce); -return err; - } +if (err) + goto out_kfree;clockevents_config_and_register (&ttcce->ce, ttcce->ttc.freq /PRESCALE ,1 ,0xfffe );return 0 ; + +out_kfree: +kfree (ttcce); +return err; }/**
drivers/cpufreq/highbank-cpufreq.c +7 -0
@@ -104,6 +104,13 @@ static int hb_cpufreq_driver_init(void) }module_init (hb_cpufreq_driver_init); +static const struct of_device_id __maybe_unused hb_cpufreq_of_match[] = { + { .compatible ="calxeda,highbank" }, + { .compatible ="calxeda,ecx-2000" }, + { }, +}; +MODULE_DEVICE_TABLE (of, hb_cpufreq_of_match); +MODULE_AUTHOR ("Mark Langsdorf <[email protected]>" );MODULE_DESCRIPTION ("Calxeda Highbank cpufreq driver" );MODULE_LICENSE ("GPL" );
drivers/cpufreq/loongson1-cpufreq.c +1 -0
@@ -217,6 +217,7 @@ static struct platform_driver ls1x_cpufreq_platdrv = {module_platform_driver (ls1x_cpufreq_platdrv); +MODULE_ALIAS ("platform:ls1x-cpufreq" );MODULE_AUTHOR ("Kelvin Cheung <[email protected]>" );MODULE_DESCRIPTION ("Loongson1 CPUFreq driver" );MODULE_LICENSE ("GPL" );
drivers/cpufreq/mediatek-cpufreq.c +1 -0
@@ -582,6 +582,7 @@ static const struct of_device_id mtk_cpufreq_machines[] __initconst = { { } }; +MODULE_DEVICE_TABLE (of, mtk_cpufreq_machines);static int __init mtk_cpufreq_driver_init (void ) {
drivers/cpufreq/scpi-cpufreq.c +1 -0
@@ -85,6 +85,7 @@ static struct platform_driver scpi_cpufreq_platdrv = { };module_platform_driver (scpi_cpufreq_platdrv); +MODULE_ALIAS ("platform:scpi-cpufreq" );MODULE_AUTHOR ("Sudeep Holla <[email protected]>" );MODULE_DESCRIPTION ("ARM SCPI CPUFreq interface driver" );MODULE_LICENSE ("GPL v2" );
drivers/cpufreq/sti-cpufreq.c +7 -0
@@ -295,6 +295,13 @@ static int sti_cpufreq_init(void) }module_init (sti_cpufreq_init); +static const struct of_device_id __maybe_unused sti_cpufreq_of_match[] = { + { .compatible ="st,stih407" }, + { .compatible ="st,stih410" }, + { }, +}; +MODULE_DEVICE_TABLE (of, sti_cpufreq_of_match); +MODULE_DESCRIPTION ("STMicroelectronics CPUFreq/OPP driver" );MODULE_AUTHOR ("Ajitpal Singh <[email protected]>" );MODULE_AUTHOR ("Lee Jones <[email protected]>" );
drivers/crypto/omap-aes.c +2 -1
@@ -1071,7 +1071,7 @@ static int omap_aes_probe(struct platform_device *pdev)if (err <0 ) {dev_err (dev,"%s: failed to get_sync(%d)\n" , __func__, err); - goto err_res; + goto err_pm_disable; }omap_aes_dma_stop (dd);
@@ -1180,6 +1180,7 @@ static int omap_aes_probe(struct platform_device *pdev)omap_aes_dma_cleanup (dd); err_irq:tasklet_kill (&dd->done_task); +err_pm_disable:pm_runtime_disable (dev); err_res: dd =NULL ;
drivers/crypto/talitos.c +3 -3
@@ -447,7 +447,7 @@ DEF_TALITOS2_DONE(ch1_3, TALITOS2_ISR_CH_1_3_DONE)/* * locate current (offending) descriptor */ -static u32 current_desc_hdr (struct device *dev,int ch) +static __be32 current_desc_hdr (struct device *dev,int ch) {struct talitos_private *priv =dev_get_drvdata (dev);int tail, iter;
@@ -478,13 +478,13 @@ static u32 current_desc_hdr(struct device *dev, int ch)/* * user diagnostics; report root cause of error based on execution unit status */ -static void report_eu_error (struct device *dev,int ch,u32 desc_hdr) +static void report_eu_error (struct device *dev,int ch,__be32 desc_hdr) {struct talitos_private *priv =dev_get_drvdata (dev);int i;if (!desc_hdr) - desc_hdr =in_be32 (priv->chan[ch].reg +TALITOS_DESCBUF ); + desc_hdr =cpu_to_be32 (in_be32 (priv->chan[ch].reg +TALITOS_DESCBUF ));switch (desc_hdr &DESC_HDR_SEL0_MASK ) {case DESC_HDR_SEL0_AFEU :
drivers/edac/amd64_edac.c +14 -12
@@ -18,6 +18,9 @@ static struct msr __percpu *msrs;/* Per-node stuff */ static struct ecc_settings **ecc_stngs; +/* Device for the PCI component */ +static struct device *pci_ctl_dev; +/* * Valid scrub rates for the K8 hardware memory scrubber. We map the scrubbing * bandwidth to a valid bit pattern. The 'set' operation finds the 'matching-
@@ -2554,6 +2557,9 @@ reserve_mc_sibling_devs(struct amd64_pvt *pvt, u16 pci_id1, u16 pci_id2)return -ENODEV ; } +if (!pci_ctl_dev) + pci_ctl_dev = &pvt->F0->dev; +edac_dbg (1 ,"F0: %s\n" ,pci_name (pvt->F0));edac_dbg (1 ,"F3: %s\n" ,pci_name (pvt->F3));edac_dbg (1 ,"F6: %s\n" ,pci_name (pvt->F6));
@@ -2578,6 +2584,9 @@ reserve_mc_sibling_devs(struct amd64_pvt *pvt, u16 pci_id1, u16 pci_id2)return -ENODEV ; } +if (!pci_ctl_dev) + pci_ctl_dev = &pvt->F2->dev; +edac_dbg (1 ,"F1: %s\n" ,pci_name (pvt->F1));edac_dbg (1 ,"F2: %s\n" ,pci_name (pvt->F2));edac_dbg (1 ,"F3: %s\n" ,pci_name (pvt->F3));
@@ -3428,21 +3437,10 @@ static void remove_one_instance(unsigned int nid)static void setup_pci_device (void ) { -struct mem_ctl_info *mci; -struct amd64_pvt *pvt; -if (pci_ctl)return ; - mci =edac_mc_find (0 ); -if (!mci) -return ; - - pvt = mci->pvt_info; -if (pvt->umc) - pci_ctl =edac_pci_create_generic_ctl (&pvt->F0->dev,EDAC_MOD_STR ); -else - pci_ctl =edac_pci_create_generic_ctl (&pvt->F2->dev,EDAC_MOD_STR ); + pci_ctl =edac_pci_create_generic_ctl (pci_ctl_dev,EDAC_MOD_STR );if (!pci_ctl) {pr_warn ("%s(): Unable to create PCI control\n" , __func__);pr_warn ("%s(): PCI error report via EDAC not set\n" , __func__);
@@ -3517,6 +3515,8 @@ static int __init amd64_edac_init(void)return 0 ; err_pci: + pci_ctl_dev =NULL ; +msrs_free (msrs); msrs =NULL ;
@@ -3548,6 +3548,8 @@ static void __exit amd64_edac_exit(void)kfree (ecc_stngs); ecc_stngs =NULL ; + pci_ctl_dev =NULL ; +msrs_free (msrs); msrs =NULL ; }
drivers/extcon/extcon-max77693.c +1 -1
@@ -1275,4 +1275,4 @@ module_platform_driver(max77693_muic_driver);MODULE_DESCRIPTION ("Maxim MAX77693 Extcon driver" );MODULE_AUTHOR ("Chanwoo Choi <[email protected]>" );MODULE_LICENSE ("GPL" ); -MODULE_ALIAS ("platform:extcon-max77693" ); +MODULE_ALIAS ("platform:max77693-muic" );
drivers/gpio/gpio-mvebu.c +11 -5
@@ -1195,6 +1195,13 @@ static int mvebu_gpio_probe(struct platform_device *pdev)devm_gpiochip_add_data (&pdev->dev, &mvchip->chip, mvchip); +/* Some MVEBU SoCs have simple PWM support for GPIO lines */ +if (IS_ENABLED (CONFIG_PWM )) { + err =mvebu_pwm_probe (pdev, mvchip, id); +if (err) +return err; + } +/* Some gpio controllers do not provide irq support */ if (!have_irqs)return 0 ;
@@ -1204,7 +1211,8 @@ static int mvebu_gpio_probe(struct platform_device *pdev)if (!mvchip->domain) {dev_err (&pdev->dev,"couldn't allocate irq domain %s (DT).\n" , mvchip->chip.label); -return -ENODEV ; + err = -ENODEV ; + goto err_pwm; } err = irq_alloc_domain_generic_chips(
@@ -1252,14 +1260,12 @@ static int mvebu_gpio_probe(struct platform_device *pdev) mvchip); } -/* Some MVEBU SoCs have simple PWM support for GPIO lines */ -if (IS_ENABLED (CONFIG_PWM )) -return mvebu_pwm_probe (pdev, mvchip, id); -return 0 ; err_domain:irq_domain_remove (mvchip->domain); +err_pwm: +pwmchip_remove (&mvchip->mvpwm->chip);return err; }
drivers/gpu/drm/drm_dp_aux_dev.c +1 -1
@@ -60,7 +60,7 @@ static struct drm_dp_aux_dev *drm_dp_aux_dev_get_by_minor(unsigned index)mutex_lock (&aux_idr_mutex); aux_dev =idr_find (&aux_idr, index); -if (!kref_get_unless_zero (&aux_dev->refcount)) +if (aux_dev && !kref_get_unless_zero (&aux_dev->refcount)) aux_dev =NULL ;mutex_unlock (&aux_idr_mutex);
drivers/gpu/drm/drm_dp_mst_topology.c +4 -3
@@ -2629,11 +2629,11 @@ bool drm_dp_mst_allocate_vcpi(struct drm_dp_mst_topology_mgr *mgr, {int ret; - port =drm_dp_get_validated_port_ref (mgr, port); -if (!port) +if (slots <0 )return false; -if (slots <0 ) + port =drm_dp_get_validated_port_ref (mgr, port); +if (!port)return false;if (port->vcpi.vcpi >0 ) {
@@ -2648,6 +2648,7 @@ bool drm_dp_mst_allocate_vcpi(struct drm_dp_mst_topology_mgr *mgr,if (ret) {DRM_DEBUG_KMS ("failed to init vcpi slots=%d max=63 ret=%d\n" ,DIV_ROUND_UP (pbn, mgr->pbn_div), ret); +drm_dp_put_port (port); goto out; } DRM_DEBUG_KMS("initing vcpi for pbn=%d slots=%d\n",
drivers/gpu/drm/gma500/cdv_intel_dp.c +1 -1
@@ -2126,7 +2126,7 @@ cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_devDRM_INFO ("failed to retrieve link info, disabling eDP\n" );cdv_intel_dp_encoder_destroy (encoder);cdv_intel_dp_destroy (connector); - goto err_priv; + goto err_connector; }else { DRM_DEBUG_KMS("DPCD: Rev=%x LN_Rate=%x LN_CNT=%x LN_DOWNSP=%x\n", intel_dp->dpcd[0], intel_dp->dpcd[1],
drivers/gpu/drm/omapdrm/omap_dmm_tiler.c +1 -0
@@ -751,6 +751,7 @@ static int omap_dmm_probe(struct platform_device *dev) &omap_dmm->refill_pa, GFP_KERNEL);if (!omap_dmm->refill_va) {dev_err (&dev->dev,"could not allocate refill memory\n" ); + ret = -ENOMEM ; goto fail; }
drivers/gpu/drm/tegra/sor.c +8 -2
@@ -2378,17 +2378,23 @@ static int tegra_sor_init(struct host1x_client *client)if (err <0 ) {dev_err (sor->dev,"failed to deassert SOR reset: %d\n" , err); +clk_disable_unprepare (sor->clk);return err; } } err =clk_prepare_enable (sor->clk_safe); -if (err <0 ) +if (err <0 ) { +clk_disable_unprepare (sor->clk);return err; + } err =clk_prepare_enable (sor->clk_dp); -if (err <0 ) +if (err <0 ) { +clk_disable_unprepare (sor->clk_safe); +clk_disable_unprepare (sor->clk);return err; + }return 0 ; }
drivers/hid/i2c-hid/i2c-hid-dmi-quirks.c +8 -0
@@ -397,6 +397,14 @@ static const struct dmi_system_id i2c_hid_dmi_desc_override_table[] = { }, .driver_data = (void *)&sipodev_desc }, + { + .ident = "Vero K147", + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "VERO"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "K147"), + }, + .driver_data = (void *)&sipodev_desc + }, { } /* Terminate list */ };
drivers/hsi/controllers/omap_ssi_core.c +1 -1
@@ -389,7 +389,7 @@ static int ssi_add_controller(struct hsi_controller *ssi, err =ida_simple_get (&platform_omap_ssi_ida,0 ,0 ,GFP_KERNEL );if (err <0 ) - goto out_err; +return err; ssi->id = err; ssi->owner =THIS_MODULE ;
drivers/iio/adc/rockchip_saradc.c +1 -1
@@ -384,7 +384,7 @@ static int rockchip_saradc_resume(struct device *dev) ret =clk_prepare_enable (info->clk);if (ret) -return ret; +clk_disable_unprepare (info->pclk);return ret; }
drivers/iio/imu/bmi160/bmi160_core.c +2 -2
@@ -385,8 +385,8 @@ static irqreturn_t bmi160_trigger_handler(int irq, void *p)struct iio_poll_func *pf = p;struct iio_dev *indio_dev = pf->indio_dev;struct bmi160_data *data =iio_priv (indio_dev); -__le16 buf[16 ]; -/* 3 sens x 3 axis x __le16 + 3 x __le16 pad + 4 x __le16 tstamp */ +__le16 buf[12 ]; +/* 2 sens x 3 axis x __le16 + 2 x __le16 pad + 4 x __le16 tstamp */ int i, ret, j =0 , base =BMI160_REG_DATA_MAGN_XOUT_L ;__le16 sample;
drivers/iio/industrialio-buffer.c +3 -3
@@ -850,12 +850,12 @@ static int iio_buffer_update_demux(struct iio_dev *indio_dev, indio_dev->masklength, in_ind + 1);while (in_ind != out_ind) { - in_ind =find_next_bit (indio_dev->active_scan_mask, - indio_dev->masklength, - in_ind +1 ); length =iio_storage_bytes_for_si (indio_dev, in_ind);/* Make sure we are aligned */ in_loc =roundup (in_loc, length) + length; + in_ind =find_next_bit (indio_dev->active_scan_mask, + indio_dev->masklength, + in_ind +1 ); } length =iio_storage_bytes_for_si (indio_dev, in_ind); out_loc =roundup (out_loc, length);
drivers/iio/light/rpr0521.c +13 -4
@@ -197,6 +197,17 @@ struct rpr0521_data {bool pxs_need_dis;struct regmap *regmap; + +/* +* Ensure correct naturally aligned timestamp. +* Note that the read will put garbage data into +* the padding but this should not be a problem +*/ +struct { +__le16 channels[3 ]; +u8 garbage; +s64 ts__aligned(8) ; + } scan; }; static IIO_CONST_ATTR(in_intensity_scale_available, RPR0521_ALS_SCALE_AVAIL);
@@ -452,8 +463,6 @@ static irqreturn_t rpr0521_trigger_consumer_handler(int irq, void *p)struct rpr0521_data *data =iio_priv (indio_dev);int err; -u8 buffer[16 ];/* 3 16-bit channels + padding + ts */ -/* Use irq timestamp when reasonable. */ if (iio_trigger_using_own (indio_dev) && data->irq_timestamp) { pf->timestamp = data->irq_timestamp;
@@ -464,11 +473,11 @@ static irqreturn_t rpr0521_trigger_consumer_handler(int irq, void *p) pf->timestamp =iio_get_time_ns (indio_dev); err =regmap_bulk_read (data->regmap,RPR0521_REG_PXS_DATA , - &buffer, + data->scan.channels, (3 *2 ) +1 );/* 3 * 16-bit + (discarded) int clear reg. */ if (!err)iio_push_to_buffers_with_timestamp (indio_dev, - buffer, pf->timestamp); + &data->scan, pf->timestamp);else dev_err (&data->client->dev,"Trigger consumer can't read from sensor.\n" );
drivers/iio/pressure/mpl3115.c +8 -1
@@ -147,7 +147,14 @@ static irqreturn_t mpl3115_trigger_handler(int irq, void *p)struct iio_poll_func *pf = p;struct iio_dev *indio_dev = pf->indio_dev;struct mpl3115_data *data =iio_priv (indio_dev); -u8 buffer[16 ];/* 32-bit channel + 16-bit channel + padding + ts */ +/* +* 32-bit channel + 16-bit channel + padding + ts +* Note that it is possible for only one of the first 2 +* channels to be enabled. If that happens, the first element +* of the buffer may be either 16 or 32-bits. As such we cannot +* use a simple structure definition to express this data layout. +*/ +u8 buffer[16 ]__aligned(8) ;int ret, pos =0 ;mutex_lock (&data->lock);
drivers/infiniband/core/cm.c +2 -0
@@ -1349,6 +1349,7 @@ int ib_send_cm_req(struct ib_cm_id *cm_id, id.local_id);if (IS_ERR (cm_id_priv->timewait_info)) { ret =PTR_ERR (cm_id_priv->timewait_info); + cm_id_priv->timewait_info =NULL ; goto out; }
@@ -1836,6 +1837,7 @@ static int cm_req_handler(struct cm_work *work) id.local_id);if (IS_ERR (cm_id_priv->timewait_info)) { ret =PTR_ERR (cm_id_priv->timewait_info); + cm_id_priv->timewait_info =NULL ; goto destroy; } cm_id_priv->timewait_info->work.remote_id = req_msg->local_comm_id;
drivers/infiniband/hw/bnxt_re/ib_verbs.c +1 -0
@@ -1590,6 +1590,7 @@ int bnxt_re_query_qp(struct ib_qp *ib_qp, struct ib_qp_attr *qp_attr, goto out; } qp_attr->qp_state =__to_ib_qp_state (qplib_qp->state); + qp_attr->cur_qp_state =__to_ib_qp_state (qplib_qp->cur_qp_state); qp_attr->en_sqd_async_notify = qplib_qp->en_sqd_async_notify ?1 :0 ; qp_attr->qp_access_flags =__to_ib_access_flags (qplib_qp->access); qp_attr->pkey_index = qplib_qp->pkey_index;
drivers/infiniband/hw/cxgb4/cq.c +3 -0
@@ -906,6 +906,9 @@ struct ib_cq *c4iw_create_cq(struct ib_device *ibdev, rhp =to_c4iw_dev (ibdev); +if (entries <1 || entries > ibdev->attrs.max_cqe) +return ERR_PTR (-EINVAL ); +if (vector >= rhp->rdev.lldi.nciq)return ERR_PTR (-EINVAL );
drivers/infiniband/hw/mthca/mthca_cq.c +1 -1
@@ -609,7 +609,7 @@ static inline int mthca_poll_one(struct mthca_dev *dev, entry->byte_len =MTHCA_ATOMIC_BYTE_LEN ;break ;default : - entry->opcode =MTHCA_OPCODE_INVALID ; + entry->opcode =0xFF ;break ; } }else {
drivers/infiniband/hw/mthca/mthca_dev.h +0 -1
@@ -105,7 +105,6 @@ enum {MTHCA_OPCODE_ATOMIC_CS =0x11 ,MTHCA_OPCODE_ATOMIC_FA =0x12 , MTHCA_OPCODE_BIND_MW = 0x18, -MTHCA_OPCODE_INVALID =0xff }; enum {
drivers/infiniband/sw/rxe/rxe_req.c +2 -1
@@ -664,7 +664,8 @@ int rxe_requester(void *arg) }if (unlikely (qp_type (qp) ==IB_QPT_RC && - qp->req.psn > (qp->comp.psn +RXE_MAX_UNACKED_PSNS ))) { +psn_compare (qp->req.psn, (qp->comp.psn + +RXE_MAX_UNACKED_PSNS )) >0 )) { qp->req.wait_psn =1 ; goto exit; }
drivers/input/keyboard/cros_ec_keyb.c +1 -0
@@ -196,6 +196,7 @@ static void cros_ec_keyb_process(struct cros_ec_keyb *ckdev,"changed: [r%d c%d]: byte %02x\n" , row, col, new_state); +input_event (idev,EV_MSC ,MSC_SCAN , pos);input_report_key (idev, keycodes[pos], new_state); }
drivers/input/keyboard/omap4-keypad.c +53 -36
154 lines not on this page · raw message
drivers/input/misc/cm109.c +5 -2
@@ -571,12 +571,15 @@ static int cm109_input_open(struct input_dev *idev) dev->ctl_data->byte[HID_OR2 ] = dev->keybit; dev->ctl_data->byte[HID_OR3 ] =0x00 ; + dev->ctl_urb_pending =1 ; error =usb_submit_urb (dev->urb_ctl,GFP_KERNEL ); -if (error) +if (error) { + dev->ctl_urb_pending =0 ;dev_err (&dev->intf->dev,"%s: usb_submit_urb (urb_ctl) failed %d\n" , __func__, error); -else + }else { dev->open =1 ; + }mutex_unlock (&dev->pm_mutex);
drivers/input/mouse/cyapa_gen6.c +1 -1
@@ -573,7 +573,7 @@ static int cyapa_pip_retrieve_data_structure(struct cyapa *cyapa,memset (&cmd,0 ,sizeof (cmd));put_unaligned_le16 (PIP_OUTPUT_REPORT_ADDR , &cmd.head.addr); -put_unaligned_le16 (sizeof (cmd), &cmd.head.length -2 ); +put_unaligned_le16 (sizeof (cmd) -2 , &cmd.head.length); cmd.head.report_id =PIP_APP_CMD_REPORT_ID ; cmd.head.cmd_code =PIP_RETRIEVE_DATA_STRUCTURE ;put_unaligned_le16 (read_offset, &cmd.read_offset);
drivers/input/serio/i8042-x86ia64io.h +42 -0
48 lines not on this page · raw message
drivers/input/touchscreen/ads7846.c +31 -21
96 lines not on this page · raw message
drivers/input/touchscreen/goodix.c +12 -0
@@ -101,6 +101,18 @@ static const struct dmi_system_id rotated_screen[] = { DMI_MATCH(DMI_BIOS_DATE, "12/19/2014"), }, }, + { + .ident = "Teclast X98 Pro", + .matches = { +/* +* Only match BIOS date, because the manufacturers +* BIOS does not report the board name at all +* (sometimes)... +*/ +DMI_MATCH (DMI_BOARD_VENDOR ,"TECLAST" ), + DMI_MATCH(DMI_BIOS_DATE, "10/28/2015"), + }, + }, { .ident ="WinBook TW100" , .matches = {
drivers/irqchip/irq-alpine-msi.c +1 -2
@@ -165,8 +165,7 @@ static int alpine_msix_middle_domain_alloc(struct irq_domain *domain,return 0 ; err_sgi: -while (--i >=0 ) -irq_domain_free_irqs_parent (domain, virq, i); +irq_domain_free_irqs_parent (domain, virq, i -1 );alpine_msix_free_sgi (priv, sgi, nr_irqs);return err; }
drivers/md/dm-ioctl.c +1 -0
@@ -1574,6 +1574,7 @@ static int target_message(struct file *filp, struct dm_ioctl *param, size_t paraif (!argc) {DMWARN ("Empty message received." ); + r = -EINVAL ; goto out_argv; }
drivers/md/dm-table.c +0 -6
@@ -1295,12 +1295,6 @@ void dm_table_event_callback(struct dm_table *t,void dm_table_event (struct dm_table *t) { -/* -* You can no longer call dm_table_event() from interrupt -* context, use a bottom half instead. -*/ -BUG_ON (in_interrupt ()); -mutex_lock (&_event_lock);if (t->event_fn) t->event_fn (t->event_context);
drivers/md/md-cluster.c +38 -29
111 lines not on this page · raw message
drivers/md/md.c +9 -4
@@ -6537,8 +6537,10 @@ static int hot_remove_disk(struct mddev *mddev, dev_t dev) goto busy; kick_rdev: -if (mddev_is_clustered (mddev)) - md_cluster_ops->remove_disk (mddev, rdev); +if (mddev_is_clustered (mddev)) { +if (md_cluster_ops->remove_disk (mddev, rdev)) + goto busy; + }md_kick_rdev_from_array (rdev);set_bit (MD_SB_CHANGE_DEVS , &mddev->sb_flags);
@@ -7187,8 +7189,11 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, err = -EBUSY ; goto out; } -WARN_ON_ONCE (test_bit (MD_CLOSING , &mddev->flags)); -set_bit (MD_CLOSING , &mddev->flags); +if (test_and_set_bit (MD_CLOSING , &mddev->flags)) { +mutex_unlock (&mddev->open_mutex); + err = -EBUSY ; + goto out; + } did_set_md_closing = true;mutex_unlock (&mddev->open_mutex);sync_blockdev (bdev);
drivers/media/common/siano/smsdvb-main.c +4 -1
@@ -1180,12 +1180,15 @@ static int smsdvb_hotplug(struct smscore_device_t *coredev, rc =dvb_create_media_graph (&client->adapter, true);if (rc <0 ) {pr_err ("dvb_create_media_graph failed %d\n" , rc); - goto client_error; + goto media_graph_error; }pr_info ("DVB interface registered.\n" );return 0 ; +media_graph_error: +smsdvb_debugfs_release (client); + client_error:dvb_unregister_frontend (&client->frontend);
drivers/media/i2c/max2175.c +1 -1
@@ -511,7 +511,7 @@ static void max2175_set_bbfilter(struct max2175 *ctx) } } -static bool max2175_set_csm_mode (struct max2175 *ctx, +static int max2175_set_csm_mode (struct max2175 *ctx,enum max2175_csm_mode new_mode) {int ret =max2175_poll_csm_ready (ctx);
drivers/media/pci/netup_unidvb/netup_unidvb_spi.c +3 -2
@@ -184,7 +184,7 @@ int netup_spi_init(struct netup_unidvb_dev *ndev)struct spi_master *master;struct netup_spi *nspi; - master =spi_alloc_master (&ndev->pci_dev->dev, + master =devm_spi_alloc_master (&ndev->pci_dev->dev,sizeof (struct netup_spi ));if (!master) { dev_err(&ndev->pci_dev->dev,
@@ -217,6 +217,7 @@ int netup_spi_init(struct netup_unidvb_dev *ndev) ndev->pci_slot, ndev->pci_func);if (!spi_new_device (master, &netup_spi_board)) { +spi_unregister_master (master); ndev->spi =NULL ;dev_err (&ndev->pci_dev->dev,"%s(): unable to create SPI device\n" , __func__);
@@ -235,13 +236,13 @@ void netup_spi_release(struct netup_unidvb_dev *ndev)if (!spi)return ; +spi_unregister_master (spi->master);spin_lock_irqsave (&spi->lock, flags); reg =readw (&spi->regs->control_stat);writew (reg |NETUP_SPI_CTRL_IRQ , &spi->regs->control_stat); reg =readw (&spi->regs->control_stat);writew (reg & ~NETUP_SPI_CTRL_IMASK , &spi->regs->control_stat);spin_unlock_irqrestore (&spi->lock, flags); -spi_unregister_master (spi->master); ndev->spi =NULL ; }
drivers/media/pci/saa7146/mxb.c +10 -9
@@ -652,16 +652,17 @@ static int vidioc_s_audio(struct file *file, void *fh, const struct v4l2_audio *struct mxb *mxb = (struct mxb *)dev->ext_priv;DEB_D ("VIDIOC_S_AUDIO %d\n" , a->index); -if (mxb_inputs[mxb->cur_input].audioset & (1 << a->index)) { -if (mxb->cur_audinput != a->index) { - mxb->cur_audinput = a->index; -tea6420_route (mxb, a->index); -if (mxb->cur_audinput ==0 ) -mxb_update_audmode (mxb); - } -return 0 ; +if (a->index >=32 || + !(mxb_inputs[mxb->cur_input].audioset & (1 << a->index))) +return -EINVAL ; + +if (mxb->cur_audinput != a->index) { + mxb->cur_audinput = a->index; +tea6420_route (mxb, a->index); +if (mxb->cur_audinput ==0 ) +mxb_update_audmode (mxb); } -return -EINVAL ; +return 0 ; }#ifdef CONFIG_VIDEO_ADV_DEBUG
drivers/media/pci/solo6x10/solo6x10-g723.c +1 -1
@@ -401,7 +401,7 @@ int solo_g723_init(struct solo_dev *solo_dev) ret =snd_ctl_add (card,snd_ctl_new1 (&kctl, solo_dev));if (ret <0 ) -return ret; + goto snd_error; ret =solo_snd_pcm_init (solo_dev);if (ret <0 )
drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c +1 -0
@@ -103,6 +103,7 @@ int mtk_vcodec_init_dec_pm(struct mtk_vcodec_dev *mtkdev)void mtk_vcodec_release_dec_pm (struct mtk_vcodec_dev *dev) {pm_runtime_disable (dev->pm.dev); +put_device (dev->pm.larbvdec); }void mtk_vcodec_dec_pw_on (struct mtk_vcodec_pm *pm)
drivers/media/rc/sunxi-cir.c +2 -0
@@ -132,6 +132,8 @@ static irqreturn_t sunxi_ir_irq(int irqno, void *dev_id) }else if (status ®_RXINT_RPEI_EN ) {ir_raw_event_set_idle (ir->rc, true);ir_raw_event_handle (ir->rc); + }else { +ir_raw_event_handle (ir->rc); }spin_unlock (&ir->ir_lock);
drivers/media/usb/gspca/gspca.c +1 -0
@@ -2140,6 +2140,7 @@ int gspca_dev_probe2(struct usb_interface *intf,input_unregister_device (gspca_dev->input_dev);#endif v4l2_ctrl_handler_free (gspca_dev->vdev.ctrl_handler); +v4l2_device_unregister (&gspca_dev->v4l2_dev);kfree (gspca_dev->usb_buf);kfree (gspca_dev);return ret;
drivers/media/usb/msi2500/msi2500.c +1 -1
@@ -1250,7 +1250,7 @@ static int msi2500_probe(struct usb_interface *intf, } dev->master = master; - master->bus_num =0 ; + master->bus_num =-1 ; master->num_chipselect =1 ; master->transfer_one_message = msi2500_transfer_one_message;spi_master_set_devdata (master, dev);
drivers/memstick/core/memstick.c +0 -1
@@ -469,7 +469,6 @@ static void memstick_check(struct work_struct *work) host->card = card;if (device_register (&card->dev)) {put_device (&card->dev); -kfree (host->card); host->card =NULL ; } }else
drivers/memstick/host/r592.c +8 -4
@@ -762,8 +762,10 @@ static int r592_probe(struct pci_dev *pdev, const struct pci_device_id *id) goto error3; dev->mmio =pci_ioremap_bar (pdev,0 ); -if (!dev->mmio) +if (!dev->mmio) { + error = -ENOMEM ; goto error4; + } dev->irq = pdev->irq;spin_lock_init (&dev->irq_lock);
@@ -790,12 +792,14 @@ static int r592_probe(struct pci_dev *pdev, const struct pci_device_id *id) &dev->dummy_dma_page_physical_address, GFP_KERNEL);r592_stop_dma (dev ,0 ); -if (request_irq (dev->irq, &r592_irq,IRQF_SHARED , -DRV_NAME , dev)) + error =request_irq (dev->irq, &r592_irq,IRQF_SHARED , +DRV_NAME , dev); +if (error) goto error6;r592_update_card_detect (dev); -if (memstick_add_host (host)) + error =memstick_add_host (host); +if (error) goto error7;message ("driver successfully loaded" );
drivers/mtd/cmdlinepart.c +13 -1
@@ -228,7 +228,7 @@ static int mtdpart_setup_real(char *s)struct cmdline_mtd_partition *this_mtd;struct mtd_partition *parts;int mtd_id_len, num_parts; -char *p, *mtd_id, *semicol; +char *p, *mtd_id, *semicol, *open_parenth;/* * Replace the first ';' by a NULL char so strrchr can work
@@ -238,6 +238,14 @@ static int mtdpart_setup_real(char *s)if (semicol) *semicol ='\0' ; +/* +* make sure that part-names with ":" will not be handled as +* part of the mtd-id with an ":" +*/ + open_parenth =strchr (s,'(' ); +if (open_parenth) + *open_parenth ='\0' ; + mtd_id = s;/*
@@ -247,6 +255,10 @@ static int mtdpart_setup_real(char *s)*/ p =strrchr (s,':' ); +/* Restore the '(' now. */ +if (open_parenth) + *open_parenth ='(' ; +/* Restore the ';' now. */ if (semicol) *semicol =';' ;
drivers/net/can/softing/softing_main.c +7 -2
@@ -393,8 +393,13 @@ static int softing_netdev_open(struct net_device *ndev)/* check or determine and set bittime */ ret =open_candev (ndev); -if (!ret) - ret =softing_startstop (ndev,1 ); +if (ret) +return ret; + + ret =softing_startstop (ndev,1 ); +if (ret <0 ) +close_candev (ndev); +return ret; }
drivers/net/ethernet/allwinner/sun4i-emac.c +5 -2
@@ -847,13 +847,13 @@ static int emac_probe(struct platform_device *pdev) db->clk =devm_clk_get (&pdev->dev,NULL );if (IS_ERR (db->clk)) { ret =PTR_ERR (db->clk); - goto out_iounmap; + goto out_dispose_mapping; } ret =clk_prepare_enable (db->clk);if (ret) {dev_err (&pdev->dev,"Error couldn't enable clock (%d)\n" , ret); - goto out_iounmap; + goto out_dispose_mapping; } ret =sunxi_sram_claim (&pdev->dev);
@@ -910,6 +910,8 @@ static int emac_probe(struct platform_device *pdev)sunxi_sram_release (&pdev->dev); out_clk_disable_unprepare:clk_disable_unprepare (db->clk); +out_dispose_mapping: +irq_dispose_mapping (ndev->irq); out_iounmap:iounmap (db->membase); out:
@@ -928,6 +930,7 @@ static int emac_remove(struct platform_device *pdev)unregister_netdev (ndev);sunxi_sram_release (&pdev->dev);clk_disable_unprepare (db->clk); +irq_dispose_mapping (ndev->irq);iounmap (db->membase);free_netdev (ndev);
drivers/net/ethernet/broadcom/genet/bcmgenet.c +3 -1
@@ -3593,8 +3593,10 @@ static int bcmgenet_probe(struct platform_device *pdev)clk_disable_unprepare (priv->clk); err =register_netdev (dev); -if (err) +if (err) { +bcmgenet_mii_exit (dev); goto err; + }return err;
drivers/net/ethernet/korina.c +1 -1
@@ -216,7 +216,7 @@ static int korina_send_packet(struct sk_buff *skb, struct net_device *dev)dev_kfree_skb_any (skb);spin_unlock_irqrestore (&lp->lock, flags); -return NETDEV_TX_BUSY ; +return NETDEV_TX_OK ; } }
drivers/net/ethernet/mellanox/mlx4/en_netdev.c +14 -7
@@ -1389,8 +1389,10 @@ static void mlx4_en_tx_timeout(struct net_device *dev) } priv->port_stats.tx_timeout++; -en_dbg (DRV , priv,"Scheduling watchdog\n" ); -queue_work (mdev->workqueue, &priv->watchdog_task); +if (!test_and_set_bit (MLX4_EN_STATE_FLAG_RESTARTING , &priv->state)) { +en_dbg (DRV , priv,"Scheduling port restart\n" ); +queue_work (mdev->workqueue, &priv->restart_task); + } }
@@ -1744,6 +1746,7 @@ int mlx4_en_start_port(struct net_device *dev)mlx4_en_deactivate_cq (priv, cq); goto tx_err; } +clear_bit (MLX4_EN_TX_RING_STATE_RECOVERING , &tx_ring->state);if (t !=TX_XDP ) { tx_ring->tx_queue =netdev_get_tx_queue (dev, i); tx_ring->recycle_ring =NULL ;
@@ -1839,6 +1842,7 @@ int mlx4_en_start_port(struct net_device *dev)local_bh_enable (); } +clear_bit (MLX4_EN_STATE_FLAG_RESTARTING , &priv->state);netif_tx_start_all_queues (dev);netif_device_attach (dev);
@@ -2009,7 +2013,7 @@ void mlx4_en_stop_port(struct net_device *dev, int detach)static void mlx4_en_restart (struct work_struct *work) { struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, - watchdog_task); + restart_task);struct mlx4_en_dev *mdev = priv->mdev;struct net_device *dev = priv->dev;
@@ -2388,7 +2392,7 @@ static int mlx4_en_change_mtu(struct net_device *dev, int new_mtu)if (netif_running (dev)) {mutex_lock (&mdev->state_lock);if (!mdev->device_up) { -/* NIC is probably restarting - let watchdog task reset +/* NIC is probably restarting - let restart task reset * the port */ en_dbg (DRV , priv,"Change MTU called with card down!?\n" ); }else {
@@ -2397,7 +2401,9 @@ static int mlx4_en_change_mtu(struct net_device *dev, int new_mtu)if (err) {en_err (priv,"Failed restarting port:%d\n" , priv->port); -queue_work (mdev->workqueue, &priv->watchdog_task); +if (!test_and_set_bit (MLX4_EN_STATE_FLAG_RESTARTING , + &priv->state)) +queue_work (mdev->workqueue, &priv->restart_task); } }mutex_unlock (&mdev->state_lock);
@@ -2883,7 +2889,8 @@ static int mlx4_xdp_set(struct net_device *dev, struct bpf_prog *prog)if (err) {en_err (priv,"Failed starting port %d for XDP change\n" , priv->port); -queue_work (mdev->workqueue, &priv->watchdog_task); +if (!test_and_set_bit (MLX4_EN_STATE_FLAG_RESTARTING , &priv->state)) +queue_work (mdev->workqueue, &priv->restart_task); } }
@@ -3284,7 +3291,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port, priv->counter_index =MLX4_SINK_COUNTER_INDEX (mdev->dev);spin_lock_init (&priv->stats_lock);INIT_WORK (&priv->rx_mode_task, mlx4_en_do_set_rx_mode); -INIT_WORK (&priv->watchdog_task, mlx4_en_restart); +INIT_WORK (&priv->restart_task, mlx4_en_restart);INIT_WORK (&priv->linkstate_task, mlx4_en_linkstate);INIT_DELAYED_WORK (&priv->stats_task, mlx4_en_do_get_stats);INIT_DELAYED_WORK (&priv->service_task, mlx4_en_service_task);
drivers/net/ethernet/mellanox/mlx4/en_tx.c +33 -7
@@ -385,6 +385,35 @@ int mlx4_en_free_tx_buf(struct net_device *dev, struct mlx4_en_tx_ring *ring)return cnt; } +static void mlx4_en_handle_err_cqe (struct mlx4_en_priv *priv,struct mlx4_err_cqe *err_cqe, +u16 cqe_index,struct mlx4_en_tx_ring *ring) +{ +struct mlx4_en_dev *mdev = priv->mdev; +struct mlx4_en_tx_info *tx_info; +struct mlx4_en_tx_desc *tx_desc; +u16 wqe_index; +int desc_size; + +en_err (priv,"CQE error - cqn 0x%x, ci 0x%x, vendor syndrome: 0x%x syndrome: 0x%x\n" , + ring->sp_cqn, cqe_index, err_cqe->vendor_err_syndrome, err_cqe->syndrome); +print_hex_dump (KERN_WARNING ,"" ,DUMP_PREFIX_OFFSET ,16 ,1 , err_cqe,sizeof (*err_cqe), + false); + + wqe_index =be16_to_cpu (err_cqe->wqe_index) & ring->size_mask; + tx_info = &ring->tx_info[wqe_index]; + desc_size = tx_info->nr_txbb <<LOG_TXBB_SIZE ; +en_err (priv,"Related WQE - qpn 0x%x, wqe index 0x%x, wqe size 0x%x\n" , ring->qpn, + wqe_index, desc_size); + tx_desc = ring->buf + (wqe_index <<LOG_TXBB_SIZE ); +print_hex_dump (KERN_WARNING ,"" ,DUMP_PREFIX_OFFSET ,16 ,1 , tx_desc, desc_size, false); + +if (test_and_set_bit (MLX4_EN_STATE_FLAG_RESTARTING , &priv->state)) +return ; + +en_err (priv,"Scheduling port restart\n" ); +queue_work (mdev->workqueue, &priv->restart_task); +} +bool mlx4_en_process_tx_cq (struct net_device *dev,struct mlx4_en_cq *cq,int napi_budget) {
@@ -431,13 +460,10 @@ bool mlx4_en_process_tx_cq(struct net_device *dev,dma_rmb ();if (unlikely ((cqe->owner_sr_opcode &MLX4_CQE_OPCODE_MASK ) == -MLX4_CQE_OPCODE_ERROR )) { -struct mlx4_err_cqe *cqe_err = (struct mlx4_err_cqe *)cqe; - -en_err (priv,"CQE error - vendor syndrome: 0x%x syndrome: 0x%x\n" , - cqe_err->vendor_err_syndrome, - cqe_err->syndrome); - } +MLX4_CQE_OPCODE_ERROR )) +if (!test_and_set_bit (MLX4_EN_TX_RING_STATE_RECOVERING , &ring->state)) +mlx4_en_handle_err_cqe (priv, (struct mlx4_err_cqe *)cqe, index, + ring);/* Skip over last polled CQE */ new_index =be16_to_cpu (cqe->wqe_index) & size_mask;
drivers/net/ethernet/mellanox/mlx4/mlx4_en.h +11 -1
@@ -267,6 +267,10 @@ struct mlx4_en_page_cache { } buf[MLX4_EN_CACHE_SIZE ]; }; +enum { +MLX4_EN_TX_RING_STATE_RECOVERING , +}; +struct mlx4_en_priv ;struct mlx4_en_tx_ring {
@@ -313,6 +317,7 @@ struct mlx4_en_tx_ring {* Only queue_stopped might be used if BQL is not properly working. */ unsigned long queue_stopped; +unsigned long state;struct mlx4_hwq_resources sp_wqres;struct mlx4_qp sp_qp;struct mlx4_qp_context sp_context;
@@ -525,6 +530,10 @@ struct mlx4_en_stats_bitmap {struct mutex mutex;/* for mutual access to stats bitmap */ }; +enum { +MLX4_EN_STATE_FLAG_RESTARTING , +}; +struct mlx4_en_priv {struct mlx4_en_dev *mdev;struct mlx4_en_port_profile *prof;
@@ -590,7 +599,7 @@ struct mlx4_en_priv {struct mlx4_en_cq *rx_cq[MAX_RX_RINGS ];struct mlx4_qp drop_qp;struct work_struct rx_mode_task; -struct work_struct watchdog_task; +struct work_struct restart_task;struct work_struct linkstate_task;struct delayed_work stats_task;struct delayed_work service_task;
@@ -637,6 +646,7 @@ struct mlx4_en_priv {u32 pflags;u8 rss_key[MLX4_EN_RSS_KEY_SIZE ];u8 rss_hash_fn; +unsigned long state; };enum mlx4_en_wol {
drivers/net/ethernet/mellanox/mlx5/core/main.c +5 -1
@@ -51,6 +51,7 @@#ifdef CONFIG_RFS_ACCEL #include <linux/cpu_rmap.h> #endif +#include <linux/version.h> #include <net/devlink.h> #include "mlx5_core.h" #include "fs_core.h"
@@ -204,7 +205,10 @@ static void mlx5_set_driver_version(struct mlx5_core_dev *dev)strncat (string,"," , remaining_size); remaining_size =max_t (int,0 , driver_ver_sz -strlen (string)); -strncat (string,DRIVER_VERSION , remaining_size); + +snprintf (string +strlen (string), remaining_size,"%u.%u.%u" , + (u8)((LINUX_VERSION_CODE >>16 ) &0xff ), (u8)((LINUX_VERSION_CODE >>8 ) &0xff ), + (u16)(LINUX_VERSION_CODE &0xffff ));/*Send the command*/ MLX5_SET(set_driver_version_in, in, opcode,
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +1 -0
@@ -2511,6 +2511,7 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)qlcnic_sriov_vf_register_map (ahw);break ;default : + err = -EINVAL ; goto err_out_free_hw_res; }
drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c +3 -3
@@ -30,7 +30,6 @@#define PRG_ETH0_RGMII_MODE BIT(0)/* mux to choose between fclk_div2 (bit unset) and mpll2 (bit set) */ -#define PRG_ETH0_CLK_M250_SEL_SHIFT 4#define PRG_ETH0_CLK_M250_SEL_MASK GENMASK(4, 4)#define PRG_ETH0_TXDLY_SHIFT 5
@@ -121,8 +120,9 @@ static int meson8b_init_clk(struct meson8b_dwmac *dwmac) init.num_parents =MUX_CLK_NUM_PARENTS ; dwmac->m250_mux.reg = dwmac->regs +PRG_ETH0 ; - dwmac->m250_mux.shift =PRG_ETH0_CLK_M250_SEL_SHIFT ; - dwmac->m250_mux.mask =PRG_ETH0_CLK_M250_SEL_MASK ; + dwmac->m250_mux.shift =__ffs (PRG_ETH0_CLK_M250_SEL_MASK ); + dwmac->m250_mux.mask =PRG_ETH0_CLK_M250_SEL_MASK >> + dwmac->m250_mux.shift; dwmac->m250_mux.flags =0 ; dwmac->m250_mux.table =NULL ; dwmac->m250_mux.hw.init = &init;
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +24 -3
@@ -1428,6 +1428,19 @@ static void dma_free_tx_skbufs(struct stmmac_priv *priv, u32 queue)stmmac_free_tx_buffer (priv, queue, i); } +/** +* stmmac_free_tx_skbufs - free TX skb buffers +* @priv: private structure +*/ +static void stmmac_free_tx_skbufs (struct stmmac_priv *priv) +{ +u32 tx_queue_cnt = priv->plat->tx_queues_to_use; +u32 queue; + +for (queue =0 ; queue < tx_queue_cnt; queue++) +dma_free_tx_skbufs (priv, queue); +} +/** * free_dma_rx_desc_resources - free RX dma desc resources * @priv: private structure
@@ -2692,9 +2705,6 @@ static int stmmac_release(struct net_device *dev) {struct stmmac_priv *priv =netdev_priv (dev); -if (priv->eee_enabled) -del_timer_sync (&priv->eee_ctrl_timer); -/* Stop and disconnect the PHY */ if (dev->phydev) {phy_stop (dev->phydev);
@@ -2714,6 +2724,11 @@ static int stmmac_release(struct net_device *dev)if (priv->lpi_irq >0 )free_irq (priv->lpi_irq, dev); +if (priv->eee_enabled) { + priv->tx_path_in_lpi_mode = false; +del_timer_sync (&priv->eee_ctrl_timer); + } +/* Stop TX/RX DMA and clear the descriptors */ stmmac_stop_all_dma (priv);
@@ -4405,6 +4420,11 @@ int stmmac_suspend(struct device *dev)stmmac_disable_all_queues (priv); +if (priv->eee_enabled) { + priv->tx_path_in_lpi_mode = false; +del_timer_sync (&priv->eee_ctrl_timer); + } +/* Stop TX/RX DMA */ stmmac_stop_all_dma (priv);
@@ -4503,6 +4523,7 @@ int stmmac_resume(struct device *dev)*/ priv->mss =0 ; +stmmac_free_tx_skbufs (priv);stmmac_clear_descriptors (priv);stmmac_hw_setup (ndev, false);
drivers/net/vxlan.c +3 -0
@@ -3184,6 +3184,9 @@ static void vxlan_config_apply(struct net_device *dev, dev->gso_max_segs = lowerdev->gso_max_segs; needed_headroom = lowerdev->hard_header_len; + needed_headroom += lowerdev->needed_headroom; + + dev->needed_tailroom = lowerdev->needed_tailroom; max_mtu = lowerdev->mtu - (use_ipv6 ?VXLAN6_HEADROOM :VXLAN_HEADROOM );
drivers/net/wireless/ath/ath10k/usb.c +6 -1
@@ -1019,6 +1019,8 @@ static int ath10k_usb_probe(struct usb_interface *interface, ar_usb =ath10k_usb_priv (ar); ret =ath10k_usb_create (ar, interface); +if (ret) + goto err; ar_usb->ar = ar; ar->dev_id = product_id;
@@ -1030,7 +1032,7 @@ static int ath10k_usb_probe(struct usb_interface *interface, ret =ath10k_core_register (ar, chip_id);if (ret) {ath10k_warn (ar,"failed to register driver core: %d\n" , ret); - goto err; + goto err_usb_destroy; }/* TODO: remove this once USB support is fully implemented */
@@ -1038,6 +1040,9 @@ static int ath10k_usb_probe(struct usb_interface *interface,return 0 ; +err_usb_destroy: +ath10k_usb_destroy (ar); + err:ath10k_core_destroy (ar);
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +1 -1
@@ -2654,7 +2654,7 @@ static int iwl_mvm_mac_sta_state(struct ieee80211_hw *hw,/* this would be a mac80211 bug ... but don't crash */ if (WARN_ON_ONCE (!mvmvif->phy_ctxt)) -return -EINVAL ; +return test_bit (IWL_MVM_STATUS_HW_RESTART_REQUESTED , &mvm->status) ?0 : -EINVAL ;/* * If we are in a STA removal flow and in DQA mode:
drivers/net/wireless/intel/iwlwifi/pcie/trans.c +27 -9
@@ -1927,18 +1927,36 @@ static int iwl_trans_pcie_read_mem(struct iwl_trans *trans, u32 addr, void *buf, int dwords) {unsigned long flags; -int offs, ret =0 ; +int offs =0 ;u32 *vals = buf; -if (iwl_trans_grab_nic_access (trans, &flags)) { -iwl_write32 (trans,HBUS_TARG_MEM_RADDR , addr); -for (offs =0 ; offs < dwords; offs++) - vals[offs] =iwl_read32 (trans,HBUS_TARG_MEM_RDAT ); -iwl_trans_release_nic_access (trans, &flags); - }else { - ret = -EBUSY ; +while (offs < dwords) { +/* limit the time we spin here under lock to 1/2s */ +ktime_t timeout =ktime_add_us (ktime_get (),500 *USEC_PER_MSEC ); + +if (iwl_trans_grab_nic_access (trans, &flags)) { +iwl_write32 (trans,HBUS_TARG_MEM_RADDR , + addr +4 * offs); + +while (offs < dwords) { + vals[offs] =iwl_read32 (trans, +HBUS_TARG_MEM_RDAT ); + offs++; + +/* calling ktime_get is expensive so +* do it once in 128 reads +*/ +if (offs %128 ==0 &&ktime_after (ktime_get (), + timeout)) +break ; + } +iwl_trans_release_nic_access (trans, &flags); + }else { +return -EBUSY ; + } } -return ret; + +return 0 ; } static int iwl_trans_pcie_write_mem(struct iwl_trans *trans, u32 addr,
drivers/net/wireless/intersil/orinoco/orinoco_usb.c +7 -7
@@ -1237,13 +1237,6 @@ static netdev_tx_t ezusb_xmit(struct sk_buff *skb, struct net_device *dev)if (skb->len <ETH_HLEN ) goto drop; - ctx =ezusb_alloc_ctx (upriv,EZUSB_RID_TX ,0 ); -if (!ctx) - goto busy; - -memset (ctx->buf,0 ,BULK_BUF_SIZE ); - buf = ctx->buf->data; - tx_control =0 ; err = orinoco_process_xmit_skb(skb, dev, priv, &tx_control,
@@ -1251,6 +1244,13 @@ static netdev_tx_t ezusb_xmit(struct sk_buff *skb, struct net_device *dev)if (err) goto drop; + ctx =ezusb_alloc_ctx (upriv,EZUSB_RID_TX ,0 ); +if (!ctx) + goto drop; + +memset (ctx->buf,0 ,BULK_BUF_SIZE ); + buf = ctx->buf->data; + {__le16 *tx_cntl = (__le16 *)buf; *tx_cntl =cpu_to_le16 (tx_control);
drivers/net/wireless/marvell/mwifiex/main.c +2 -0
@@ -1447,6 +1447,8 @@ int mwifiex_shutdown_sw(struct mwifiex_adapter *adapter) priv =mwifiex_get_priv (adapter,MWIFIEX_BSS_ROLE_ANY );mwifiex_deauthenticate (priv,NULL ); +mwifiex_init_shutdown_fw (priv,MWIFIEX_FUNC_SHUTDOWN ); +mwifiex_uninit_sw (adapter);if (adapter->if_ops.down_dev)
drivers/net/wireless/st/cw1200/main.c +2 -0
@@ -385,6 +385,7 @@ static struct ieee80211_hw *cw1200_init_common(const u8 *macaddr, CW1200_LINK_ID_MAX, cw1200_skb_dtor, priv)) { +destroy_workqueue (priv->workqueue);ieee80211_free_hw (hw);return NULL ; }
@@ -396,6 +397,7 @@ static struct ieee80211_hw *cw1200_init_common(const u8 *macaddr,for (; i >0 ; i--)cw1200_queue_deinit (&priv->tx_queue[i -1 ]);cw1200_queue_stats_deinit (&priv->tx_queue_stats); +destroy_workqueue (priv->workqueue);ieee80211_free_hw (hw);return NULL ; }
drivers/net/xen-netback/xenbus.c +5 -1
@@ -777,12 +777,14 @@ static int xen_register_credit_watch(struct xenbus_device *dev,return -ENOMEM ;snprintf (node, maxlen,"%s/rate" , dev->nodename); vif->credit_watch.node = node; + vif->credit_watch.will_handle =NULL ; vif->credit_watch.callback = xen_net_rate_changed; err =register_xenbus_watch (&vif->credit_watch);if (err) {pr_err ("Failed to set watcher %s\n" , vif->credit_watch.node);kfree (node); vif->credit_watch.node =NULL ; + vif->credit_watch.will_handle =NULL ; vif->credit_watch.callback =NULL ; }return err;
@@ -829,6 +831,7 @@ static int xen_register_mcast_ctrl_watch(struct xenbus_device *dev,snprintf (node, maxlen,"%s/request-multicast-control" , dev->otherend); vif->mcast_ctrl_watch.node = node; + vif->mcast_ctrl_watch.will_handle =NULL ; vif->mcast_ctrl_watch.callback = xen_mcast_ctrl_changed; err =register_xenbus_watch (&vif->mcast_ctrl_watch);if (err) {
@@ -836,6 +839,7 @@ static int xen_register_mcast_ctrl_watch(struct xenbus_device *dev, vif->mcast_ctrl_watch.node);kfree (node); vif->mcast_ctrl_watch.node =NULL ; + vif->mcast_ctrl_watch.will_handle =NULL ; vif->mcast_ctrl_watch.callback =NULL ; }return err;
@@ -1039,7 +1043,7 @@ static void connect(struct backend_info *be)xenvif_carrier_on (be->vif);unregister_hotplug_status_watch (be); - err =xenbus_watch_pathfmt (dev, &be->hotplug_status_watch, + err =xenbus_watch_pathfmt (dev, &be->hotplug_status_watch,NULL , hotplug_status_changed,"%s/%s" , dev->nodename,"hotplug-status" );if (!err)
drivers/nfc/s3fwrn5/firmware.c +3 -1
@@ -304,8 +304,10 @@ static int s3fwrn5_fw_request_firmware(struct s3fwrn5_fw_info *fw_info)if (ret <0 )return ret; -if (fw->fw->size <S3FWRN5_FW_IMAGE_HEADER_SIZE ) +if (fw->fw->size <S3FWRN5_FW_IMAGE_HEADER_SIZE ) { +release_firmware (fw->fw);return -EINVAL ; + }memcpy (fw->date, fw->fw->data +0x00 ,12 ); fw->date[12 ] ='\0' ;
drivers/nvdimm/label.c +9 -0
@@ -852,6 +852,15 @@ static int __blk_label_update(struct nd_region *nd_region, } } +/* release slots associated with any invalidated UUIDs */ +mutex_lock (&nd_mapping->lock); +list_for_each_entry_safe (label_ent, e, &nd_mapping->labels, list) +if (test_and_clear_bit (ND_LABEL_REAP , &label_ent->flags)) { +reap_victim (nd_mapping, label_ent); +list_move (&label_ent->list, &list); + } +mutex_unlock (&nd_mapping->lock); +/* * Find the resource associated with the first label in the set * per the v1.2 namespace specification.
drivers/pci/dwc/pcie-qcom.c +12 -0
@@ -96,6 +96,7 @@ struct qcom_pcie_resources_2_1_0 {struct reset_control *ahb_reset;struct reset_control *por_reset;struct reset_control *phy_reset; +struct reset_control *ext_reset;struct regulator *vdda;struct regulator *vdda_phy;struct regulator *vdda_refclk;
@@ -265,6 +266,10 @@ static int qcom_pcie_get_resources_2_1_0(struct qcom_pcie *pcie)if (IS_ERR (res->por_reset))return PTR_ERR (res->por_reset); + res->ext_reset =devm_reset_control_get_optional_exclusive (dev,"ext" ); +if (IS_ERR (res->ext_reset)) +return PTR_ERR (res->ext_reset); + res->phy_reset =devm_reset_control_get_exclusive (dev,"phy" );return PTR_ERR_OR_ZERO (res->phy_reset); }
@@ -277,6 +282,7 @@ static void qcom_pcie_deinit_2_1_0(struct qcom_pcie *pcie)reset_control_assert (res->axi_reset);reset_control_assert (res->ahb_reset);reset_control_assert (res->por_reset); +reset_control_assert (res->ext_reset);reset_control_assert (res->pci_reset);clk_disable_unprepare (res->iface_clk);clk_disable_unprepare (res->core_clk);
@@ -342,6 +348,12 @@ static int qcom_pcie_init_2_1_0(struct qcom_pcie *pcie) goto err_deassert_ahb; } + ret =reset_control_deassert (res->ext_reset); +if (ret) { +dev_err (dev,"cannot deassert ext reset\n" ); + goto err_deassert_ahb; + } +/* enable PCIe clocks and resets */ val =readl (pcie->parf +PCIE20_PARF_PHY_CTRL ); val &= ~BIT (0 );
drivers/pci/host/pcie-iproc.c +5 -5
@@ -306,7 +306,7 @@ enum iproc_pcie_reg { };/* iProc PCIe PAXB BCMA registers */ -static const u16 iproc_pcie_reg_paxb_bcma[] = { +static const u16 iproc_pcie_reg_paxb_bcma[IPROC_PCIE_MAX_NUM_REG ] = { [IPROC_PCIE_CLK_CTRL ] =0x000 , [IPROC_PCIE_CFG_IND_ADDR ] =0x120 , [IPROC_PCIE_CFG_IND_DATA ] =0x124 ,
@@ -317,7 +317,7 @@ static const u16 iproc_pcie_reg_paxb_bcma[] = { };/* iProc PCIe PAXB registers */ -static const u16 iproc_pcie_reg_paxb[] = { +static const u16 iproc_pcie_reg_paxb[IPROC_PCIE_MAX_NUM_REG ] = { [IPROC_PCIE_CLK_CTRL ] =0x000 , [IPROC_PCIE_CFG_IND_ADDR ] =0x120 , [IPROC_PCIE_CFG_IND_DATA ] =0x124 ,
@@ -333,7 +333,7 @@ static const u16 iproc_pcie_reg_paxb[] = { };/* iProc PCIe PAXB v2 registers */ -static const u16 iproc_pcie_reg_paxb_v2[] = { +static const u16 iproc_pcie_reg_paxb_v2[IPROC_PCIE_MAX_NUM_REG ] = { [IPROC_PCIE_CLK_CTRL ] =0x000 , [IPROC_PCIE_CFG_IND_ADDR ] =0x120 , [IPROC_PCIE_CFG_IND_DATA ] =0x124 ,
@@ -361,7 +361,7 @@ static const u16 iproc_pcie_reg_paxb_v2[] = { };/* iProc PCIe PAXC v1 registers */ -static const u16 iproc_pcie_reg_paxc[] = { +static const u16 iproc_pcie_reg_paxc[IPROC_PCIE_MAX_NUM_REG ] = { [IPROC_PCIE_CLK_CTRL ] =0x000 , [IPROC_PCIE_CFG_IND_ADDR ] =0x1f0 , [IPROC_PCIE_CFG_IND_DATA ] =0x1f4 ,
@@ -370,7 +370,7 @@ static const u16 iproc_pcie_reg_paxc[] = { };/* iProc PCIe PAXC v2 registers */ -static const u16 iproc_pcie_reg_paxc_v2[] = { +static const u16 iproc_pcie_reg_paxc_v2[IPROC_PCIE_MAX_NUM_REG ] = { [IPROC_PCIE_MSI_GIC_MODE ] =0x050 , [IPROC_PCIE_MSI_BASE_ADDR ] =0x074 , [IPROC_PCIE_MSI_WINDOW_SIZE ] =0x078 ,
drivers/pci/pci-acpi.c +2 -2
@@ -573,7 +573,7 @@ static int acpi_pci_propagate_wakeup(struct pci_bus *bus, bool enable) {while (bus->parent) {if (acpi_pm_device_can_wakeup (&bus->self->dev)) -return acpi_pm_set_bridge_wakeup (&bus->self->dev, enable); +return acpi_pm_set_device_wakeup (&bus->self->dev, enable); bus = bus->parent; }
@@ -581,7 +581,7 @@ static int acpi_pci_propagate_wakeup(struct pci_bus *bus, bool enable)/* We have reached the root bus. */ if (bus->bridge) {if (acpi_pm_device_can_wakeup (bus->bridge)) -return acpi_pm_set_bridge_wakeup (bus->bridge, enable); +return acpi_pm_set_device_wakeup (bus->bridge, enable); }return 0 ; }
drivers/pci/slot.c +3 -3
@@ -307,6 +307,9 @@ struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr, goto err; } +INIT_LIST_HEAD (&slot->list); +list_add (&slot->list, &parent->slots); + err =kobject_init_and_add (&slot->kobj, &pci_slot_ktype,NULL ,"%s" , slot_name);if (err) {
@@ -314,9 +317,6 @@ struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr, goto err; } -INIT_LIST_HEAD (&slot->list); -list_add (&slot->list, &parent->slots); -down_read (&pci_bus_sem);list_for_each_entry (dev, &parent->devices, bus_list)if (PCI_SLOT (dev->devfn) == slot_nr)
drivers/pinctrl/intel/pinctrl-baytrail.c +7 -1
@@ -1266,7 +1266,6 @@ static int byt_pin_config_set(struct pinctrl_dev *pctl_dev,break ;case PIN_CONFIG_INPUT_DEBOUNCE : debounce =readl (db_reg); - debounce &= ~BYT_DEBOUNCE_PULSE_MASK ;if (arg) conf |=BYT_DEBOUNCE_EN ;
@@ -1275,24 +1274,31 @@ static int byt_pin_config_set(struct pinctrl_dev *pctl_dev,switch (arg) {case 375 : + debounce &= ~BYT_DEBOUNCE_PULSE_MASK ; debounce |=BYT_DEBOUNCE_PULSE_375US ;break ;case 750 : + debounce &= ~BYT_DEBOUNCE_PULSE_MASK ; debounce |=BYT_DEBOUNCE_PULSE_750US ;break ;case 1500 : + debounce &= ~BYT_DEBOUNCE_PULSE_MASK ; debounce |=BYT_DEBOUNCE_PULSE_1500US ;break ;case 3000 : + debounce &= ~BYT_DEBOUNCE_PULSE_MASK ; debounce |=BYT_DEBOUNCE_PULSE_3MS ;break ;case 6000 : + debounce &= ~BYT_DEBOUNCE_PULSE_MASK ; debounce |=BYT_DEBOUNCE_PULSE_6MS ;break ;case 12000 : + debounce &= ~BYT_DEBOUNCE_PULSE_MASK ; debounce |=BYT_DEBOUNCE_PULSE_12MS ;break ;case 24000 : + debounce &= ~BYT_DEBOUNCE_PULSE_MASK ; debounce |=BYT_DEBOUNCE_PULSE_24MS ;break ;default :
drivers/pinctrl/intel/pinctrl-merrifield.c +8 -0
@@ -731,6 +731,10 @@ static int mrfld_config_set_pin(struct mrfld_pinctrl *mp, unsigned int pin, mask |= BUFCFG_Px_EN_MASK |BUFCFG_PUPD_VAL_MASK ; bits |=BUFCFG_PU_EN ; +/* Set default strength value in case none is given */ +if (arg ==1 ) + arg =20000 ; +switch (arg) {case 50000 : bits |=BUFCFG_PUPD_VAL_50K <<BUFCFG_PUPD_VAL_SHIFT ;
@@ -751,6 +755,10 @@ static int mrfld_config_set_pin(struct mrfld_pinctrl *mp, unsigned int pin, mask |= BUFCFG_Px_EN_MASK |BUFCFG_PUPD_VAL_MASK ; bits |=BUFCFG_PD_EN ; +/* Set default strength value in case none is given */ +if (arg ==1 ) + arg =20000 ; +switch (arg) {case 50000 : bits |=BUFCFG_PUPD_VAL_50K <<BUFCFG_PUPD_VAL_SHIFT ;
drivers/pinctrl/pinctrl-amd.c +0 -7
@@ -426,7 +426,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type) pin_reg &= ~BIT (LEVEL_TRIG_OFF ); pin_reg &= ~(ACTIVE_LEVEL_MASK <<ACTIVE_LEVEL_OFF ); pin_reg |=ACTIVE_HIGH <<ACTIVE_LEVEL_OFF ; - pin_reg |=DB_TYPE_REMOVE_GLITCH <<DB_CNTRL_OFF ;irq_set_handler_locked (d, handle_edge_irq);break ;
@@ -434,7 +433,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type) pin_reg &= ~BIT (LEVEL_TRIG_OFF ); pin_reg &= ~(ACTIVE_LEVEL_MASK <<ACTIVE_LEVEL_OFF ); pin_reg |=ACTIVE_LOW <<ACTIVE_LEVEL_OFF ; - pin_reg |=DB_TYPE_REMOVE_GLITCH <<DB_CNTRL_OFF ;irq_set_handler_locked (d, handle_edge_irq);break ;
@@ -442,7 +440,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type) pin_reg &= ~BIT (LEVEL_TRIG_OFF ); pin_reg &= ~(ACTIVE_LEVEL_MASK <<ACTIVE_LEVEL_OFF ); pin_reg |=BOTH_EADGE <<ACTIVE_LEVEL_OFF ; - pin_reg |=DB_TYPE_REMOVE_GLITCH <<DB_CNTRL_OFF ;irq_set_handler_locked (d, handle_edge_irq);break ;
@@ -450,8 +447,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type) pin_reg |=LEVEL_TRIGGER <<LEVEL_TRIG_OFF ; pin_reg &= ~(ACTIVE_LEVEL_MASK <<ACTIVE_LEVEL_OFF ); pin_reg |=ACTIVE_HIGH <<ACTIVE_LEVEL_OFF ; - pin_reg &= ~(DB_CNTRl_MASK <<DB_CNTRL_OFF ); - pin_reg |=DB_TYPE_PRESERVE_LOW_GLITCH <<DB_CNTRL_OFF ;irq_set_handler_locked (d, handle_level_irq);break ;
@@ -459,8 +454,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type) pin_reg |=LEVEL_TRIGGER <<LEVEL_TRIG_OFF ; pin_reg &= ~(ACTIVE_LEVEL_MASK <<ACTIVE_LEVEL_OFF ); pin_reg |=ACTIVE_LOW <<ACTIVE_LEVEL_OFF ; - pin_reg &= ~(DB_CNTRl_MASK <<DB_CNTRL_OFF ); - pin_reg |=DB_TYPE_PRESERVE_HIGH_GLITCH <<DB_CNTRL_OFF ;irq_set_handler_locked (d, handle_level_irq);break ;
drivers/pinctrl/pinctrl-falcon.c +9 -5
@@ -438,24 +438,28 @@ static int pinctrl_falcon_probe(struct platform_device *pdev)/* load and remap the pad resources of the different banks */ for_each_compatible_node (np,NULL ,"lantiq,pad-falcon" ) { -struct platform_device *ppdev =of_find_device_by_node (np);const __be32 *bank =of_get_property (np,"lantiq,bank" ,NULL );struct resource res; +struct platform_device *ppdev;u32 avail;int pins;if (!of_device_is_available (np))continue ; -if (!ppdev) { -dev_err (&pdev->dev,"failed to find pad pdev\n" ); -continue ; - }if (!bank || *bank >=PORTS )continue ;if (of_address_to_resource (np,0 , &res))continue ; + + ppdev =of_find_device_by_node (np); +if (!ppdev) { +dev_err (&pdev->dev,"failed to find pad pdev\n" ); +continue ; + } + falcon_info.clk[*bank] =clk_get (&ppdev->dev,NULL ); +put_device (&ppdev->dev);if (IS_ERR (falcon_info.clk[*bank])) {dev_err (&ppdev->dev,"failed to get clock\n" );return PTR_ERR (falcon_info.clk[*bank]);
drivers/platform/x86/acer-wmi.c +1 -0
@@ -124,6 +124,7 @@ static const struct key_entry acer_wmi_keymap[] __initconst = { {KE_KEY, 0x64, {KEY_SWITCHVIDEOMODE} }, /* Display Switch */ {KE_IGNORE, 0x81, {KEY_SLEEP} }, {KE_KEY, 0x82, {KEY_TOUCHPAD_TOGGLE} }, /* Touch Pad Toggle */ + {KE_IGNORE, 0x84, {KEY_KBDILLUMTOGGLE} }, /* Automatic Keyboard background light toggle */ {KE_KEY, KEY_TOUCHPAD_ON, {KEY_TOUCHPAD_ON} }, {KE_KEY, KEY_TOUCHPAD_OFF, {KEY_TOUCHPAD_OFF} }, {KE_IGNORE, 0x83, {KEY_TOUCHPAD_TOGGLE} },
drivers/power/supply/bq24190_charger.c +15 -5
@@ -450,8 +450,10 @@ static ssize_t bq24190_sysfs_show(struct device *dev,return -EINVAL ; ret =pm_runtime_get_sync (bdi->dev); -if (ret <0 ) +if (ret <0 ) { +pm_runtime_put_noidle (bdi->dev);return ret; + } ret =bq24190_read_mask (bdi, info->reg, info->mask, info->shift, &v);if (ret)
@@ -1086,8 +1088,10 @@ static int bq24190_charger_get_property(struct power_supply *psy,dev_dbg (bdi->dev,"prop: %d\n" , psp); ret =pm_runtime_get_sync (bdi->dev); -if (ret <0 ) +if (ret <0 ) { +pm_runtime_put_noidle (bdi->dev);return ret; + }switch (psp) {case POWER_SUPPLY_PROP_CHARGE_TYPE :
@@ -1158,8 +1162,10 @@ static int bq24190_charger_set_property(struct power_supply *psy,dev_dbg (bdi->dev,"prop: %d\n" , psp); ret =pm_runtime_get_sync (bdi->dev); -if (ret <0 ) +if (ret <0 ) { +pm_runtime_put_noidle (bdi->dev);return ret; + }switch (psp) {case POWER_SUPPLY_PROP_ONLINE :
@@ -1424,8 +1430,10 @@ static int bq24190_battery_get_property(struct power_supply *psy,dev_dbg (bdi->dev,"prop: %d\n" , psp); ret =pm_runtime_get_sync (bdi->dev); -if (ret <0 ) +if (ret <0 ) { +pm_runtime_put_noidle (bdi->dev);return ret; + }switch (psp) {case POWER_SUPPLY_PROP_STATUS :
@@ -1470,8 +1478,10 @@ static int bq24190_battery_set_property(struct power_supply *psy,dev_dbg (bdi->dev,"prop: %d\n" , psp); ret =pm_runtime_get_sync (bdi->dev); -if (ret <0 ) +if (ret <0 ) { +pm_runtime_put_noidle (bdi->dev);return ret; + }switch (psp) {case POWER_SUPPLY_PROP_ONLINE :
drivers/ps3/ps3stor_lib.c +1 -1
@@ -201,7 +201,7 @@ int ps3stor_setup(struct ps3_storage_device *dev, irq_handler_t handler) dev->bounce_lpar =ps3_mm_phys_to_lpar (__pa (dev->bounce_buf)); dev->bounce_dma =dma_map_single (&dev->sbd.core, dev->bounce_buf, dev->bounce_size,DMA_BIDIRECTIONAL ); -if (!dev->bounce_dma) { +if (dma_mapping_error (&dev->sbd.core, dev->bounce_dma)) {dev_err (&dev->sbd.core,"%s:%u: map DMA region failed\n" , __func__, __LINE__); error = -ENODEV ;
drivers/pwm/pwm-lp3943.c +1 -0
@@ -278,6 +278,7 @@ static int lp3943_pwm_probe(struct platform_device *pdev) lp3943_pwm->chip.dev = &pdev->dev; lp3943_pwm->chip.ops = &lp3943_pwm_ops; lp3943_pwm->chip.npwm =LP3943_NUM_PWMS ; + lp3943_pwm->chip.base =-1 ;platform_set_drvdata (pdev, lp3943_pwm);
drivers/pwm/pwm-zx.c +1 -0
@@ -241,6 +241,7 @@ static int zx_pwm_probe(struct platform_device *pdev) ret =pwmchip_add (&zpc->chip);if (ret <0 ) {dev_err (&pdev->dev,"failed to add PWM chip: %d\n" , ret); +clk_disable_unprepare (zpc->pclk);return ret; }
drivers/s390/block/dasd_alias.c +11 -1
@@ -256,7 +256,6 @@ void dasd_alias_disconnect_device_from_lcu(struct dasd_device *device)return ; device->discipline->get_uid (device, &uid);spin_lock_irqsave (&lcu->lock, flags); -list_del_init (&device->alias_list);/* make sure that the workers don't use this device */ if (device == lcu->suc_data.device) {spin_unlock_irqrestore (&lcu->lock, flags);
@@ -283,6 +282,7 @@ void dasd_alias_disconnect_device_from_lcu(struct dasd_device *device)spin_lock_irqsave (&aliastree.lock, flags);spin_lock (&lcu->lock); +list_del_init (&device->alias_list);if (list_empty (&lcu->grouplist) &&list_empty (&lcu->active_devices) &&list_empty (&lcu->inactive_devices)) {
@@ -503,6 +503,14 @@ static int _lcu_update(struct dasd_device *refdev, struct alias_lcu *lcu)return rc;spin_lock_irqsave (&lcu->lock, flags); +/* +* there is another update needed skip the remaining handling +* the data might already be outdated +* but especially do not add the device to an LCU with pending +* update +*/ +if (lcu->flags &NEED_UAC_UPDATE ) + goto out; lcu->pav =NO_PAV ;for (i =0 ; i <MAX_DEVICES_PER_LCU ; ++i) {switch (lcu->uac->unit[i].ua_type) {
@@ -521,6 +529,7 @@ static int _lcu_update(struct dasd_device *refdev, struct alias_lcu *lcu) alias_list) {_add_device_to_lcu (lcu, device, refdev); } +out:spin_unlock_irqrestore (&lcu->lock, flags);return 0 ; }
@@ -625,6 +634,7 @@ int dasd_alias_add_device(struct dasd_device *device) }if (lcu->flags &UPDATE_PENDING ) {list_move (&device->alias_list, &lcu->active_devices); + private->pavgroup =NULL ;_schedule_lcu_update (lcu, device); }spin_unlock_irqrestore (&lcu->lock, flags);
drivers/scsi/be2iscsi/be_main.c +2 -2
@@ -3013,7 +3013,6 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba, goto create_eq_error; } - mem->dma = paddr; mem->va = eq_vaddress; ret =be_fill_queue (eq, phba->params.num_eq_entries,sizeof (struct be_eq_entry ), eq_vaddress);
@@ -3023,6 +3022,7 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba, goto create_eq_error; } + mem->dma = paddr; ret =beiscsi_cmd_eq_create (&phba->ctrl, eq, phwi_context->cur_eqd);if (ret) {
@@ -3079,7 +3079,6 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba, goto create_cq_error; } - mem->dma = paddr; ret =be_fill_queue (cq, phba->params.num_cq_entries,sizeof (struct sol_cqe ), cq_vaddress);if (ret) {
@@ -3089,6 +3088,7 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba, goto create_cq_error; } + mem->dma = paddr; ret =beiscsi_cmd_cq_create (&phba->ctrl, cq, eq, false, false,0 );if (ret) {
drivers/scsi/bnx2i/Kconfig +1 -0
@@ -3,6 +3,7 @@ config SCSI_BNX2_ISCSI depends on NET depends on PCI depends on (IPV6 || IPV6=n) + depends on MMU select SCSI_ISCSI_ATTRS select NETDEVICES select ETHERNET
drivers/scsi/fnic/fnic_main.c +1 -0
@@ -746,6 +746,7 @@ static int fnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)for (i =0 ; i <FNIC_IO_LOCKS ; i++)spin_lock_init (&fnic->io_req_lock[i]); + err = -ENOMEM ; fnic->io_req_pool =mempool_create_slab_pool (2 , fnic_io_req_cache);if (!fnic->io_req_pool) goto err_out_free_resources;
drivers/scsi/mpt3sas/mpt3sas_base.c +1 -1
@@ -4575,7 +4575,7 @@ _base_send_ioc_init(struct MPT3SAS_ADAPTER *ioc) r =_base_handshake_req_reply_wait (ioc,sizeof (Mpi2IOCInitRequest_t), (u32 *)&mpi_request, -sizeof (Mpi2IOCInitReply_t), (u16 *)&mpi_reply,10 ); +sizeof (Mpi2IOCInitReply_t), (u16 *)&mpi_reply,30 );if (r !=0 ) { pr_err(MPT3SAS_FMT "%s: handshake failed (r=%d)\n",
drivers/scsi/pm8001/pm8001_init.c +2 -1
@@ -1054,7 +1054,8 @@ static int pm8001_pci_probe(struct pci_dev *pdev,pm8001_init_sas_add (pm8001_ha);/* phy setting support for motherboard controller */ -if (pm8001_configure_phy_settings (pm8001_ha)) + rc =pm8001_configure_phy_settings (pm8001_ha); +if (rc) goto err_out_shost;pm8001_post_sas_ha_init (shost, chip);
drivers/scsi/qedi/qedi_main.c +3 -1
@@ -2387,7 +2387,7 @@ static int __qedi_probe(struct pci_dev *pdev, int mode)QEDI_ERR (&qedi->dbg_ctx,"Unable to start offload thread!\n" ); rc = -ENODEV ; - goto free_cid_que; + goto free_tmf_thread; }/* F/w needs 1st task context memory entry for performance */
@@ -2407,6 +2407,8 @@ static int __qedi_probe(struct pci_dev *pdev, int mode)return 0 ; +free_tmf_thread: +destroy_workqueue (qedi->tmf_thread); free_cid_que:qedi_release_cid_que (qedi); free_uio:
drivers/scsi/scsi_lib.c +86 -40
9 lines not on this page · raw message
drivers/soc/tegra/fuse/speedo-tegra210.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/fsl-mc/bus/dpio/dpio-driver.c +1 -4
Lines of this file are not shown. View the raw message.
drivers/staging/speakup/speakup_dectlk.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/usb/serial/keyspan_pda.c +34 -29
63 lines not on this page · raw message
drivers/xen/xenbus/xenbus_probe_backend.c +7 -0
Lines of this file are not shown. View the raw message.
kernel/sched/sched.h +18 -24
42 lines not on this page · raw message
net/sunrpc/xprt.c +49 -16
65 lines not on this page · raw message
samples/bpf/test_lwt_bpf.sh +0 -0
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.