Linux 5.4.146
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.146 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arm/boot/dts/aspeed-g6-pinctrl.dtsi | 4 arch/arm/boot/dts/meson8.dtsi | 5 arch/arm/boot/dts/meson8b-ec100.dts | 4 arch/arm/boot/dts/meson8b-mxq.dts | 4 arch/arm/boot/dts/meson8b-odroidc1.dts | 4 arch/arm/net/bpf_jit_32.c | 3 arch/arm64/boot/dts/exynos/exynos7.dtsi | 2 arch/arm64/boot/dts/renesas/r8a77995-draak.dts | 4 arch/arm64/net/bpf_jit_comp.c | 13 arch/m68k/emu/nfeth.c | 4 arch/mips/net/ebpf_jit.c | 3 arch/powerpc/net/bpf_jit_comp64.c | 6 arch/riscv/net/bpf_jit_comp.c | 4 arch/s390/include/asm/kvm_host.h | 1 arch/s390/kernel/debug.c | 102 +++---- arch/s390/kvm/interrupt.c | 12 arch/s390/kvm/kvm-s390.c | 2 arch/s390/kvm/kvm-s390.h | 2 arch/s390/mm/kasan_init.c | 41 +- arch/s390/net/bpf_jit_comp.c | 5 arch/sparc/net/bpf_jit_comp_64.c | 3 arch/x86/events/amd/ibs.c | 1 arch/x86/kernel/cpu/resctrl/monitor.c | 6 arch/x86/kvm/vmx/nested.c | 7 arch/x86/kvm/x86.c | 4 arch/x86/net/bpf_jit_comp.c | 7 arch/x86/net/bpf_jit_comp32.c | 6 certs/Makefile | 8 drivers/ata/libata-core.c | 2 drivers/base/regmap/regmap.c | 2 drivers/bcma/main.c | 6 drivers/block/nbd.c | 10 drivers/clk/mvebu/kirkwood.c | 1 drivers/clocksource/sh_cmt.c | 30 +- drivers/counter/104-quad-8.c | 5 drivers/crypto/mxs-dcp.c | 45 ++- drivers/crypto/omap-sham.c | 2 drivers/crypto/qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c | 4 drivers/crypto/qat/qat_c62xvf/adf_c62xvf_hw_data.c | 4 drivers/crypto/qat/qat_common/adf_common_drv.h | 8 drivers/crypto/qat/qat_common/adf_init.c | 5 drivers/crypto/qat/qat_common/adf_isr.c | 7 drivers/crypto/qat/qat_common/adf_pf2vf_msg.c | 3 drivers/crypto/qat/qat_common/adf_vf2pf_msg.c | 12 drivers/crypto/qat/qat_common/adf_vf_isr.c | 7 drivers/crypto/qat/qat_dh895xccvf/adf_dh895xccvf_hw_data.c | 4 drivers/edac/i10nm_base.c | 6 drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c | 54 +-- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c | 10 drivers/gpu/drm/msm/dsi/dsi.c | 6 drivers/gpu/drm/panfrost/panfrost_device.c | 3 drivers/i2c/busses/i2c-highlander.c | 2 drivers/i2c/busses/i2c-iop3xx.c | 6 drivers/i2c/busses/i2c-mt65xx.c | 2 drivers/i2c/busses/i2c-s3c2410.c | 2 drivers/leds/leds-lt3593.c | 5 drivers/leds/trigger/ledtrig-audio.c | 37 ++ drivers/md/bcache/super.c | 16 - drivers/media/i2c/tda1997x.c | 1 drivers/media/platform/coda/coda-bit.c | 18 - drivers/media/platform/qcom/venus/venc.c | 2 drivers/media/spi/cxd2880-spi.c | 7 drivers/media/usb/dvb-usb/dvb-usb-i2c.c | 9 drivers/media/usb/dvb-usb/dvb-usb-init.c | 2 drivers/media/usb/dvb-usb/nova-t-usb2.c | 6 drivers/media/usb/dvb-usb/vp702x.c | 12 drivers/media/usb/em28xx/em28xx-input.c | 1 drivers/media/usb/go7007/go7007-driver.c | 26 - drivers/mmc/host/dw_mmc.c | 1 drivers/mmc/host/moxart-mmc.c | 1 drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c | 3 drivers/net/ethernet/mellanox/mlx5/core/en/fs.h | 6 drivers/net/ethernet/mellanox/mlx5/core/en_fs.c | 10 drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 18 - drivers/net/ethernet/qualcomm/qca_spi.c | 2 drivers/net/ethernet/qualcomm/qca_uart.c | 2 drivers/net/wireless/ath/ath6kl/wmi.c | 4 drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 2 drivers/net/wireless/rsi/rsi_91x_hal.c | 4 drivers/net/wireless/rsi/rsi_91x_usb.c | 1 drivers/nvme/host/rdma.c | 4 drivers/nvme/host/tcp.c | 4 drivers/nvme/target/fabrics-cmd.c | 9 drivers/pci/pci.c | 25 + drivers/power/supply/axp288_fuel_gauge.c | 4 drivers/power/supply/max17042_battery.c | 2 drivers/regulator/vctrl-regulator.c | 73 +++-- drivers/s390/cio/css.c | 17 + drivers/soc/qcom/rpmhpd.c | 5 drivers/soc/qcom/smsm.c | 11 drivers/soc/rockchip/Kconfig | 4 drivers/spi/spi-fsl-dspi.c | 1 drivers/spi/spi-pic32.c | 1 drivers/spi/spi-sprd-adi.c | 2 drivers/spi/spi-zynq-qspi.c | 8 drivers/tty/serial/fsl_lpuart.c | 2 drivers/tty/tty_io.c | 4 drivers/usb/gadget/udc/at91_udc.c | 4 drivers/usb/gadget/udc/bdc/bdc_core.c | 3 drivers/usb/gadget/udc/mv_u3d_core.c | 19 - drivers/usb/gadget/udc/renesas_usb3.c | 17 - drivers/usb/host/ehci-orion.c | 8 drivers/usb/host/ohci-tmio.c | 3 drivers/usb/phy/phy-fsl-usb.c | 2 drivers/usb/phy/phy-tahvo.c | 4 drivers/usb/phy/phy-twl6030-usb.c | 5 drivers/video/backlight/pwm_bl.c | 54 +-- drivers/video/fbdev/core/fbmem.c | 6 fs/cifs/cifs_unicode.c | 9 fs/debugfs/file.c | 8 fs/fcntl.c | 5 fs/fuse/file.c | 9 fs/iomap/swapfile.c | 6 fs/isofs/inode.c | 27 - fs/isofs/isofs.h | 1 fs/isofs/joliet.c | 4 fs/lockd/svclock.c | 2 fs/nfsd/nfs4state.c | 4 fs/udf/misc.c | 13 fs/udf/super.c | 75 ++--- fs/udf/udf_sb.h | 2 fs/udf/unicode.c | 4 include/linux/bpf_verifier.h | 11 include/linux/energy_model.h | 16 + include/linux/filter.h | 15 + include/linux/hrtimer.h | 5 include/linux/power/max17042_battery.h | 2 include/linux/time64.h | 9 include/uapi/linux/bpf.h | 2 kernel/bpf/core.c | 18 + kernel/bpf/disasm.c | 16 - kernel/bpf/verifier.c | 183 +++++-------- kernel/cgroup/cpuset.c | 7 kernel/irq/timings.c | 2 kernel/locking/mutex.c | 15 - kernel/power/energy_model.c | 4 kernel/rcu/tree_stall.h | 18 + kernel/sched/core.c | 25 + kernel/sched/deadline.c | 8 kernel/sched/sched.h | 2 kernel/time/hrtimer.c | 92 ++++-- kernel/time/posix-cpu-timers.c | 2 kernel/time/tick-internal.h | 3 lib/mpi/mpiutil.c | 2 net/6lowpan/debugfs.c | 3 net/bluetooth/cmtp/cmtp.h | 2 net/bluetooth/hci_core.c | 14 net/bluetooth/sco.c | 11 net/core/net_namespace.c | 28 - net/ipv4/route.c | 48 ++- net/ipv4/tcp_ipv4.c | 5 net/ipv6/route.c | 5 net/mac80211/tx.c | 4 net/netlabel/netlabel_cipso_v4.c | 8 net/sched/sch_cbq.c | 2 security/integrity/ima/Kconfig | 1 security/integrity/ima/ima_mok.c | 2 sound/soc/codecs/wcd9335.c | 23 + sound/soc/intel/skylake/skl-topology.c | 25 - tools/include/uapi/linux/bpf.h | 2 161 files changed, 1104 insertions(+), 719 deletions(-)
Ahmad Fatoum (1):
brcmfmac: pcie: fix oops on failure to resume and reprobe
Alexander Gordeev (1):
s390/kasan: fix large PMD pages address alignment check
Amit Engel (1):
nvmet: pass back cntlid on successful completion
Anand Moon (3):
ARM: dts: meson8b: odroidc1: Fix the pwm regulator supply properties
ARM: dts: meson8b: mxq: Fix the pwm regulator supply properties
ARM: dts: meson8b: ec100: Fix the pwm regulator supply properties
Andrey Ignatov (1):
bpf: Fix possible out of bound write in narrow load handling
Andy Duan (1):
tty: serial: fsl_lpuart: fix the wrong mapbase value
Andy Shevchenko (1):
leds: lt3593: Put fwnode in any case during ->probe()
Austin Kim (1):
IMA: remove -Wmissing-prototypes warning
Babu Moger (1):
x86/resctrl: Fix a maybe-uninitialized build warning treated as error
Benjamin Coddington (1):
lockd: Fix invalid lockowner cast after vfs_test_lock
Bjorn Andersson (1):
soc: qcom: rpmhpd: Use corner in power_off
Cezary Rojewski (2):
ASoC: Intel: Skylake: Leave data as is when invoking TLV IPCs
ASoC: Intel: Skylake: Fix module resource and format selection
Chen-Yu Tsai (2):
regulator: vctrl: Use locked regulator_get_voltage in probe path
regulator: vctrl: Avoid lockdep warning in enable/disable ops
Chih-Kang Chang (1):
mac80211: Fix insufficient headroom issue for AMSDU
Christoph Hellwig (1):
bcache: add proper error unwinding in bcache_device_init
Christophe JAILLET (6):
media: cxd2880-spi: Fix an error handling path
drm/msm/dsi: Fix some reference counted resource leaks
usb: bdc: Fix an error handling path in 'bdc_probe()' when no suitable DMA config is available
ASoC: wcd9335: Fix a double irq free in the remove function
ASoC: wcd9335: Fix a memory leak in the error handling path of the probe function
ASoC: wcd9335: Disable irq on slave ports in the remove function
Chunyan Zhang (1):
spi: sprd: Fix the wrong WDG_LOAD_VAL
Colin Ian King (3):
6lowpan: iphc: Fix an off-by-one check of array index
media: venus: venc: Fix potential null pointer dereference on pointer fmt
Bluetooth: increase BTNAMSIZ to 21 chars to fix potential buffer overflow
Damien Le Moal (1):
libata: fix ata_host_start()
Dan Carpenter (4):
Bluetooth: sco: prevent information leak in sco_conn_defer_accept()
rsi: fix error code in rsi_load_9116_firmware()
rsi: fix an error code in rsi_probe()
ath6kl: wmi: fix an error code in ath6kl_wmi_sync_point()
Daniel Borkmann (3):
bpf: Introduce BPF nospec instruction for mitigating Spectre v4
bpf: Fix leakage due to insufficient speculative store bypass mitigation
bpf: Fix pointer arithmetic mask tightening under state pruning
Daniel Thompson (1):
backlight: pwm_bl: Improve bootloader/kernel device handover
Desmond Cheong Zhi Xi (2):
fcntl: fix potential deadlock for &fasync_struct.fa_lock
Bluetooth: fix repeated calls to sco_sock_kill
Dietmar Eggemann (1):
sched/deadline: Fix missing clock update in migrate_task_rq_dl()
Dmitry Baryshkov (1):
drm/msm/dpu: make dpu_hw_ctl_clear_all_blendstages clear necessary LMs
Dongliang Mu (4):
media: dvb-usb: fix uninit-value in dvb_usb_adapter_dvb_init
media: dvb-usb: fix uninit-value in vp702x_read_mac_addr
media: dvb-usb: Fix error handling in dvb_usb_i2c_init
media: em28xx-input: fix refcount bug in em28xx_usb_disconnect
Dylan Hung (1):
ARM: dts: aspeed-g6: Fix HVI3C function-group in pinctrl dtsi
Eric Dumazet (3):
ipv6: make exception cache less predictible
ipv4: make exception cache less predictible
ipv4: fix endianness issue in inet_rtm_getroute_build_skb()
Evgeny Novikov (1):
usb: ehci-orion: Handle errors of clk_prepare_enable() in probe
Frederic Weisbecker (1):
posix-cpu-timers: Force next expiration recalc after itimer reset
Geert Uytterhoeven (3):
soc: rockchip: ROCKCHIP_GRF should not default to y, unconditionally
arm64: dts: renesas: r8a77995: draak: Remove bogus adv7511w properties
usb: gadget: udc: renesas_usb3: Fix soc_device_match() abuse
Giovanni Cabiddu (4):
crypto: qat - do not ignore errors from enable_vf2pf_comms()
crypto: qat - handle both source of interrupt in VF ISR
crypto: qat - do not export adf_iov_putmsg()
crypto: qat - use proper type for vf_mask
Greg Kroah-Hartman (1):
Linux 5.4.146
Guillaume Nault (1):
netns: protect netns ID lookups with RCU
Halil Pasic (1):
KVM: s390: index kvm->arch.idle_mask by vcpu_idx
Hans de Goede (2):
power: supply: axp288_fuel_gauge: Report register-address on readb / writeb errors
leds: trigger: audio: Add an activate callback to ensure the initial brightness is set
He Fengqing (1):
bpf: Fix potential memleak and UAF in the verifier.
Hongbo Li (1):
lib/mpi: use kcalloc in mpi_resize
J. Bruce Fields (1):
nfsd4: Fix forced-expiry locking
Jan Kara (1):
udf: Check LVID earlier
Jeongtae Park (1):
regmap: fix the offset of register error log
Kai-Heng Feng (2):
drm/amdgpu/acp: Make PM domain really work
Bluetooth: Move shutdown callback before flushing tx and rx queue
Kim Phillips (1):
perf/x86/amd/ibs: Extend PERF_PMU_CAP_NO_EXCLUDE to IBS Op
Krzysztof Hałasa (1):
media: TDA1997x: enable EDID support
Krzysztof Kozlowski (1):
arm64: dts: exynos: correct GIC CPU interfaces address range on Exynos7
Kuniyuki Iwashima (1):
bpf: Fix a typo of reuseport map in bpf.h.
Len Baker (1):
CIFS: Fix a potencially linear read overflow
Linus Walleij (1):
clk: kirkwood: Fix a clocking boot regression
Lorenz Bauer (1):
bpf: verifier: Allocate idmap scratch in verifier env
Lukas Hannen (1):
time: Handle negative seconds correctly in timespec64_to_ns()
Lukasz Luba (1):
PM: EM: Increase energy calculation precision
Marco Chiappero (2):
crypto: qat - fix reuse of completion variable
crypto: qat - fix naming for init/shutdown VF to PF notifications
Martin Blumenstingl (1):
ARM: dts: meson8: Use a higher default GPU clock frequency
Martin KaFai Lau (1):
tcp: seq_file: Avoid skipping sk during tcp_seek_last_pos
Maxim Mikityanskiy (1):
net/mlx5e: Prohibit inner indir TIRs in IPoIB
Miklos Szeredi (2):
fuse: truncate pagecache on atomic_o_trunc
fuse: flush extending writes
Nadezda Lutovinova (1):
usb: gadget: mv_u3d: request_irq() after initializing UDC
Nguyen Dinh Phi (1):
tty: Fix data race between tiocsti() and flush_to_ldisc()
Pali Rohár (2):
udf: Fix iocharset=utf8 mount option
isofs: joliet: Fix iocharset=utf8 mount option
Pavel Skripkin (5):
m68k: emu: Fix invalid free in nfeth_cleanup()
block: nbd: add sanity check for first_minor
media: go7007: remove redundant initialization
net: cipso: fix warnings in netlbl_cipsov4_add_std
Bluetooth: add timeout sanity check to hci_inquiry
Peter Oberparleiter (1):
s390/debug: fix debug area life cycle
Peter Zijlstra (1):
locking/mutex: Fix HANDOFF condition
Philipp Zabel (1):
media: coda: fix frame_mem_ctrl for YUV420 and YVU420 formats
Phong Hoang (1):
clocksource/drivers/sh_cmt: Fix wrong setting if don't request IRQ for clock source channel
Qiuxu Zhuo (1):
EDAC/i10nm: Fix NVDIMM detection
Quanyang Wang (1):
spi: spi-zynq-qspi: use wait_for_completion_timeout to make zynq_qspi_exec_mem_op not interruptible
Quentin Perret (2):
sched/deadline: Fix reset_on_fork reporting of DL tasks
sched: Fix UCLAMP_FLAG_IDLE setting
Rafael J. Wysocki (2):
PCI: PM: Avoid forcing PCI_D0 for wakeup reasons inconsistently
PCI: PM: Enable PME if it can be signaled from D3cold
Ruozhu Li (2):
nvme-tcp: don't update queue count when failing to set io queues
nvme-rdma: don't update queue count when failing to set io queues
Sean Anderson (1):
crypto: mxs-dcp - Check for DMA mapping errors
Sean Christopherson (1):
KVM: nVMX: Unconditionally clear nested.pi_pending on nested VM-Enter
Sebastian Krzyszkowiak (1):
power: supply: max17042_battery: fix typo in MAx17042_TOFF
Sergey Senozhatsky (1):
rcu/tree: Handle VM stoppage in stall detection
Sergey Shtylyov (9):
i2c: highlander: add IRQ check
usb: gadget: udc: at91: add IRQ check
usb: phy: fsl-usb: add IRQ check
usb: phy: twl6030: add IRQ checks
usb: host: ohci-tmio: add IRQ check
usb: phy: tahvo: add IRQ check
i2c: iop3xx: fix deferred probing
i2c: s3c2410: fix IRQ check
i2c: mt65xx: fix IRQ check
Stefan Berger (1):
certs: Trigger creation of RSA module signing key if it's not an RSA key
Stefan Wahren (1):
net: qualcomm: fix QCA7000 checksum handling
Stephan Gerhold (1):
soc: qcom: smsm: Fix missed interrupts if state changes while masked
Stian Skjelstad (1):
udf_get_extendedattr() had no boundary checks.
Subbaraya Sundeep (1):
octeontx2-af: Fix loop in free and unmap counter
Sven Eckelmann (1):
debugfs: Return error during {full/open}_proxy_open() on rmmod
THOBY Simon (1):
IMA: remove the dependency on CRYPTO_MD5
Tetsuo Handa (1):
fbmem: don't allow too huge resolutions
Thomas Gleixner (2):
hrtimer: Avoid double reprogramming in __hrtimer_start_range_ns()
hrtimer: Ensure timerfd notification for HIGHRES=n
Tony Lindgren (5):
crypto: omap-sham - clear dma flags only after omap_sham_update_dma_stop()
spi: spi-fsl-dspi: Fix issue with uninitialized dma_slave_config
spi: spi-pic32: Fix issue with uninitialized dma_slave_config
mmc: dw_mmc: Fix issue with uninitialized dma_slave_config
mmc: moxart: Fix issue with uninitialized dma_slave_config
Vineeth Vijayan (1):
s390/cio: add dev_busid sysfs entry for each subchannel
Waiman Long (1):
cgroup/cpuset: Fix a partition bug with hotplug
Wei Yongjun (1):
drm/panfrost: Fix missing clk_disable_unprepare() on error in panfrost_clk_init()
William Breathitt Gray (1):
counter: 104-quad-8: Return error when invalid mode during ceiling_write
Xiyu Yang (1):
net: sched: Fix qdisc_rate_table refcount leak when get tcf_block failed
Xu Yu (1):
mm/swap: consider max pages in iomap_swapfile_add_extent
Zelin Deng (1):
KVM: x86: Update vCPU's hv_clock before back to guest when tsc_offset is adjusted
Zenghui Yu (1):
bcma: Fix memory leak for internally-handled cores
Zhen Lei (1):
genirq/timings: Fix error return code in irq_timings_test_irqs()
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 145 +SUBLEVEL = 146 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arm/boot/dts/aspeed-g6-pinctrl.dtsi +2 -2
@@ -208,12 +208,12 @@ }; pinctrl_hvi3c3_default: hvi3c3_default { - function = "HVI3C3"; + function = "I3C3"; groups = "HVI3C3"; }; pinctrl_hvi3c4_default: hvi3c4_default { - function = "HVI3C4"; + function = "I3C4"; groups = "HVI3C4"; };
arch/arm/boot/dts/meson8.dtsi +5 -0
@@ -241,8 +241,13 @@ "pp2", "ppmmu2", "pp4", "ppmmu4", "pp5", "ppmmu5", "pp6", "ppmmu6"; resets = <&reset RESET_MALI>; + clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>; clock-names = "bus", "core"; + + assigned-clocks = <&clkc CLKID_MALI>; + assigned-clock-rates = <318750000>; + operating-points-v2 = <&gpu_opp_table>; }; };
arch/arm/boot/dts/meson8b-ec100.dts +2 -2
@@ -148,7 +148,7 @@ regulator-min-microvolt = <860000>; regulator-max-microvolt = <1140000>; - vin-supply = <&vcc_5v>; + pwm-supply = <&vcc_5v>; pwms = <&pwm_cd 0 1148 0>; pwm-dutycycle-range = <100 0>;
@@ -232,7 +232,7 @@ regulator-min-microvolt = <860000>; regulator-max-microvolt = <1140000>; - vin-supply = <&vcc_5v>; + pwm-supply = <&vcc_5v>; pwms = <&pwm_cd 1 1148 0>; pwm-dutycycle-range = <100 0>;
arch/arm/boot/dts/meson8b-mxq.dts +3 -1
@@ -39,6 +39,8 @@ regulator-min-microvolt = <860000>; regulator-max-microvolt = <1140000>; + pwm-supply = <&vcc_5v>; + pwms = <&pwm_cd 0 1148 0>; pwm-dutycycle-range = <100 0>;
@@ -84,7 +86,7 @@ regulator-min-microvolt = <860000>; regulator-max-microvolt = <1140000>; - vin-supply = <&vcc_5v>; + pwm-supply = <&vcc_5v>; pwms = <&pwm_cd 1 1148 0>; pwm-dutycycle-range = <100 0>;
arch/arm/boot/dts/meson8b-odroidc1.dts +2 -2
@@ -130,7 +130,7 @@ regulator-min-microvolt = <860000>; regulator-max-microvolt = <1140000>; - vin-supply = <&p5v0>; + pwm-supply = <&p5v0>; pwms = <&pwm_cd 0 12218 0>; pwm-dutycycle-range = <91 0>;
@@ -162,7 +162,7 @@ regulator-min-microvolt = <860000>; regulator-max-microvolt = <1140000>; - vin-supply = <&p5v0>; + pwm-supply = <&p5v0>; pwms = <&pwm_cd 1 12218 0>; pwm-dutycycle-range = <91 0>;
arch/arm/net/bpf_jit_32.c +3 -0
@@ -1602,6 +1602,9 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx) rn =arm_bpf_get_reg32 (src_lo, tmp2[1 ], ctx);emit_ldx_r (dst, rn, off, ctx,BPF_SIZE (code));break ; +/* speculation barrier */ +case BPF_ST |BPF_NOSPEC : +break ;/* ST: *(size *)(dst + off) = imm */ case BPF_ST |BPF_MEM |BPF_W :case BPF_ST |BPF_MEM |BPF_H :
arch/arm64/boot/dts/exynos/exynos7.dtsi +1 -1
@@ -113,7 +113,7 @@ #address-cells = <0>; interrupt-controller; reg = <0x11001000 0x1000>, - <0x11002000 0x1000>, + <0x11002000 0x2000>, <0x11004000 0x2000>, <0x11006000 0x2000>; };
arch/arm64/boot/dts/renesas/r8a77995-draak.dts +0 -4
@@ -277,10 +277,6 @@ interrupt-parent = <&gpio1>; interrupts = <28 IRQ_TYPE_LEVEL_LOW>; - /* Depends on LVDS */ - max-clock = <135000000>; - min-vrefresh = <50>; - adi,input-depth = <8>; adi,input-colorspace = "rgb"; adi,input-clock = "1x";
arch/arm64/net/bpf_jit_comp.c +13 -0
@@ -701,6 +701,19 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, }break ; +/* speculation barrier */ +case BPF_ST |BPF_NOSPEC : +/* +* Nothing required here. +* +* In case of arm64, we rely on the firmware mitigation of +* Speculative Store Bypass as controlled via the ssbd kernel +* parameter. Whenever the mitigation is enabled, it works +* for all of the kernel code with no need to provide any +* additional instructions. +*/ +break ; +/* ST: *(size *)(dst + off) = imm */ case BPF_ST |BPF_MEM |BPF_W :case BPF_ST |BPF_MEM |BPF_H :
arch/m68k/emu/nfeth.c +2 -2
@@ -254,8 +254,8 @@ static void __exit nfeth_cleanup(void)for (i =0 ; i <MAX_UNIT ; i++) {if (nfeth_dev[i]) { -unregister_netdev (nfeth_dev[0 ]); -free_netdev (nfeth_dev[0 ]); +unregister_netdev (nfeth_dev[i]); +free_netdev (nfeth_dev[i]); } }free_irq (nfEtherIRQ, nfeth_interrupt);
arch/mips/net/ebpf_jit.c +3 -0
@@ -1355,6 +1355,9 @@ static int build_one_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, }break ; +case BPF_ST |BPF_NOSPEC :/* speculation barrier */ +break ; +case BPF_ST |BPF_B |BPF_MEM :case BPF_ST |BPF_H |BPF_MEM :case BPF_ST |BPF_W |BPF_MEM :
arch/powerpc/net/bpf_jit_comp64.c +6 -0
@@ -644,6 +644,12 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, }break ; +/* +* BPF_ST NOSPEC (speculation barrier) +*/ +case BPF_ST |BPF_NOSPEC : +break ; +/* * BPF_ST(X) */
arch/riscv/net/bpf_jit_comp.c +4 -0
@@ -1313,6 +1313,10 @@ static int emit_insn(const struct bpf_insn *insn, struct rv_jit_context *ctx,emit (rv_ld (rd,0 ,RV_REG_T1 ), ctx);break ; +/* speculation barrier */ +case BPF_ST |BPF_NOSPEC : +break ; +/* ST: *(size *)(dst + off) = imm */ case BPF_ST |BPF_MEM |BPF_B :emit_imm (RV_REG_T1 , imm, ctx);
arch/s390/include/asm/kvm_host.h +1 -0
@@ -873,6 +873,7 @@ struct kvm_arch{atomic64_t cmma_dirty_pages;/* subset of available cpu features enabled by user space */ DECLARE_BITMAP (cpu_feat,KVM_S390_VM_CPU_FEAT_NR_BITS ); +/* indexed by vcpu_idx */ DECLARE_BITMAP (idle_mask,KVM_MAX_VCPUS );struct kvm_s390_gisa_interrupt gisa_int; };
arch/s390/kernel/debug.c +56 -46
146 lines not on this page · raw message
arch/s390/kvm/interrupt.c +6 -6
@@ -408,13 +408,13 @@ static unsigned long deliverable_irqs(struct kvm_vcpu *vcpu)static void __set_cpu_idle (struct kvm_vcpu *vcpu) {kvm_s390_set_cpuflags (vcpu,CPUSTAT_WAIT ); -set_bit (vcpu->vcpu_id, vcpu->kvm->arch.idle_mask); +set_bit (kvm_vcpu_get_idx (vcpu), vcpu->kvm->arch.idle_mask); }static void __unset_cpu_idle (struct kvm_vcpu *vcpu) {kvm_s390_clear_cpuflags (vcpu,CPUSTAT_WAIT ); -clear_bit (vcpu->vcpu_id, vcpu->kvm->arch.idle_mask); +clear_bit (kvm_vcpu_get_idx (vcpu), vcpu->kvm->arch.idle_mask); }static void __reset_intercept_indicators (struct kvm_vcpu *vcpu)
@@ -2984,18 +2984,18 @@ int kvm_s390_get_irq_state(struct kvm_vcpu *vcpu, __u8 __user *buf, int len)static void __airqs_kick_single_vcpu (struct kvm *kvm,u8 deliverable_mask) { -int vcpu_id, online_vcpus =atomic_read (&kvm->online_vcpus); +int vcpu_idx, online_vcpus =atomic_read (&kvm->online_vcpus);struct kvm_s390_gisa_interrupt *gi = &kvm->arch.gisa_int;struct kvm_vcpu *vcpu; -for_each_set_bit (vcpu_id, kvm->arch.idle_mask, online_vcpus) { - vcpu =kvm_get_vcpu (kvm, vcpu_id); +for_each_set_bit (vcpu_idx, kvm->arch.idle_mask, online_vcpus) { + vcpu =kvm_get_vcpu (kvm, vcpu_idx);if (psw_ioint_disabled (vcpu))continue ; deliverable_mask &= (u8)(vcpu->arch.sie_block->gcr[6 ] >>24 );if (deliverable_mask) {/* lately kicked but not yet running */ -if (test_and_set_bit (vcpu_id, gi->kicked_mask)) +if (test_and_set_bit (vcpu_idx, gi->kicked_mask))return ;kvm_s390_vcpu_wakeup (vcpu);return ;
arch/s390/kvm/kvm-s390.c +1 -1
@@ -3726,7 +3726,7 @@ static int vcpu_pre_run(struct kvm_vcpu *vcpu)kvm_s390_patch_guest_per_regs (vcpu); } -clear_bit (vcpu->vcpu_id, vcpu->kvm->arch.gisa_int.kicked_mask); +clear_bit (kvm_vcpu_get_idx (vcpu), vcpu->kvm->arch.gisa_int.kicked_mask); vcpu->arch.sie_block->icptcode =0 ; cpuflags =atomic_read (&vcpu->arch.sie_block->cpuflags);
arch/s390/kvm/kvm-s390.h +1 -1
@@ -67,7 +67,7 @@ static inline int is_vcpu_stopped(struct kvm_vcpu *vcpu)static inline int is_vcpu_idle (struct kvm_vcpu *vcpu) { -return test_bit (vcpu->vcpu_id, vcpu->kvm->arch.idle_mask); +return test_bit (kvm_vcpu_get_idx (vcpu), vcpu->kvm->arch.idle_mask); }static inline int kvm_is_ucontrol (struct kvm *kvm)
arch/s390/mm/kasan_init.c +20 -21
56 lines not on this page · raw message
arch/s390/net/bpf_jit_comp.c +5 -0
@@ -913,6 +913,11 @@ static noinline int bpf_jit_insn(struct bpf_jit *jit, struct bpf_prog *fp,break ; }break ; +/* +* BPF_NOSPEC (speculation barrier) +*/ +case BPF_ST |BPF_NOSPEC : +break ;/* * BPF_ST(X) */
arch/sparc/net/bpf_jit_comp_64.c +3 -0
@@ -1287,6 +1287,9 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx)return 1 ;break ; } +/* speculation barrier */ +case BPF_ST |BPF_NOSPEC : +break ;/* ST: *(size *)(dst + off) = imm */ case BPF_ST |BPF_MEM |BPF_W :case BPF_ST |BPF_MEM |BPF_H :
arch/x86/events/amd/ibs.c +1 -0
@@ -562,6 +562,7 @@ static struct perf_ibs perf_ibs_op = { .start = perf_ibs_start, .stop = perf_ibs_stop, .read = perf_ibs_read, + .capabilities = PERF_PMU_CAP_NO_EXCLUDE, }, .msr = MSR_AMD64_IBSOPCTL, .config_mask = IBS_OP_CONFIG_MASK,
arch/x86/kernel/cpu/resctrl/monitor.c +6 -0
@@ -242,6 +242,12 @@ static u64 __mon_event_count(u32 rmid, struct rmid_read *rr)case QOS_L3_MBM_LOCAL_EVENT_ID : m = &rr->d->mbm_local[rmid];break ; +default : +/* +* Code would never reach here because an invalid +* event id would fail the __rmid_read. +*/ +return RMID_VAL_ERROR ; }if (rr->first) {
arch/x86/kvm/vmx/nested.c +3 -4
@@ -2057,12 +2057,11 @@ static void prepare_vmcs02_early(struct vcpu_vmx *vmx, struct vmcs12 *vmcs12) ~PIN_BASED_VMX_PREEMPTION_TIMER);/* Posted interrupts setting is only taken from vmcs12. */ -if (nested_cpu_has_posted_intr (vmcs12)) { + vmx->nested.pi_pending = false; +if (nested_cpu_has_posted_intr (vmcs12)) vmx->nested.posted_intr_nv = vmcs12->posted_intr_nv; - vmx->nested.pi_pending = false; - }else { +else exec_control &= ~PIN_BASED_POSTED_INTR ; - }pin_controls_set (vmx, exec_control);/*
arch/x86/kvm/x86.c +4 -0
@@ -2764,6 +2764,10 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)if (!msr_info->host_initiated) {s64 adj = data - vcpu->arch.ia32_tsc_adjust_msr;adjust_tsc_offset_guest (vcpu, adj); +/* Before back to guest, tsc_timestamp must be adjusted +* as well, otherwise guest's percpu pvclock time could jump. +*/ +kvm_make_request (KVM_REQ_CLOCK_UPDATE , vcpu); } vcpu->arch.ia32_tsc_adjust_msr = data; }
arch/x86/net/bpf_jit_comp.c +7 -0
@@ -728,6 +728,13 @@ static int do_jit(struct bpf_prog *bpf_prog, int *addrs, u8 *image, }break ; +/* speculation barrier */ +case BPF_ST |BPF_NOSPEC : +if (boot_cpu_has (X86_FEATURE_XMM2 )) +/* Emit 'lfence' */ +EMIT3 (0x0F ,0xAE ,0xE8 ); +break ; +/* ST: *(u8*)(dst_reg + off) = imm */ case BPF_ST |BPF_MEM |BPF_B :if (is_ereg (dst_reg))
arch/x86/net/bpf_jit_comp32.c +6 -0
@@ -1705,6 +1705,12 @@ static int do_jit(struct bpf_prog *bpf_prog, int *addrs, u8 *image, i++;break ; } +/* speculation barrier */ +case BPF_ST |BPF_NOSPEC : +if (boot_cpu_has (X86_FEATURE_XMM2 )) +/* Emit 'lfence' */ +EMIT3 (0x0F ,0xAE ,0xE8 ); +break ;/* ST: *(u8*)(dst_reg + off) = imm */ case BPF_ST |BPF_MEM |BPF_H :case BPF_ST |BPF_MEM |BPF_B :
certs/Makefile +8 -0
@@ -46,11 +46,19 @@ endif redirect_openssl = 2>&1 quiet_redirect_openssl = 2>&1 silent_redirect_openssl = 2>/dev/null +openssl_available = $(shell openssl help 2>/dev/null && echo yes) # We do it this way rather than having a boolean option for enabling an # external private key, because 'make randconfig' might enable such a # boolean option and we unfortunately can't make it depend on !RANDCONFIG. ifeq ($(CONFIG_MODULE_SIG_KEY),"certs/signing_key.pem") + +ifeq ($(openssl_available),yes) +X509TEXT=$(shell openssl x509 -in "certs/signing_key.pem" -text 2>/dev/null) + +$(if $(findstring rsaEncryption,$(X509TEXT)),,$(shell rm -f "certs/signing_key.pem")) +endif + $(obj)/signing_key.pem: $(obj)/x509.genkey @$(kecho) "###" @$(kecho) "### Now generating an X.509 key pair to be used for signing modules."
drivers/ata/libata-core.c +1 -1
@@ -6394,7 +6394,7 @@ int ata_host_start(struct ata_host *host) have_stop =1 ; } -if (host->ops->host_stop) +if (host->ops && host->ops->host_stop) have_stop =1 ;if (have_stop) {
drivers/base/regmap/regmap.c +1 -1
@@ -1505,7 +1505,7 @@ static int _regmap_raw_write_impl(struct regmap *map, unsigned int reg,if (ret) {dev_err (map->dev,"Error in caching of register: %x ret: %d\n" , - reg + i, ret); + reg +regmap_get_offset (map, i), ret);return ret; } }
drivers/bcma/main.c +3 -3
@@ -236,6 +236,7 @@ EXPORT_SYMBOL(bcma_core_irq);void bcma_prepare_core (struct bcma_bus *bus,struct bcma_device *core) { +device_initialize (&core->dev); core->dev.release = bcma_release_core_dev; core->dev.bus = &bcma_bus_type;dev_set_name (&core->dev,"bcma%d:%d" , bus->num, core->core_index);
@@ -277,11 +278,10 @@ static void bcma_register_core(struct bcma_bus *bus, struct bcma_device *core) {int err; - err =device_register (&core->dev); + err =device_add (&core->dev);if (err) {bcma_err (bus,"Could not register dev for core 0x%03X\n" , core->id.id); -put_device (&core->dev);return ; } core->dev_registered = true;
@@ -372,7 +372,7 @@ void bcma_unregister_cores(struct bcma_bus *bus)/* Now noone uses internally-handled cores, we can free them */ list_for_each_entry_safe (core, tmp, &bus->cores, list) {list_del (&core->list); -kfree (core); +put_device (&core->dev); } }
drivers/block/nbd.c +10 -0
@@ -1744,7 +1744,17 @@ static int nbd_dev_add(int index)refcount_set (&nbd->refs,1 );INIT_LIST_HEAD (&nbd->list); disk->major =NBD_MAJOR ; + +/* Too big first_minor can cause duplicate creation of +* sysfs files/links, since first_minor will be truncated to +* byte in __device_add_disk(). +*/ disk->first_minor = index << part_shift; +if (disk->first_minor >0xff ) { + err = -EINVAL ; + goto out_free_idr; + } + disk->fops = &nbd_fops; disk->private_data = nbd;sprintf (disk->disk_name,"nbd%d" , index);
drivers/clk/mvebu/kirkwood.c +1 -0
@@ -265,6 +265,7 @@ static const char *powersave_parents[] = {static const struct clk_muxing_soc_desc kirkwood_mux_desc[]__initconst = { {"powersave" , powersave_parents,ARRAY_SIZE (powersave_parents),11 ,1 ,0 }, + { } }; static struct clk *clk_muxing_get_src(
drivers/clocksource/sh_cmt.c +18 -12
@@ -568,7 +568,8 @@ static int sh_cmt_start(struct sh_cmt_channel *ch, unsigned long flag) ch->flags |= flag;/* setup timeout if no clockevent */ -if ((flag ==FLAG_CLOCKSOURCE ) && (!(ch->flags &FLAG_CLOCKEVENT ))) +if (ch->cmt->num_channels ==1 && + flag ==FLAG_CLOCKSOURCE && (!(ch->flags &FLAG_CLOCKEVENT )))__sh_cmt_set_next (ch, ch->max_match_value); out:raw_spin_unlock_irqrestore (&ch->lock, flags);
@@ -604,20 +605,25 @@ static struct sh_cmt_channel *cs_to_sh_cmt(struct clocksource *cs)static u64 sh_cmt_clocksource_read (struct clocksource *cs) {struct sh_cmt_channel *ch =cs_to_sh_cmt (cs); -unsigned long flags;u32 has_wrapped; -u64 value; -u32 raw; -raw_spin_lock_irqsave (&ch->lock, flags); - value = ch->total_cycles; - raw =sh_cmt_get_counter (ch, &has_wrapped); +if (ch->cmt->num_channels ==1 ) { +unsigned long flags; +u64 value; +u32 raw; -if (unlikely (has_wrapped)) - raw += ch->match_value +1 ; -raw_spin_unlock_irqrestore (&ch->lock, flags); +raw_spin_lock_irqsave (&ch->lock, flags); + value = ch->total_cycles; + raw =sh_cmt_get_counter (ch, &has_wrapped); + +if (unlikely (has_wrapped)) + raw += ch->match_value +1 ; +raw_spin_unlock_irqrestore (&ch->lock, flags); + +return value + raw; + } -return value + raw; +return sh_cmt_get_counter (ch, &has_wrapped); }static int sh_cmt_clocksource_enable (struct clocksource *cs)
@@ -680,7 +686,7 @@ static int sh_cmt_register_clocksource(struct sh_cmt_channel *ch, cs->disable = sh_cmt_clocksource_disable; cs->suspend = sh_cmt_clocksource_suspend; cs->resume = sh_cmt_clocksource_resume; - cs->mask =CLOCKSOURCE_MASK (sizeof (u64) *8 ); + cs->mask =CLOCKSOURCE_MASK (ch->cmt->info->width); cs->flags =CLOCK_SOURCE_IS_CONTINUOUS ; dev_info(&ch->cmt->pdev->dev, "ch%u: used as clock source\n",
drivers/counter/104-quad-8.c +3 -2
@@ -1230,12 +1230,13 @@ static ssize_t quad8_count_ceiling_write(struct counter_device *counter,case 1 :case 3 :quad8_preset_register_set (priv, count->id, ceiling); -break ; +mutex_unlock (&priv->lock); +return len; }mutex_unlock (&priv->lock); -return len; +return -EINVAL ; } static ssize_t quad8_count_preset_enable_read(struct counter_device *counter,
drivers/crypto/mxs-dcp.c +35 -10
90 lines not on this page · raw message
drivers/crypto/omap-sham.c +1 -1
@@ -1734,7 +1734,7 @@ static void omap_sham_done_task(unsigned long data)if (test_and_clear_bit (FLAGS_OUTPUT_READY , &dd->flags)) goto finish; }else if (test_bit (FLAGS_DMA_READY , &dd->flags)) { -if (test_and_clear_bit (FLAGS_DMA_ACTIVE , &dd->flags)) { +if (test_bit (FLAGS_DMA_ACTIVE , &dd->flags)) {omap_sham_update_dma_stop (dd);if (dd->err) { err = dd->err;
drivers/crypto/qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c +2 -2
@@ -123,10 +123,10 @@ void adf_init_hw_data_c3xxxiov(struct adf_hw_device_data *hw_data) hw_data->enable_error_correction = adf_vf_void_noop; hw_data->init_admin_comms = adf_vf_int_noop; hw_data->exit_admin_comms = adf_vf_void_noop; - hw_data->send_admin_init = adf_vf2pf_init; + hw_data->send_admin_init = adf_vf2pf_notify_init; hw_data->init_arb = adf_vf_int_noop; hw_data->exit_arb = adf_vf_void_noop; - hw_data->disable_iov = adf_vf2pf_shutdown; + hw_data->disable_iov = adf_vf2pf_notify_shutdown; hw_data->get_accel_mask = get_accel_mask; hw_data->get_ae_mask = get_ae_mask; hw_data->get_num_accels = get_num_accels;
drivers/crypto/qat/qat_c62xvf/adf_c62xvf_hw_data.c +2 -2
@@ -123,10 +123,10 @@ void adf_init_hw_data_c62xiov(struct adf_hw_device_data *hw_data) hw_data->enable_error_correction = adf_vf_void_noop; hw_data->init_admin_comms = adf_vf_int_noop; hw_data->exit_admin_comms = adf_vf_void_noop; - hw_data->send_admin_init = adf_vf2pf_init; + hw_data->send_admin_init = adf_vf2pf_notify_init; hw_data->init_arb = adf_vf_int_noop; hw_data->exit_arb = adf_vf_void_noop; - hw_data->disable_iov = adf_vf2pf_shutdown; + hw_data->disable_iov = adf_vf2pf_notify_shutdown; hw_data->get_accel_mask = get_accel_mask; hw_data->get_ae_mask = get_ae_mask; hw_data->get_num_accels = get_num_accels;
drivers/crypto/qat/qat_common/adf_common_drv.h +4 -4
@@ -239,8 +239,8 @@ void adf_enable_vf2pf_interrupts(struct adf_accel_dev *accel_dev,void adf_enable_pf2vf_interrupts (struct adf_accel_dev *accel_dev);void adf_disable_pf2vf_interrupts (struct adf_accel_dev *accel_dev); -int adf_vf2pf_init (struct adf_accel_dev *accel_dev); -void adf_vf2pf_shutdown (struct adf_accel_dev *accel_dev); +int adf_vf2pf_notify_init (struct adf_accel_dev *accel_dev); +void adf_vf2pf_notify_shutdown (struct adf_accel_dev *accel_dev);int adf_init_pf_wq (void );void adf_exit_pf_wq (void );int adf_init_vf_wq (void );
@@ -263,12 +263,12 @@ static inline void adf_disable_pf2vf_interrupts(struct adf_accel_dev *accel_dev) { } -static inline int adf_vf2pf_init (struct adf_accel_dev *accel_dev) +static inline int adf_vf2pf_notify_init (struct adf_accel_dev *accel_dev) {return 0 ; } -static inline void adf_vf2pf_shutdown (struct adf_accel_dev *accel_dev) +static inline void adf_vf2pf_notify_shutdown (struct adf_accel_dev *accel_dev) { }
drivers/crypto/qat/qat_common/adf_init.c +3 -2
@@ -105,6 +105,7 @@ int adf_dev_init(struct adf_accel_dev *accel_dev)struct service_hndl *service;struct list_head *list_itr;struct adf_hw_device_data *hw_data = accel_dev->hw_device; +int ret;if (!hw_data) { dev_err(&GET_DEV(accel_dev),
@@ -171,9 +172,9 @@ int adf_dev_init(struct adf_accel_dev *accel_dev) } hw_data->enable_error_correction (accel_dev); - hw_data->enable_vf2pf_comms (accel_dev); + ret = hw_data->enable_vf2pf_comms (accel_dev); -return 0 ; +return ret; }EXPORT_SYMBOL_GPL (adf_dev_init);
drivers/crypto/qat/qat_common/adf_isr.c +4 -3
@@ -59,6 +59,8 @@#include "adf_transport_access_macros.h" #include "adf_transport_internal.h" +#define ADF_MAX_NUM_VFS 32 +static int adf_enable_msix (struct adf_accel_dev *accel_dev) {struct adf_accel_pci *pci_dev_info = &accel_dev->accel_pci_dev;
@@ -111,7 +113,7 @@ static irqreturn_t adf_msix_isr_ae(int irq, void *dev_ptr)struct adf_bar *pmisc = &GET_BARS (accel_dev)[hw_data->get_misc_bar_id (hw_data)];void __iomem *pmisc_bar_addr = pmisc->virt_addr; -u32 vf_mask; +unsigned long vf_mask;/* Get the interrupt sources triggered by VFs */ vf_mask = ((ADF_CSR_RD(pmisc_bar_addr, ADF_ERRSOU5) &
@@ -132,8 +134,7 @@ static irqreturn_t adf_msix_isr_ae(int irq, void *dev_ptr)* unless the VF is malicious and is attempting to * flood the host OS with VF2PF interrupts. */ -for_each_set_bit (i, (const unsigned long *)&vf_mask, - (sizeof (vf_mask) *BITS_PER_BYTE )) { +for_each_set_bit (i, &vf_mask,ADF_MAX_NUM_VFS ) { vf_info = accel_dev->pf.vf_info + i;if (!__ratelimit (&vf_info->vf2pf_ratelimit)) {
drivers/crypto/qat/qat_common/adf_pf2vf_msg.c +2 -1
@@ -231,7 +231,6 @@ int adf_iov_putmsg(struct adf_accel_dev *accel_dev, u32 msg, u8 vf_nr)return ret; } -EXPORT_SYMBOL_GPL (adf_iov_putmsg);void adf_vf2pf_req_hndl (struct adf_accel_vf_info *vf_info) {
@@ -361,6 +360,8 @@ static int adf_vf2pf_request_version(struct adf_accel_dev *accel_dev) msg |=ADF_PFVF_COMPATIBILITY_VERSION <<ADF_VF2PF_COMPAT_VER_REQ_SHIFT ;BUILD_BUG_ON (ADF_PFVF_COMPATIBILITY_VERSION >255 ); +reinit_completion (&accel_dev->vf.iov_msg_completion); +/* Send request from VF to PF */ ret =adf_iov_putmsg (accel_dev, msg,0 );if (ret) {
drivers/crypto/qat/qat_common/adf_vf2pf_msg.c +6 -6
@@ -49,14 +49,14 @@#include "adf_pf2vf_msg.h" /** -* adf_vf2pf_init() - send init msg to PF +* adf_vf2pf_notify_init() - send init msg to PF * @accel_dev: Pointer to acceleration VF device. * * Function sends an init messge from the VF to a PF * * Return: 0 on success, error code otherwise. */ -int adf_vf2pf_init (struct adf_accel_dev *accel_dev) +int adf_vf2pf_notify_init (struct adf_accel_dev *accel_dev) {u32 msg = (ADF_VF2PF_MSGORIGIN_SYSTEM | (ADF_VF2PF_MSGTYPE_INIT <<ADF_VF2PF_MSGTYPE_SHIFT ));
@@ -69,17 +69,17 @@ int adf_vf2pf_init(struct adf_accel_dev *accel_dev)set_bit (ADF_STATUS_PF_RUNNING , &accel_dev->status);return 0 ; } -EXPORT_SYMBOL_GPL (adf_vf2pf_init); +EXPORT_SYMBOL_GPL (adf_vf2pf_notify_init);/** -* adf_vf2pf_shutdown() - send shutdown msg to PF +* adf_vf2pf_notify_shutdown() - send shutdown msg to PF * @accel_dev: Pointer to acceleration VF device. * * Function sends a shutdown messge from the VF to a PF * * Return: void */ -void adf_vf2pf_shutdown (struct adf_accel_dev *accel_dev) +void adf_vf2pf_notify_shutdown (struct adf_accel_dev *accel_dev) {u32 msg = (ADF_VF2PF_MSGORIGIN_SYSTEM | (ADF_VF2PF_MSGTYPE_SHUTDOWN <<ADF_VF2PF_MSGTYPE_SHIFT ));
@@ -89,4 +89,4 @@ void adf_vf2pf_shutdown(struct adf_accel_dev *accel_dev)dev_err (&GET_DEV (accel_dev),"Failed to send Shutdown event to PF\n" ); } -EXPORT_SYMBOL_GPL (adf_vf2pf_shutdown); +EXPORT_SYMBOL_GPL (adf_vf2pf_notify_shutdown);
drivers/crypto/qat/qat_common/adf_vf_isr.c +4 -3
@@ -203,6 +203,7 @@ static irqreturn_t adf_isr(int irq, void *privdata)struct adf_bar *pmisc = &GET_BARS (accel_dev)[hw_data->get_misc_bar_id (hw_data)];void __iomem *pmisc_bar_addr = pmisc->virt_addr; +bool handled = false;u32 v_int;/* Read VF INT source CSR to determine the source of VF interrupt */
@@ -215,7 +216,7 @@ static irqreturn_t adf_isr(int irq, void *privdata)/* Schedule tasklet to handle interrupt BH */ tasklet_hi_schedule (&accel_dev->vf.pf2vf_bh_tasklet); -return IRQ_HANDLED ; + handled = true; }/* Check bundle interrupt */
@@ -227,10 +228,10 @@ static irqreturn_t adf_isr(int irq, void *privdata)WRITE_CSR_INT_FLAG_AND_COL (bank->csr_addr, bank->bank_number,0 );tasklet_hi_schedule (&bank->resp_handler); -return IRQ_HANDLED ; + handled = true; } -return IRQ_NONE ; +return handled ?IRQ_HANDLED :IRQ_NONE ; }static int adf_request_msi_irq (struct adf_accel_dev *accel_dev)
drivers/crypto/qat/qat_dh895xccvf/adf_dh895xccvf_hw_data.c +2 -2
@@ -123,10 +123,10 @@ void adf_init_hw_data_dh895xcciov(struct adf_hw_device_data *hw_data) hw_data->enable_error_correction = adf_vf_void_noop; hw_data->init_admin_comms = adf_vf_int_noop; hw_data->exit_admin_comms = adf_vf_void_noop; - hw_data->send_admin_init = adf_vf2pf_init; + hw_data->send_admin_init = adf_vf2pf_notify_init; hw_data->init_arb = adf_vf_int_noop; hw_data->exit_arb = adf_vf_void_noop; - hw_data->disable_iov = adf_vf2pf_shutdown; + hw_data->disable_iov = adf_vf2pf_notify_shutdown; hw_data->get_accel_mask = get_accel_mask; hw_data->get_ae_mask = get_ae_mask; hw_data->get_num_accels = get_num_accels;
drivers/edac/i10nm_base.c +3 -3
@@ -26,8 +26,8 @@ pci_read_config_dword((d)->uracu, 0xd8 + (i) * 4, &(reg))#define I10NM_GET_DIMMMTR (m, i, j) \ readl((m)->mbase + 0x2080c + (i) * 0x4000 + (j) * 4) -#define I10NM_GET_MCDDRTCFG (m, i, j) \ - readl((m)->mbase + 0x20970 + (i) * 0x4000 + (j) * 4) +#define I10NM_GET_MCDDRTCFG (m, i) \ + readl((m)->mbase + 0x20970 + (i) * 0x4000)#define I10NM_GET_MCMTR (m, i) \ readl((m)->mbase + 0x20ef8 + (i) * 0x4000)
@@ -156,11 +156,11 @@ static int i10nm_get_dimm_config(struct mem_ctl_info *mci)continue ; ndimms =0 ; + mcddrtcfg =I10NM_GET_MCDDRTCFG (imc, i);for (j =0 ; j <I10NM_NUM_DIMMS ; j++) { dimm =EDAC_DIMM_PTR (mci->layers, mci->dimms, mci->n_layers, i, j,0 ); mtr =I10NM_GET_DIMMMTR (imc, i, j); - mcddrtcfg =I10NM_GET_MCDDRTCFG (imc, i, j);edac_dbg (1 ,"dimmmtr 0x%x mcddrtcfg 0x%x (mc%d ch%d dimm%d)\n" , mtr, mcddrtcfg, imc->mc, i, j);
drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c +26 -28
92 lines not on this page · raw message
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c +6 -4
@@ -281,10 +281,12 @@ static void dpu_hw_ctl_clear_all_blendstages(struct dpu_hw_ctl *ctx)int i;for (i =0 ; i < ctx->mixer_count; i++) { -DPU_REG_WRITE (c,CTL_LAYER (LM_0 + i),0 ); -DPU_REG_WRITE (c,CTL_LAYER_EXT (LM_0 + i),0 ); -DPU_REG_WRITE (c,CTL_LAYER_EXT2 (LM_0 + i),0 ); -DPU_REG_WRITE (c,CTL_LAYER_EXT3 (LM_0 + i),0 ); +enum dpu_lm mixer_id = ctx->mixer_hw_caps[i].id; + +DPU_REG_WRITE (c,CTL_LAYER (mixer_id),0 ); +DPU_REG_WRITE (c,CTL_LAYER_EXT (mixer_id),0 ); +DPU_REG_WRITE (c,CTL_LAYER_EXT2 (mixer_id),0 ); +DPU_REG_WRITE (c,CTL_LAYER_EXT3 (mixer_id),0 ); } }
drivers/gpu/drm/msm/dsi/dsi.c +3 -3
@@ -26,8 +26,10 @@ static int dsi_get_phy(struct msm_dsi *msm_dsi) } phy_pdev =of_find_device_by_node (phy_node); -if (phy_pdev) +if (phy_pdev) { msm_dsi->phy =platform_get_drvdata (phy_pdev); + msm_dsi->phy_dev = &phy_pdev->dev; + }of_node_put (phy_node);
@@ -36,8 +38,6 @@ static int dsi_get_phy(struct msm_dsi *msm_dsi)return -EPROBE_DEFER ; } - msm_dsi->phy_dev =get_device (&phy_pdev->dev); -return 0 ; }
drivers/gpu/drm/panfrost/panfrost_device.c +2 -1
@@ -59,7 +59,8 @@ static int panfrost_clk_init(struct panfrost_device *pfdev)if (IS_ERR (pfdev->bus_clock)) {dev_err (pfdev->dev,"get bus_clock failed %ld\n" ,PTR_ERR (pfdev->bus_clock)); -return PTR_ERR (pfdev->bus_clock); + err =PTR_ERR (pfdev->bus_clock); + goto disable_clock; }if (pfdev->bus_clock) {
drivers/i2c/busses/i2c-highlander.c +1 -1
@@ -379,7 +379,7 @@ static int highlander_i2c_probe(struct platform_device *pdev)platform_set_drvdata (pdev, dev); dev->irq =platform_get_irq (pdev,0 ); -if (iic_force_poll) +if (dev->irq <0 || iic_force_poll) dev->irq =0 ;if (dev->irq) {
drivers/i2c/busses/i2c-iop3xx.c +2 -4
@@ -467,16 +467,14 @@ iop3xx_i2c_probe(struct platform_device *pdev) irq =platform_get_irq (pdev,0 );if (irq <0 ) { - ret = -ENXIO ; + ret = irq; goto unmap; } ret =request_irq (irq, iop3xx_i2c_irq_handler,0 , pdev->name, adapter_data); -if (ret) { - ret = -EIO ; +if (ret) goto unmap; - }memcpy (new_adapter->name, pdev->name,strlen (pdev->name)); new_adapter->owner =THIS_MODULE ;
drivers/i2c/busses/i2c-mt65xx.c +1 -1
@@ -932,7 +932,7 @@ static int mtk_i2c_probe(struct platform_device *pdev)return PTR_ERR (i2c->pdmabase); irq =platform_get_irq (pdev,0 ); -if (irq <=0 ) +if (irq <0 )return irq;init_completion (&i2c->msg_complete);
drivers/i2c/busses/i2c-s3c2410.c +1 -1
@@ -1141,7 +1141,7 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)*/ if (!(i2c->quirks &QUIRK_POLL )) { i2c->irq = ret =platform_get_irq (pdev,0 ); -if (ret <=0 ) { +if (ret <0 ) {dev_err (&pdev->dev,"cannot find IRQ\n" );clk_unprepare (i2c->clk);return ret;
drivers/leds/leds-lt3593.c +2 -3
@@ -103,10 +103,9 @@ static int lt3593_led_probe(struct platform_device *pdev) init_data.default_label =":" ; ret =devm_led_classdev_register_ext (dev, &led_data->cdev, &init_data); -if (ret <0 ) { -fwnode_handle_put (child); +fwnode_handle_put (child); +if (ret <0 )return ret; - } led_data->cdev.dev->of_node = dev->of_node;platform_set_drvdata (pdev, led_data);
drivers/leds/trigger/ledtrig-audio.c +29 -8
@@ -6,10 +6,33 @@#include <linux/kernel.h> #include <linux/leds.h> #include <linux/module.h> +#include "../leds.h" -static struct led_trigger *ledtrig_audio[NUM_AUDIO_LEDS ];static enum led_brightness audio_state[NUM_AUDIO_LEDS ]; +static int ledtrig_audio_mute_activate (struct led_classdev *led_cdev) +{ +led_set_brightness_nosleep (led_cdev, audio_state[LED_AUDIO_MUTE ]); +return 0 ; +} + +static int ledtrig_audio_micmute_activate (struct led_classdev *led_cdev) +{ +led_set_brightness_nosleep (led_cdev, audio_state[LED_AUDIO_MICMUTE ]); +return 0 ; +} + +static struct led_trigger ledtrig_audio[NUM_AUDIO_LEDS ] = { + [LED_AUDIO_MUTE ] = { + .name ="audio-mute" , + .activate = ledtrig_audio_mute_activate, + }, + [LED_AUDIO_MICMUTE ] = { + .name ="audio-micmute" , + .activate = ledtrig_audio_micmute_activate, + }, +}; +enum led_brightness ledtrig_audio_get (enum led_audio type) {return audio_state[type];
@@ -19,24 +42,22 @@ EXPORT_SYMBOL_GPL(ledtrig_audio_get);void ledtrig_audio_set (enum led_audio type,enum led_brightness state) { audio_state[type] = state; -led_trigger_event (ledtrig_audio[type], state); +led_trigger_event (&ledtrig_audio[type], state); }EXPORT_SYMBOL_GPL (ledtrig_audio_set);static int __init ledtrig_audio_init (void ) { -led_trigger_register_simple ("audio-mute" , - &ledtrig_audio[LED_AUDIO_MUTE ]); -led_trigger_register_simple ("audio-micmute" , - &ledtrig_audio[LED_AUDIO_MICMUTE ]); +led_trigger_register (&ledtrig_audio[LED_AUDIO_MUTE ]); +led_trigger_register (&ledtrig_audio[LED_AUDIO_MICMUTE ]);return 0 ; }module_init (ledtrig_audio_init); static void __exit ledtrig_audio_exit(void) { -led_trigger_unregister_simple (ledtrig_audio[LED_AUDIO_MUTE ]); -led_trigger_unregister_simple (ledtrig_audio[LED_AUDIO_MICMUTE ]); +led_trigger_unregister (&ledtrig_audio[LED_AUDIO_MUTE ]); +led_trigger_unregister (&ledtrig_audio[LED_AUDIO_MICMUTE ]); }module_exit (ledtrig_audio_exit);
drivers/md/bcache/super.c +11 -5
@@ -839,20 +839,20 @@ static int bcache_device_init(struct bcache_device *d, unsigned int block_size, n =BITS_TO_LONGS (d->nr_stripes) *sizeof (unsigned long ); d->full_dirty_stripes =kvzalloc (n,GFP_KERNEL );if (!d->full_dirty_stripes) -return -ENOMEM ; + goto out_free_stripe_sectors_dirty; idx =ida_simple_get (&bcache_device_idx,0 ,BCACHE_DEVICE_IDX_MAX ,GFP_KERNEL );if (idx <0 ) -return idx; + goto out_free_full_dirty_stripes;if (bioset_init (&d->bio_split,4 , offsetof(struct bbio , bio),BIOSET_NEED_BVECS |BIOSET_NEED_RESCUER )) - goto err; + goto out_ida_remove; d->disk =alloc_disk (BCACHE_MINORS );if (!d->disk) - goto err; + goto out_bioset_exit;set_capacity (d->disk, sectors);snprintf (d->disk->disk_name,DISK_NAME_LEN ,"bcache%i" , idx);
@@ -887,8 +887,14 @@ static int bcache_device_init(struct bcache_device *d, unsigned int block_size,return 0 ; -err: +out_bioset_exit: +bioset_exit (&d->bio_split); +out_ida_remove:ida_simple_remove (&bcache_device_idx, idx); +out_free_full_dirty_stripes: +kvfree (d->full_dirty_stripes); +out_free_stripe_sectors_dirty: +kvfree (d->stripe_sectors_dirty);return -ENOMEM ; }
drivers/media/i2c/tda1997x.c +1 -0
@@ -2233,6 +2233,7 @@ static int tda1997x_core_init(struct v4l2_subdev *sd)/* get initial HDMI status */ state->hdmi_status =io_read (sd,REG_HDMI_FLAGS ); +io_write (sd,REG_EDID_ENABLE ,EDID_ENABLE_A_EN |EDID_ENABLE_B_EN );return 0 ; }
drivers/media/platform/coda/coda-bit.c +13 -5
@@ -2023,17 +2023,25 @@ static int __coda_start_decoding(struct coda_ctx *ctx)u32 src_fourcc, dst_fourcc;int ret; + q_data_src =get_q_data (ctx,V4L2_BUF_TYPE_VIDEO_OUTPUT ); + q_data_dst =get_q_data (ctx,V4L2_BUF_TYPE_VIDEO_CAPTURE ); + src_fourcc = q_data_src->fourcc; + dst_fourcc = q_data_dst->fourcc; +if (!ctx->initialized) { ret =__coda_decoder_seq_init (ctx);if (ret <0 )return ret; + }else { + ctx->frame_mem_ctrl &= ~(CODA_FRAME_CHROMA_INTERLEAVE | (0x3 <<9 ) | +CODA9_FRAME_TILED2LINEAR ); +if (dst_fourcc ==V4L2_PIX_FMT_NV12 || dst_fourcc ==V4L2_PIX_FMT_YUYV ) + ctx->frame_mem_ctrl |=CODA_FRAME_CHROMA_INTERLEAVE ; +if (ctx->tiled_map_type ==GDI_TILED_FRAME_MB_RASTER_MAP ) + ctx->frame_mem_ctrl |= (0x3 <<9 ) | + ((ctx->use_vdoa) ?0 :CODA9_FRAME_TILED2LINEAR ); } - q_data_src =get_q_data (ctx,V4L2_BUF_TYPE_VIDEO_OUTPUT ); - q_data_dst =get_q_data (ctx,V4L2_BUF_TYPE_VIDEO_CAPTURE ); - src_fourcc = q_data_src->fourcc; - dst_fourcc = q_data_dst->fourcc; -coda_write (dev, ctx->parabuf.paddr,CODA_REG_BIT_PARA_BUF_ADDR ); ret =coda_alloc_framebuffers (ctx, q_data_dst, src_fourcc);
drivers/media/platform/qcom/venus/venc.c +2 -0
@@ -308,6 +308,8 @@ venc_try_fmt_common(struct venus_inst *inst, struct v4l2_format *f)else return NULL ; fmt =find_format (inst, pixmp->pixelformat, f->type); +if (!fmt) +return NULL ; } pixmp->width = clamp(pixmp->width, frame_width_min(inst),
drivers/media/spi/cxd2880-spi.c +5 -2
@@ -524,13 +524,13 @@ cxd2880_spi_probe(struct spi_device *spi)if (IS_ERR (dvb_spi->vcc_supply)) {if (PTR_ERR (dvb_spi->vcc_supply) == -EPROBE_DEFER ) { ret = -EPROBE_DEFER ; - goto fail_adapter; + goto fail_regulator; } dvb_spi->vcc_supply =NULL ; }else { ret =regulator_enable (dvb_spi->vcc_supply);if (ret) - goto fail_adapter; + goto fail_regulator; } dvb_spi->spi = spi;
@@ -618,6 +618,9 @@ cxd2880_spi_probe(struct spi_device *spi) fail_attach:dvb_unregister_adapter (&dvb_spi->adapter); fail_adapter: +if (!dvb_spi->vcc_supply) +regulator_disable (dvb_spi->vcc_supply); +fail_regulator:kfree (dvb_spi);return ret; }
drivers/media/usb/dvb-usb/dvb-usb-i2c.c +7 -2
@@ -17,7 +17,8 @@ int dvb_usb_i2c_init(struct dvb_usb_device *d)if (d->props.i2c_algo ==NULL ) {err ("no i2c algorithm specified" ); -return -EINVAL ; + ret = -EINVAL ; + goto err; }strscpy (d->i2c_adap.name, d->desc->name,sizeof (d->i2c_adap.name));
@@ -27,11 +28,15 @@ int dvb_usb_i2c_init(struct dvb_usb_device *d)i2c_set_adapdata (&d->i2c_adap, d); -if ((ret =i2c_add_adapter (&d->i2c_adap)) <0 ) + ret =i2c_add_adapter (&d->i2c_adap); +if (ret <0 ) {err ("could not add i2c adapter" ); + goto err; + } d->state |=DVB_USB_STATE_I2C ; +err:return ret; }
drivers/media/usb/dvb-usb/dvb-usb-init.c +1 -1
@@ -194,8 +194,8 @@ static int dvb_usb_init(struct dvb_usb_device *d, short *adapter_nums) err_adapter_init:dvb_usb_adapter_exit (d); -err_i2c_init:dvb_usb_i2c_exit (d); +err_i2c_init:if (d->priv && d->props.priv_destroy) d->props.priv_destroy (d); err_priv_init:
drivers/media/usb/dvb-usb/nova-t-usb2.c +4 -2
@@ -130,7 +130,7 @@ static int nova_t_rc_query(struct dvb_usb_device *d, u32 *event, int *state)static int nova_t_read_mac_address (struct dvb_usb_device *d,u8 mac[6 ]) { -int i; +int i, ret;u8 b; mac[0 ] =0x00 ;
@@ -139,7 +139,9 @@ static int nova_t_read_mac_address (struct dvb_usb_device *d, u8 mac[6])/* this is a complete guess, but works for my box */ for (i =136 ; i <139 ; i++) { -dibusb_read_eeprom_byte (d,i, &b); + ret =dibusb_read_eeprom_byte (d, i, &b); +if (ret) +return ret; mac[5 - (i -136 )] = b; }
drivers/media/usb/dvb-usb/vp702x.c +9 -3
@@ -291,16 +291,22 @@ static int vp702x_rc_query(struct dvb_usb_device *d, u32 *event, int *state)static int vp702x_read_mac_addr (struct dvb_usb_device *d,u8 mac[6 ]) {u8 i, *buf; +int ret;struct vp702x_device_state *st = d->priv;mutex_lock (&st->buf_mutex); buf = st->buf; -for (i =6 ; i <12 ; i++) -vp702x_usb_in_op (d,READ_EEPROM_REQ , i,1 , &buf[i -6 ],1 ); +for (i =6 ; i <12 ; i++) { + ret =vp702x_usb_in_op (d,READ_EEPROM_REQ , i,1 , + &buf[i -6 ],1 ); +if (ret <0 ) + goto err; + }memcpy (mac, buf,6 ); +err:mutex_unlock (&st->buf_mutex); -return 0 ; +return ret; }static int vp702x_frontend_attach (struct dvb_usb_adapter *adap)
drivers/media/usb/em28xx/em28xx-input.c +0 -1
@@ -842,7 +842,6 @@ static int em28xx_ir_init(struct em28xx *dev)kfree (ir); ref_put:em28xx_shutdown_buttons (dev); -kref_put (&dev->ref, em28xx_free_device);return err; }
drivers/media/usb/go7007/go7007-driver.c +0 -26
@@ -691,49 +691,23 @@ struct go7007 *go7007_alloc(const struct go7007_board_info *board, struct device *dev) {struct go7007 *go; -int i; go =kzalloc (sizeof (struct go7007 ),GFP_KERNEL );if (go ==NULL )return NULL ; go->dev = dev; go->board_info = board; - go->board_id =0 ; go->tuner_type =-1 ; - go->channel_number =0 ; - go->name[0 ] =0 ;mutex_init (&go->hw_lock);init_waitqueue_head (&go->frame_waitq);spin_lock_init (&go->spinlock); go->status =STATUS_INIT ; -memset (&go->i2c_adapter,0 ,sizeof (go->i2c_adapter)); - go->i2c_adapter_online =0 ; - go->interrupt_available =0 ;init_waitqueue_head (&go->interrupt_waitq); - go->input =0 ;go7007_update_board (go); - go->encoder_h_halve =0 ; - go->encoder_v_halve =0 ; - go->encoder_subsample =0 ; go->format =V4L2_PIX_FMT_MJPEG ; go->bitrate =1500000 ; go->fps_scale =1 ; - go->pali =0 ; go->aspect_ratio =GO7007_RATIO_1_1 ; - go->gop_size =0 ; - go->ipb =0 ; - go->closed_gop =0 ; - go->repeat_seqhead =0 ; - go->seq_header_enable =0 ; - go->gop_header_enable =0 ; - go->dvd_mode =0 ; - go->interlace_coding =0 ; -for (i =0 ; i <4 ; ++i) - go->modet[i].enable =0 ; -for (i =0 ; i <1624 ; ++i) - go->modet_map[i] =0 ; - go->audio_deliver =NULL ; - go->audio_enabled =0 ;return go; }
drivers/mmc/host/dw_mmc.c +1 -0
@@ -782,6 +782,7 @@ static int dw_mci_edmac_start_dma(struct dw_mci *host,int ret =0 ;/* Set external dma config: burst size, burst width */ +memset (&cfg,0 ,sizeof (cfg)); cfg.dst_addr = host->phy_regs + fifo_offset; cfg.src_addr = cfg.dst_addr; cfg.dst_addr_width =DMA_SLAVE_BUSWIDTH_4_BYTES ;
drivers/mmc/host/moxart-mmc.c +1 -0
@@ -631,6 +631,7 @@ static int moxart_probe(struct platform_device *pdev) host->dma_chan_tx, host->dma_chan_rx); host->have_dma = true; +memset (&cfg,0 ,sizeof (cfg)); cfg.src_addr_width =DMA_SLAVE_BUSWIDTH_4_BYTES ; cfg.dst_addr_width =DMA_SLAVE_BUSWIDTH_4_BYTES ;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c +2 -1
@@ -2013,10 +2013,11 @@ int rvu_mbox_handler_npc_mcam_unmap_counter(struct rvu *rvu, index =find_next_bit (mcam->bmap, mcam->bmap_entries, entry);if (index >= mcam->bmap_entries)break ; + entry = index +1 ; +if (mcam->entry2cntr_map[index] != req->cntr)continue ; - entry = index +1 ;npc_unmap_mcam_entry_and_cntr (rvu, mcam, blkaddr, index, req->cntr); }
drivers/net/ethernet/mellanox/mlx5/core/en/fs.h +0 -6
@@ -234,18 +234,12 @@ struct ttc_params {void mlx5e_set_ttc_basic_params (struct mlx5e_priv *priv,struct ttc_params *ttc_params);void mlx5e_set_ttc_ft_params (struct ttc_params *ttc_params); -void mlx5e_set_inner_ttc_ft_params (struct ttc_params *ttc_params);int mlx5e_create_ttc_table (struct mlx5e_priv *priv,struct ttc_params *params,struct mlx5e_ttc_table *ttc);void mlx5e_destroy_ttc_table (struct mlx5e_priv *priv,struct mlx5e_ttc_table *ttc); -int mlx5e_create_inner_ttc_table (struct mlx5e_priv *priv,struct ttc_params *params, -struct mlx5e_ttc_table *ttc); -void mlx5e_destroy_inner_ttc_table (struct mlx5e_priv *priv, -struct mlx5e_ttc_table *ttc); -void mlx5e_destroy_flow_table (struct mlx5e_flow_table *ft);void mlx5e_enable_cvlan_filter (struct mlx5e_priv *priv);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c +5 -5
@@ -1123,7 +1123,7 @@ void mlx5e_set_ttc_basic_params(struct mlx5e_priv *priv, ttc_params->inner_ttc = &priv->fs.inner_ttc; } -void mlx5e_set_inner_ttc_ft_params (struct ttc_params *ttc_params) +static void mlx5e_set_inner_ttc_ft_params (struct ttc_params *ttc_params) {struct mlx5_flow_table_attr *ft_attr = &ttc_params->ft_attr;
@@ -1142,8 +1142,8 @@ void mlx5e_set_ttc_ft_params(struct ttc_params *ttc_params) ft_attr->prio =MLX5E_NIC_PRIO ; } -int mlx5e_create_inner_ttc_table (struct mlx5e_priv *priv,struct ttc_params *params, -struct mlx5e_ttc_table *ttc) +static int mlx5e_create_inner_ttc_table (struct mlx5e_priv *priv,struct ttc_params *params, +struct mlx5e_ttc_table *ttc) {struct mlx5e_flow_table *ft = &ttc->ft;int err;
@@ -1173,8 +1173,8 @@ int mlx5e_create_inner_ttc_table(struct mlx5e_priv *priv, struct ttc_params *parreturn err; } -void mlx5e_destroy_inner_ttc_table (struct mlx5e_priv *priv, -struct mlx5e_ttc_table *ttc) +static void mlx5e_destroy_inner_ttc_table (struct mlx5e_priv *priv, +struct mlx5e_ttc_table *ttc) {if (!mlx5e_tunnel_inner_ft_supported (priv->mdev))return ;
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c +2 -16
@@ -319,17 +319,6 @@ static int mlx5i_create_flow_steering(struct mlx5e_priv *priv) }mlx5e_set_ttc_basic_params (priv, &ttc_params); -mlx5e_set_inner_ttc_ft_params (&ttc_params); -for (tt =0 ; tt <MLX5E_NUM_INDIR_TIRS ; tt++) - ttc_params.indir_tirn[tt] = priv->inner_indir_tir[tt].tirn; - - err =mlx5e_create_inner_ttc_table (priv, &ttc_params, &priv->fs.inner_ttc); -if (err) { -netdev_err (priv->netdev,"Failed to create inner ttc table, err=%d\n" , - err); - goto err_destroy_arfs_tables; - } -mlx5e_set_ttc_ft_params (&ttc_params);for (tt =0 ; tt <MLX5E_NUM_INDIR_TIRS ; tt++) ttc_params.indir_tirn[tt] = priv->indir_tir[tt].tirn;
@@ -338,13 +327,11 @@ static int mlx5i_create_flow_steering(struct mlx5e_priv *priv)if (err) {netdev_err (priv->netdev,"Failed to create ttc table, err=%d\n" , err); - goto err_destroy_inner_ttc_table; + goto err_destroy_arfs_tables; }return 0 ; -err_destroy_inner_ttc_table: -mlx5e_destroy_inner_ttc_table (priv, &priv->fs.inner_ttc); err_destroy_arfs_tables:mlx5e_arfs_destroy_tables (priv);
@@ -354,7 +341,6 @@ static int mlx5i_create_flow_steering(struct mlx5e_priv *priv)static void mlx5i_destroy_flow_steering (struct mlx5e_priv *priv) {mlx5e_destroy_ttc_table (priv, &priv->fs.ttc); -mlx5e_destroy_inner_ttc_table (priv, &priv->fs.inner_ttc);mlx5e_arfs_destroy_tables (priv); }
@@ -379,7 +365,7 @@ static int mlx5i_init_rx(struct mlx5e_priv *priv)if (err) goto err_destroy_indirect_rqts; - err =mlx5e_create_indirect_tirs (priv, true); + err =mlx5e_create_indirect_tirs (priv, false);if (err) goto err_destroy_direct_rqts;
drivers/net/ethernet/qualcomm/qca_spi.c +1 -1
@@ -434,7 +434,7 @@ qcaspi_receive(struct qcaspi *qca)skb_put (qca->rx_skb, retcode); qca->rx_skb->protocol =eth_type_trans ( qca->rx_skb, qca->rx_skb->dev); - qca->rx_skb->ip_summed =CHECKSUM_UNNECESSARY ; +skb_checksum_none_assert (qca->rx_skb);netif_rx_ni (qca->rx_skb); qca->rx_skb =netdev_alloc_skb_ip_align (net_dev, net_dev->mtu +VLAN_ETH_HLEN );
drivers/net/ethernet/qualcomm/qca_uart.c +1 -1
@@ -107,7 +107,7 @@ qca_tty_receive(struct serdev_device *serdev, const unsigned char *data,skb_put (qca->rx_skb, retcode); qca->rx_skb->protocol =eth_type_trans ( qca->rx_skb, qca->rx_skb->dev); - qca->rx_skb->ip_summed =CHECKSUM_UNNECESSARY ; +skb_checksum_none_assert (qca->rx_skb);netif_rx_ni (qca->rx_skb); qca->rx_skb = netdev_alloc_skb_ip_align(netdev, netdev->mtu +
drivers/net/wireless/ath/ath6kl/wmi.c +3 -1
@@ -2510,8 +2510,10 @@ static int ath6kl_wmi_sync_point(struct wmi *wmi, u8 if_idx) goto free_data_skb;for (index =0 ; index < num_pri_streams; index++) { -if (WARN_ON (!data_sync_bufs[index].skb)) +if (WARN_ON (!data_sync_bufs[index].skb)) { + ret = -ENOMEM ; goto free_data_skb; + } ep_id = ath6kl_ac2_endpoint_id(wmi->parent_dev, data_sync_bufs[index].
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +1 -1
@@ -2073,7 +2073,7 @@ static int brcmf_pcie_pm_leave_D3(struct device *dev) err =brcmf_pcie_probe (pdev,NULL );if (err) -brcmf_err (bus,"probe after resume failed, err=%d\n" , err); +__brcmf_err (NULL , __func__,"probe after resume failed, err=%d\n" , err);return err; }
drivers/net/wireless/rsi/rsi_91x_hal.c +3 -1
@@ -1038,8 +1038,10 @@ static int rsi_load_9116_firmware(struct rsi_hw *adapter) } ta_firmware =kmemdup (fw_entry->data, fw_entry->size,GFP_KERNEL ); -if (!ta_firmware) +if (!ta_firmware) { + status = -ENOMEM ; goto fail_release_fw; + } fw_p = ta_firmware; instructions_sz = fw_entry->size;rsi_dbg (INFO_ZONE ,"FW Length = %d bytes\n" , instructions_sz);
drivers/net/wireless/rsi/rsi_91x_usb.c +1 -0
@@ -806,6 +806,7 @@ static int rsi_probe(struct usb_interface *pfunction, }else {rsi_dbg (ERR_ZONE ,"%s: Unsupported RSI device id 0x%x\n" , __func__, id->idProduct); + status = -ENODEV ; goto err1; }
drivers/nvme/host/rdma.c +2 -2
@@ -665,13 +665,13 @@ static int nvme_rdma_alloc_io_queues(struct nvme_rdma_ctrl *ctrl)if (ret)return ret; - ctrl->ctrl.queue_count = nr_io_queues +1 ; -if (ctrl->ctrl.queue_count <2 ) { +if (nr_io_queues ==0 ) {dev_err (ctrl->ctrl.device,"unable to set any I/O queues\n" );return -ENOMEM ; } + ctrl->ctrl.queue_count = nr_io_queues +1 ;dev_info (ctrl->ctrl.device,"creating %d I/O queues.\n" , nr_io_queues);
drivers/nvme/host/tcp.c +2 -2
@@ -1649,13 +1649,13 @@ static int nvme_tcp_alloc_io_queues(struct nvme_ctrl *ctrl)if (ret)return ret; - ctrl->queue_count = nr_io_queues +1 ; -if (ctrl->queue_count <2 ) { +if (nr_io_queues ==0 ) {dev_err (ctrl->device,"unable to set any I/O queues\n" );return -ENOMEM ; } + ctrl->queue_count = nr_io_queues +1 ;dev_info (ctrl->device,"creating %d I/O queues.\n" , nr_io_queues);
drivers/nvme/target/fabrics-cmd.c +5 -4
@@ -116,6 +116,7 @@ static u16 nvmet_install_queue(struct nvmet_ctrl *ctrl, struct nvmet_req *req)if (!sqsize) {pr_warn ("queue size zero!\n" ); req->error_loc = offsetof(struct nvmf_connect_command , sqsize); + req->cqe->result.u32 =IPO_IATTR_CONNECT_SQE (sqsize); ret =NVME_SC_CONNECT_INVALID_PARAM |NVME_SC_DNR ; goto err; }
@@ -250,11 +251,11 @@ static void nvmet_execute_io_connect(struct nvmet_req *req) } status =nvmet_install_queue (ctrl, req); -if (status) { -/* pass back cntlid that had the issue of installing queue */ - req->cqe->result.u16 =cpu_to_le16 (ctrl->cntlid); +if (status) goto out_ctrl_put; - } + +/* pass back cntlid for successful completion */ + req->cqe->result.u16 =cpu_to_le16 (ctrl->cntlid);pr_debug ("adding queue %d to ctrl %d.\n" , qid, ctrl->cntlid);
drivers/pci/pci.c +18 -7
@@ -2253,7 +2253,14 @@ static int __pci_enable_wake(struct pci_dev *dev, pci_power_t state, bool enableif (enable) {int error; -if (pci_pme_capable (dev, state)) +/* +* Enable PME signaling if the device can signal PME from +* D3cold regardless of whether or not it can signal PME from +* the current target state, because that will allow it to +* signal PME when the hierarchy above it goes into D3cold and +* the device itself ends up in D3cold as a result of that. +*/ +if (pci_pme_capable (dev, state) ||pci_pme_capable (dev, PCI_D3cold))pci_pme_active (dev, true);else ret =1 ;
@@ -2357,16 +2364,20 @@ static pci_power_t pci_target_state(struct pci_dev *dev, bool wakeup)if (dev->current_state == PCI_D3cold) target_state = PCI_D3cold; -if (wakeup) { +if (wakeup && dev->pme_support) { +pci_power_t state = target_state; +/* * Find the deepest state from which the device can generate * PME#. */ -if (dev->pme_support) { -while (target_state - && !(dev->pme_support & (1 << target_state))) - target_state--; - } +while (state && !(dev->pme_support & (1 << state))) + state--; + +if (state) +return state; +else if (dev->pme_support &1 ) +return PCI_D0 ; }return target_state;
drivers/power/supply/axp288_fuel_gauge.c +2 -2
@@ -149,7 +149,7 @@ static int fuel_gauge_reg_readb(struct axp288_fg_info *info, int reg) }if (ret <0 ) { -dev_err (&info->pdev->dev,"axp288 reg read err:%d\n" , ret); +dev_err (&info->pdev->dev,"Error reading reg 0x%02x err: %d\n" , reg, ret);return ret; }
@@ -163,7 +163,7 @@ static int fuel_gauge_reg_writeb(struct axp288_fg_info *info, int reg, u8 val) ret =regmap_write (info->regmap, reg, (unsigned int )val);if (ret <0 ) -dev_err (&info->pdev->dev,"axp288 reg write err:%d\n" , ret); +dev_err (&info->pdev->dev,"Error writing reg 0x%02x err: %d\n" , reg, ret);return ret; }
drivers/power/supply/max17042_battery.c +1 -1
@@ -726,7 +726,7 @@ static inline void max17042_override_por_values(struct max17042_chip *chip)struct max17042_config_data *config = chip->pdata->config_data;max17042_override_por (map,MAX17042_TGAIN , config->tgain); -max17042_override_por (map, MAx17042_TOFF, config->toff); +max17042_override_por (map,MAX17042_TOFF , config->toff);max17042_override_por (map,MAX17042_CGAIN , config->cgain);max17042_override_por (map,MAX17042_COFF , config->coff);
drivers/regulator/vctrl-regulator.c +43 -30
197 lines not on this page · raw message
drivers/s390/cio/css.c +17 -0
@@ -426,9 +426,26 @@ static ssize_t pimpampom_show(struct device *dev, }static DEVICE_ATTR_RO (pimpampom); +static ssize_t dev_busid_show (struct device *dev, +struct device_attribute *attr, +char *buf) +{ +struct subchannel *sch =to_subchannel (dev); +struct pmcw *pmcw = &sch->schib.pmcw; + +if ((pmcw->st ==SUBCHANNEL_TYPE_IO || + pmcw->st ==SUBCHANNEL_TYPE_MSG ) && pmcw->dnv) +return sysfs_emit (buf,"0.%x.%04x\n" , sch->schid.ssid, + pmcw->dev); +else +return sysfs_emit (buf,"none\n" ); +} +static DEVICE_ATTR_RO (dev_busid); +static struct attribute *io_subchannel_type_attrs[] = { &dev_attr_chpids.attr, &dev_attr_pimpampom.attr, + &dev_attr_dev_busid.attr,NULL , };ATTRIBUTE_GROUPS (io_subchannel_type);
drivers/soc/qcom/rpmhpd.c +2 -3
@@ -235,12 +235,11 @@ static int rpmhpd_power_on(struct generic_pm_domain *domain)static int rpmhpd_power_off (struct generic_pm_domain *domain) {struct rpmhpd *pd =domain_to_rpmhpd (domain); -int ret =0 ; +int ret;mutex_lock (&rpmhpd_lock); - ret =rpmhpd_aggregate_corner (pd, pd->level[0 ]); - + ret =rpmhpd_aggregate_corner (pd,0 );if (!ret) pd->enabled = false;
drivers/soc/qcom/smsm.c +8 -3
@@ -109,7 +109,7 @@ struct smsm_entry {DECLARE_BITMAP (irq_enabled,32 );DECLARE_BITMAP (irq_rising,32 );DECLARE_BITMAP (irq_falling,32 ); -u32 last_value; +unsigned long last_value;u32 *remote_state;u32 *subscription;
@@ -204,8 +204,7 @@ static irqreturn_t smsm_intr(int irq, void *data)u32 val; val =readl (entry->remote_state); - changed = val ^ entry->last_value; - entry->last_value = val; + changed = val ^xchg (&entry->last_value, val);for_each_set_bit (i, entry->irq_enabled,32 ) {if (!(changed &BIT (i)))
@@ -266,6 +265,12 @@ static void smsm_unmask_irq(struct irq_data *irqd)struct qcom_smsm *smsm = entry->smsm;u32 val; +/* Make sure our last cached state is up-to-date */ +if (readl (entry->remote_state) &BIT (irq)) +set_bit (irq, &entry->last_value); +else +clear_bit (irq, &entry->last_value); +set_bit (irq, entry->irq_enabled);if (entry->subscription) {
drivers/soc/rockchip/Kconfig +2 -2
@@ -6,8 +6,8 @@ if ARCH_ROCKCHIP || COMPILE_TEST # config ROCKCHIP_GRF - bool - default y + bool "Rockchip General Register Files support" if COMPILE_TEST + default y if ARCH_ROCKCHIP help The General Register Files are a central component providing special additional settings registers for a lot of soc-components.
drivers/spi/spi-fsl-dspi.c +1 -0
@@ -423,6 +423,7 @@ static int dspi_request_dma(struct fsl_dspi *dspi, phys_addr_t phy_addr) goto err_rx_dma_buf; } +memset (&cfg,0 ,sizeof (cfg)); cfg.src_addr = phy_addr +SPI_POPR ; cfg.dst_addr = phy_addr +SPI_PUSHR ; cfg.src_addr_width =DMA_SLAVE_BUSWIDTH_4_BYTES ;
drivers/spi/spi-pic32.c +1 -0
@@ -361,6 +361,7 @@ static int pic32_spi_dma_config(struct pic32_spi *pic32s, u32 dma_width)struct dma_slave_config cfg;int ret; +memset (&cfg,0 ,sizeof (cfg)); cfg.device_fc = true; cfg.src_addr = pic32s->dma_base + buf_offset; cfg.dst_addr = pic32s->dma_base + buf_offset;
drivers/spi/spi-sprd-adi.c +1 -1
@@ -102,7 +102,7 @@#define HWRST_STATUS_WATCHDOG 0xf0/* Use default timeout 50 ms that converts to watchdog values */ -#define WDG_LOAD_VAL ((50 * 1000) / 32768) +#define WDG_LOAD_VAL ((50 * 32768) / 1000)#define WDG_LOAD_MASK GENMASK(15, 0)#define WDG_UNLOCK_KEY 0xe551
drivers/spi/spi-zynq-qspi.c +4 -4
@@ -533,7 +533,7 @@ static int zynq_qspi_exec_mem_op(struct spi_mem *mem,zynq_qspi_write_op (xqspi,ZYNQ_QSPI_FIFO_DEPTH , true);zynq_qspi_write (xqspi,ZYNQ_QSPI_IEN_OFFSET ,ZYNQ_QSPI_IXR_RXTX_MASK ); -if (!wait_for_completion_interruptible_timeout (&xqspi->data_completion, +if (!wait_for_completion_timeout (&xqspi->data_completion,msecs_to_jiffies (1000 ))) err = -ETIMEDOUT ; }
@@ -551,7 +551,7 @@ static int zynq_qspi_exec_mem_op(struct spi_mem *mem,zynq_qspi_write_op (xqspi,ZYNQ_QSPI_FIFO_DEPTH , true);zynq_qspi_write (xqspi,ZYNQ_QSPI_IEN_OFFSET ,ZYNQ_QSPI_IXR_RXTX_MASK ); -if (!wait_for_completion_interruptible_timeout (&xqspi->data_completion, +if (!wait_for_completion_timeout (&xqspi->data_completion,msecs_to_jiffies (1000 ))) err = -ETIMEDOUT ; }
@@ -567,7 +567,7 @@ static int zynq_qspi_exec_mem_op(struct spi_mem *mem,zynq_qspi_write_op (xqspi,ZYNQ_QSPI_FIFO_DEPTH , true);zynq_qspi_write (xqspi,ZYNQ_QSPI_IEN_OFFSET ,ZYNQ_QSPI_IXR_RXTX_MASK ); -if (!wait_for_completion_interruptible_timeout (&xqspi->data_completion, +if (!wait_for_completion_timeout (&xqspi->data_completion,msecs_to_jiffies (1000 ))) err = -ETIMEDOUT ;
@@ -591,7 +591,7 @@ static int zynq_qspi_exec_mem_op(struct spi_mem *mem,zynq_qspi_write_op (xqspi,ZYNQ_QSPI_FIFO_DEPTH , true);zynq_qspi_write (xqspi,ZYNQ_QSPI_IEN_OFFSET ,ZYNQ_QSPI_IXR_RXTX_MASK ); -if (!wait_for_completion_interruptible_timeout (&xqspi->data_completion, +if (!wait_for_completion_timeout (&xqspi->data_completion,msecs_to_jiffies (1000 ))) err = -ETIMEDOUT ; }
drivers/tty/serial/fsl_lpuart.c +1 -1
@@ -2414,7 +2414,7 @@ static int lpuart_probe(struct platform_device *pdev)return PTR_ERR (sport->port.membase); sport->port.membase += sdata->reg_off; - sport->port.mapbase = res->start; + sport->port.mapbase = res->start + sdata->reg_off; sport->port.dev = &pdev->dev; sport->port.type =PORT_LPUART ; sport->devtype = sdata->devtype;
drivers/tty/tty_io.c +2 -2
@@ -2176,8 +2176,6 @@ static int tty_fasync(int fd, struct file *filp, int on)* Locking: * Called functions take tty_ldiscs_lock * current->signal->tty check is safe without locks -* -* FIXME: may race normal receive processing */ static int tiocsti (struct tty_struct *tty,char __user *p)
@@ -2193,8 +2191,10 @@ static int tiocsti(struct tty_struct *tty, char __user *p) ld =tty_ldisc_ref_wait (tty);if (!ld)return -EIO ; +tty_buffer_lock_exclusive (tty->port);if (ld->ops->receive_buf) ld->ops->receive_buf (tty, &ch, &mbz,1 ); +tty_buffer_unlock_exclusive (tty->port);tty_ldisc_deref (ld);return 0 ; }
drivers/usb/gadget/udc/at91_udc.c +3 -1
@@ -1878,7 +1878,9 @@ static int at91udc_probe(struct platform_device *pdev)clk_disable (udc->iclk);/* request UDC and maybe VBUS irqs */ - udc->udp_irq =platform_get_irq (pdev,0 ); + udc->udp_irq = retval =platform_get_irq (pdev,0 ); +if (retval <0 ) + goto err_unprepare_iclk; retval =devm_request_irq (dev, udc->udp_irq, at91_udc_irq,0 , driver_name, udc);if (retval) {
drivers/usb/gadget/udc/bdc/bdc_core.c +2 -1
@@ -565,7 +565,8 @@ static int bdc_probe(struct platform_device *pdev)if (ret) {dev_err (dev,"No suitable DMA config available, abort\n" ); -return -ENOTSUPP ; + ret = -ENOTSUPP ; + goto phycleanup; }dev_dbg (dev,"Using 32-bit address\n" ); }
drivers/usb/gadget/udc/mv_u3d_core.c +10 -9
@@ -1922,14 +1922,6 @@ static int mv_u3d_probe(struct platform_device *dev) goto err_get_irq; } u3d->irq = r->start; -if (request_irq (u3d->irq, mv_u3d_irq, -IRQF_SHARED , driver_name, u3d)) { - u3d->irq =0 ; -dev_err (&dev->dev,"Request irq %d for u3d failed\n" , - u3d->irq); - retval = -ENODEV ; - goto err_request_irq; - }/* initialize gadget structure */ u3d->gadget.ops = &mv_u3d_ops;/* usb_gadget_ops */
@@ -1942,6 +1934,15 @@ static int mv_u3d_probe(struct platform_device *dev)mv_u3d_eps_init (u3d); +if (request_irq (u3d->irq, mv_u3d_irq, +IRQF_SHARED , driver_name, u3d)) { + u3d->irq =0 ; +dev_err (&dev->dev,"Request irq %d for u3d failed\n" , + u3d->irq); + retval = -ENODEV ; + goto err_request_irq; + } +/* external vbus detection */ if (u3d->vbus) { u3d->clock_gating =1 ;
@@ -1965,8 +1966,8 @@ static int mv_u3d_probe(struct platform_device *dev) err_unregister:free_irq (u3d->irq, u3d); -err_request_irq: err_get_irq: +err_request_irq:kfree (u3d->status_req); err_alloc_status_req:kfree (u3d->eps);
drivers/usb/gadget/udc/renesas_usb3.c +7 -10
@@ -2692,10 +2692,15 @@ static const struct renesas_usb3_priv renesas_usb3_priv_r8a77990 = {static const struct of_device_id usb3_of_match[] = { { + .compatible ="renesas,r8a774c0-usb3-peri" , + .data = &renesas_usb3_priv_r8a77990, + }, { .compatible ="renesas,r8a7795-usb3-peri" , .data = &renesas_usb3_priv_gen3, - }, - { + }, { + .compatible ="renesas,r8a77990-usb3-peri" , + .data = &renesas_usb3_priv_r8a77990, + }, { .compatible ="renesas,rcar-gen3-usb3-peri" , .data = &renesas_usb3_priv_gen3, },
@@ -2704,18 +2709,10 @@ static const struct of_device_id usb3_of_match[] = {MODULE_DEVICE_TABLE (of, usb3_of_match);static const struct soc_device_attribute renesas_usb3_quirks_match[] = { - { - .soc_id ="r8a774c0" , - .data = &renesas_usb3_priv_r8a77990, - }, { .soc_id ="r8a7795" , .revision ="ES1.*" , .data = &renesas_usb3_priv_r8a7795_es1, }, - { - .soc_id ="r8a77990" , - .data = &renesas_usb3_priv_r8a77990, - }, {/* sentinel */ }, };
drivers/usb/host/ehci-orion.c +6 -2
@@ -264,8 +264,11 @@ static int ehci_orion_drv_probe(struct platform_device *pdev)* the clock does not exists. */ priv->clk =devm_clk_get (&pdev->dev,NULL ); -if (!IS_ERR (priv->clk)) -clk_prepare_enable (priv->clk); +if (!IS_ERR (priv->clk)) { + err =clk_prepare_enable (priv->clk); +if (err) + goto err_put_hcd; + } priv->phy =devm_phy_optional_get (&pdev->dev,"usb" );if (IS_ERR (priv->phy)) {
@@ -311,6 +314,7 @@ static int ehci_orion_drv_probe(struct platform_device *pdev) err_dis_clk:if (!IS_ERR (priv->clk))clk_disable_unprepare (priv->clk); +err_put_hcd:usb_put_hcd (hcd); err: dev_err(&pdev->dev, "init %s fail, %d\n",
drivers/usb/host/ohci-tmio.c +3 -0
@@ -202,6 +202,9 @@ static int ohci_hcd_tmio_drv_probe(struct platform_device *dev)if (!cell)return -EINVAL ; +if (irq <0 ) +return irq; + hcd =usb_create_hcd (&ohci_tmio_hc_driver, &dev->dev,dev_name (&dev->dev));if (!hcd) { ret = -ENOMEM ;
drivers/usb/phy/phy-fsl-usb.c +2 -0
@@ -873,6 +873,8 @@ int usb_otg_start(struct platform_device *pdev)/* request irq */ p_otg->irq =platform_get_irq (pdev,0 ); +if (p_otg->irq <0 ) +return p_otg->irq; status =request_irq (p_otg->irq, fsl_otg_isr,IRQF_SHARED , driver_name, p_otg);if (status) {
drivers/usb/phy/phy-tahvo.c +3 -1
@@ -393,7 +393,9 @@ static int tahvo_usb_probe(struct platform_device *pdev)dev_set_drvdata (&pdev->dev, tu); - tu->irq =platform_get_irq (pdev,0 ); + tu->irq = ret =platform_get_irq (pdev,0 ); +if (ret <0 ) +return ret; ret =request_threaded_irq (tu->irq,NULL , tahvo_usb_vbus_interrupt,IRQF_ONESHOT ,"tahvo-vbus" , tu);
drivers/usb/phy/phy-twl6030-usb.c +5 -0
@@ -348,6 +348,11 @@ static int twl6030_usb_probe(struct platform_device *pdev) twl->irq2 =platform_get_irq (pdev,1 ); twl->linkstat =MUSB_UNKNOWN ; +if (twl->irq1 <0 ) +return twl->irq1; +if (twl->irq2 <0 ) +return twl->irq2; + twl->comparator.set_vbus = twl6030_set_vbus; twl->comparator.start_srp = twl6030_start_srp;
drivers/video/backlight/pwm_bl.c +28 -26
72 lines not on this page · raw message
drivers/video/fbdev/core/fbmem.c +6 -0
@@ -957,6 +957,7 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)struct fb_var_screeninfo old_var;struct fb_videomode mode;struct fb_event event; +u32 unused;if (var->activate &FB_ACTIVATE_INV_MODE ) {struct fb_videomode mode1, mode2;
@@ -1003,6 +1004,11 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)if (var->xres <8 || var->yres <8 )return -EINVAL ; +/* Too huge resolution causes multiplication overflow. */ +if (check_mul_overflow (var->xres, var->yres, &unused) || +check_mul_overflow (var->xres_virtual, var->yres_virtual, &unused)) +return -EINVAL ; + ret = info->fbops->fb_check_var (var, info);if (ret)
fs/cifs/cifs_unicode.c +2 -7
@@ -358,14 +358,9 @@ cifs_strndup_from_utf16(const char *src, const int maxlen,if (!dst)return NULL ;cifs_from_utf16 (dst, (__le16 *) src, len, maxlen, codepage, -NO_MAP_UNI_RSVD ); +NO_MAP_UNI_RSVD ); }else { - len =strnlen (src, maxlen); - len++; - dst =kmalloc (len,GFP_KERNEL ); -if (!dst) -return NULL ; -strlcpy (dst, src, len); + dst =kstrndup (src, maxlen,GFP_KERNEL ); }return dst;
fs/debugfs/file.c +6 -2
@@ -178,8 +178,10 @@ static int open_proxy_open(struct inode *inode, struct file *filp)if (!fops_get (real_fops)) {#ifdef CONFIG_MODULES if (real_fops->owner && - real_fops->owner->state ==MODULE_STATE_GOING ) + real_fops->owner->state ==MODULE_STATE_GOING ) { + r = -ENXIO ; goto out; + }#endif /* Huh? Module did not clean up after itself at exit? */
@@ -313,8 +315,10 @@ static int full_proxy_open(struct inode *inode, struct file *filp)if (!fops_get (real_fops)) {#ifdef CONFIG_MODULES if (real_fops->owner && - real_fops->owner->state ==MODULE_STATE_GOING ) + real_fops->owner->state ==MODULE_STATE_GOING ) { + r = -ENXIO ; goto out; + }#endif /* Huh? Module did not cleanup after itself at exit? */
fs/fcntl.c +3 -2
@@ -993,13 +993,14 @@ static void kill_fasync_rcu(struct fasync_struct *fa, int sig, int band) {while (fa) {struct fown_struct *fown; +unsigned long flags;if (fa->magic !=FASYNC_MAGIC ) {printk (KERN_ERR "kill_fasync: bad magic number in " "fasync_struct!\n" );return ; } -read_lock (&fa->fa_lock); +read_lock_irqsave (&fa->fa_lock, flags);if (fa->fa_file) { fown = &fa->fa_file->f_owner;/* Don't send SIGURG to processes which have not set a
@@ -1008,7 +1009,7 @@ static void kill_fasync_rcu(struct fasync_struct *fa, int sig, int band)if (!(sig ==SIGURG && fown->signum ==0 ))send_sigio (fown, fa->fa_fd, band); } -read_unlock (&fa->fa_lock); +read_unlock_irqrestore (&fa->fa_lock, flags); fa =rcu_dereference (fa->fa_next); } }
fs/fuse/file.c +6 -3
@@ -193,12 +193,11 @@ void fuse_finish_open(struct inode *inode, struct file *file)struct fuse_file *ff = file->private_data;struct fuse_conn *fc =get_fuse_conn (inode); -if (!(ff->open_flags &FOPEN_KEEP_CACHE )) -invalidate_inode_pages2 (inode->i_mapping);if (ff->open_flags &FOPEN_STREAM )stream_open (inode, file);else if (ff->open_flags &FOPEN_NONSEEKABLE )nonseekable_open (inode, file); +if (fc->atomic_o_trunc && (file->f_flags &O_TRUNC )) {struct fuse_inode *fi =get_fuse_inode (inode);
@@ -206,10 +205,14 @@ void fuse_finish_open(struct inode *inode, struct file *file) fi->attr_version =atomic64_inc_return (&fc->attr_version);i_size_write (inode,0 );spin_unlock (&fi->lock); +truncate_pagecache (inode,0 );fuse_invalidate_attr (inode);if (fc->writeback_cache)file_update_time (file); + }else if (!(ff->open_flags &FOPEN_KEEP_CACHE )) { +invalidate_inode_pages2 (inode->i_mapping); } +if ((file->f_mode &FMODE_WRITE ) && fc->writeback_cache)fuse_link_write_file (file); }
@@ -3185,7 +3188,7 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter)static int fuse_writeback_range (struct inode *inode,loff_t start,loff_t end) { -int err =filemap_write_and_wait_range (inode->i_mapping, start, end); +int err =filemap_write_and_wait_range (inode->i_mapping, start,-1 );if (!err)fuse_sync_writes (inode);
fs/iomap/swapfile.c +6 -0
@@ -30,11 +30,16 @@ static int iomap_swapfile_add_extent(struct iomap_swapfile_info *isi) {struct iomap *iomap = &isi->iomap;unsigned long nr_pages; +unsigned long max_pages;uint64_t first_ppage;uint64_t first_ppage_reported;uint64_t next_ppage;int error; +if (unlikely (isi->nr_pages >= isi->sis->max)) +return 0 ; + max_pages = isi->sis->max - isi->nr_pages; +/* * Round the start up and the end down so that the physical * extent aligns to a page boundary.
@@ -47,6 +52,7 @@ static int iomap_swapfile_add_extent(struct iomap_swapfile_info *isi)if (first_ppage >= next_ppage)return 0 ; nr_pages = next_ppage - first_ppage; + nr_pages =min (nr_pages, max_pages);/* * Calculate how much swap space we're adding; the first page contains
fs/isofs/inode.c +13 -14
@@ -155,7 +155,6 @@ struct iso9660_options{ unsigned int overriderockperm:1; unsigned int uid_set:1; unsigned int gid_set:1; - unsigned int utf8:1;unsigned char map;unsigned char check;unsigned int blocksize;
@@ -355,7 +354,6 @@ static int parse_options(char *options, struct iso9660_options *popt) popt->gid =GLOBAL_ROOT_GID ; popt->uid =GLOBAL_ROOT_UID ; popt->iocharset =NULL ; - popt->utf8 =0 ; popt->overriderockperm =0 ; popt->session=-1 ; popt->sbsector=-1 ;
@@ -388,10 +386,13 @@ static int parse_options(char *options, struct iso9660_options *popt)case Opt_cruft: popt->cruft =1 ;break ; +#ifdef CONFIG_JOLIET case Opt_utf8: - popt->utf8 =1 ; +kfree (popt->iocharset); + popt->iocharset =kstrdup ("utf8" ,GFP_KERNEL ); +if (!popt->iocharset) +return 0 ;break ; -#ifdef CONFIG_JOLIET case Opt_iocharset:kfree (popt->iocharset); popt->iocharset =match_strdup (&args[0 ]);
@@ -494,7 +495,6 @@ static int isofs_show_options(struct seq_file *m, struct dentry *root)if (sbi->s_nocompress)seq_puts (m,",nocompress" );if (sbi->s_overriderockperm)seq_puts (m,",overriderockperm" );if (sbi->s_showassoc)seq_puts (m,",showassoc" ); -if (sbi->s_utf8)seq_puts (m,",utf8" );if (sbi->s_check)seq_printf (m,",check=%c" , sbi->s_check);if (sbi->s_mapping)seq_printf (m,",map=%c" , sbi->s_mapping);
@@ -517,9 +517,10 @@ static int isofs_show_options(struct seq_file *m, struct dentry *root)seq_printf (m,",fmode=%o" , sbi->s_fmode);#ifdef CONFIG_JOLIET -if (sbi->s_nls_iocharset && -strcmp (sbi->s_nls_iocharset->charset,CONFIG_NLS_DEFAULT ) !=0 ) +if (sbi->s_nls_iocharset)seq_printf (m,",iocharset=%s" , sbi->s_nls_iocharset->charset); +else +seq_puts (m,",iocharset=utf8" );#endif return 0 ; }
@@ -867,14 +868,13 @@ static int isofs_fill_super(struct super_block *s, void *data, int silent) sbi->s_nls_iocharset =NULL ;#ifdef CONFIG_JOLIET -if (joliet_level && opt.utf8 ==0 ) { +if (joliet_level) {char *p = opt.iocharset ? opt.iocharset :CONFIG_NLS_DEFAULT ; - sbi->s_nls_iocharset =load_nls (p); -if (! sbi->s_nls_iocharset) { -/* Fail only if explicit charset specified */ -if (opt.iocharset) +if (strcmp (p,"utf8" ) !=0 ) { + sbi->s_nls_iocharset = opt.iocharset ? +load_nls (opt.iocharset) :load_nls_default (); +if (!sbi->s_nls_iocharset) goto out_freesbi; - sbi->s_nls_iocharset =load_nls_default (); } }#endif
@@ -890,7 +890,6 @@ static int isofs_fill_super(struct super_block *s, void *data, int silent) sbi->s_gid = opt.gid; sbi->s_uid_set = opt.uid_set; sbi->s_gid_set = opt.gid_set; - sbi->s_utf8 = opt.utf8; sbi->s_nocompress = opt.nocompress; sbi->s_overriderockperm = opt.overriderockperm;/*
fs/isofs/isofs.h +0 -1
@@ -44,7 +44,6 @@ struct isofs_sb_info {unsigned char s_session; unsigned int s_high_sierra:1; unsigned int s_rock:2; - unsigned int s_utf8:1; unsigned int s_cruft:1; /* Broken disks with high byte of length* containing junk */ unsigned int s_nocompress:1;
fs/isofs/joliet.c +1 -3
@@ -41,14 +41,12 @@ uni16_to_x8(unsigned char *ascii, __be16 *uni, int len, struct nls_table *nls)int get_joliet_filename (struct iso_directory_record * de,unsigned char *outname,struct inode * inode) { -unsigned char utf8;struct nls_table *nls;unsigned char len =0 ; - utf8 =ISOFS_SB (inode->i_sb)->s_utf8; nls =ISOFS_SB (inode->i_sb)->s_nls_iocharset; -if (utf8) { +if (!nls) { len =utf16s_to_utf8s ((const wchar_t *) de->name, de->name_len[0 ] >>1 ,UTF16_BIG_ENDIAN , outname,PAGE_SIZE );
fs/lockd/svclock.c +1 -1
@@ -634,7 +634,7 @@ nlmsvc_testlock(struct svc_rqst *rqstp, struct nlm_file *file, conflock->caller ="somehost" ;/* FIXME */ conflock->len =strlen (conflock->caller); conflock->oh.len =0 ;/* don't return OH info */ - conflock->svid = ((struct nlm_lockowner *)lock->fl.fl_owner)->pid; + conflock->svid = lock->fl.fl_pid; conflock->fl.fl_type = lock->fl.fl_type; conflock->fl.fl_start = lock->fl.fl_start; conflock->fl.fl_end = lock->fl.fl_end;
fs/nfsd/nfs4state.c +2 -2
@@ -2572,9 +2572,9 @@ static void force_expire_client(struct nfs4_client *clp)struct nfsd_net *nn =net_generic (clp->net, nfsd_net_id);bool already_expired; -spin_lock (&clp->cl_lock); +spin_lock (&nn->client_lock); clp->cl_time =0 ; -spin_unlock (&clp->cl_lock); +spin_unlock (&nn->client_lock);wait_event (expiry_wq,atomic_read (&clp->cl_rpc_users) ==0 );spin_lock (&nn->client_lock);
fs/udf/misc.c +11 -2
@@ -173,13 +173,22 @@ struct genericFormat *udf_get_extendedattr(struct inode *inode, uint32_t type,else offset =le32_to_cpu (eahd->appAttrLocation); -while (offset < iinfo->i_lenEAttr) { +while (offset +sizeof (*gaf) < iinfo->i_lenEAttr) { +uint32_t attrLength; + gaf = (struct genericFormat *)&ea[offset]; + attrLength =le32_to_cpu (gaf->attrLength); + +/* Detect undersized elements and buffer overflows */ +if ((attrLength <sizeof (*gaf)) || + (attrLength > (iinfo->i_lenEAttr - offset))) +break ; +if (le32_to_cpu (gaf->attrType) == type && gaf->attrSubtype == subtype)return gaf;else - offset +=le32_to_cpu (gaf->attrLength); + offset += attrLength; } }
fs/udf/super.c +35 -40
138 lines not on this page · raw message
fs/udf/udf_sb.h +0 -2
@@ -20,8 +20,6 @@#define UDF_FLAG_UNDELETE 6#define UDF_FLAG_UNHIDE 7#define UDF_FLAG_VARCONV 8 -#define UDF_FLAG_NLS_MAP 9 -#define UDF_FLAG_UTF8 10#define UDF_FLAG_UID_FORGET 11/* save -1 for uid to disk */ #define UDF_FLAG_GID_FORGET 12#define UDF_FLAG_UID_SET 13
fs/udf/unicode.c +2 -2
@@ -177,7 +177,7 @@ static int udf_name_from_CS0(struct super_block *sb,return 0 ; } -if (UDF_QUERY_FLAG (sb,UDF_FLAG_NLS_MAP )) +if (UDF_SB (sb)->s_nls_map) conv_f =UDF_SB (sb)->s_nls_map->uni2char;else conv_f =NULL ;
@@ -285,7 +285,7 @@ static int udf_name_to_CS0(struct super_block *sb,if (ocu_max_len <=0 )return 0 ; -if (UDF_QUERY_FLAG (sb,UDF_FLAG_NLS_MAP )) +if (UDF_SB (sb)->s_nls_map) conv_f =UDF_SB (sb)->s_nls_map->char2uni;else conv_f =NULL ;
include/linux/bpf_verifier.h +10 -1
@@ -194,6 +194,13 @@ struct bpf_idx_pair {u32 idx; }; +struct bpf_id_pair { +u32 old; +u32 cur; +}; + +/* Maximum number of register states that can exist at once */ +#define BPF_ID_MAP_SIZE (MAX_BPF_REG + MAX_BPF_STACK / BPF_REG_SIZE)#define MAX_CALL_FRAMES 8struct bpf_verifier_state {/* call stack tracking */
@@ -301,8 +308,8 @@ struct bpf_insn_aux_data { }; };int ctx_field_size;/* the ctx field size for load insn, maybe 0 */ -int sanitize_stack_off;/* stack slot to be cleared */ bool seen;/* this insn was processed by the verifier */ +bool sanitize_stack_spill;/* subject to Spectre v4 sanitation */ bool zext_dst;/* this insn zero extends dst reg */ u8 alu_state;/* used in combination with alu_limit */ bool prune_point;
@@ -364,12 +371,14 @@ struct bpf_verifier_env {struct bpf_map *used_maps[MAX_USED_MAPS ];/* array of map's used by eBPF program */ u32 used_map_cnt;/* number of used maps */ u32 id_gen;/* used to generate unique reg IDs */ +bool explore_alu_limits;bool allow_ptr_leaks;bool seen_direct_write;struct bpf_insn_aux_data *insn_aux_data;/* array of per-insn state */ const struct bpf_line_info *prev_linfo;struct bpf_verifier_log log;struct bpf_subprog_info subprog_info[BPF_MAX_SUBPROGS +1 ]; +struct bpf_id_pair idmap_scratch[BPF_ID_MAP_SIZE ];struct {int *insn_state;int *insn_stack;
include/linux/energy_model.h +16 -0
@@ -42,6 +42,22 @@ struct em_perf_domain {#define EM_CPU_MAX_POWER 0xFFFF +/* +* Increase resolution of energy estimation calculations for 64-bit +* architectures. The extra resolution improves decision made by EAS for the +* task placement when two Performance Domains might provide similar energy +* estimation values (w/o better resolution the values could be equal). +* +* We increase resolution only if we have enough bits to allow this increased +* resolution (i.e. 64-bit). The costs for increasing resolution when 32-bit +* are pretty high and the returns do not justify the increased costs. +*/ +#ifdef CONFIG_64BIT +#define em_scale_power (p) ((p) * 1000) +#else +#define em_scale_power (p) (p) +#endif +struct em_data_callback {/** * active_power() - Provide power at the next capacity state of a CPU
include/linux/filter.h +15 -0
@@ -68,6 +68,11 @@ struct ctl_table_header;/* unused opcode to mark call to interpreter with arguments */ #define BPF_CALL_ARGS 0xe0 +/* unused opcode to mark speculation barrier for mitigating +* Speculative Store Bypass +*/ +#define BPF_NOSPEC 0xc0 +/* As per nm, we expose JITed images as text (code) section for * kallsyms. That way, tools like perf can find it to match * addresses.
@@ -368,6 +373,16 @@ static inline bool insn_is_zext(const struct bpf_insn *insn) .off = 0, \ .imm = 0 }) +/* Speculation barrier */ + +#define BPF_ST_NOSPEC () \ + ((struct bpf_insn) { \ + .code = BPF_ST | BPF_NOSPEC, \ + .dst_reg = 0, \ + .src_reg = 0, \ + .off = 0, \ + .imm = 0 }) +/* Internal classic blocks for direct assignment */ #define __BPF_STMT (CODE ,K ) \
include/linux/hrtimer.h +0 -5
@@ -317,16 +317,12 @@ struct clock_event_device;extern void hrtimer_interrupt (struct clock_event_device *dev); -extern void clock_was_set_delayed (void ); -extern unsigned int hrtimer_resolution;#else #define hrtimer_resolution (unsigned int)LOW_RES_NSEC -static inline void clock_was_set_delayed (void ) { } -#endif static inline ktime_t
@@ -350,7 +346,6 @@ hrtimer_expires_remaining_adjusted(const struct hrtimer *timer) timer->base->get_time()); } -extern void clock_was_set (void );#ifdef CONFIG_TIMERFD extern void timerfd_clock_was_set (void );#else
include/linux/power/max17042_battery.h +1 -1
@@ -69,7 +69,7 @@ enum max17042_register { MAX17042_RelaxCFG =0x2A , MAX17042_MiscCFG =0x2B ,MAX17042_TGAIN =0x2C , - MAx17042_TOFF =0x2D , +MAX17042_TOFF =0x2D ,MAX17042_CGAIN =0x2E , MAX17042_COFF = 0x2F,
include/linux/time64.h +7 -2
@@ -33,7 +33,9 @@ struct itimerspec64 {#define TIME64_MIN (-TIME64_MAX - 1)#define KTIME_MAX ((s64)~((u64)1 << 63)) +#define KTIME_MIN (-KTIME_MAX - 1)#define KTIME_SEC_MAX (KTIME_MAX / NSEC_PER_SEC) +#define KTIME_SEC_MIN (KTIME_MIN / NSEC_PER_SEC)/* * Limits for settimeofday():
@@ -132,10 +134,13 @@ static inline bool timespec64_valid_settod(const struct timespec64 *ts)*/ static inline s64 timespec64_to_ns (const struct timespec64 *ts) { -/* Prevent multiplication overflow */ -if ((unsigned long long )ts->tv_sec >=KTIME_SEC_MAX ) +/* Prevent multiplication overflow / underflow */ +if (ts->tv_sec >=KTIME_SEC_MAX )return KTIME_MAX ; +if (ts->tv_sec <=KTIME_SEC_MIN ) +return KTIME_MIN ; +return ((s64 ) ts->tv_sec *NSEC_PER_SEC ) + ts->tv_nsec; }
include/uapi/linux/bpf.h +1 -1
@@ -2264,7 +2264,7 @@ union bpf_attr {* int bpf_sk_select_reuseport(struct sk_reuseport_md *reuse, struct bpf_map *map, void *key, u64 flags) * Description * Select a **SO_REUSEPORT** socket from a -* **BPF_MAP_TYPE_REUSEPORT_ARRAY** *map*. +* **BPF_MAP_TYPE_REUSEPORT_SOCKARRAY** *map*. * It checks the selected socket is matching the incoming * request in the socket buffer. * Return
kernel/bpf/core.c +17 -1
@@ -31,6 +31,7 @@#include <linux/rcupdate.h> #include <linux/perf_event.h> +#include <asm/barrier.h> #include <asm/unaligned.h> /* Registers */
@@ -1310,6 +1311,7 @@ static u64 ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn, u64 *stack)/* Non-UAPI available opcodes. */ [BPF_JMP | BPF_CALL_ARGS] = &&JMP_CALL_ARGS, [BPF_JMP | BPF_TAIL_CALL] = &&JMP_TAIL_CALL, + [BPF_ST | BPF_NOSPEC] = &&ST_NOSPEC, };#undef BPF_INSN_3_LBL#undef BPF_INSN_2_LBL
@@ -1550,7 +1552,21 @@ static u64 ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn, u64 *stack) COND_JMP(s, JSGE, >=) COND_JMP(s, JSLE, <=) #undef COND_JMP - /* STX and ST and LDX*/ + /* ST, STX and LDX*/ + ST_NOSPEC: + /* Speculation barrier for mitigating Speculative Store Bypass. + * In case of arm64, we rely on the firmware mitigation as + * controlled via the ssbd kernel parameter. Whenever the + * mitigation is enabled, it works for all of the kernel code + * with no need to provide any additional instructions here. + * In case of x86, we use 'lfence' insn for mitigation. We + * reuse preexisting logic from Spectre v1 mitigation that + * happens to produce the required code on x86 for v4 as well. + */ +#ifdef CONFIG_X86 + barrier_nospec(); +#endif + CONT; #define LDST(SIZEOP, SIZE) \ STX_MEM_##SIZEOP: \ *(SIZE *)(unsigned long) (DST + insn->off) = SRC; \
kernel/bpf/disasm.c +9 -7
@@ -162,15 +162,17 @@ void print_bpf_insn(const struct bpf_insn_cbs *cbs,else verbose (cbs->private_data,"BUG_%02x\n" , insn->code); }else if (class ==BPF_ST ) { -if (BPF_MODE (insn->code) !=BPF_MEM ) { +if (BPF_MODE (insn->code) ==BPF_MEM ) { +verbose (cbs->private_data,"(%02x) *(%s *)(r%d %+d) = %d\n" , + insn->code, + bpf_ldst_string[BPF_SIZE (insn->code) >>3 ], + insn->dst_reg, + insn->off, insn->imm); + }else if (BPF_MODE (insn->code) ==0xc0 /* BPF_NOSPEC, no UAPI */ ) { +verbose (cbs->private_data,"(%02x) nospec\n" , insn->code); + }else {verbose (cbs->private_data,"BUG_st_%02x\n" , insn->code); -return ; } -verbose (cbs->private_data,"(%02x) *(%s *)(r%d %+d) = %d\n" , - insn->code, - bpf_ldst_string[BPF_SIZE (insn->code) >>3 ], - insn->dst_reg, - insn->off, insn->imm); }else if (class ==BPF_LDX ) {if (BPF_MODE (insn->code) !=BPF_MEM ) {verbose (cbs->private_data,"BUG_ldx_%02x\n" , insn->code);
kernel/bpf/verifier.c +80 -103
14 lines not on this page · raw message
kernel/time/hrtimer.c +69 -23
92 lines not on this page · raw message
net/ipv4/route.c +31 -17
48 lines not on this page · raw message
sound/soc/intel/skylake/skl-topology.c +10 -15
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.