Linux 5.4.282
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.282 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
------------
Documentation/arm64/cpu-feature-registers.rst | 38 ++ Documentation/arm64/silicon-errata.rst | 36 ++ Makefile | 2 arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi | 21 - arch/arm64/Kconfig | 38 ++ arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 4 arch/arm64/boot/dts/amlogic/meson-gxl.dtsi | 4 arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts | 4 arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | 4 arch/arm64/boot/dts/qcom/msm8996.dtsi | 2 arch/arm64/boot/dts/qcom/sdm845.dtsi | 2 arch/arm64/boot/dts/rockchip/rk3328.dtsi | 4 arch/arm64/include/asm/cpucaps.h | 3 arch/arm64/include/asm/cputype.h | 16 arch/arm64/kernel/cpu_errata.c | 44 ++ arch/arm64/kernel/cpufeature.c | 90 ++++- arch/m68k/amiga/config.c | 9 arch/m68k/atari/ataints.c | 6 arch/m68k/include/asm/cmpxchg.h | 2 arch/mips/include/asm/mips-cm.h | 4 arch/mips/kernel/smp-cps.c | 5 arch/powerpc/kvm/powerpc.c | 4 arch/powerpc/xmon/ppc-dis.c | 33 - arch/sparc/include/asm/oplib_64.h | 1 arch/sparc/prom/init_64.c | 3 arch/sparc/prom/p1275.c | 2 arch/um/kernel/time.c | 4 arch/x86/events/intel/pt.c | 4 arch/x86/events/intel/pt.h | 4 arch/x86/kernel/cpu/mtrr/mtrr.c | 2 arch/x86/kernel/devicetree.c | 2 arch/x86/mm/pti.c | 6 arch/x86/pci/intel_mid_pci.c | 4 arch/x86/pci/xen.c | 4 arch/x86/platform/intel/iosf_mbi.c | 4 arch/x86/xen/p2m.c | 4 drivers/acpi/battery.c | 16 drivers/acpi/sbs.c | 23 - drivers/android/binder.c | 4 drivers/base/core.c | 13 drivers/base/devres.c | 8 drivers/base/module.c | 4 drivers/block/rbd.c | 35 - drivers/bluetooth/btusb.c | 4 drivers/char/hw_random/amd-rng.c | 4 drivers/char/tpm/eventlog/common.c | 2 drivers/clk/davinci/da8xx-cfgchip.c | 4 drivers/clocksource/sh_cmt.c | 13 drivers/edac/Makefile | 10 drivers/edac/skx_base.c | 51 ++ drivers/edac/skx_common.c | 146 +++++--- drivers/edac/skx_common.h | 19 - drivers/firmware/turris-mox-rwtm.c | 18 - drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 7 drivers/gpu/drm/amd/display/dc/core/dc_surface.c | 3 drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c | 5 drivers/gpu/drm/drm_client_modeset.c | 5 drivers/gpu/drm/etnaviv/etnaviv_gem.c | 6 drivers/gpu/drm/gma500/cdv_intel_lvds.c | 3 drivers/gpu/drm/gma500/psb_intel_lvds.c | 3 drivers/gpu/drm/i915/gem/i915_gem_mman.c | 47 ++ drivers/gpu/drm/mgag200/mgag200_i2c.c | 2 drivers/gpu/drm/nouveau/nouveau_prime.c | 3 drivers/gpu/drm/panfrost/panfrost_drv.c | 1 drivers/gpu/drm/qxl/qxl_display.c | 3 drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c | 2 drivers/hid/wacom_wac.c | 3 drivers/hwmon/adt7475.c | 2 drivers/hwmon/max6697.c | 5 drivers/i2c/i2c-smbus.c | 69 +++ drivers/infiniband/core/device.c | 6 drivers/infiniband/core/iwcm.c | 11 drivers/infiniband/hw/bnxt_re/ib_verbs.c | 8 drivers/infiniband/hw/bnxt_re/qplib_fp.h | 6 drivers/infiniband/hw/mlx4/alias_GUID.c | 2 drivers/infiniband/hw/mlx4/mad.c | 2 drivers/infiniband/sw/rxe/rxe_req.c | 7 drivers/input/keyboard/qt1050.c | 7 drivers/input/mouse/elan_i2c_core.c | 2 drivers/irqchip/irq-imx-irqsteer.c | 40 +- drivers/irqchip/irq-mbigen.c | 20 - drivers/isdn/hardware/mISDN/hfcmulti.c | 7 drivers/leds/led-triggers.c | 2 drivers/leds/leds-ss4200.c | 7 drivers/macintosh/therm_windtunnel.c | 2 drivers/md/raid5.c | 20 - drivers/media/pci/saa7134/saa7134-dvb.c | 8 drivers/media/platform/qcom/venus/vdec.c | 1 drivers/media/platform/vsp1/vsp1_histo.c | 20 - drivers/media/platform/vsp1/vsp1_pipe.h | 2 drivers/media/platform/vsp1/vsp1_rpf.c | 8 drivers/media/rc/imon.c | 5 drivers/media/usb/uvc/uvc_ctrl.c | 90 +++-- drivers/media/usb/uvc/uvc_video.c | 37 +- drivers/media/usb/uvc/uvcvideo.h | 5 drivers/mfd/omap-usb-tll.c | 3 drivers/mtd/tests/Makefile | 34 - drivers/mtd/tests/mtd_test.c | 9 drivers/mtd/ubi/eba.c | 3 drivers/net/bonding/bond_main.c | 7 drivers/net/ethernet/brocade/bna/bna_types.h | 2 drivers/net/ethernet/brocade/bna/bnad.c | 11 drivers/net/ethernet/freescale/fec_main.c | 52 ++ drivers/net/ethernet/freescale/fec_ptp.c | 3 drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 7 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c | 13 drivers/net/ethernet/qlogic/qed/qed_l2.c | 23 - drivers/net/ethernet/qlogic/qede/qede_filter.c | 47 +- drivers/net/netconsole.c | 2 drivers/net/usb/qmi_wwan.c | 1 drivers/net/usb/sr9700.c | 11 drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_lcn.c | 18 - drivers/net/wireless/marvell/mwifiex/cfg80211.c | 2 drivers/net/wireless/virt_wifi.c | 20 - drivers/nvme/host/pci.c | 10 drivers/parport/daisy.c | 6 drivers/parport/ieee1284.c | 4 drivers/parport/ieee1284_ops.c | 3 drivers/parport/parport_amiga.c | 2 drivers/parport/parport_atari.c | 2 drivers/parport/parport_cs.c | 6 drivers/parport/parport_gsc.c | 15 drivers/parport/parport_ip32.c | 25 - drivers/parport/parport_mfc3.c | 2 drivers/parport/parport_pc.c | 178 ++++------ drivers/parport/parport_sunbpp.c | 2 drivers/parport/probe.c | 7 drivers/parport/procfs.c | 28 - drivers/parport/share.c | 24 - drivers/pci/controller/pci-hyperv.c | 4 drivers/pci/controller/pcie-rockchip.c | 12 drivers/pci/setup-bus.c | 6 drivers/pinctrl/core.c | 12 drivers/pinctrl/freescale/pinctrl-mxs.c | 4 drivers/pinctrl/pinctrl-single.c | 7 drivers/pinctrl/ti/pinctrl-ti-iodelay.c | 14 drivers/platform/chrome/cros_ec_debugfs.c | 1 drivers/platform/mips/cpu_hwmon.c | 3 drivers/power/supply/axp288_charger.c | 22 - drivers/pwm/pwm-stm32.c | 5 drivers/remoteproc/imx_rproc.c | 5 drivers/rtc/interface.c | 9 drivers/rtc/rtc-cmos.c | 10 drivers/rtc/rtc-isl1208.c | 11 drivers/s390/char/sclp_sd.c | 10 drivers/scsi/mpt3sas/mpt3sas_base.c | 38 +- drivers/scsi/qla2xxx/qla_bsg.c | 2 drivers/scsi/qla2xxx/qla_mid.c | 2 drivers/scsi/qla2xxx/qla_nvme.c | 5 drivers/scsi/qla2xxx/qla_os.c | 7 drivers/scsi/ufs/ufshcd.c | 11 drivers/spi/spi-fsl-lpspi.c | 11 drivers/tty/serial/serial_core.c | 8 drivers/usb/core/urb.c | 31 + drivers/usb/gadget/udc/core.c | 10 drivers/usb/serial/usb_debug.c | 7 drivers/usb/usbip/vhci_hcd.c | 9 fs/btrfs/free-space-cache.c | 1 fs/exec.c | 8 fs/ext4/mballoc.c | 3 fs/ext4/namei.c | 73 +++- fs/ext4/xattr.c | 6 fs/f2fs/inode.c | 3 fs/file.c | 1 fs/hfs/inode.c | 3 fs/hfsplus/bfind.c | 15 fs/hfsplus/extents.c | 9 fs/hfsplus/hfsplus_fs.h | 21 + fs/jbd2/journal.c | 1 fs/jfs/jfs_imap.c | 5 fs/nilfs2/btnode.c | 25 + fs/nilfs2/btree.c | 4 fs/nilfs2/segment.c | 7 fs/udf/balloc.c | 51 +- fs/udf/super.c | 3 include/linux/compiler_attributes.h | 1 include/linux/irq.h | 7 include/linux/irqdomain.h | 10 include/linux/objagg.h | 1 include/linux/pci_ids.h | 2 include/linux/platform_data/x86/soc.h | 65 +++ include/linux/qed/qed_eth_if.h | 21 - include/linux/trace_events.h | 1 include/linux/usb.h | 1 include/net/netfilter/nf_tables.h | 21 + include/net/sctp/sctp.h | 4 include/net/sctp/structs.h | 8 include/trace/events/rpcgss.h | 2 include/uapi/linux/netfilter/nf_tables.h | 2 include/uapi/linux/zorro_ids.h | 3 kernel/debug/kdb/kdb_io.c | 6 kernel/dma/mapping.c | 2 kernel/events/core.c | 2 kernel/events/internal.h | 2 kernel/irq/chip.c | 32 + kernel/irq/irqdesc.c | 1 kernel/time/ntp.c | 9 kernel/time/tick-broadcast.c | 24 + kernel/trace/tracing_map.c | 6 kernel/watchdog_hld.c | 11 lib/decompress_bunzip2.c | 3 lib/kobject_uevent.c | 17 lib/objagg.c | 18 - mm/page-writeback.c | 30 + net/bluetooth/l2cap_core.c | 1 net/core/filter.c | 15 net/core/link_watch.c | 4 net/ipv4/nexthop.c | 7 net/ipv4/route.c | 2 net/ipv6/addrconf.c | 3 net/ipv6/ndisc.c | 34 + net/iucv/af_iucv.c | 4 net/netfilter/ipset/ip_set_list_set.c | 3 net/netfilter/ipvs/ip_vs_proto_sctp.c | 4 net/netfilter/nf_conntrack_netlink.c | 3 net/netfilter/nf_tables_api.c | 128 +------ net/netfilter/nft_set_hash.c | 8 net/netfilter/nft_set_rbtree.c | 6 net/packet/af_packet.c | 86 ++++ net/sctp/input.c | 46 +- net/sctp/proc.c | 10 net/sctp/socket.c | 6 net/smc/smc_core.c | 32 - net/sunrpc/auth_gss/gss_krb5_keys.c | 2 net/sunrpc/clnt.c | 3 net/sunrpc/sched.c | 4 net/tipc/udp_media.c | 5 net/wireless/nl80211.c | 10 net/wireless/util.c | 8 scripts/gcc-x86_32-has-stack-protector.sh | 2 scripts/gcc-x86_64-has-stack-protector.sh | 2 security/apparmor/lsm.c | 7 sound/pci/hda/patch_hdmi.c | 2 sound/soc/codecs/max98088.c | 10 sound/soc/intel/common/soc-intel-quirks.h | 55 --- sound/usb/helper.c | 16 sound/usb/helper.h | 1 sound/usb/line6/driver.c | 5 sound/usb/mixer_scarlett_gen2.c | 2 sound/usb/quirks.c | 12 sound/usb/stream.c | 4 tools/lib/bpf/btf_dump.c | 8 tools/memory-model/lock.cat | 20 - tools/perf/util/sort.c | 2 tools/testing/selftests/bpf/prog_tests/send_signal.c | 3 tools/testing/selftests/bpf/progs/btf_dump_test_case_multidim.c | 4 tools/testing/selftests/bpf/progs/btf_dump_test_case_syntax.c | 4 tools/testing/selftests/bpf/test_sockmap.c | 3 tools/testing/selftests/net/forwarding/devlink_lib.sh | 2 tools/testing/selftests/sigaltstack/current_stack_pointer.h | 2 250 files changed, 2102 insertions(+), 1194 deletions(-)
Adrian Hunter (4):
perf/x86/intel/pt: Fix pt_topa_entry_for_page() address calculation
perf: Fix perf_aux_size() for greater-than 32-bit size
perf: Prevent passing zero nr_pages to rb_alloc_aux() perf/x86/intel/pt: Fix a topa_entry base address calculation
Al Viro (2):
powerpc: fix a file leak in kvm_vcpu_ioctl_enable_cap() protect the fetch of ->fd[fd] in do_dup2() from mispredictions
Alan Stern (1):
tools/memory-model: Fix bug in lock.cat
Aleksandr Burakov (1):
saa7134: Unchecked i2c_transfer function result fixed
Aleksandr Mishin (1):
remoteproc: imx_rproc: Skip over memory region when node value is NULL
Alex Shi (1):
fs/nilfs2: remove some unused macros to tame gcc
Alexander Maltsev (1):
netfilter: ipset: Add list flush to cancel_gc
Alexandra Winter (1):
net/iucv: fix use after free in iucv_sock_close()
Alexey Kodanev (1):
bna: adjust 'name' buf size of bna_tcb and bna_ccb structures
Amit Cohen (1):
selftests: forwarding: devlink_lib: Wait for udev events after reloading
Amit Daniel Kachhap (1):
arm64: cpufeature: Fix the visibility of compat hwcaps
Andi Kleen (1):
x86/mtrr: Check if fixed MTRRs exist before saving them
Andi Shyti (1):
drm/i915/gem: Fix Virtual Memory mapping boundaries calculation
Andreas Larsson (1):
sparc64: Fix incorrect function signature and add prototype for prom_cif_init
Andrei Lalaev (1):
Input: qt1050 - handle CHIP_ID reading error
Andrii Nakryiko (1):
libbpf: Fix no-args func prototype BTF dumping syntax
Andy Shevchenko (1):
driver core: Cast to (void *) with __force for __percpu pointer
Arnd Bergmann (3):
EDAC, i10nm: make skx_common.o a separate module
mtd: make mtd_test.c a separate module
kdb: address -Wformat-security warnings
Baochen Qiang (2):
wifi: cfg80211: fix typo in cfg80211_calculate_bitrate_he()
wifi: cfg80211: handle 2x996 RU allocation in cfg80211_calculate_bitrate_he()Baokun Li (2):
ext4: check dot and dotdot of dx_root before making dir indexed
ext4: make sure the first directory block is not a hole
Bart Van Assche (1):
RDMA/iwcm: Fix a use-after-free related to destroying CM IDs
Bastien Curutchet (1):
clk: davinci: da8xx-cfgchip: Initialize clk_init_data before use
Benjamin Coddington (2):
SUNRPC: Fixup gss_status tracepoint error output
SUNRPC: Fix a race to wake a sync task
Besar Wicaksono (1):
arm64: Add Neoverse-V2 part
Breno Leitao (1):
net: netconsole: Disable target before netpoll cleanup
Carlos Llamas (1):
binder: fix hang of unregistered readers
Chao Yu (3):
hfsplus: fix to avoid false alarm of circular locking
hfs: fix to initialize fields of hfs_inode_info after hfs_alloc_inode()
f2fs: fix to don't dirty inode for readonly filesystem
Chen Ni (3):
x86/xen: Convert comma to semicolon drm/qxl: Add check for drm_cvt_mode
ASoC: max98088: Check for clk_prepare_enable() error
Chen-Yu Tsai (1):
PCI: rockchip: Make 'ep-gpios' DT property optional
Chengen Du (1):
af_packet: Handle outgoing VLAN packets without hardware offloading
Chris Wulff (1):
usb: gadget: core: Check for unset descriptor
Corey Minyard (1):
i2c: smbus: Don't filter out duplicate alerts
Csókás Bence (1):
net: fec: Refactor: #define magic constants
Csókás, Bence (3):
net: fec: Fix FEC_ECR_EN1588 being cleared on link-down
rtc: interface: Add RTC offset to alarm after fix-up
net: fec: Stop PPS on driver remove
Damien Le Moal (1):
scsi: mpt3sas: Avoid IOMMU page faults on REPORT ZONES
Dan Carpenter (1):
mISDN: Fix a use after free in hfcmulti_tx()
Dan Williams (1):
driver core: Fix uevent_show() vs driver detach race
Daniel Schaefer (1):
media: uvcvideo: Override default flags
Daniele Palmas (1):
net: usb: qmi_wwan: fix memory leak for not ip packets
Danilo Krummrich (1):
drm/nouveau: prime: fix refcount underflow
Dikshita Agarwal (1):
media: venus: fix use after free in vdec_close
Dmitry Antipov (1):
Bluetooth: l2cap: always unlock channel in l2cap_conless_channel()
Dmitry Baryshkov (2):
arm64: dts: qcom: sdm845: add power-domain to UFS PHY
arm64: dts: qcom: msm8996: specify UFS core_clk frequencies
Dmitry Torokhov (1):
Input: elan_i2c - do not leave interrupt disabled on suspend failure
Dominique Martinet (1):
MIPS: Octeron: remove source file executable bit
Dong Aisheng (1):
remoteproc: imx_rproc: Fix ignoring mapping vdev regions
Douglas Anderson (1):
kdb: Use the passed prompt in kdb_position_cursor()
Dragan Simic (1):
drm/panfrost: Mark simple_ondemand governor as softdep
Eero Tamminen (1):
m68k: atari: Fix TT bootup freeze / unexpected (SCU) interrupt messages
En-Wei Wu (1):
wifi: virt_wifi: avoid reporting connection success with wrong SSID
Eric Dumazet (1):
net: linkwatch: use system_unbound_wq
FUJITA Tomonori (1):
PCI: Add Edimax Vendor ID to pci_ids.h
Fedor Pchelkin (1):
ubi: eba: properly rollback inside self_check_eba
Filipe Manana (1):
btrfs: fix bitmap leak when loading free space cache on duplicate entry
Florian Westphal (1):
netfilter: nf_tables: prefer nft_chain_validate
Fred Li (1):
bpf: Fix a segment issue when downgrading gso_size
Gaosheng Cui (1):
gss_krb5: Fix the error handling path for crypto_sync_skcipher_setkey
Geliang Tang (1):
selftests/bpf: Check length of recv in test_sockmap
George Kennedy (1):
serial: core: check uartclk for zero to avoid divide by zero
Greg Kroah-Hartman (2):
USB: move snd_usb_pipe_sanity_check into the USB core Linux 5.4.282
Gregory CLEMENT (1):
MIPS: SMP-CPS: Fix address for GCR_ACCESS register for CM3 and later
Guangguan Wang (1):
net/smc: set rmb's SG_MAX_SINGLE_ALLOC limitation only when CONFIG_ARCH_NO_SG_CHAIN is defined
Guenter Roeck (4):
hwmon: (max6697) Fix underflow when writing limit attributes
hwmon: (max6697) Fix swapped temp{1,8} critical alarms
i2c: smbus: Improve handling of stuck alerts
i2c: smbus: Send alert notifications to all devices if source not found
Hans de Goede (4):
leds: trigger: Unregister sysfs attributes before calling deactivate()
ASoC: Intel: Move soc_intel_is_foo() helpers to a generic header
power: supply: axp288_charger: Fix constant_charge_voltage writes
power: supply: axp288_charger: Round constant_charge_voltage writes down
Hilda Wu (1):
Bluetooth: btusb: Add RTL8852BE device 0489:e125 to device tables
Honggang LI (1):
RDMA/rxe: Don't set BTH_ACK_MASK for UC or UD QPs
Ian Forbes (1):
drm/vmwgfx: Fix overlay when using Screen Targets
Ido Schimmel (3):
lib: objagg: Fix general protection fault
mlxsw: spectrum_acl_erp: Fix object nesting warning
ipv4: Fix incorrect source address in Record Route option
Ilpo Järvinen (7):
x86/of: Return consistent error type from x86_of_pci_irq_enable() x86/pci/intel_mid_pci: Fix PCIBIOS_* return code handling x86/pci/xen: Fix PCIBIOS_* return code handling x86/platform/iosf_mbi: Convert PCIBIOS_* return codes to errnos
PCI: Fix resource double counting on remove & rescan
leds: ss4200: Convert PCIBIOS_* return codes to errnos
hwrng: amd - Convert PCIBIOS_* return codes to errnos
Ilya Dryomov (3):
rbd: don't assume rbd_is_lock_owner() for exclusive mappings
rbd: rename RBD_LOCK_STATE_RELEASING and releasing_wait
rbd: don't assume RBD_LOCK_STATE_LOCKED for exclusive mappings
Ismael Luceno (1):
ipvs: Avoid unnecessary calls to skb_is_gso_sctp
Jack Wang (1):
bnxt_re: Fix imm_data endianness
James Morse (1):
arm64: cpufeature: Force HWCAP to be based on the sysreg visible to user-space
Jan Kara (3):
ext4: avoid writing unitialized memory to disk in EA inodes
udf: Avoid using corrupted block bitmap buffer
mm: avoid overflows in dirty throttling logic
Jari Ruusu (1):
Fix gcc 4.9 build issue in 5.4.y
Javier Carrasco (1):
mfd: omap-usb-tll: Use struct_size to allocate tll
Jeongjun Park (1):
jfs: Fix array-index-out-of-bounds in diFree
Jerome Brunet (1):
arm64: dts: amlogic: gx: correct hdmi clocks
Jiaxun Yang (1):
platform: mips: cpu_hwmon: Disable driver on unsupported hardware
Joe Hattori (1):
char: tpm: Fix possible memory leak in tpm_bios_measurements_open()
Joe Perches (2):
parport: Convert printk(KERN_<LEVEL> to pr_<level>(
parport: Standardize use of printmode
Johannes Berg (4):
wifi: virt_wifi: don't use strlen() in const context
um: time-travel: fix time-travel-start option
net: bonding: correctly annotate RCU in bond_should_notify_peers()
wifi: nl80211: don't give key data to userspace
Jonas Karlman (1):
arm64: dts: rockchip: Increase VOP clk rate on RK3328
Joy Chakraborty (2):
rtc: cmos: Fix return value of nvmem callbacks
rtc: isl1208: Fix return value of nvmem callbacks
Justin Stitt (2):
ntp: Clamp maxerror and esterror to operating range
ntp: Safeguard against time_constant overflow
Kees Cook (1):
exec: Fix ToCToU between perm check and set-uid/gid usage
Kemeng Shi (2):
jbd2: avoid memleak in jbd2_journal_write_metadata_buffer
ext4: fix wrong unit use in ext4_mb_find_by_goal
Kuniyuki Iwashima (1):
sctp: Fix null-ptr-deref in reuseport_add_sock().
Lance Richardson (1):
dma: fix call order in dmam_free_coherent
Laurent Pinchart (2):
media: renesas: vsp1: Fix _irqsave and _irq mix
media: renesas: vsp1: Store RPF partition configuration per RPF instance
Leon Romanovsky (4):
RDMA/mlx4: Fix truncated output warning in mad.c RDMA/mlx4: Fix truncated output warning in alias_GUID.c RDMA/device: Return error earlier if port in not valid
nvme-pci: add missing condition check for existence of mapped data
Lucas Stach (4):
drm/etnaviv: fix DMA direction handling for cached RW buffers irqchip/imx-irqsteer: Constify irq_chip struct irqchip/imx-irqsteer: Add runtime PM support
drm/bridge: analogix_dp: properly handle zero sized AUX transactions
Ma Jun (1):
drm/amdgpu: Fix the null pointer dereference to ras_manager
Ma Ke (4):
drm/gma500: fix null pointer dereference in cdv_intel_lvds_get_modes drm/gma500: fix null pointer dereference in psb_intel_lvds_get_modes
net: usb: sr9700: fix uninitialized variable use in sr_mdio_read drm/client: fix null pointer dereference in drm_client_modeset_probe
Maciej Żenczykowski (1):
ipv6: fix ndisc_is_useropt() handling for PIO
Manish Rangankar (1):
scsi: qla2xxx: During vport delete send async logout explicitly
Manivannan Sadhasivam (1):
PCI: rockchip: Use GPIOD_OUT_LOW flag while requesting ep_gpio
Marc Zyngier (2):
genirq: Allow the PM device to originate from irq domain
genirq: Allow irq_chip registration functions to take a const irq_chip
Marco Cavenati (1):
perf/x86/intel/pt: Fix topa_entry base length
Marco Felsch (1):
ARM: dts: imx6qdl-kontron-samx6i: move phy reset into phy-node
Marek Behún (2):
firmware: turris-mox-rwtm: Fix checking return value of wait_for_completion_timeout()
firmware: turris-mox-rwtm: Initialize completion before mailbox
Marek Marczykowski-Górecki (1):
USB: serial: debug: do not echo input by default
Mark Rutland (11):
arm64: cputype: Add Cortex-X4 definitions
arm64: cputype: Add Neoverse-V3 definitions
arm64: errata: Add workaround for Arm errata 3194386 and 3312417
arm64: cputype: Add Cortex-X3 definitions
arm64: cputype: Add Cortex-A720 definitions
arm64: cputype: Add Cortex-X925 definitions
arm64: errata: Unify speculative SSBS errata logic
arm64: errata: Expand speculative SSBS workaround
arm64: cputype: Add Cortex-X1C definitions
arm64: cputype: Add Cortex-A725 definitions
arm64: errata: Expand speculative SSBS workaround (again)
Menglong Dong (1):
bpf: kprobe: remove unused declaring of bpf_kprobe_override
Michael Ellerman (2):
powerpc/xmon: Fix disassembly CPU feature checks selftests/sigaltstack: Fix ppc64 GCC build
Michael Walle (4):
ARM: dts: imx6qdl-kontron-samx6i: fix PHY reset
ARM: dts: imx6qdl-kontron-samx6i: fix board reset
ARM: dts: imx6qdl-kontron-samx6i: fix PCIe reset polarity
ARM: dts: imx6qdl-kontron-samx6i: fix phy-mode
Michal Pecio (1):
media: uvcvideo: Fix the bandwdith quirk on USB 3.x
Namhyung Kim (1):
perf report: Fix condition in sort__sym_cmp()
Nathan Chancellor (1):
kbuild: Fix '-S -c' in x86 stack protector scripts
NeilBrown (1):
SUNRPC: avoid soft lockup when transmitting UDP to reachable server.
Nick Bowler (1):
macintosh/therm_windtunnel: fix module unload.
Nicolas Dichtel (1):
ipv6: take care of scope when choosing the src addr
Niklas Söderlund (1):
clocksource/drivers/sh_cmt: Address race condition for clock events
Nilesh Javali (1):
scsi: qla2xxx: validate nvme_local_port correctly
Oleksandr Suvorov (1):
spi: fsl-lpspi: remove unneeded array
Oliver Neukum (1):
usb: vhci-hcd: Do not drop references before new references are gained
Pablo Neira Ayuso (4):
netfilter: nf_tables: rise cap on SELinux secmark context
netfilter: ctnetlink: use helper function to calculate expect ID
netfilter: nf_tables: set element extended ACK reporting support
netfilter: nf_tables: use timestamp to check for set element timeout
Paolo Pisati (1):
m68k: amiga: Turn off Warp1260 interrupts during boot
Peng Fan (2):
pinctrl: freescale: mxs: Fix refcount of child
remoteproc: imx_rproc: ignore mapping vdev regions
Peter Oberparleiter (1):
s390/sclp: Prevent release of buffer in I/O
Peter Zijlstra (1):
x86/mm: Fix pti_clone_pgtable() alignment assumption
Petr Machata (1):
net: nexthop: Initialize all fields in dumped nexthops
Pierre-Louis Bossart (1):
ASoC: Intel: use soc_intel_is_byt_cr() only when IOSF_MBI is reachable
Qiuxu Zhuo (1):
EDAC/skx_common: Add new ADXL components for 2-level memory
Rafael Beims (1):
wifi: mwifiex: Fix interface type change
Rafał Miłecki (1):
arm64: dts: mediatek: mt7622: fix "emmc" pinctrl mux
Ricardo Ribalda (3):
media: imon: Fix race getting ictx->lock
media: uvcvideo: Allow entity-defined get_info and get_cur
media: uvcvideo: Ignore empty TS packets
Roman Smirnov (1):
udf: prevent integer overflow in udf_bitmap_free_blocks()
Ross Lagerwall (1):
decompress_bunzip2: fix rare decompression failure
Ryusuke Konishi (2):
nilfs2: avoid undefined behavior in nilfs_cnt32_ge macro
nilfs2: handle inconsistent state in nilfs_btnode_create_block()
Samasth Norway Ananda (1):
wifi: brcmsmac: LCN PHY code is used for BCM4313 2G-only device
Saurav Kashyap (1):
scsi: qla2xxx: Return ENOBUFS if sg_cnt is more than one for ELS cmds
Sean Young (1):
media: Revert "media: dvb-usb: Fix unexpected infinite loop in dvb_usb_read_remote_control()"
Shahar Shitrit (1):
net/mlx5e: Add a check for the return value from mlx5_port_set_eth_ptys
Shai Malin (1):
qed: Improve the stack space of filter_config()
Shay Drory (1):
genirq/irqdesc: Honor caller provided affinity in alloc_desc()
Shenwei Wang (1):
irqchip/imx-irqsteer: Handle runtime power management correctly
Shigeru Yoshida (1):
tipc: Return non-zero value from tipc_udp_addr2str() on error
Shreyas Deodhar (2):
scsi: qla2xxx: Fix for possible memory corruption
scsi: qla2xxx: Complete command early within lock
Sreekanth Reddy (1):
scsi: mpt3sas: Remove scsi_dma_map() error messages
Stefan Raspl (1):
net/smc: Allow SMC-D 1MB DMB allocations
Stefan Wahren (1):
spi: spi-fsl-lpspi: Fix scldiv calculation
Steven 'Steve' Kendall (1):
ALSA: hda: Add HP MP9 G4 Retail System AMS to force connect list
Sung Joon Kim (1):
drm/amd/display: Check for NULL pointer
Takashi Iwai (3):
ALSA: usb-audio: Correct surround channels in UAC1 channel map
ALSA: line6: Fix racy access to midibuf
ALSA: hda/hdmi: Yet more pin fix for HP EliteDesk 800 G4
Tatsunosuke Tobita (1):
HID: wacom: Modify pen IDs
Thomas Gleixner (3):
watchdog/perf: properly initialize the turbo mode timestamp and rearm counter
ASoC: Intel: Convert to new X86 CPU match macros
tick/broadcast: Move per CPU pointer access into the atomic section
Thomas Weißschuh (2):
ACPI: battery: create alarm sysfs attribute atomically
ACPI: SBS: manage alarm sysfs attribute through psy core
Thomas Zimmermann (1):
drm/mgag200: Set DDC timeout in milliseconds
Thorsten Blum (1):
m68k: cmpxchg: Fix return value for default case in __arch_xchg()
Tony Luck (2):
EDAC, skx_common: Refactor so that we initialize "dev" in result of adxl decode. EDAC, skx: Retrieve and print retry_rd_err_log registers
Tze-nan Wu (1):
tracing: Fix overflow in get_free_elt()
Tzung-Bi Shih (1):
platform/chrome: cros_ec_debugfs: fix wrong EC message version
Uwe Kleine-König (2):
pwm: stm32: Always do lazy disabling
pinctrl: ti: ti-iodelay: Drop if block with always false condition
Vamshi Gajjela (1):
scsi: ufs: core: Fix hba->last_dme_cmd_tstamp timestamp updating logic
WangYuli (2):
Bluetooth: btusb: Add Realtek RTL8852BE support ID 0x13d3:0x3591 nvme/pci: Add APST quirk for Lenovo N60z laptop
Wayne Tung (1):
hwmon: (adt7475) Fix default duty on fan is disabled
Wei Liu (1):
PCI: hv: Return zero, not garbage, when reading PCI_INTERRUPT_PIN
Xiao Liang (1):
apparmor: Fix null pointer deref when receiving skb during sock creation
Xin Long (1):
sctp: move hlist_node and hashent out of sctp_ep_common
Yang Yingliang (3):
pinctrl: core: fix possible memory leak when pinctrl_enable() fails
pinctrl: single: fix possible memory leak when pinctrl_enable() fails
pinctrl: ti: ti-iodelay: fix possible memory leak when pinctrl_enable() fails
Yipeng Zou (1):
irqchip/mbigen: Fix mbigen node address layout
Yonghong Song (1):
selftests/bpf: Fix send_signal test with nested CONFIG_PARAVIRT
Yu Kuai (1):
md/raid5: avoid BUG_ON() while continue reshape after reassembling
Yu Liao (1):
tick/broadcast: Make takeover of broadcast hrtimer reliable
Yunke Cao (1):
media: uvcvideo: Use entity get_cur in uvc_ctrl_set
Zheng Yejian (1):
media: dvb-usb: Fix unexpected infinite loop in dvb_usb_read_remote_control()
Zijun Hu (2):
kobject_uevent: Fix OOB access within zap_modalias_env()
devres: Fix memory leakage caused by driver API devm_free_percpu()
tuhaowen (1):
dev/parport: fix the array out-of-bounds risk
Greg Kroah-Hartman
maintainerDocumentation/arm64/cpu-feature-registers.rst +37 -1
@@ -92,7 +92,7 @@ operation if the source belongs to the supported system register space. The infrastructure emulates only the following system register space:: - Op0=3, Op1=0, CRn=0, CRm=0,4,5,6,7 + Op0=3, Op1=0, CRn=0, CRm=0,2,3,4,5,6,7 (See Table C5-6 'System instruction encodings for non-Debug System register accesses' in ARMv8 ARM DDI 0487A.h, for the list of
@@ -167,6 +167,42 @@ infrastructure: | EL0 | [3-0] | n | +------------------------------+---------+---------+ + 10) MVFR0_EL1 - AArch32 Media and VFP Feature Register 0 + + +------------------------------+---------+---------+ + | Name | bits | visible | + +------------------------------+---------+---------+ + | FPDP | [11-8] | y | + +------------------------------+---------+---------+ + + 11) MVFR1_EL1 - AArch32 Media and VFP Feature Register 1 + + +------------------------------+---------+---------+ + | Name | bits | visible | + +------------------------------+---------+---------+ + | SIMDFMAC | [31-28] | y | + +------------------------------+---------+---------+ + | SIMDSP | [19-16] | y | + +------------------------------+---------+---------+ + | SIMDInt | [15-12] | y | + +------------------------------+---------+---------+ + | SIMDLS | [11-8] | y | + +------------------------------+---------+---------+ + + 12) ID_ISAR5_EL1 - AArch32 Instruction Set Attribute Register 5 + + +------------------------------+---------+---------+ + | Name | bits | visible | + +------------------------------+---------+---------+ + | CRC32 | [19-16] | y | + +------------------------------+---------+---------+ + | SHA2 | [15-12] | y | + +------------------------------+---------+---------+ + | SHA1 | [11-8] | y | + +------------------------------+---------+---------+ + | AES | [7-4] | y | + +------------------------------+---------+---------+ + 3) MIDR_EL1 - Main ID Register
Documentation/arm64/silicon-errata.rst +36 -0
@@ -88,12 +88,48 @@ stable kernels. +----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A76 | #1463225 | ARM64_ERRATUM_1463225 | +----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A76 | #3324349 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A77 | #3324348 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A78 | #3324344 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A78C | #3324346,3324347| ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A710 | #3324338 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A720 | #3456091 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A725 | #3456106 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-X1 | #3324344 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-X1C | #3324346 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-X2 | #3324338 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-X3 | #3324335 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-X4 | #3194386 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-X925 | #3324334 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ | ARM | Neoverse-N1 | #1188873,1418040| ARM64_ERRATUM_1418040 | +----------------+-----------------+-----------------+-----------------------------+ | ARM | Neoverse-N1 | #1349291 | N/A | +----------------+-----------------+-----------------+-----------------------------+ | ARM | Neoverse-N1 | #1542419 | ARM64_ERRATUM_1542419 | +----------------+-----------------+-----------------+-----------------------------+ +| ARM | Neoverse-N1 | #3324349 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Neoverse-N2 | #3324339 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Neoverse-V1 | #3324341 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Neoverse-V2 | #3324336 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Neoverse-V3 | #3312417 | ARM64_ERRATUM_3194386 | ++----------------+-----------------+-----------------+-----------------------------+ | ARM | MMU-500 | #841119,826419 | N/A | +----------------+-----------------+-----------------+-----------------------------+ +----------------+-----------------+-----------------+-----------------------------+
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 281 +SUBLEVEL = 282 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi +17 -4
@@ -259,8 +259,20 @@ &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet>; - phy-mode = "rgmii"; - phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>; + phy-connection-type = "rgmii-id"; + phy-handle = <ðphy>; + + mdio { + #address-cells = <1>; + #size-cells = <0>; + + ethphy: ethernet-phy@1 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <1>; + reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>; + reset-assert-us = <1000>; + }; + }; }; &i2c_intern {
@@ -500,7 +512,7 @@ MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0 - MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25 0x1b0b0 /* RST_GBE0_PHY# */ + MX6QDL_PAD_NANDF_D1__GPIO2_IO01 0x1b0b0 /* RST_GBE0_PHY# */ >; };
@@ -713,7 +725,7 @@ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pcie>; wake-up-gpio = <&gpio6 18 GPIO_ACTIVE_HIGH>; - reset-gpio = <&gpio3 13 GPIO_ACTIVE_HIGH>; + reset-gpio = <&gpio3 13 GPIO_ACTIVE_LOW>; }; /* LCD_BKLT_PWM */
@@ -801,5 +813,6 @@ /* CPLD is feeded by watchdog (hardwired) */ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_wdog1>; + fsl,ext-reset-output; status = "okay"; };
arch/arm64/Kconfig +38 -0
@@ -590,6 +590,44 @@ config ARM64_ERRATUM_1742098 If unsure, say Y. +config ARM64_ERRATUM_3194386 + bool "Cortex-*/Neoverse-*: workaround for MSR SSBS not self-synchronizing" + default y + help + This option adds the workaround for the following errata: + + * ARM Cortex-A76 erratum 3324349 + * ARM Cortex-A77 erratum 3324348 + * ARM Cortex-A78 erratum 3324344 + * ARM Cortex-A78C erratum 3324346 + * ARM Cortex-A78C erratum 3324347 + * ARM Cortex-A710 erratam 3324338 + * ARM Cortex-A720 erratum 3456091 + * ARM Cortex-A725 erratum 3456106 + * ARM Cortex-X1 erratum 3324344 + * ARM Cortex-X1C erratum 3324346 + * ARM Cortex-X2 erratum 3324338 + * ARM Cortex-X3 erratum 3324335 + * ARM Cortex-X4 erratum 3194386 + * ARM Cortex-X925 erratum 3324334 + * ARM Neoverse-N1 erratum 3324349 + * ARM Neoverse N2 erratum 3324339 + * ARM Neoverse-V1 erratum 3324341 + * ARM Neoverse V2 erratum 3324336 + * ARM Neoverse-V3 erratum 3312417 + + On affected cores "MSR SSBS, #0" instructions may not affect + subsequent speculative instructions, which may permit unexepected + speculative store bypassing. + + Work around this problem by placing a Speculation Barrier (SB) or + Instruction Synchronization Barrier (ISB) after kernel changes to + SSBS. The presence of the SSBS special-purpose register is hidden + from hwcaps and EL0 reads of ID_AA64PFR1_EL1, such that userspace + will use the PR_SPEC_STORE_BYPASS prctl to change SSBS. + + If unsure, say Y. + config CAVIUM_ERRATUM_22375 bool "Cavium erratum 22375, 24313" default y
arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi +2 -2
@@ -326,8 +326,8 @@ <&reset RESET_HDMI_SYSTEM_RESET>, <&reset RESET_HDMI_TX>; reset-names = "hdmitx_apb", "hdmitx", "hdmitx_phy"; - clocks = <&clkc CLKID_HDMI_PCLK>, - <&clkc CLKID_CLK81>, + clocks = <&clkc CLKID_HDMI>, + <&clkc CLKID_HDMI_PCLK>, <&clkc CLKID_GCLK_VENCI_INT0>; clock-names = "isfr", "iahb", "venci"; };
arch/arm64/boot/dts/amlogic/meson-gxl.dtsi +2 -2
@@ -273,8 +273,8 @@ <&reset RESET_HDMI_SYSTEM_RESET>, <&reset RESET_HDMI_TX>; reset-names = "hdmitx_apb", "hdmitx", "hdmitx_phy"; - clocks = <&clkc CLKID_HDMI_PCLK>, - <&clkc CLKID_CLK81>, + clocks = <&clkc CLKID_HDMI>, + <&clkc CLKID_HDMI_PCLK>, <&clkc CLKID_GCLK_VENCI_INT0>; clock-names = "isfr", "iahb", "venci"; };
arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts +2 -2
@@ -235,8 +235,8 @@ /* eMMC is shared pin with parallel NAND */ emmc_pins_default: emmc-pins-default { mux { - function = "emmc", "emmc_rst"; - groups = "emmc"; + function = "emmc"; + groups = "emmc", "emmc_rst"; }; /* "NDL0","NDL1","NDL2","NDL3","NDL4","NDL5","NDL6","NDL7",
arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts +2 -2
@@ -198,8 +198,8 @@ /* eMMC is shared pin with parallel NAND */ emmc_pins_default: emmc-pins-default { mux { - function = "emmc", "emmc_rst"; - groups = "emmc"; + function = "emmc"; + groups = "emmc", "emmc_rst"; }; /* "NDL0","NDL1","NDL2","NDL3","NDL4","NDL5","NDL6","NDL7",
arch/arm64/boot/dts/qcom/msm8996.dtsi +1 -1
@@ -1386,7 +1386,7 @@ <&gcc GCC_UFS_RX_SYMBOL_0_CLK>; freq-table-hz = <100000000 200000000>, - <0 0>, + <100000000 200000000>, <0 0>, <0 0>, <0 0>,
arch/arm64/boot/dts/qcom/sdm845.dtsi +2 -0
@@ -1420,6 +1420,8 @@ clocks = <&gcc GCC_UFS_MEM_CLKREF_CLK>, <&gcc GCC_UFS_PHY_PHY_AUX_CLK>; + power-domains = <&gcc UFS_PHY_GDSC>; + resets = <&ufs_mem_hc 0>; reset-names = "ufsphy"; status = "disabled";
arch/arm64/boot/dts/rockchip/rk3328.dtsi +2 -2
@@ -763,8 +763,8 @@ <0>, <24000000>, <24000000>, <24000000>, <15000000>, <15000000>, - <100000000>, <100000000>, - <100000000>, <100000000>, + <300000000>, <100000000>, + <400000000>, <100000000>, <50000000>, <100000000>, <100000000>, <100000000>, <50000000>, <50000000>,
arch/arm64/include/asm/cpucaps.h +2 -1
@@ -57,7 +57,8 @@#define ARM64_WORKAROUND_1542419 47#define ARM64_SPECTRE_BHB 48#define ARM64_WORKAROUND_1742098 49 +#define ARM64_WORKAROUND_SPECULATIVE_SSBS 50 -#define ARM64_NCAPS 50 +#define ARM64_NCAPS 51#endif /* __ASM_CPUCAPS_H */
arch/arm64/include/asm/cputype.h +16 -0
@@ -80,6 +80,14 @@#define ARM_CPU_PART_CORTEX_X2 0xD48#define ARM_CPU_PART_NEOVERSE_N2 0xD49#define ARM_CPU_PART_CORTEX_A78C 0xD4B +#define ARM_CPU_PART_CORTEX_X1C 0xD4C +#define ARM_CPU_PART_CORTEX_X3 0xD4E +#define ARM_CPU_PART_NEOVERSE_V2 0xD4F +#define ARM_CPU_PART_CORTEX_A720 0xD81 +#define ARM_CPU_PART_CORTEX_X4 0xD82 +#define ARM_CPU_PART_NEOVERSE_V3 0xD84 +#define ARM_CPU_PART_CORTEX_X925 0xD85 +#define ARM_CPU_PART_CORTEX_A725 0xD87#define APM_CPU_PART_POTENZA 0x000
@@ -121,6 +129,14 @@#define MIDR_CORTEX_X2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X2)#define MIDR_NEOVERSE_N2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_N2)#define MIDR_CORTEX_A78C MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78C) +#define MIDR_CORTEX_X1C MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X1C) +#define MIDR_CORTEX_X3 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X3) +#define MIDR_NEOVERSE_V2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V2) +#define MIDR_CORTEX_A720 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A720) +#define MIDR_CORTEX_X4 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X4) +#define MIDR_NEOVERSE_V3 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V3) +#define MIDR_CORTEX_X925 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X925) +#define MIDR_CORTEX_A725 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A725)#define MIDR_THUNDERX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX)#define MIDR_THUNDERX_81XX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX_81XX)#define MIDR_THUNDERX_83XX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX_83XX)
arch/arm64/kernel/cpu_errata.c +44 -0
62 lines not on this page · raw message
arch/arm64/kernel/cpufeature.c +74 -16
158 lines not on this page · raw message
arch/m68k/amiga/config.c +9 -0
@@ -180,6 +180,15 @@ int __init amiga_parse_bootinfo(const struct bi_record *record) dev->slotsize =be16_to_cpu (cd->cd_SlotSize); dev->boardaddr =be32_to_cpu (cd->cd_BoardAddr); dev->boardsize =be32_to_cpu (cd->cd_BoardSize); + +/* CS-LAB Warp 1260 workaround */ +if (be16_to_cpu (dev->rom.er_Manufacturer) ==ZORRO_MANUF (ZORRO_PROD_CSLAB_WARP_1260 ) && + dev->rom.er_Product ==ZORRO_PROD (ZORRO_PROD_CSLAB_WARP_1260 )) { + +/* turn off all interrupts */ +pr_info ("Warp 1260 card detected: applying interrupt storm workaround\n" ); + *(uint32_t *)(dev->boardaddr +0x1000 ) =0xfff ; + } }else pr_warn ("amiga_parse_bootinfo: too many AutoConfig devices\n" );#endif /* CONFIG_ZORRO */
arch/m68k/atari/ataints.c +1 -5
@@ -302,11 +302,7 @@ void __init atari_init_IRQ(void)if (ATARIHW_PRESENT (SCU )) {/* init the SCU if present */ - tt_scu.sys_mask =0x10 ;/* enable VBL (for the cursor) and -* disable HSYNC interrupts (who -* needs them?) MFP and SCC are -* enabled in VME mask -*/ + tt_scu.sys_mask =0x0 ;/* disable all interrupts */ tt_scu.vme_mask =0x60 ;/* enable MFP and SCC ints */ }else {/* If no SCU and no Hades, the HSYNC interrupt needs to be
arch/m68k/include/asm/cmpxchg.h +1 -1
@@ -33,7 +33,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz x = tmp;break ;default : - tmp =__invalid_xchg_size (x, ptr, size); + x =__invalid_xchg_size (x, ptr, size);break ; }
arch/mips/include/asm/mips-cm.h +4 -0
@@ -228,6 +228,10 @@ GCR_ACCESSOR_RO(32, 0x0d0, gic_status) GCR_ACCESSOR_RO(32, 0x0f0, cpc_status)#define CM_GCR_CPC_STATUS_EX BIT(0) +/* GCR_ACCESS - Controls core/IOCU access to GCRs */ +GCR_ACCESSOR_RW(32, 0x120, access_cm3) +#define CM_GCR_ACCESS_ACCESSEN GENMASK(7, 0) +/* GCR_L2_CONFIG - Indicates L2 cache configuration when Config5.L2C=1 */ GCR_ACCESSOR_RW(32, 0x130, l2_config)#define CM_GCR_L2_CONFIG_BYPASS BIT(20)
arch/mips/kernel/smp-cps.c +4 -1
@@ -229,7 +229,10 @@ static void boot_core(unsigned int core, unsigned int vpe_id)write_gcr_co_reset_ext_base (CM_GCR_Cx_RESET_EXT_BASE_UEB);/* Ensure the core can access the GCRs */ -set_gcr_access (1 << core); +if (mips_cm_revision () <CM_REV_CM3 ) +set_gcr_access (1 << core); +else +set_gcr_access_cm3 (1 << core);if (mips_cpc_present ()) {/* Reset the core */
arch/mips/pci/pcie-octeon.c +0 -0
arch/powerpc/kvm/powerpc.c +3 -1
@@ -1950,8 +1950,10 @@ static int kvm_vcpu_ioctl_enable_cap(struct kvm_vcpu *vcpu,break ; r = -ENXIO ; -if (!xive_enabled ()) +if (!xive_enabled ()) { +fdput (f);break ; + } r = -EPERM ; dev =kvm_device_from_filp (f.file);
arch/powerpc/xmon/ppc-dis.c +11 -22
@@ -122,32 +122,21 @@ int print_insn_powerpc (unsigned long insn, unsigned long memaddr)bool insn_is_short;ppc_cpu_t dialect; - dialect =PPC_OPCODE_PPC |PPC_OPCODE_COMMON - |PPC_OPCODE_64 |PPC_OPCODE_POWER4 |PPC_OPCODE_ALTIVEC ; + dialect =PPC_OPCODE_PPC |PPC_OPCODE_COMMON ; -if (cpu_has_feature (CPU_FTRS_POWER5 )) - dialect |=PPC_OPCODE_POWER5 ; +if (IS_ENABLED (CONFIG_PPC64 )) + dialect |=PPC_OPCODE_64 |PPC_OPCODE_POWER4 |PPC_OPCODE_CELL | +PPC_OPCODE_POWER5 |PPC_OPCODE_POWER6 |PPC_OPCODE_POWER7 |PPC_OPCODE_POWER8 | +PPC_OPCODE_POWER9 ; -if (cpu_has_feature (CPU_FTRS_CELL )) - dialect |= (PPC_OPCODE_CELL |PPC_OPCODE_ALTIVEC ); +if (cpu_has_feature (CPU_FTR_TM )) + dialect |=PPC_OPCODE_HTM ; -if (cpu_has_feature (CPU_FTRS_POWER6 )) - dialect |= (PPC_OPCODE_POWER5 |PPC_OPCODE_POWER6 |PPC_OPCODE_ALTIVEC ); +if (cpu_has_feature (CPU_FTR_ALTIVEC )) + dialect |=PPC_OPCODE_ALTIVEC |PPC_OPCODE_ALTIVEC2 ; -if (cpu_has_feature (CPU_FTRS_POWER7 )) - dialect |= (PPC_OPCODE_POWER5 |PPC_OPCODE_POWER6 |PPC_OPCODE_POWER7 - |PPC_OPCODE_ALTIVEC |PPC_OPCODE_VSX ); - -if (cpu_has_feature (CPU_FTRS_POWER8 )) - dialect |= (PPC_OPCODE_POWER5 |PPC_OPCODE_POWER6 |PPC_OPCODE_POWER7 - |PPC_OPCODE_POWER8 |PPC_OPCODE_HTM - |PPC_OPCODE_ALTIVEC |PPC_OPCODE_ALTIVEC2 |PPC_OPCODE_VSX ); - -if (cpu_has_feature (CPU_FTRS_POWER9 )) - dialect |= (PPC_OPCODE_POWER5 |PPC_OPCODE_POWER6 |PPC_OPCODE_POWER7 - |PPC_OPCODE_POWER8 |PPC_OPCODE_POWER9 |PPC_OPCODE_HTM - |PPC_OPCODE_ALTIVEC |PPC_OPCODE_ALTIVEC2 - |PPC_OPCODE_VSX |PPC_OPCODE_VSX3 ); +if (cpu_has_feature (CPU_FTR_VSX )) + dialect |=PPC_OPCODE_VSX |PPC_OPCODE_VSX3 ;/* Get the major opcode of the insn. */ opcode =NULL ;
arch/sparc/include/asm/oplib_64.h +1 -0
@@ -247,6 +247,7 @@ void prom_sun4v_guest_soft_state(void);int prom_ihandle2path (int handle,char *buffer,int bufsize);/* Client interface level routines. */ +void prom_cif_init (void *cif_handler);void p1275_cmd_direct (unsigned long *);#endif /* !(__SPARC64_OPLIB_H) */
arch/sparc/prom/init_64.c +0 -3
@@ -26,9 +26,6 @@ phandle prom_chosen_node;* routines in the prom library. * It gets passed the pointer to the PROM vector. */ - -extern void prom_cif_init (void *); -void __init prom_init (void *cif_handler) {phandle node;
arch/sparc/prom/p1275.c +1 -1
@@ -49,7 +49,7 @@ void p1275_cmd_direct(unsigned long *args)local_irq_restore (flags); } -void prom_cif_init (void *cif_handler,void *cif_stack) +void prom_cif_init (void *cif_handler) { p1275buf.prom_cif_handler = (void (*)(long *))cif_handler; }
arch/um/kernel/time.c +2 -2
@@ -256,9 +256,9 @@ int setup_time_travel_start(char *str) return 1; } -__setup ("time-travel-start" , setup_time_travel_start); +__setup ("time-travel-start=" , setup_time_travel_start);__uml_help (setup_time_travel_start, -"time-travel-start=<seconds>\n" +"time-travel-start=<nanoseconds>\n" "Configure the UML instance's wall clock to start at this value rather than\n" "the host's wall clock at the time of UML boot.\n" );#endif
arch/x86/events/intel/pt.c +2 -2
@@ -827,7 +827,7 @@ static void pt_update_head(struct pt *pt)*/ static void *pt_buffer_region (struct pt_buffer *buf) { -return phys_to_virt (TOPA_ENTRY (buf->cur, buf->cur_idx)->base <<TOPA_SHIFT ); +return phys_to_virt ((phys_addr_t )TOPA_ENTRY (buf->cur, buf->cur_idx)->base <<TOPA_SHIFT ); }/**
@@ -935,7 +935,7 @@ pt_topa_entry_for_page(struct pt_buffer *buf, unsigned int pg)* order allocations, there shouldn't be many of these. */ list_for_each_entry (topa, &buf->tables, list) { -if (topa->offset + topa->size > pg <<PAGE_SHIFT ) +if (topa->offset + topa->size > (unsigned long )pg <<PAGE_SHIFT ) goto found; }
arch/x86/events/intel/pt.h +2 -2
@@ -33,8 +33,8 @@ struct topa_entry { u64 rsvd2 : 1; u64 size : 4; u64 rsvd3 : 2; - u64 base : 36; - u64 rsvd4 : 16; + u64 base : 40; + u64 rsvd4 : 12; };/* TSC to Core Crystal Clock Ratio */
arch/x86/kernel/cpu/mtrr/mtrr.c +1 -1
@@ -817,7 +817,7 @@ void mtrr_save_state(void) {int first_cpu; -if (!mtrr_enabled ()) +if (!mtrr_enabled () || !mtrr_state.have_fixed)return ; first_cpu =cpumask_first (cpu_online_mask);
arch/x86/kernel/devicetree.c +1 -1
@@ -91,7 +91,7 @@ static int x86_of_pci_irq_enable(struct pci_dev *dev) ret =pci_read_config_byte (dev,PCI_INTERRUPT_PIN , &pin);if (ret) -return ret; +return pcibios_err_to_errno (ret);if (!pin)return 0 ;
arch/x86/mm/pti.c +3 -3
@@ -375,14 +375,14 @@ pti_clone_pgtable(unsigned long start, unsigned long end,*/ *target_pmd = *pmd; - addr +=PMD_SIZE ; + addr =round_up (addr +1 ,PMD_SIZE ); }else if (level ==PTI_CLONE_PTE ) {/* Walk the page-table down to the pte level */ pte =pte_offset_kernel (pmd, addr);if (pte_none (*pte)) { - addr +=PAGE_SIZE ; + addr =round_up (addr +1 ,PAGE_SIZE );continue ; }
@@ -402,7 +402,7 @@ pti_clone_pgtable(unsigned long start, unsigned long end,/* Clone the PTE */ *target_pte = *pte; - addr +=PAGE_SIZE ; + addr =round_up (addr +1 ,PAGE_SIZE ); }else {BUG ();
arch/x86/pci/intel_mid_pci.c +2 -2
@@ -223,9 +223,9 @@ static int intel_mid_pci_irq_enable(struct pci_dev *dev)return 0 ; ret =pci_read_config_byte (dev,PCI_INTERRUPT_LINE , &gsi); -if (ret <0 ) { +if (ret) {dev_warn (&dev->dev,"Failed to read interrupt line: %d\n" , ret); -return ret; +return pcibios_err_to_errno (ret); }switch (intel_mid_identify_cpu ()) {
arch/x86/pci/xen.c +2 -2
@@ -37,10 +37,10 @@ static int xen_pcifront_enable_irq(struct pci_dev *dev)u8 gsi; rc =pci_read_config_byte (dev,PCI_INTERRUPT_LINE , &gsi); -if (rc <0 ) { +if (rc) {dev_warn (&dev->dev,"Xen PCI: failed to read interrupt line: %d\n" , rc); -return rc; +return pcibios_err_to_errno (rc); }/* In PV DomU the Xen PCI backend puts the PIRQ in the interrupt line.*/ pirq = gsi;
arch/x86/platform/intel/iosf_mbi.c +2 -2
@@ -62,7 +62,7 @@ static int iosf_mbi_pci_read_mdr(u32 mcrx, u32 mcr, u32 *mdr) fail_read:dev_err (&mbi_pdev->dev,"PCI config access failed with %d\n" , result); -return result; +return pcibios_err_to_errno (result); }static int iosf_mbi_pci_write_mdr (u32 mcrx,u32 mcr,u32 mdr)
@@ -91,7 +91,7 @@ static int iosf_mbi_pci_write_mdr(u32 mcrx, u32 mcr, u32 mdr) fail_write:dev_err (&mbi_pdev->dev,"PCI config access failed with %d\n" , result); -return result; +return pcibios_err_to_errno (result); }int iosf_mbi_read (u8 port,u8 opcode,u32 offset,u32 *mdr)
arch/x86/xen/p2m.c +2 -2
@@ -741,7 +741,7 @@ int set_foreign_p2m_mapping(struct gnttab_map_grant_ref *map_ops,* immediate unmapping. */ map_ops[i].status = GNTST_general_error; - unmap[0 ].host_addr = map_ops[i].host_addr, + unmap[0 ].host_addr = map_ops[i].host_addr; unmap[0 ].handle = map_ops[i].handle; map_ops[i].handle = ~0 ;if (map_ops[i].flags & GNTMAP_device_map)
@@ -751,7 +751,7 @@ int set_foreign_p2m_mapping(struct gnttab_map_grant_ref *map_ops,if (kmap_ops) { kmap_ops[i].status = GNTST_general_error; - unmap[1 ].host_addr = kmap_ops[i].host_addr, + unmap[1 ].host_addr = kmap_ops[i].host_addr; unmap[1 ].handle = kmap_ops[i].handle; kmap_ops[i].handle = ~0 ;if (kmap_ops[i].flags & GNTMAP_device_map)
drivers/acpi/battery.c +12 -4
@@ -681,12 +681,18 @@ static ssize_t acpi_battery_alarm_store(struct device *dev,return count; } -static const struct device_attribute alarm_attr = { +static struct device_attribute alarm_attr = { .attr = {.name ="alarm" , .mode =0644 }, .show = acpi_battery_alarm_show, .store = acpi_battery_alarm_store, }; +static struct attribute *acpi_battery_attrs[] = { + &alarm_attr.attr, +NULL +}; +ATTRIBUTE_GROUPS (acpi_battery); +/* * The Battery Hooking API *
@@ -823,7 +829,10 @@ static void __exit battery_hook_exit(void)static int sysfs_add_battery (struct acpi_battery *battery) { -struct power_supply_config psy_cfg = { .drv_data = battery, }; +struct power_supply_config psy_cfg = { + .drv_data = battery, + .attr_grp = acpi_battery_groups, + };bool full_cap_broken = false; if (!ACPI_BATTERY_CAPACITY_VALID(battery->full_charge_capacity) &&
@@ -868,7 +877,7 @@ static int sysfs_add_battery(struct acpi_battery *battery)return result; }battery_hook_add_battery (battery); -return device_create_file (&battery->bat->dev, &alarm_attr); +return 0 ; }static void sysfs_remove_battery (struct acpi_battery *battery)
@@ -879,7 +888,6 @@ static void sysfs_remove_battery(struct acpi_battery *battery)return ; }battery_hook_remove_battery (battery); -device_remove_file (&battery->bat->dev, &alarm_attr);power_supply_unregister (battery->bat); battery->bat =NULL ;mutex_unlock (&battery->sysfs_lock);
drivers/acpi/sbs.c +12 -11
@@ -80,7 +80,6 @@ struct acpi_battery {u16 spec;u8 id; u8 present:1; - u8 have_sysfs_alarm:1; };#define to_acpi_battery (x) power_supply_get_drvdata(x)
@@ -465,12 +464,18 @@ static ssize_t acpi_battery_alarm_store(struct device *dev,return count; } -static const struct device_attribute alarm_attr = { +static struct device_attribute alarm_attr = { .attr = {.name ="alarm" , .mode =0644 }, .show = acpi_battery_alarm_show, .store = acpi_battery_alarm_store, }; +static struct attribute *acpi_battery_attrs[] = { + &alarm_attr.attr, +NULL +}; +ATTRIBUTE_GROUPS (acpi_battery); +/* -------------------------------------------------------------------------- Driver Interface -------------------------------------------------------------------------- */
@@ -512,7 +517,10 @@ static int acpi_battery_read(struct acpi_battery *battery)static int acpi_battery_add (struct acpi_sbs *sbs,int id) {struct acpi_battery *battery = &sbs->battery[id]; -struct power_supply_config psy_cfg = { .drv_data = battery, }; +struct power_supply_config psy_cfg = { + .drv_data = battery, + .attr_grp = acpi_battery_groups, + };int result; battery->id = id;
@@ -542,10 +550,6 @@ static int acpi_battery_add(struct acpi_sbs *sbs, int id) goto end; } - result =device_create_file (&battery->bat->dev, &alarm_attr); -if (result) - goto end; - battery->have_sysfs_alarm =1 ; end: printk(KERN_INFO PREFIX "%s [%s]: Battery Slot [%s] (battery %s)\n", ACPI_SBS_DEVICE_NAME, acpi_device_bid(sbs->device),
@@ -557,11 +561,8 @@ static void acpi_battery_remove(struct acpi_sbs *sbs, int id) {struct acpi_battery *battery = &sbs->battery[id]; -if (battery->bat) { -if (battery->have_sysfs_alarm) -device_remove_file (&battery->bat->dev, &alarm_attr); +if (battery->bat)power_supply_unregister (battery->bat); - } }static int acpi_charger_add (struct acpi_sbs *sbs)
drivers/android/binder.c +1 -3
@@ -932,9 +932,7 @@ static bool binder_has_work(struct binder_thread *thread, bool do_proc_work)static bool binder_available_for_proc_work_ilocked (struct binder_thread *thread) {return !thread->transaction_stack && -binder_worklist_empty_ilocked (&thread->todo) && - (thread->looper & (BINDER_LOOPER_STATE_ENTERED | -BINDER_LOOPER_STATE_REGISTERED )); +binder_worklist_empty_ilocked (&thread->todo); } static void binder_wakeup_poll_threads_ilocked(struct binder_proc *proc,
drivers/base/core.c +8 -5
@@ -25,6 +25,7 @@#include <linux/mutex.h> #include <linux/pm_runtime.h> #include <linux/netdevice.h> +#include <linux/rcupdate.h> #include <linux/sched/signal.h> #include <linux/sysfs.h>
@@ -1174,6 +1175,7 @@ static int dev_uevent(struct kset *kset, struct kobject *kobj, struct kobj_uevent_env *env) {struct device *dev =kobj_to_dev (kobj); +struct device_driver *driver;int retval =0 ;/* add device node properties if present */
@@ -1202,8 +1204,12 @@ static int dev_uevent(struct kset *kset, struct kobject *kobj,if (dev->type && dev->type->name)add_uevent_var (env,"DEVTYPE=%s" , dev->type->name); -if (dev->driver) -add_uevent_var (env,"DRIVER=%s" , dev->driver->name); +/* Synchronize with module_remove_driver() */ +rcu_read_lock (); + driver =READ_ONCE (dev->driver); +if (driver) +add_uevent_var (env,"DRIVER=%s" , driver->name); +rcu_read_unlock ();/* Add common DT information about the device */ of_device_uevent (dev, env);
@@ -1273,11 +1279,8 @@ static ssize_t uevent_show(struct device *dev, struct device_attribute *attr,if (!env)return -ENOMEM ; -/* Synchronize with really_probe() */ -device_lock (dev);/* let the kset specific function add its keys */ retval = kset->uevent_ops->uevent (kset, &dev->kobj, env); -device_unlock (dev);if (retval) goto out;
drivers/base/devres.c +6 -2
@@ -1111,7 +1111,11 @@ EXPORT_SYMBOL_GPL(__devm_alloc_percpu);*/ void devm_free_percpu (struct device *dev,void __percpu *pdata) { -WARN_ON (devres_destroy (dev, devm_percpu_release, devm_percpu_match, - (void *)pdata)); +/* +* Use devres_release() to prevent memory leakage as +* devm_free_pages() does. +*/ +WARN_ON (devres_release (dev, devm_percpu_release, devm_percpu_match, + (__force void *)pdata)); }EXPORT_SYMBOL_GPL (devm_free_percpu);
drivers/base/module.c +4 -0
@@ -7,6 +7,7 @@#include <linux/errno.h> #include <linux/slab.h> #include <linux/string.h> +#include <linux/rcupdate.h> #include "base.h" static char *make_driver_name (struct device_driver *drv)
@@ -77,6 +78,9 @@ void module_remove_driver(struct device_driver *drv)if (!drv)return ; +/* Synchronize with dev_uevent() */ +synchronize_rcu (); +sysfs_remove_link (&drv->p->kobj,"module" );if (drv->owner)
drivers/block/rbd.c +15 -20
@@ -366,7 +366,7 @@ enum rbd_watch_state {enum rbd_lock_state {RBD_LOCK_STATE_UNLOCKED ,RBD_LOCK_STATE_LOCKED , -RBD_LOCK_STATE_RELEASING , +RBD_LOCK_STATE_QUIESCING , };/* WatchNotify::ClientId */
@@ -427,7 +427,7 @@ struct rbd_device {struct list_head running_list;struct completion acquire_wait;int acquire_err; -struct completion releasing_wait; +struct completion quiescing_wait;spinlock_t object_map_lock;u8 *object_map;
@@ -519,7 +519,7 @@ static bool __rbd_is_lock_owner(struct rbd_device *rbd_dev)lockdep_assert_held (&rbd_dev->lock_rwsem);return rbd_dev->lock_state ==RBD_LOCK_STATE_LOCKED || - rbd_dev->lock_state ==RBD_LOCK_STATE_RELEASING ; + rbd_dev->lock_state ==RBD_LOCK_STATE_QUIESCING ; }static bool rbd_is_lock_owner (struct rbd_device *rbd_dev)
@@ -3608,13 +3608,14 @@ static void rbd_lock_del_request(struct rbd_img_request *img_req)lockdep_assert_held (&rbd_dev->lock_rwsem);spin_lock (&rbd_dev->lock_lists_lock);if (!list_empty (&img_req->lock_item)) { +rbd_assert (!list_empty (&rbd_dev->running_list));list_del_init (&img_req->lock_item); - need_wakeup = (rbd_dev->lock_state ==RBD_LOCK_STATE_RELEASING && + need_wakeup = (rbd_dev->lock_state ==RBD_LOCK_STATE_QUIESCING &&list_empty (&rbd_dev->running_list)); }spin_unlock (&rbd_dev->lock_lists_lock);if (need_wakeup) -complete (&rbd_dev->releasing_wait); +complete (&rbd_dev->quiescing_wait); }static int rbd_img_exclusive_lock (struct rbd_img_request *img_req)
@@ -3627,11 +3628,6 @@ static int rbd_img_exclusive_lock(struct rbd_img_request *img_req)if (rbd_lock_add_request (img_req))return 1 ; -if (rbd_dev->opts->exclusive) { -WARN_ON (1 );/* lock got released? */ -return -EROFS ; - } -/* * Note the use of mod_delayed_work() in rbd_acquire_lock() * and cancel_delayed_work() in wake_lock_waiters().
@@ -4281,16 +4277,16 @@ static bool rbd_quiesce_lock(struct rbd_device *rbd_dev)/* * Ensure that all in-flight IO is flushed. */ - rbd_dev->lock_state =RBD_LOCK_STATE_RELEASING ; -rbd_assert (!completion_done (&rbd_dev->releasing_wait)); + rbd_dev->lock_state =RBD_LOCK_STATE_QUIESCING ; +rbd_assert (!completion_done (&rbd_dev->quiescing_wait));if (list_empty (&rbd_dev->running_list))return true;up_write (&rbd_dev->lock_rwsem); -wait_for_completion (&rbd_dev->releasing_wait); +wait_for_completion (&rbd_dev->quiescing_wait);down_write (&rbd_dev->lock_rwsem); -if (rbd_dev->lock_state !=RBD_LOCK_STATE_RELEASING ) +if (rbd_dev->lock_state !=RBD_LOCK_STATE_QUIESCING )return false;rbd_assert (list_empty (&rbd_dev->running_list));
@@ -4701,6 +4697,10 @@ static void rbd_reacquire_lock(struct rbd_device *rbd_dev)rbd_warn (rbd_dev,"failed to update lock cookie: %d" , ret); +if (rbd_dev->opts->exclusive) +rbd_warn (rbd_dev, +"temporarily releasing lock on exclusive mapping" ); +/* * Lock cookie cannot be updated on older OSDs, so do * a manual release and queue an acquire.
@@ -5556,7 +5556,7 @@ static struct rbd_device *__rbd_dev_create(struct rbd_spec *spec)INIT_LIST_HEAD (&rbd_dev->acquiring_list);INIT_LIST_HEAD (&rbd_dev->running_list);init_completion (&rbd_dev->acquire_wait); -init_completion (&rbd_dev->releasing_wait); +init_completion (&rbd_dev->quiescing_wait);spin_lock_init (&rbd_dev->object_map_lock);
@@ -6618,11 +6618,6 @@ static int rbd_add_acquire_lock(struct rbd_device *rbd_dev)return ret; } -/* -* The lock may have been released by now, unless automatic lock -* transitions are disabled. -*/ -rbd_assert (!rbd_dev->opts->exclusive ||rbd_is_lock_owner (rbd_dev));return 0 ; }
drivers/bluetooth/btusb.c +4 -0
@@ -370,6 +370,10 @@ static const struct usb_device_id blacklist_table[] = { BTUSB_WIDEBAND_SPEECH }, { USB_DEVICE(0x13d3, 0x3571), .driver_info = BTUSB_REALTEK | BTUSB_WIDEBAND_SPEECH }, + { USB_DEVICE(0x13d3, 0x3591), .driver_info = BTUSB_REALTEK | + BTUSB_WIDEBAND_SPEECH }, + { USB_DEVICE(0x0489, 0xe125), .driver_info = BTUSB_REALTEK | + BTUSB_WIDEBAND_SPEECH },/* Realtek Bluetooth devices */ { USB_VENDOR_AND_INTERFACE_INFO(0x0bda, 0xe0, 0x01, 0x01),
drivers/char/hw_random/amd-rng.c +3 -1
@@ -142,8 +142,10 @@ static int __init mod_init(void) found: err =pci_read_config_dword (pdev,0x58 , &pmbase); -if (err) +if (err) { + err =pcibios_err_to_errno (err); goto put_dev; + } pmbase &=0x0000FF00 ;if (pmbase ==0 ) {
drivers/char/tpm/eventlog/common.c +2 -0
@@ -47,6 +47,8 @@ static int tpm_bios_measurements_open(struct inode *inode,if (!err) { seq = file->private_data; seq->private = chip; + }else { +put_device (&chip->dev); }return err;
drivers/clk/davinci/da8xx-cfgchip.c +2 -2
@@ -505,7 +505,7 @@ da8xx_cfgchip_register_usb0_clk48(struct device *dev,const char *const parent_names[] = {"usb_refclkin" ,"pll0_auxclk" };struct clk *fck_clk;struct da8xx_usb0_clk48 *usb0; -struct clk_init_data init; +struct clk_init_data init = {};int ret; fck_clk =devm_clk_get (dev,"fck" );
@@ -579,7 +579,7 @@ da8xx_cfgchip_register_usb1_clk48(struct device *dev, {const char *const parent_names[] = {"usb0_clk48" ,"usb_refclkin" };struct da8xx_usb1_clk48 *usb1; -struct clk_init_data init; +struct clk_init_data init = {};int ret; usb1 =devm_kzalloc (dev,sizeof (*usb1),GFP_KERNEL );
drivers/clocksource/sh_cmt.c +12 -1
@@ -510,6 +510,7 @@ static void sh_cmt_set_next(struct sh_cmt_channel *ch, unsigned long delta)static irqreturn_t sh_cmt_interrupt (int irq,void *dev_id) {struct sh_cmt_channel *ch = dev_id; +unsigned long flags;/* clear flags */ sh_cmt_write_cmcsr(ch, sh_cmt_read_cmcsr(ch) &
@@ -540,6 +541,8 @@ static irqreturn_t sh_cmt_interrupt(int irq, void *dev_id) ch->flags &= ~FLAG_SKIPEVENT ; +raw_spin_lock_irqsave (&ch->lock, flags); +if (ch->flags &FLAG_REPROGRAM ) { ch->flags &= ~FLAG_REPROGRAM ;sh_cmt_clock_event_program_verify (ch,1 );
@@ -552,6 +555,8 @@ static irqreturn_t sh_cmt_interrupt(int irq, void *dev_id) ch->flags &= ~FLAG_IRQCONTEXT ; +raw_spin_unlock_irqrestore (&ch->lock, flags); +return IRQ_HANDLED ; }
@@ -750,12 +755,18 @@ static int sh_cmt_clock_event_next(unsigned long delta, struct clock_event_device *ced) {struct sh_cmt_channel *ch =ced_to_sh_cmt (ced); +unsigned long flags;BUG_ON (!clockevent_state_oneshot (ced)); + +raw_spin_lock_irqsave (&ch->lock, flags); +if (likely (ch->flags &FLAG_IRQCONTEXT )) ch->next_match_value = delta -1 ;else -sh_cmt_set_next (ch, delta -1 ); +__sh_cmt_set_next (ch, delta -1 ); + +raw_spin_unlock_irqrestore (&ch->lock, flags);return 0 ; }
drivers/edac/Makefile +6 -4
@@ -57,11 +57,13 @@ obj-$(CONFIG_EDAC_MPC85XX) += mpc85xx_edac_mod.o layerscape_edac_mod-y := fsl_ddr_edac.o layerscape_edac.o obj-$(CONFIG_EDAC_LAYERSCAPE) += layerscape_edac_mod.o -skx_edac-y := skx_common.o skx_base.o -obj-$(CONFIG_EDAC_SKX) += skx_edac.o +skx_edac_common-y := skx_common.o -i10nm_edac-y := skx_common.o i10nm_base.o -obj-$(CONFIG_EDAC_I10NM) += i10nm_edac.o +skx_edac-y := skx_base.o +obj-$(CONFIG_EDAC_SKX) += skx_edac.o skx_edac_common.o + +i10nm_edac-y := i10nm_base.o +obj-$(CONFIG_EDAC_I10NM) += i10nm_edac.o skx_edac_common.o obj-$(CONFIG_EDAC_MV64X60) += mv64x60_edac.o obj-$(CONFIG_EDAC_CELL) += cell_edac.o
drivers/edac/skx_base.c +48 -3
84 lines not on this page · raw message
drivers/edac/skx_common.c +106 -40
299 lines not on this page · raw message
drivers/edac/skx_common.h +16 -3
@@ -9,6 +9,8 @@#ifndef _SKX_COMM_EDAC_H#define _SKX_COMM_EDAC_H +#include <linux/bits.h> +#define MSG_SIZE 1024/*
@@ -64,6 +66,7 @@ struct skx_dev {u8 src_id, node_id;struct skx_channel {struct pci_dev *cdev; +struct pci_dev *edev;struct skx_dimm {u8 close_pg;u8 bank_xor_enable;
@@ -89,9 +92,17 @@ enum { INDEX_MEMCTRL,INDEX_CHANNEL ,INDEX_DIMM , +INDEX_NM_FIRST , +INDEX_NM_MEMCTRL =INDEX_NM_FIRST , +INDEX_NM_CHANNEL , +INDEX_NM_DIMM ,INDEX_MAX }; +#define BIT_NM_MEMCTRL BIT_ULL(INDEX_NM_MEMCTRL) +#define BIT_NM_CHANNEL BIT_ULL(INDEX_NM_CHANNEL) +#define BIT_NM_DIMM BIT_ULL(INDEX_NM_DIMM) +struct decoded_addr {struct skx_dev *dev;u64 addr;
@@ -113,10 +124,12 @@ struct decoded_addr {typedef int (*get_dimm_config_f )(struct mem_ctl_info *mci);typedef bool (*skx_decode_f )(struct decoded_addr *res); +typedef void (*skx_show_retry_log_f )(struct decoded_addr *res,char *msg,int len); -int __init skx_adxl_get (void ); -void __exit skx_adxl_put(void); -void skx_set_decode (skx_decode_f decode); +int skx_adxl_get (void ); +void skx_adxl_put (void ); +void skx_set_decode (skx_decode_f decode,skx_show_retry_log_f show_retry_log); +void skx_set_mem_cfg (bool mem_cfg_2lm);int skx_get_src_id (struct skx_dev *d,int off,u8 *id);int skx_get_node_id (struct skx_dev *d,u8 *id);
drivers/firmware/turris-mox-rwtm.c +7 -11
@@ -186,9 +186,8 @@ static int mox_get_board_info(struct mox_rwtm *rwtm)if (ret <0 )return ret; - ret =wait_for_completion_timeout (&rwtm->cmd_done,HZ /2 ); -if (ret <0 ) -return ret; +if (!wait_for_completion_timeout (&rwtm->cmd_done,HZ /2 )) +return -ETIMEDOUT ; ret =mox_get_status (MBOX_CMD_BOARD_INFO , reply->retval);if (ret == -ENODATA ) {
@@ -222,9 +221,8 @@ static int mox_get_board_info(struct mox_rwtm *rwtm)if (ret <0 )return ret; - ret =wait_for_completion_timeout (&rwtm->cmd_done,HZ /2 ); -if (ret <0 ) -return ret; +if (!wait_for_completion_timeout (&rwtm->cmd_done,HZ /2 )) +return -ETIMEDOUT ; ret =mox_get_status (MBOX_CMD_ECDSA_PUB_KEY , reply->retval);if (ret == -ENODATA ) {
@@ -261,9 +259,8 @@ static int check_get_random_support(struct mox_rwtm *rwtm)if (ret <0 )return ret; - ret =wait_for_completion_timeout (&rwtm->cmd_done,HZ /2 ); -if (ret <0 ) -return ret; +if (!wait_for_completion_timeout (&rwtm->cmd_done,HZ /2 )) +return -ETIMEDOUT ;return mox_get_status (MBOX_CMD_GET_RANDOM , rwtm->reply.retval); }
@@ -340,6 +337,7 @@ static int turris_mox_rwtm_probe(struct platform_device *pdev)platform_set_drvdata (pdev, rwtm);mutex_init (&rwtm->busy); +init_completion (&rwtm->cmd_done); rwtm->mbox_client.dev = dev; rwtm->mbox_client.rx_callback = mox_rwtm_rx_callback;
@@ -353,8 +351,6 @@ static int turris_mox_rwtm_probe(struct platform_device *pdev) goto remove_files; } -init_completion (&rwtm->cmd_done); - ret =mox_get_board_info (rwtm);if (ret <0 )dev_warn (dev,"Cannot read board information: %i\n" , ret);
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +5 -2
@@ -1053,12 +1053,15 @@ static void amdgpu_ras_interrupt_process_handler(struct work_struct *work)int amdgpu_ras_interrupt_dispatch (struct amdgpu_device *adev,struct ras_dispatch_if *info) { -struct ras_manager *obj =amdgpu_ras_find_obj (adev, &info->head); -struct ras_ih_data *data = &obj->ih_data; +struct ras_manager *obj; +struct ras_ih_data *data; + obj =amdgpu_ras_find_obj (adev, &info->head);if (!obj)return -EINVAL ; + data = &obj->ih_data; +if (data->inuse ==0 )return 0 ;
drivers/gpu/drm/amd/display/dc/core/dc_surface.c +2 -1
@@ -165,7 +165,8 @@ const struct dc_plane_status *dc_plane_get_status(if (pipe_ctx->plane_state != plane_state)continue ; - pipe_ctx->plane_state->status.is_flip_pending = false; +if (pipe_ctx->plane_state) + pipe_ctx->plane_state->status.is_flip_pending = false;break ; }
drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c +1 -4
@@ -1115,7 +1115,6 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,u32 status_reg;u8 *buffer = msg->buffer;unsigned int i; -int num_transferred =0 ;int ret;/* Buffer size of AUX CH is 16 bytes */
@@ -1167,7 +1166,6 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp, reg = buffer[i];writel (reg, dp->reg_base +ANALOGIX_DP_BUF_DATA_0 +4 * i); - num_transferred++; } }
@@ -1215,7 +1213,6 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp, reg =readl (dp->reg_base +ANALOGIX_DP_BUF_DATA_0 +4 * i); buffer[i] = (unsigned char )reg; - num_transferred++; } }
@@ -1232,7 +1229,7 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp, (msg->request & ~DP_AUX_I2C_MOT) == DP_AUX_NATIVE_READ) msg->reply = DP_AUX_NATIVE_REPLY_ACK; -return num_transferred >0 ? num_transferred : -EBUSY ; +return msg->size; aux_error:/* if aux err happen, reset aux */
drivers/gpu/drm/drm_client_modeset.c +5 -0
@@ -792,6 +792,11 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,kfree (modeset->mode); modeset->mode =drm_mode_duplicate (dev, mode); +if (!modeset->mode) { + ret = -ENOMEM ; +break ; + } +drm_connector_get (connector); modeset->connectors[modeset->num_connectors++] = connector; modeset->x = offset->x;
drivers/gpu/drm/etnaviv/etnaviv_gem.c +4 -2
@@ -363,9 +363,11 @@ static void *etnaviv_gem_vmap_impl(struct etnaviv_gem_object *obj)static inline enum dma_data_direction etnaviv_op_to_dma_dir (u32 op) { -if (op &ETNA_PREP_READ ) + op &=ETNA_PREP_READ |ETNA_PREP_WRITE ; + +if (op ==ETNA_PREP_READ )return DMA_FROM_DEVICE ; -else if (op &ETNA_PREP_WRITE ) +else if (op ==ETNA_PREP_WRITE )return DMA_TO_DEVICE ;else return DMA_BIDIRECTIONAL ;
drivers/gpu/drm/gma500/cdv_intel_lvds.c +3 -0
@@ -391,6 +391,9 @@ static int cdv_intel_lvds_get_modes(struct drm_connector *connector)if (mode_dev->panel_fixed_mode !=NULL ) {struct drm_display_mode *mode =drm_mode_duplicate (dev, mode_dev->panel_fixed_mode); +if (!mode) +return 0 ; +drm_mode_probed_add (connector, mode);return 1 ; }
drivers/gpu/drm/gma500/psb_intel_lvds.c +3 -0
@@ -506,6 +506,9 @@ static int psb_intel_lvds_get_modes(struct drm_connector *connector)if (mode_dev->panel_fixed_mode !=NULL ) {struct drm_display_mode *mode =drm_mode_duplicate (dev, mode_dev->panel_fixed_mode); +if (!mode) +return 0 ; +drm_mode_probed_add (connector, mode);return 1 ; }
drivers/gpu/drm/i915/gem/i915_gem_mman.c +42 -5
69 lines not on this page · raw message
drivers/gpu/drm/mgag200/mgag200_i2c.c +1 -1
@@ -135,7 +135,7 @@ struct mga_i2c_chan *mgag200_i2c_create(struct drm_device *dev) i2c->adapter.algo_data = &i2c->bit; i2c->bit.udelay =10 ; - i2c->bit.timeout =2 ; + i2c->bit.timeout =usecs_to_jiffies (2200 ); i2c->bit.data = i2c; i2c->bit.setsda = mga_gpio_setsda; i2c->bit.setscl = mga_gpio_setscl;
drivers/gpu/drm/nouveau/nouveau_prime.c +2 -1
@@ -83,7 +83,8 @@ struct drm_gem_object *nouveau_gem_prime_import_sg_table(struct drm_device *dev,* to the caller, instead of a normal nouveau_bo ttm reference. */ ret =drm_gem_object_init (dev, &nvbo->bo.base, size);if (ret) { -nouveau_bo_ref (NULL , &nvbo); +drm_gem_object_release (&nvbo->bo.base); +kfree (nvbo); obj =ERR_PTR (-ENOMEM ); goto unlock; }
drivers/gpu/drm/panfrost/panfrost_drv.c +1 -0
@@ -692,3 +692,4 @@ module_platform_driver(panfrost_driver);MODULE_AUTHOR ("Panfrost Project Developers" );MODULE_DESCRIPTION ("Panfrost DRM Driver" );MODULE_LICENSE ("GPL v2" ); +MODULE_SOFTDEP ("pre: governor_simpleondemand" );
drivers/gpu/drm/qxl/qxl_display.c +3 -0
@@ -230,6 +230,9 @@ static int qxl_add_mode(struct drm_connector *connector,return 0 ; mode =drm_cvt_mode (dev, width, height,60 , false, false, false); +if (!mode) +return 0 ; +if (preferred) mode->type |=DRM_MODE_TYPE_PREFERRED ; mode->hdisplay = width;
drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c +1 -1
@@ -98,7 +98,7 @@ static int vmw_overlay_send_put(struct vmw_private *dev_priv, {struct vmw_escape_video_flush *flush;size_t fifo_size; -bool have_so = (dev_priv->active_display_unit == vmw_du_screen_object); +bool have_so = (dev_priv->active_display_unit != vmw_du_legacy);int i, num_items;SVGAGuestPtr ptr;
drivers/hid/wacom_wac.c +1 -2
@@ -714,13 +714,12 @@ static int wacom_intuos_get_tool_type(int tool_id)case 0x8e2 :/* IntuosHT2 pen */ case 0x022 :case 0x200 :/* Pro Pen 3 */ -case 0x04200 :/* Pro Pen 3 */ case 0x10842 :/* MobileStudio Pro Pro Pen slim */ case 0x14802 :/* Intuos4/5 13HD/24HD Classic Pen */ case 0x16802 :/* Cintiq 13HD Pro Pen */ case 0x18802 :/* DTH2242 Pen */ case 0x10802 :/* Intuos4/5 13HD/24HD General Pen */ -case 0x80842 :/* Intuos Pro and Cintiq Pro 3D Pen */ +case 0x8842 :/* Intuos Pro and Cintiq Pro 3D Pen */ tool_type =BTN_TOOL_PEN ;break ;
drivers/hwmon/adt7475.c +1 -1
@@ -1681,7 +1681,7 @@ static void adt7475_read_pwm(struct i2c_client *client, int index) data->pwm[CONTROL ][index] &= ~0xE0 ; data->pwm[CONTROL ][index] |= (7 <<5 ); -i2c_smbus_write_byte_data (client,PWM_CONFIG_REG (index), +i2c_smbus_write_byte_data (client,PWM_REG (index), data->pwm[INPUT ][index]); i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index),
drivers/hwmon/max6697.c +3 -2
@@ -305,6 +305,7 @@ static ssize_t temp_store(struct device *dev,return ret;mutex_lock (&data->update_lock); + temp =clamp_val (temp,-1000000 ,1000000 );/* prevent underflow */ temp =DIV_ROUND_CLOSEST (temp,1000 ) + data->temp_offset; temp =clamp_val (temp,0 , data->type == max6581 ?255 :127 ); data->temp[nr][index] = temp;
@@ -358,14 +359,14 @@ static SENSOR_DEVICE_ATTR_RO(temp6_max_alarm, alarm, 20); static SENSOR_DEVICE_ATTR_RO(temp7_max_alarm, alarm, 21); static SENSOR_DEVICE_ATTR_RO(temp8_max_alarm, alarm, 23); -static SENSOR_DEVICE_ATTR_RO(temp1_crit_alarm, alarm, 14); +static SENSOR_DEVICE_ATTR_RO(temp1_crit_alarm, alarm, 15); static SENSOR_DEVICE_ATTR_RO(temp2_crit_alarm, alarm, 8); static SENSOR_DEVICE_ATTR_RO(temp3_crit_alarm, alarm, 9); static SENSOR_DEVICE_ATTR_RO(temp4_crit_alarm, alarm, 10); static SENSOR_DEVICE_ATTR_RO(temp5_crit_alarm, alarm, 11); static SENSOR_DEVICE_ATTR_RO(temp6_crit_alarm, alarm, 12); static SENSOR_DEVICE_ATTR_RO(temp7_crit_alarm, alarm, 13); -static SENSOR_DEVICE_ATTR_RO(temp8_crit_alarm, alarm, 15); +static SENSOR_DEVICE_ATTR_RO(temp8_crit_alarm, alarm, 14); static SENSOR_DEVICE_ATTR_RO(temp2_fault, alarm, 1); static SENSOR_DEVICE_ATTR_RO(temp3_fault, alarm, 2);
drivers/i2c/i2c-smbus.c +56 -13
102 lines not on this page · raw message
drivers/infiniband/core/device.c +3 -3
@@ -2125,6 +2125,9 @@ int ib_device_set_netdev(struct ib_device *ib_dev, struct net_device *ndev,unsigned long flags;int ret; +if (!rdma_is_port_valid (ib_dev, port)) +return -EINVAL ; +/* * Drivers wish to call this before ib_register_driver, so we have to * setup the port data early.
@@ -2133,9 +2136,6 @@ int ib_device_set_netdev(struct ib_device *ib_dev, struct net_device *ndev,if (ret)return ret; -if (!rdma_is_port_valid (ib_dev, port)) -return -EINVAL ; - pdata = &ib_dev->port_data[port];spin_lock_irqsave (&pdata->netdev_lock, flags); old_ndev = rcu_dereference_protected(
drivers/infiniband/core/iwcm.c +7 -4
@@ -370,8 +370,10 @@ EXPORT_SYMBOL(iw_cm_disconnect);* * Clean up all resources associated with the connection and release * the initial reference taken by iw_create_cm_id. +* +* Returns true if and only if the last cm_id_priv reference has been dropped. */ -static void destroy_cm_id (struct iw_cm_id *cm_id) +static bool destroy_cm_id (struct iw_cm_id *cm_id) {struct iwcm_id_private *cm_id_priv;struct ib_qp *qp;
@@ -441,7 +443,7 @@ static void destroy_cm_id(struct iw_cm_id *cm_id)iwpm_remove_mapping (&cm_id->local_addr,RDMA_NL_IWCM ); } - (void )iwcm_deref_id (cm_id_priv); +return iwcm_deref_id (cm_id_priv); }/*
@@ -452,7 +454,8 @@ static void destroy_cm_id(struct iw_cm_id *cm_id)*/ void iw_destroy_cm_id (struct iw_cm_id *cm_id) { -destroy_cm_id (cm_id); +if (!destroy_cm_id (cm_id)) +flush_workqueue (iwcm_wq); }EXPORT_SYMBOL (iw_destroy_cm_id);
@@ -1036,7 +1039,7 @@ static void cm_work_handler(struct work_struct *_work)if (!test_bit (IWCM_F_DROP_EVENTS , &cm_id_priv->flags)) { ret =process_event (cm_id_priv, &levent);if (ret) -destroy_cm_id (&cm_id_priv->id); +WARN_ON_ONCE (destroy_cm_id (&cm_id_priv->id)); }else pr_debug ("dropping event %d\n" , levent.event);if (iwcm_deref_id (cm_id_priv))
drivers/infiniband/hw/bnxt_re/ib_verbs.c +4 -4
@@ -2271,7 +2271,7 @@ static int bnxt_re_build_send_wqe(struct bnxt_re_qp *qp,break ;case IB_WR_SEND_WITH_IMM : wqe->type =BNXT_QPLIB_SWQE_TYPE_SEND_WITH_IMM ; - wqe->send.imm_data = wr->ex.imm_data; + wqe->send.imm_data =be32_to_cpu (wr->ex.imm_data);break ;case IB_WR_SEND_WITH_INV : wqe->type =BNXT_QPLIB_SWQE_TYPE_SEND_WITH_INV ;
@@ -2301,7 +2301,7 @@ static int bnxt_re_build_rdma_wqe(const struct ib_send_wr *wr,break ;case IB_WR_RDMA_WRITE_WITH_IMM : wqe->type =BNXT_QPLIB_SWQE_TYPE_RDMA_WRITE_WITH_IMM ; - wqe->rdma.imm_data = wr->ex.imm_data; + wqe->rdma.imm_data =be32_to_cpu (wr->ex.imm_data);break ;case IB_WR_RDMA_READ : wqe->type =BNXT_QPLIB_SWQE_TYPE_RDMA_READ ;
@@ -3250,7 +3250,7 @@ static void bnxt_re_process_res_shadow_qp_wc(struct bnxt_re_qp *gsi_sqp, wc->byte_len = orig_cqe->length; wc->qp = &gsi_qp->ib_qp; - wc->ex.imm_data = orig_cqe->immdata; + wc->ex.imm_data =cpu_to_be32 (le32_to_cpu (orig_cqe->immdata)); wc->src_qp = orig_cqe->src_qp;memcpy (wc->smac, orig_cqe->smac,ETH_ALEN );if (bnxt_re_is_vlan_pkt (orig_cqe, &vlan_id, &sl)) {
@@ -3391,7 +3391,7 @@ int bnxt_re_poll_cq(struct ib_cq *ib_cq, int num_entries, struct ib_wc *wc)continue ; } wc->qp = &qp->ib_qp; - wc->ex.imm_data = cqe->immdata; + wc->ex.imm_data =cpu_to_be32 (le32_to_cpu (cqe->immdata)); wc->src_qp = cqe->src_qp;memcpy (wc->smac, cqe->smac,ETH_ALEN ); wc->port_num =1 ;
drivers/infiniband/hw/bnxt_re/qplib_fp.h +3 -3
@@ -145,7 +145,7 @@ struct bnxt_qplib_swqe {/* Send, with imm, inval key */ struct {union { -__be32 imm_data; +u32 imm_data;u32 inv_key; };u32 q_key;
@@ -163,7 +163,7 @@ struct bnxt_qplib_swqe {/* RDMA write, with imm, read */ struct {union { -__be32 imm_data; +u32 imm_data;u32 inv_key; };u64 remote_va;
@@ -350,7 +350,7 @@ struct bnxt_qplib_cqe {u16 cfa_meta;u64 wr_id;union { -__be32 immdata; +__le32 immdata;u32 invrkey; };u64 qp_handle;
drivers/infiniband/hw/mlx4/alias_GUID.c +1 -1
@@ -832,7 +832,7 @@ void mlx4_ib_destroy_alias_guid_service(struct mlx4_ib_dev *dev)int mlx4_ib_init_alias_guid_service (struct mlx4_ib_dev *dev) { -char alias_wq_name[15 ]; +char alias_wq_name[22 ];int ret =0 ;int i, j;union ib_gid gid;
drivers/infiniband/hw/mlx4/mad.c +1 -1
@@ -2167,7 +2167,7 @@ static int mlx4_ib_alloc_demux_ctx(struct mlx4_ib_dev *dev,struct mlx4_ib_demux_ctx *ctx, int port) { - char name[12]; + char name[21];int ret =0 ;int i;
drivers/infiniband/sw/rxe/rxe_req.c +4 -3
@@ -390,7 +390,7 @@ static struct sk_buff *init_req_packet(struct rxe_qp *qp,int solicited;u16 pkey;u32 qp_num; -int ack_req; +int ack_req =0 ;/* length from start of bth to end of icrc */ paylen = rxe_opcode[opcode].length + payload + pad +RXE_ICRC_SIZE ;
@@ -426,8 +426,9 @@ static struct sk_buff *init_req_packet(struct rxe_qp *qp, qp_num = (pkt->mask &RXE_DETH_MASK ) ? ibwr->wr.ud.remote_qpn : qp->attr.dest_qp_num; - ack_req = ((pkt->mask &RXE_END_MASK ) || - (qp->req.noack_pkts++ >RXE_MAX_PKT_PER_ACK )); +if (qp_type (qp) !=IB_QPT_UD &&qp_type (qp) !=IB_QPT_UC ) + ack_req = ((pkt->mask &RXE_END_MASK ) || + (qp->req.noack_pkts++ >RXE_MAX_PKT_PER_ACK ));if (ack_req) qp->req.noack_pkts =0 ;
drivers/input/keyboard/qt1050.c +6 -1
@@ -226,7 +226,12 @@ static bool qt1050_identify(struct qt1050_priv *ts)int err;/* Read Chip ID */ -regmap_read (ts->regmap,QT1050_CHIP_ID , &val); + err =regmap_read (ts->regmap,QT1050_CHIP_ID , &val); +if (err) { +dev_err (&ts->client->dev,"Failed to read chip ID: %d\n" , err); +return false; + } +if (val !=QT1050_CHIP_ID_VER ) {dev_err (&ts->client->dev,"ID %d not supported\n" , val);return false;
drivers/input/mouse/elan_i2c_core.c +2 -0
@@ -1295,6 +1295,8 @@ static int __maybe_unused elan_suspend(struct device *dev) } err: +if (ret) +enable_irq (client->irq);mutex_unlock (&data->sysfs_mutex);return ret; }
drivers/irqchip/irq-imx-irqsteer.c +33 -7
@@ -12,6 +12,7 @@#include <linux/kernel.h> #include <linux/of_irq.h> #include <linux/of_platform.h> +#include <linux/pm_runtime.h> #include <linux/spinlock.h> #define CTRL_STRIDE_OFF (_t, _r) (_t * 4 * _r)
@@ -34,6 +35,7 @@ struct irqsteer_data {int channel;struct irq_domain *domain;u32 *saved_reg; +struct device *dev; }; static int imx_irqsteer_get_reg_index(struct irqsteer_data *data,
@@ -70,10 +72,26 @@ static void imx_irqsteer_irq_mask(struct irq_data *d)raw_spin_unlock_irqrestore (&data->lock, flags); } -static struct irq_chip imx_irqsteer_irq_chip = { - .name ="irqsteer" , - .irq_mask = imx_irqsteer_irq_mask, - .irq_unmask = imx_irqsteer_irq_unmask, +static void imx_irqsteer_irq_bus_lock (struct irq_data *d) +{ +struct irqsteer_data *data = d->chip_data; + +pm_runtime_get_sync (data->dev); +} + +static void imx_irqsteer_irq_bus_sync_unlock (struct irq_data *d) +{ +struct irqsteer_data *data = d->chip_data; + +pm_runtime_put_autosuspend (data->dev); +} + +static const struct irq_chip imx_irqsteer_irq_chip = { + .name ="irqsteer" , + .irq_mask = imx_irqsteer_irq_mask, + .irq_unmask = imx_irqsteer_irq_unmask, + .irq_bus_lock = imx_irqsteer_irq_bus_lock, + .irq_bus_sync_unlock = imx_irqsteer_irq_bus_sync_unlock, }; static int imx_irqsteer_irq_map(struct irq_domain *h, unsigned int irq,
@@ -151,6 +169,7 @@ static int imx_irqsteer_probe(struct platform_device *pdev)if (!data)return -ENOMEM ; + data->dev = &pdev->dev; data->regs =devm_platform_ioremap_resource (pdev,0 );if (IS_ERR (data->regs)) {dev_err (&pdev->dev,"failed to initialize reg\n" );
@@ -181,7 +200,7 @@ static int imx_irqsteer_probe(struct platform_device *pdev) data->irq_count =DIV_ROUND_UP (irqs_num,64 ); data->reg_num = irqs_num /32 ; -if (IS_ENABLED (CONFIG_PM_SLEEP )) { +if (IS_ENABLED (CONFIG_PM )) { data->saved_reg =devm_kzalloc (&pdev->dev,sizeof (u32) * data->reg_num,GFP_KERNEL );
@@ -205,6 +224,7 @@ static int imx_irqsteer_probe(struct platform_device *pdev) ret = -ENOMEM ; goto out; } +irq_domain_set_pm_device (data->domain, &pdev->dev);if (!data->irq_count || data->irq_count >CHAN_MAX_OUTPUT_INT ) { ret = -EINVAL ;
@@ -225,6 +245,9 @@ static int imx_irqsteer_probe(struct platform_device *pdev)platform_set_drvdata (pdev, data); +pm_runtime_set_active (&pdev->dev); +pm_runtime_enable (&pdev->dev); +return 0 ; out:clk_disable_unprepare (data->ipg_clk);
@@ -247,7 +270,7 @@ static int imx_irqsteer_remove(struct platform_device *pdev)return 0 ; } -#ifdef CONFIG_PM_SLEEP +#ifdef CONFIG_PM static void imx_irqsteer_save_regs (struct irqsteer_data *data) {int i;
@@ -294,7 +317,10 @@ static int imx_irqsteer_resume(struct device *dev)#endif static const struct dev_pm_ops imx_irqsteer_pm_ops = { -SET_NOIRQ_SYSTEM_SLEEP_PM_OPS (imx_irqsteer_suspend, imx_irqsteer_resume) + SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, + pm_runtime_force_resume) +SET_RUNTIME_PM_OPS (imx_irqsteer_suspend, + imx_irqsteer_resume,NULL ) };static const struct of_device_id imx_irqsteer_dt_ids[] = {
drivers/irqchip/irq-mbigen.c +16 -4
@@ -64,6 +64,20 @@ struct mbigen_device {void __iomem *base; }; +static inline unsigned int get_mbigen_node_offset (unsigned int nid) +{ +unsigned int offset = nid *MBIGEN_NODE_OFFSET ; + +/* +* To avoid touched clear register in unexpected way, we need to directly +* skip clear register when access to more than 10 mbigen nodes. +*/ +if (nid >= (REG_MBIGEN_CLEAR_OFFSET /MBIGEN_NODE_OFFSET )) + offset +=MBIGEN_NODE_OFFSET ; + +return offset; +} +static inline unsigned int get_mbigen_vec_reg (irq_hw_number_t hwirq) {unsigned int nid, pin;
@@ -72,8 +86,7 @@ static inline unsigned int get_mbigen_vec_reg(irq_hw_number_t hwirq) nid = hwirq /IRQS_PER_MBIGEN_NODE +1 ; pin = hwirq %IRQS_PER_MBIGEN_NODE ; -return pin *4 + nid *MBIGEN_NODE_OFFSET - +REG_MBIGEN_VEC_OFFSET ; +return pin *4 +get_mbigen_node_offset (nid) +REG_MBIGEN_VEC_OFFSET ; } static inline void get_mbigen_type_reg(irq_hw_number_t hwirq,
@@ -88,8 +101,7 @@ static inline void get_mbigen_type_reg(irq_hw_number_t hwirq, *mask =1 << (irq_ofst %32 ); ofst = irq_ofst /32 *4 ; - *addr = ofst + nid *MBIGEN_NODE_OFFSET - +REG_MBIGEN_TYPE_OFFSET ; + *addr = ofst +get_mbigen_node_offset (nid) +REG_MBIGEN_TYPE_OFFSET ; } static inline void get_mbigen_clear_reg(irq_hw_number_t hwirq,
drivers/isdn/hardware/mISDN/hfcmulti.c +4 -3
@@ -1931,7 +1931,7 @@ hfcmulti_dtmf(struct hfc_multi *hc)static void hfcmulti_tx (struct hfc_multi *hc,int ch) { -int i, ii, temp, len =0 ; +int i, ii, temp, tmp_len, len =0 ;int Zspace, z1, z2;/* must be int for calculation */ int Fspace, f1, f2;u_char *d;
@@ -2152,14 +2152,15 @@ hfcmulti_tx(struct hfc_multi *hc, int ch)HFC_wait_nodebug (hc); } + tmp_len = (*sp)->len;dev_kfree_skb (*sp);/* check for next frame */ if (bch &&get_next_bframe (bch)) { - len = (*sp)->len; + len = tmp_len; goto next_frame; }if (dch &&get_next_dframe (dch)) { - len = (*sp)->len; + len = tmp_len; goto next_frame; }
drivers/leds/led-triggers.c +1 -1
@@ -121,9 +121,9 @@ int led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trig) flags);cancel_work_sync (&led_cdev->set_brightness_work);led_stop_software_blink (led_cdev); +device_remove_groups (led_cdev->dev, led_cdev->trigger->groups);if (led_cdev->trigger->deactivate) led_cdev->trigger->deactivate (led_cdev); -device_remove_groups (led_cdev->dev, led_cdev->trigger->groups); led_cdev->trigger =NULL ; led_cdev->trigger_data =NULL ; led_cdev->activated = false;
drivers/leds/leds-ss4200.c +5 -2
@@ -356,8 +356,10 @@ static int ich7_lpc_probe(struct pci_dev *dev, nas_gpio_pci_dev = dev; status =pci_read_config_dword (dev,PMBASE , &g_pm_io_base); -if (status) +if (status) { + status =pcibios_err_to_errno (status); goto out; + } g_pm_io_base &=0x00000ff80 ; status =pci_read_config_dword (dev,GPIO_CTRL , &gc);
@@ -369,8 +371,9 @@ static int ich7_lpc_probe(struct pci_dev *dev, } status =pci_read_config_dword (dev,GPIO_BASE , &nas_gpio_io_base); -if (0 > status) { +if (status) {dev_info (&dev->dev,"Unable to read GPIOBASE.\n" ); + status =pcibios_err_to_errno (status); goto out; }dev_dbg (&dev->dev,": GPIOBASE = 0x%08x\n" , nas_gpio_io_base);
drivers/macintosh/therm_windtunnel.c +1 -1
@@ -549,7 +549,7 @@ g4fan_exit( void )platform_driver_unregister ( &therm_of_driver );if ( x.of_dev ) -of_device_unregister ( x.of_dev ); +of_platform_device_destroy (&x.of_dev->dev,NULL ); }module_init (g4fan_init);
drivers/md/raid5.c +13 -7
@@ -5821,7 +5821,9 @@ static sector_t reshape_request(struct mddev *mddev, sector_t sector_nr, int *sk safepos = conf->reshape_safe;sector_div (safepos, data_disks);if (mddev->reshape_backwards) { -BUG_ON (writepos < reshape_sectors); +if (WARN_ON (writepos < reshape_sectors)) +return MaxSector; + writepos -= reshape_sectors; readpos += reshape_sectors; safepos += reshape_sectors;
@@ -5839,14 +5841,18 @@ static sector_t reshape_request(struct mddev *mddev, sector_t sector_nr, int *sk* to set 'stripe_addr' which is where we will write to. */ if (mddev->reshape_backwards) { -BUG_ON (conf->reshape_progress ==0 ); +if (WARN_ON (conf->reshape_progress ==0 )) +return MaxSector; + stripe_addr = writepos; -BUG_ON ((mddev->dev_sectors & - ~((sector_t )reshape_sectors -1 )) - - reshape_sectors - stripe_addr - != sector_nr); +if (WARN_ON ((mddev->dev_sectors & + ~((sector_t )reshape_sectors -1 )) - + reshape_sectors - stripe_addr != sector_nr)) +return MaxSector; }else { -BUG_ON (writepos != sector_nr + reshape_sectors); +if (WARN_ON (writepos != sector_nr + reshape_sectors)) +return MaxSector; + stripe_addr = sector_nr; }
drivers/media/pci/saa7134/saa7134-dvb.c +6 -2
@@ -466,7 +466,9 @@ static int philips_europa_tuner_sleep(struct dvb_frontend *fe)/* switch the board to analog mode */ if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl (fe,1 ); -i2c_transfer (&dev->i2c_adap, &analog_msg,1 ); +if (i2c_transfer (&dev->i2c_adap, &analog_msg,1 ) !=1 ) +return -EIO ; +return 0 ; }
@@ -1018,7 +1020,9 @@ static int md8800_set_voltage2(struct dvb_frontend *fe,else wbuf[1 ] = rbuf &0xef ; msg[0 ].len =2 ; -i2c_transfer (&dev->i2c_adap, msg,1 ); +if (i2c_transfer (&dev->i2c_adap, msg,1 ) !=1 ) +return -EIO ; +return 0 ; }
drivers/media/platform/qcom/venus/vdec.c +1 -0
@@ -1400,6 +1400,7 @@ static int vdec_close(struct file *file) {struct venus_inst *inst =to_inst (file); +cancel_work_sync (&inst->delayed_process_work);v4l2_m2m_ctx_release (inst->m2m_ctx);v4l2_m2m_release (inst->m2m_dev);vdec_ctrl_deinit (inst);
drivers/media/platform/vsp1/vsp1_histo.c +8 -12
@@ -36,9 +36,8 @@ struct vsp1_histogram_buffer * vsp1_histogram_buffer_get(struct vsp1_histogram *histo) {struct vsp1_histogram_buffer *buf =NULL ; -unsigned long flags; -spin_lock_irqsave (&histo->irqlock, flags); +spin_lock (&histo->irqlock);if (list_empty (&histo->irqqueue)) goto done;
@@ -49,7 +48,7 @@ vsp1_histogram_buffer_get(struct vsp1_histogram *histo) histo->readout = true; done: -spin_unlock_irqrestore (&histo->irqlock, flags); +spin_unlock (&histo->irqlock);return buf; }
@@ -58,7 +57,6 @@ void vsp1_histogram_buffer_complete(struct vsp1_histogram *histo, size_t size) {struct vsp1_pipeline *pipe = histo->entity.pipe; -unsigned long flags;/* * The pipeline pointer is guaranteed to be valid as this function is
@@ -70,10 +68,10 @@ void vsp1_histogram_buffer_complete(struct vsp1_histogram *histo,vb2_set_plane_payload (&buf->buf.vb2_buf,0 , size);vb2_buffer_done (&buf->buf.vb2_buf,VB2_BUF_STATE_DONE ); -spin_lock_irqsave (&histo->irqlock, flags); +spin_lock (&histo->irqlock); histo->readout = false;wake_up (&histo->wait_queue); -spin_unlock_irqrestore (&histo->irqlock, flags); +spin_unlock (&histo->irqlock); }/* -----------------------------------------------------------------------------
@@ -124,11 +122,10 @@ static void histo_buffer_queue(struct vb2_buffer *vb)struct vb2_v4l2_buffer *vbuf =to_vb2_v4l2_buffer (vb);struct vsp1_histogram *histo =vb2_get_drv_priv (vb->vb2_queue);struct vsp1_histogram_buffer *buf =to_vsp1_histogram_buffer (vbuf); -unsigned long flags; -spin_lock_irqsave (&histo->irqlock, flags); +spin_lock_irq (&histo->irqlock);list_add_tail (&buf->queue, &histo->irqqueue); -spin_unlock_irqrestore (&histo->irqlock, flags); +spin_unlock_irq (&histo->irqlock); }static int histo_start_streaming (struct vb2_queue *vq,unsigned int count)
@@ -140,9 +137,8 @@ static void histo_stop_streaming(struct vb2_queue *vq) {struct vsp1_histogram *histo =vb2_get_drv_priv (vq);struct vsp1_histogram_buffer *buffer; -unsigned long flags; -spin_lock_irqsave (&histo->irqlock, flags); +spin_lock_irq (&histo->irqlock);/* Remove all buffers from the IRQ queue. */ list_for_each_entry (buffer, &histo->irqqueue, queue)
@@ -152,7 +148,7 @@ static void histo_stop_streaming(struct vb2_queue *vq)/* Wait for the buffer being read out (if any) to complete. */ wait_event_lock_irq (histo->wait_queue, !histo->readout, histo->irqlock); -spin_unlock_irqrestore (&histo->irqlock, flags); +spin_unlock_irq (&histo->irqlock); }static const struct vb2_ops histo_video_queue_qops = {
drivers/media/platform/vsp1/vsp1_pipe.h +1 -1
@@ -73,7 +73,7 @@ struct vsp1_partition_window {* @wpf: The WPF partition window configuration */ struct vsp1_partition { -struct vsp1_partition_window rpf; +struct vsp1_partition_window rpf[VSP1_MAX_RPF ];struct vsp1_partition_window uds_sink;struct vsp1_partition_window uds_source;struct vsp1_partition_window sru;
drivers/media/platform/vsp1/vsp1_rpf.c +5 -3
@@ -271,8 +271,8 @@ static void rpf_configure_partition(struct vsp1_entity *entity,* 'width' need to be adjusted. */ if (pipe->partitions >1 ) { - crop.width = pipe->partition->rpf.width; - crop.left += pipe->partition->rpf.left; + crop.width = pipe->partition->rpf[rpf->entity.index].width; + crop.left += pipe->partition->rpf[rpf->entity.index].left; }if (pipe->interlaced) {
@@ -327,7 +327,9 @@ static void rpf_partition(struct vsp1_entity *entity,unsigned int partition_idx, struct vsp1_partition_window *window) { - partition->rpf = *window; + struct vsp1_rwpf *rpf = to_rwpf(&entity->subdev); + + partition->rpf[rpf->entity.index] = *window; } static const struct vsp1_entity_operations rpf_entity_ops = {
drivers/media/rc/imon.c +1 -4
@@ -1117,10 +1117,7 @@ static int imon_ir_change_protocol(struct rc_dev *rc, u64 *rc_proto)memcpy (ictx->usb_tx_buf, &ir_proto_packet,sizeof (ir_proto_packet)); -if (!mutex_is_locked (&ictx->lock)) { - unlock = true; -mutex_lock (&ictx->lock); - } + unlock =mutex_trylock (&ictx->lock); retval =send_packet (ictx);if (retval)
drivers/media/usb/uvc/uvc_ctrl.c +60 -30
122 lines not on this page · raw message
drivers/media/usb/uvc/uvc_video.c +33 -4
@@ -207,13 +207,13 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,/* Compute a bandwidth estimation by multiplying the frame * size by the number of video frames per second, divide the * result by the number of USB frames (or micro-frames for -* high-speed devices) per second and add the UVC header size -* (assumed to be 12 bytes long). +* high- and super-speed devices) per second and add the UVC +* header size (assumed to be 12 bytes long). */ bandwidth = frame->wWidth * frame->wHeight /8 * format->bpp; bandwidth *=10000000 / interval +1 ; bandwidth /=1000 ; -if (stream->dev->udev->speed ==USB_SPEED_HIGH ) +if (stream->dev->udev->speed >=USB_SPEED_HIGH ) bandwidth /=8 ; bandwidth +=12 ;
@@ -468,6 +468,7 @@ uvc_video_clock_decode(struct uvc_streaming *stream, struct uvc_buffer *buf,ktime_t time;u16 host_sof;u16 dev_sof; +u32 dev_stc;switch (data[1 ] & (UVC_STREAM_PTS |UVC_STREAM_SCR )) {case UVC_STREAM_PTS |UVC_STREAM_SCR :
@@ -512,6 +513,34 @@ uvc_video_clock_decode(struct uvc_streaming *stream, struct uvc_buffer *buf,if (dev_sof == stream->clock.last_sof)return ; + dev_stc =get_unaligned_le32 (&data[header_size -6 ]); + +/* +* STC (Source Time Clock) is the clock used by the camera. The UVC 1.5 +* standard states that it "must be captured when the first video data +* of a video frame is put on the USB bus". This is generally understood +* as requiring devices to clear the payload header's SCR bit before +* the first packet containing video data. +* +* Most vendors follow that interpretation, but some (namely SunplusIT +* on some devices) always set the `UVC_STREAM_SCR` bit, fill the SCR +* field with 0's,and expect that the driver only processes the SCR if +* there is data in the packet. +* +* Ignore all the hardware timestamp information if we haven't received +* any data for this frame yet, the packet contains no data, and both +* STC and SOF are zero. This heuristics should be safe on compliant +* devices. This should be safe with compliant devices, as in the very +* unlikely case where a UVC 1.1 device would send timing information +* only before the first packet containing data, and both STC and SOF +* happen to be zero for a particular frame, we would only miss one +* clock sample from many and the clock recovery algorithm wouldn't +* suffer from this condition. +*/ +if (buf && buf->bytesused ==0 && len == header_size && + dev_stc ==0 && dev_sof ==0 ) +return ; + stream->clock.last_sof = dev_sof; host_sof =usb_get_current_frame_number (stream->dev->udev);
@@ -549,7 +578,7 @@ uvc_video_clock_decode(struct uvc_streaming *stream, struct uvc_buffer *buf,spin_lock_irqsave (&stream->clock.lock, flags); sample = &stream->clock.samples[stream->clock.head]; - sample->dev_stc =get_unaligned_le32 (&data[header_size -6 ]); + sample->dev_stc = dev_stc; sample->dev_sof = dev_sof; sample->host_sof = host_sof; sample->host_time = time;
drivers/media/usb/uvc/uvcvideo.h +5 -0
@@ -350,6 +350,11 @@ struct uvc_entity {u8 bNrInPins;u8 *baSourceID; +int (*get_info)(struct uvc_device *dev,struct uvc_entity *entity, +u8 cs,u8 *caps); +int (*get_cur)(struct uvc_device *dev,struct uvc_entity *entity, +u8 cs,void *data,u16 size); +unsigned int ncontrols;struct uvc_control *controls; };
drivers/mfd/omap-usb-tll.c +1 -2
@@ -235,8 +235,7 @@ static int usbtll_omap_probe(struct platform_device *pdev)break ; } - tll =devm_kzalloc (dev,sizeof (*tll) +sizeof (tll->ch_clk[nch]), -GFP_KERNEL ); + tll =devm_kzalloc (dev,struct_size (tll, ch_clk, nch),GFP_KERNEL );if (!tll) {pm_runtime_put_sync (dev);pm_runtime_disable (dev);
drivers/mtd/tests/Makefile +17 -17
@@ -1,19 +1,19 @@ # SPDX-License-Identifier: GPL-2.0 -obj-$(CONFIG_MTD_TESTS) += mtd_oobtest.o -obj-$(CONFIG_MTD_TESTS) += mtd_pagetest.o -obj-$(CONFIG_MTD_TESTS) += mtd_readtest.o -obj-$(CONFIG_MTD_TESTS) += mtd_speedtest.o -obj-$(CONFIG_MTD_TESTS) += mtd_stresstest.o -obj-$(CONFIG_MTD_TESTS) += mtd_subpagetest.o -obj-$(CONFIG_MTD_TESTS) += mtd_torturetest.o -obj-$(CONFIG_MTD_TESTS) += mtd_nandecctest.o -obj-$(CONFIG_MTD_TESTS) += mtd_nandbiterrs.o +obj-$(CONFIG_MTD_TESTS) += mtd_oobtest.o mtd_test.o +obj-$(CONFIG_MTD_TESTS) += mtd_pagetest.o mtd_test.o +obj-$(CONFIG_MTD_TESTS) += mtd_readtest.o mtd_test.o +obj-$(CONFIG_MTD_TESTS) += mtd_speedtest.o mtd_test.o +obj-$(CONFIG_MTD_TESTS) += mtd_stresstest.o mtd_test.o +obj-$(CONFIG_MTD_TESTS) += mtd_subpagetest.o mtd_test.o +obj-$(CONFIG_MTD_TESTS) += mtd_torturetest.o mtd_test.o +obj-$(CONFIG_MTD_TESTS) += mtd_nandecctest.o mtd_test.o +obj-$(CONFIG_MTD_TESTS) += mtd_nandbiterrs.o mtd_test.o -mtd_oobtest-objs := oobtest.o mtd_test.o -mtd_pagetest-objs := pagetest.o mtd_test.o -mtd_readtest-objs := readtest.o mtd_test.o -mtd_speedtest-objs := speedtest.o mtd_test.o -mtd_stresstest-objs := stresstest.o mtd_test.o -mtd_subpagetest-objs := subpagetest.o mtd_test.o -mtd_torturetest-objs := torturetest.o mtd_test.o -mtd_nandbiterrs-objs := nandbiterrs.o mtd_test.o +mtd_oobtest-objs := oobtest.o +mtd_pagetest-objs := pagetest.o +mtd_readtest-objs := readtest.o +mtd_speedtest-objs := speedtest.o +mtd_stresstest-objs := stresstest.o +mtd_subpagetest-objs := subpagetest.o +mtd_torturetest-objs := torturetest.o +mtd_nandbiterrs-objs := nandbiterrs.o
drivers/mtd/tests/mtd_test.c +9 -0
@@ -25,6 +25,7 @@ int mtdtest_erase_eraseblock(struct mtd_info *mtd, unsigned int ebnum)return 0 ; } +EXPORT_SYMBOL_GPL (mtdtest_erase_eraseblock);static int is_block_bad (struct mtd_info *mtd,unsigned int ebnum) {
@@ -57,6 +58,7 @@ int mtdtest_scan_for_bad_eraseblocks(struct mtd_info *mtd, unsigned char *bbt,return 0 ; } +EXPORT_SYMBOL_GPL (mtdtest_scan_for_bad_eraseblocks);int mtdtest_erase_good_eraseblocks (struct mtd_info *mtd,unsigned char *bbt,unsigned int eb,int ebcnt)
@@ -75,6 +77,7 @@ int mtdtest_erase_good_eraseblocks(struct mtd_info *mtd, unsigned char *bbt,return 0 ; } +EXPORT_SYMBOL_GPL (mtdtest_erase_good_eraseblocks);int mtdtest_read (struct mtd_info *mtd,loff_t addr,size_t size,void *buf) {
@@ -92,6 +95,7 @@ int mtdtest_read(struct mtd_info *mtd, loff_t addr, size_t size, void *buf)return err; } +EXPORT_SYMBOL_GPL (mtdtest_read);int mtdtest_write (struct mtd_info *mtd,loff_t addr,size_t size,const void *buf)
@@ -107,3 +111,8 @@ int mtdtest_write(struct mtd_info *mtd, loff_t addr, size_t size,return err; } +EXPORT_SYMBOL_GPL (mtdtest_write); + +MODULE_LICENSE ("GPL" ); +MODULE_DESCRIPTION ("MTD function test helpers" ); +MODULE_AUTHOR ("Akinobu Mita" );
drivers/mtd/ubi/eba.c +2 -1
@@ -1560,6 +1560,7 @@ int self_check_eba(struct ubi_device *ubi, struct ubi_attach_info *ai_fastmap, GFP_KERNEL);if (!fm_eba[i]) { ret = -ENOMEM ; +kfree (scan_eba[i]); goto out_free; }
@@ -1595,7 +1596,7 @@ int self_check_eba(struct ubi_device *ubi, struct ubi_attach_info *ai_fastmap, } out_free: -for (i =0 ; i < num_volumes; i++) { +while (--i >=0 ) {if (!ubi->volumes[i])continue ;
drivers/net/bonding/bond_main.c +2 -5
@@ -784,13 +784,10 @@ static struct slave *bond_find_best_slave(struct bonding *bond)return bestslave; } +/* must be called in RCU critical section or with RTNL held */ static bool bond_should_notify_peers(struct bonding *bond) { - struct slave *slave; - - rcu_read_lock(); - slave = rcu_dereference(bond->curr_active_slave); - rcu_read_unlock(); + struct slave *slave = rcu_dereference_rtnl(bond->curr_active_slave); if (!slave || !bond->send_peer_notif || bond->send_peer_notif %
drivers/net/ethernet/brocade/bna/bna_types.h +1 -1
@@ -410,7 +410,7 @@ struct bna_ib {/* Tx object */ /* Tx datapath control structure */ -#define BNA_Q_NAME_SIZE 16 +#define BNA_Q_NAME_SIZE (IFNAMSIZ + 6)struct bna_tcb {/* Fast path */ void **sw_qpt;
drivers/net/ethernet/brocade/bna/bnad.c +6 -5
@@ -1535,8 +1535,9 @@ bnad_tx_msix_register(struct bnad *bnad, struct bnad_tx_info *tx_info,for (i =0 ; i < num_txqs; i++) { vector_num = tx_info->tcb[i]->intr_vector; -sprintf (tx_info->tcb[i]->name,"%s TXQ %d" , bnad->netdev->name, - tx_id + tx_info->tcb[i]->id); +snprintf (tx_info->tcb[i]->name,BNA_Q_NAME_SIZE ,"%s TXQ %d" , + bnad->netdev->name, + tx_id + tx_info->tcb[i]->id); err = request_irq(bnad->msix_table[vector_num].vector, (irq_handler_t)bnad_msix_tx, 0, tx_info->tcb[i]->name,
@@ -1586,9 +1587,9 @@ bnad_rx_msix_register(struct bnad *bnad, struct bnad_rx_info *rx_info,for (i =0 ; i < num_rxps; i++) { vector_num = rx_info->rx_ctrl[i].ccb->intr_vector; -sprintf (rx_info->rx_ctrl[i].ccb->name,"%s CQ %d" , - bnad->netdev->name, - rx_id + rx_info->rx_ctrl[i].ccb->id); +snprintf (rx_info->rx_ctrl[i].ccb->name,BNA_Q_NAME_SIZE , +"%s CQ %d" , bnad->netdev->name, + rx_id + rx_info->rx_ctrl[i].ccb->id); err = request_irq(bnad->msix_table[vector_num].vector, (irq_handler_t)bnad_msix_rx, 0, rx_info->rx_ctrl[i].ccb->name,
drivers/net/ethernet/freescale/fec_main.c +36 -16
115 lines not on this page · raw message
drivers/net/ethernet/freescale/fec_ptp.c +3 -0
@@ -635,6 +635,9 @@ void fec_ptp_stop(struct platform_device *pdev)struct net_device *ndev =platform_get_drvdata (pdev);struct fec_enet_private *fep =netdev_priv (ndev); +if (fep->pps_enable) +fec_ptp_enable_pps (fep,0 ); +cancel_delayed_work_sync (&fep->time_keep);if (fep->ptp_clock)ptp_clock_unregister (fep->ptp_clock);
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +6 -1
@@ -1104,7 +1104,12 @@ int mlx5e_ethtool_set_link_ksettings(struct mlx5e_priv *priv,if (!an_changes && link_modes == eproto.admin) goto out; -mlx5_port_set_eth_ptys (mdev, an_disable, link_modes, ext); + err =mlx5_port_set_eth_ptys (mdev, an_disable, link_modes, ext); +if (err) { +netdev_err (priv->netdev,"%s: failed to set ptys reg: %d\n" , __func__, err); + goto out;
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c +0 -13
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qed/qed_l2.c +3 -20
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qede/qede_filter.c +19 -28
47 lines not on this page · raw message
drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_lcn.c +9 -9
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/cfg80211.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/parport/parport_pc.c +75 -103
178 lines not on this page · raw message
drivers/pinctrl/freescale/pinctrl-mxs.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/pinctrl/ti/pinctrl-ti-iodelay.c +6 -8
Lines of this file are not shown. View the raw message.
drivers/platform/chrome/cros_ec_debugfs.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/power/supply/axp288_charger.c +11 -11
Lines of this file are not shown. View the raw message.
fs/ext4/namei.c +57 -16
73 lines not on this page · raw message
fs/udf/balloc.c +26 -25
51 lines not on this page · raw message
include/linux/platform_data/x86/soc.h new file +65 -0
65 lines not on this page · raw message
include/uapi/linux/netfilter/nf_tables.h +1 -1
Lines of this file are not shown. View the raw message.
net/netfilter/nf_tables_api.c +23 -105
128 lines not on this page · raw message
net/packet/af_packet.c +84 -2
86 lines not on this page · raw message
net/sctp/input.c +21 -25
46 lines not on this page · raw message
scripts/gcc-x86_32-has-stack-protector.sh +1 -1
Lines of this file are not shown. View the raw message.
scripts/gcc-x86_64-has-stack-protector.sh +1 -1
Lines of this file are not shown. View the raw message.
sound/soc/intel/common/soc-intel-quirks.h +4 -51
55 lines not on this page · raw message
tools/testing/selftests/bpf/prog_tests/send_signal.c +2 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/btf_dump_test_case_multidim.c +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/btf_dump_test_case_syntax.c +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/test_sockmap.c +2 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/devlink_lib.sh +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/sigaltstack/current_stack_pointer.h +1 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.