Linux 4.14.233
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.233 kernel.
All users of the 4.14 kernel series must upgrade.
The updated 4.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.14.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arc/kernel/entry.S | 4 arch/arm/boot/dts/exynos4412-odroid-common.dtsi | 2 arch/arm/boot/dts/exynos5250-smdk5250.dts | 2 arch/arm/boot/dts/exynos5250-snow-common.dtsi | 2 arch/arm/kernel/hw_breakpoint.c | 2 arch/arm/kernel/suspend.c | 19 arch/arm64/boot/dts/mediatek/mt8173.dtsi | 2 arch/arm64/kernel/vdso/vdso.lds.S | 8 arch/mips/include/asm/cpu-features.h | 5 arch/mips/include/asm/div64.h | 55 + arch/mips/include/asm/isa-rev.h | 24 arch/mips/pci/pci-legacy.c | 9 arch/mips/pci/pci-rt2880.c | 37 - arch/mips/vdso/gettimeofday.c | 14 arch/powerpc/Kconfig | 2 arch/powerpc/Kconfig.debug | 1 arch/powerpc/include/uapi/asm/errno.h | 1 arch/powerpc/kernel/eeh.c | 11 arch/powerpc/kernel/iommu.c | 4 arch/powerpc/kernel/prom.c | 2 arch/powerpc/kernel/smp.c | 6 arch/powerpc/lib/feature-fixups.c | 35 + arch/powerpc/perf/isa207-common.c | 4 arch/powerpc/platforms/52xx/lite5200_sleep.S | 2 arch/powerpc/platforms/pseries/hotplug-cpu.c | 3 arch/powerpc/platforms/pseries/pci_dlpar.c | 4 arch/s390/kernel/dis.c | 2 arch/s390/kvm/gaccess.h | 54 + arch/s390/kvm/kvm-s390.c | 4 arch/um/kernel/dyn.lds.S | 6 arch/um/kernel/uml.lds.S | 6 arch/x86/Kconfig | 1 arch/x86/Makefile | 1 arch/x86/entry/vdso/vma.c | 2 arch/x86/events/amd/iommu.c | 6 arch/x86/kernel/acpi/boot.c | 25 arch/x86/kernel/cpu/microcode/core.c | 8 arch/x86/kernel/kprobes/core.c | 17 arch/x86/kernel/setup.c | 7 arch/x86/kvm/x86.c | 1 arch/x86/lib/msr-smp.c | 4 block/blk-mq.c | 6 crypto/api.c | 2 drivers/acpi/arm64/gtdt.c | 10 drivers/acpi/cppc_acpi.c | 14 drivers/acpi/custom_method.c | 4 drivers/acpi/scan.c | 1 drivers/acpi/tables.c | 42 + drivers/ata/libahci_platform.c | 4 drivers/ata/pata_arasan_cf.c | 15 drivers/ata/pata_ixp4xx_cf.c | 6 drivers/ata/sata_mv.c | 4 drivers/bus/qcom-ebi2.c | 4 drivers/char/tpm/tpm2-cmd.c | 1 drivers/char/ttyprintk.c | 11 drivers/clk/samsung/clk-exynos7.c | 7 drivers/clk/socfpga/clk-gate-a10.c | 1 drivers/clk/uniphier/clk-uniphier-mux.c | 4 drivers/crypto/qat/qat_c3xxxvf/adf_drv.c | 4 drivers/crypto/qat/qat_c62xvf/adf_drv.c | 4 drivers/crypto/qat/qat_common/adf_isr.c | 29 drivers/crypto/qat/qat_common/adf_transport.c | 1 drivers/crypto/qat/qat_common/adf_vf_isr.c | 17 drivers/crypto/qat/qat_dh895xccvf/adf_drv.c | 4 drivers/extcon/extcon-arizona.c | 17 drivers/firmware/Kconfig | 1 drivers/gpio/gpiolib-acpi.c | 14 drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 drivers/gpu/drm/i915/intel_pm.c | 2 drivers/gpu/drm/msm/mdp/mdp5/mdp5_cmd_encoder.c | 10 drivers/gpu/drm/radeon/radeon.h | 1 drivers/gpu/drm/radeon/radeon_atombios.c | 6 drivers/gpu/drm/radeon/radeon_kms.c | 1 drivers/gpu/drm/radeon/radeon_pm.c | 8 drivers/gpu/drm/radeon/si_dpm.c | 3 drivers/hid/hid-ids.h | 1 drivers/hid/hid-plantronics.c | 60 +- drivers/hsi/hsi_core.c | 3 drivers/hv/channel_mgmt.c | 30 - drivers/hwtracing/intel_th/gth.c | 4 drivers/hwtracing/intel_th/pci.c | 10 drivers/i2c/busses/i2c-cadence.c | 5 drivers/i2c/busses/i2c-emev2.c | 5 drivers/i2c/busses/i2c-jz4780.c | 5 drivers/i2c/busses/i2c-sh7760.c | 5 drivers/iio/gyro/mpu3050-core.c | 13 drivers/iio/light/tsl2583.c | 8 drivers/iio/proximity/pulsedlight-lidar-lite-v2.c | 1 drivers/infiniband/hw/hfi1/firmware.c | 1 drivers/infiniband/hw/i40iw/i40iw.h | 1 drivers/infiniband/hw/i40iw/i40iw_main.c | 7 drivers/infiniband/hw/i40iw/i40iw_pble.c | 6 drivers/input/touchscreen/elants_i2c.c | 44 + drivers/input/touchscreen/silead.c | 44 + drivers/isdn/capi/kcapi.c | 4 drivers/md/dm-rq.c | 2 drivers/md/md.c | 67 +- drivers/md/persistent-data/dm-btree-internal.h | 4 drivers/md/persistent-data/dm-space-map-common.c | 2 drivers/md/persistent-data/dm-space-map-common.h | 8 drivers/md/raid1.c | 2 drivers/media/dvb-core/dvbdev.c | 1 drivers/media/i2c/adv7511-v4l2.c | 2 drivers/media/i2c/adv7604.c | 2 drivers/media/i2c/adv7842.c | 2 drivers/media/pci/saa7164/saa7164-encoder.c | 20 drivers/media/platform/vivid/vivid-core.c | 6 drivers/media/platform/vivid/vivid-vid-out.c | 2 drivers/media/rc/ite-cir.c | 8 drivers/media/tuners/m88rs6000t.c | 6 drivers/media/usb/dvb-usb/dvb-usb-init.c | 20 drivers/media/usb/dvb-usb/dvb-usb.h | 2 drivers/media/usb/em28xx/em28xx-dvb.c | 1 drivers/media/usb/gspca/gspca.c | 2 drivers/media/usb/gspca/gspca.h | 1 drivers/media/usb/gspca/sq905.c | 2 drivers/media/usb/gspca/stv06xx/stv06xx.c | 9 drivers/memory/omap-gpmc.c | 7 drivers/mfd/stm32-timers.c | 7 drivers/misc/kgdbts.c | 26 drivers/misc/lis3lv02d/lis3lv02d.c | 21 drivers/misc/vmw_vmci/vmci_doorbell.c | 2 drivers/misc/vmw_vmci/vmci_guest.c | 2 drivers/mmc/core/block.c | 12 drivers/mmc/core/core.c | 2 drivers/mmc/core/sd.c | 6 drivers/mtd/mtdchar.c | 8 drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 2 drivers/net/ethernet/cavium/liquidio/cn23xx_pf_regs.h | 2 drivers/net/ethernet/cavium/thunder/nicvf_queues.c | 2 drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c | 2 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 2 drivers/net/ethernet/mediatek/mtk_eth_soc.h | 1 drivers/net/ethernet/qualcomm/emac/emac-mac.c | 4 drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c | 2 drivers/net/ethernet/ti/davinci_emac.c | 4 drivers/net/fddi/Kconfig | 15 drivers/net/fddi/defxx.c | 47 + drivers/net/usb/ax88179_178a.c | 4 drivers/net/wan/lapbether.c | 32 - drivers/net/wimax/i2400m/op-rfkill.c | 2 drivers/net/wireless/ath/ath9k/htc_drv_init.c | 2 drivers/net/wireless/ath/ath9k/hw.c | 2 drivers/net/wireless/intel/ipw2x00/libipw_wx.c | 6 drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c | 7 drivers/net/wireless/intel/iwlwifi/pcie/tx.c | 7 drivers/net/wireless/marvell/mwl8k.c | 1 drivers/net/wireless/mediatek/mt7601u/eeprom.c | 2 drivers/net/wireless/realtek/rtlwifi/rtl8821ae/table.c | 500 ++++++++++++----- drivers/net/wireless/wl3501.h | 47 - drivers/net/wireless/wl3501_cs.c | 54 - drivers/nfc/pn533/pn533.c | 3 drivers/of/fdt.c | 12 drivers/pci/host/pci-thunder-ecam.c | 2 drivers/pci/host/pci-thunder-pem.c | 13 drivers/pci/hotplug/acpiphp_glue.c | 1 drivers/pci/pci.c | 16 drivers/pci/pci.h | 6 drivers/pci/probe.c | 1 drivers/perf/arm_pmu_platform.c | 2 drivers/phy/marvell/Kconfig | 4 drivers/phy/ti/phy-twl4030-usb.c | 2 drivers/pinctrl/samsung/pinctrl-exynos.c | 10 drivers/platform/x86/pmc_atom.c | 28 drivers/platform/x86/thinkpad_acpi.c | 31 - drivers/power/supply/bq27xxx_battery.c | 51 - drivers/power/supply/generic-adc-battery.c | 2 drivers/power/supply/lp8788-charger.c | 2 drivers/power/supply/pm2301_charger.c | 2 drivers/power/supply/s3c_adc_battery.c | 2 drivers/power/supply/tps65090-charger.c | 2 drivers/power/supply/tps65217_charger.c | 2 drivers/rpmsg/qcom_glink_native.c | 1 drivers/rtc/rtc-ds1307.c | 12 drivers/scsi/device_handler/scsi_dh_alua.c | 5 drivers/scsi/jazz_esp.c | 4 drivers/scsi/libfc/fc_lport.c | 2 drivers/scsi/lpfc/lpfc_crtn.h | 3 drivers/scsi/lpfc/lpfc_hw4.h | 174 ----- drivers/scsi/lpfc/lpfc_init.c | 103 --- drivers/scsi/lpfc/lpfc_mbox.c | 36 - drivers/scsi/lpfc/lpfc_nportdisc.c | 11 drivers/scsi/lpfc/lpfc_nvmet.c | 1 drivers/scsi/lpfc/lpfc_sli.c | 1 drivers/scsi/qla2xxx/qla_attr.c | 8 drivers/scsi/qla2xxx/qla_bsg.c | 3 drivers/scsi/sni_53c710.c | 5 drivers/scsi/sun3x_esp.c | 4 drivers/soc/qcom/mdt_loader.c | 17 drivers/spi/spi-dln2.c | 2 drivers/spi/spi-omap-100k.c | 6 drivers/spi/spi-ti-qspi.c | 20 drivers/spi/spi.c | 9 drivers/staging/greybus/uart.c | 2 drivers/staging/media/omap4iss/iss.c | 4 drivers/staging/rtl8192u/r8192U_core.c | 2 drivers/staging/typec/tcpci.c | 21 drivers/target/target_core_pscsi.c | 3 drivers/tee/optee/core.c | 10 drivers/thermal/fair_share.c | 4 drivers/tty/serial/8250/8250_port.c | 3 drivers/tty/serial/stm32-usart.c | 17 drivers/tty/serial/stm32-usart.h | 3 drivers/tty/tty_io.c | 8 drivers/usb/class/cdc-acm.c | 2 drivers/usb/core/hub.c | 6 drivers/usb/core/quirks.c | 4 drivers/usb/dwc2/core.h | 2 drivers/usb/dwc2/gadget.c | 3 drivers/usb/dwc3/dwc3-omap.c | 5 drivers/usb/dwc3/gadget.c | 22 drivers/usb/gadget/config.c | 4 drivers/usb/gadget/function/f_fs.c | 3 drivers/usb/gadget/function/f_uac1.c | 43 + drivers/usb/gadget/function/f_uvc.c | 7 drivers/usb/gadget/udc/dummy_hcd.c | 23 drivers/usb/gadget/udc/fotg210-udc.c | 26 drivers/usb/gadget/udc/pch_udc.c | 49 + drivers/usb/gadget/udc/r8a66597-udc.c | 2 drivers/usb/gadget/udc/snps_udc_plat.c | 4 drivers/usb/host/fotg210-hcd.c | 4 drivers/usb/host/sl811-hcd.c | 9 drivers/usb/host/xhci-ext-caps.h | 5 drivers/usb/host/xhci-mem.c | 9 drivers/usb/host/xhci.c | 6 drivers/usb/usbip/vudc_dev.c | 1 drivers/usb/usbip/vudc_sysfs.c | 5 drivers/vfio/mdev/mdev_sysfs.c | 2 drivers/video/fbdev/core/fbcmap.c | 8 fs/block_dev.c | 20 fs/btrfs/ctree.c | 20 fs/btrfs/ioctl.c | 18 fs/btrfs/relocation.c | 6 fs/ceph/caps.c | 1 fs/ceph/inode.c | 1 fs/cifs/smb2ops.c | 2 fs/dlm/debug_fs.c | 1 fs/ecryptfs/main.c | 6 fs/ext4/ialloc.c | 48 + fs/ext4/super.c | 6 fs/f2fs/inline.c | 3 fs/fuse/cuse.c | 2 fs/jffs2/compr_rtime.c | 3 fs/jffs2/scan.c | 2 fs/nfs/flexfilelayout/flexfilelayout.c | 2 fs/nfs/inode.c | 8 fs/nfs/nfs42proc.c | 21 fs/nfs/pnfs.c | 2 fs/squashfs/file.c | 6 include/crypto/acompress.h | 2 include/crypto/aead.h | 2 include/crypto/akcipher.h | 2 include/crypto/hash.h | 4 include/crypto/kpp.h | 2 include/crypto/rng.h | 2 include/crypto/skcipher.h | 2 include/linux/acpi.h | 9 include/linux/hid.h | 2 include/linux/module.h | 26 include/linux/power/bq27xxx_battery.h | 1 include/linux/smp.h | 2 include/linux/spi/spi.h | 3 include/linux/tty_driver.h | 2 include/net/bluetooth/hci_core.h | 1 include/scsi/libfcoe.h | 2 include/uapi/linux/tty_flags.h | 4 kernel/bpf/verifier.c | 26 kernel/futex.c | 3 kernel/kexec_file.c | 4 kernel/module.c | 61 +- kernel/smp.c | 10 kernel/time/posix-timers.c | 4 kernel/trace/ftrace.c | 5 kernel/trace/trace.c | 41 - kernel/trace/trace_clock.c | 44 + kernel/up.c | 2 lib/bug.c | 33 - lib/kobject_uevent.c | 9 lib/nlattr.c | 2 lib/stackdepot.c | 6 mm/hugetlb.c | 11 mm/khugepaged.c | 18 mm/ksm.c | 1 mm/shmem.c | 12 net/bluetooth/hci_event.c | 3 net/bluetooth/hci_request.c | 12 net/bluetooth/l2cap_core.c | 4 net/bluetooth/l2cap_sock.c | 8 net/hsr/hsr_framereg.c | 3 net/ipv6/ip6_gre.c | 3 net/ipv6/ip6_tunnel.c | 3 net/ipv6/ip6_vti.c | 3 net/ipv6/sit.c | 5 net/mac80211/main.c | 7 net/mac80211/mlme.c | 5 net/netfilter/nf_conntrack_standalone.c | 5 net/netfilter/nft_set_hash.c | 10 net/nfc/digital_dep.c | 2 net/nfc/llcp_sock.c | 4 net/openvswitch/actions.c | 8 net/sctp/sm_make_chunk.c | 2 net/sctp/sm_statefuns.c | 3 net/sctp/socket.c | 38 - net/tipc/netlink_compat.c | 2 net/vmw_vsock/vmci_transport.c | 3 net/wireless/scan.c | 2 samples/bpf/tracex1_kern.c | 4 samples/kfifo/bytestream-example.c | 8 samples/kfifo/inttype-example.c | 8 samples/kfifo/record-example.c | 8 scripts/kconfig/nconf.c | 2 security/commoncap.c | 2 sound/core/init.c | 2 sound/isa/sb/emu8000.c | 4 sound/isa/sb/sb16_csp.c | 8 sound/pci/hda/hda_generic.c | 16 sound/pci/hda/patch_conexant.c | 14 sound/pci/hda/patch_realtek.c | 21 sound/pci/rme9652/hdsp.c | 3 sound/pci/rme9652/hdspm.c | 3 sound/pci/rme9652/rme9652.c | 3 sound/soc/codecs/rt286.c | 23 sound/usb/card.c | 14 sound/usb/quirks-table.h | 10 sound/usb/quirks.c | 16 sound/usb/usbaudio.h | 2 tools/perf/util/symbol_fprintf.c | 2 tools/testing/selftests/bpf/test_verifier.c | 12 tools/testing/selftests/lib.mk | 4 331 files changed, 2368 insertions(+), 1384 deletions(-)
Alexander Aring (1):
fs: dlm: fix debugfs dump
Alexander Shishkin (2):
intel_th: pci: Add Rocket Lake CPU support
intel_th: pci: Add Alder Lake-M support
Alexey Kardashevskiy (1):
powerpc/iommu: Annotate nested lock for lockdep
Andrew Boyer (1):
RDMA/i40iw: Avoid panic when reading back the IRQ affinity hint
Andrew Scull (1):
bug: Remove redundant condition check in report_bug
Andy Shevchenko (4):
usb: gadget: pch_udc: Revert d3cb25a12138 completely
usb: gadget: pch_udc: Replace cpu_to_le32() by lower_32_bits()
usb: gadget: pch_udc: Check if driver is present before calling ->setup()
usb: gadget: pch_udc: Check for DMA mapping error
Anirudh Rayabharam (1):
usb: gadget: dummy_hcd: fix gpf in gadget_setup
Archie Pusaka (3):
Bluetooth: verify AMP hci_chan before amp_destroy
Bluetooth: Set CONF_NOT_COMPLETE as l2cap_chan default
Bluetooth: check for zapped sk before connecting
Ard Biesheuvel (1):
crypto: api - check for ERR pointers in crypto_destroy_tfm()
Arnaldo Carvalho de Melo (1):
perf symbols: Fix dso__fprintf_symbols_by_name() to return the number of printed chars
Arnd Bergmann (7):
security: commoncap: fix -Wstringop-overread warning
smp: Fix smp_call_function_single_async prototype x86/msr: Fix wr/rdmsr_safe_regs_on_cpu() prototypes
kgdb: fix gcc-11 warning on indentation
usb: sl811-hcd: improve misleading indentation
isdn: capi: fix mismatched prototypes
PCI: thunder: Fix compile testing
Athira Rajeev (1):
powerpc/perf: Fix PMU constraint check for EBB events
Avri Altman (1):
mmc: block: Update ext_csd.cache_ctrl if it was written
Axel Rasmussen (1):
userfaultfd: release page in error path to avoid BUG_ON
Badhri Jagan Sridharan (1):
usb: typec: tcpci: Check ROLE_CONTROL while interpreting CC_STATUS
Bart Van Assche (3):
scsi: qla2xxx: Always check the return value of qla24xx_get_isp_stats()
scsi: libfc: Fix a format specifier
blk-mq: Swap two calls in blk_mq_exit_queue()
Benjamin Block (1):
dm rq: fix double free of blk_mq_tag_set in dev remove after table load fails
Bill Wendling (1):
arm64/vdso: Discard .note.gnu.property sections in vDSO
Bjorn Andersson (2):
soc: qcom: mdt_loader: Validate that p_filesz < p_memsz
soc: qcom: mdt_loader: Detect truncated read of segments
Chaitanya Kulkarni (1):
scsi: target: pscsi: Fix warning in pscsi_complete_cmd()
Chen Huang (1):
powerpc: Fix HAVE_HARDLOCKUP_DETECTOR_ARCH build configuration
Chen Jun (1):
posix-timers: Preserve return value in clock_adjtime32()
Chris Chiu (1):
USB: Add reset-resume quirk for WD19's Realtek Hub
Christoph Hellwig (10):
modules: mark ref_module static
modules: mark find_symbol static
modules: mark each_symbol_section static
modules: unexport __module_text_address
modules: unexport __module_address
modules: rename the licence field in struct symsearch to license
modules: return licensing information from find_symbol
modules: inherit TAINT_PROPRIETARY_MODULE
md: split mddev_find
md: factor out a mddev_find_locked helper from mddev_find
Christophe JAILLET (3):
usb: fotg210-hcd: Fix an error message
ACPI: scan: Fix a memory leak in an error handling path
xhci: Do not use GFP_KERNEL in (potentially) atomic context
Christophe Leroy (1):
powerpc/52xx: Fix an invalid ASM expression ('addi' used instead of 'add')
Chunfeng Yun (2):
arm64: dts: mt8173: fix property typo of 'phys' in dsi node
usb: core: hub: fix race condition about TRSMRCY of resume
Claudio Imbrenda (2):
KVM: s390: split kvm_s390_logical_to_effective
KVM: s390: split kvm_s390_real_to_absColin Ian King (14):
clk: socfpga: arria10: Fix memory leak of socfpga_clk on error return drm/radeon: fix copy of uninitialized variable back to userspace
memory: gpmc: fix out of bounds read and dereference on gpmc_cs[]
staging: rtl8192u: Fix potential infinite loop
usb: gadget: r8a66597: Add missing null check on return from platform_get_resource
media: vivid: fix assignment of dev->fbuf_out_flags
media: m88rs6000t: avoid potential out-of-bounds reads on arrays
clk: uniphier: Fix potential infinite loop
liquidio: Fix unintented sign extension of a left shift of a u16
mt7601u: fix always true expression
net: thunderx: Fix unintentional sign extension issue
net: davinci_emac: Fix incorrect masking of tx and rx error channel
f2fs: fix a redundant call to f2fs_balance_fs if an error occurs
iio: tsl2583: Fix division by a zero lux_val
Dan Carpenter (4):
ipw2x00: potential buffer overflow in libipw_wx_set_encodeext()
HSI: core: fix resource leaks in hsi_add_client_from_dt()
nfc: pn533: prevent potential memory corruption
kfifo: fix ternary sign extension bugs
Daniel Borkmann (1):
bpf: Fix masking negation logic upon negative dst register
Daniel Niv (1):
media: media/saa7164: fix saa7164_encoder_register() memory leak bugs
David Ward (2):
ASoC: rt286: Generalize support for ALC3263 codec
ASoC: rt286: Make RT286_SET_GPIO_* readable and writable
Davide Caratti (1):
openvswitch: fix stack OOB read while fragmenting IPv4 packets
Dean Anderson (1):
usb: gadget/function/f_fs string table fix for multiple languages
Dinghao Liu (1):
iio: proximity: pulsedlight: Fix rumtime PM imbalance on error
Dmitry Baryshkov (1):
PCI: Release OF node in pci_scan_device()'s error path
Dmitry Osipenko (1):
iio: gyro: mpu3050: Fix reported temperature value
DooHyun Hwang (1):
mmc: core: Do a power cycle when the CMD11 fails
Emmanuel Grumbach (1):
mac80211: clear the beacon's CRC after channel switch
Eric Dumazet (5):
ip6_vti: proper dev_{hold|put} in ndo_[un]init methods
netfilter: nftables: avoid overflows in nft_hash_buckets()
sit: proper dev_{hold|put} in ndo_[un]init methods
ip6_tunnel: sit: proper dev_{hold|put} in ndo_[un]init methods
ipv6: remove extra dev_hold() for fallback tunnels
Erwan Le Ray (2):
serial: stm32: fix incorrect characters on console
serial: stm32: fix tx_empty condition
Ewan D. Milne (1):
scsi: scsi_dh_alua: Remove check for ASC 24h in alua_rtpg()
Fabian Vogt (6):
fotg210-udc: Fix DMA on EP0 for length > max packet size
fotg210-udc: Fix EP0 IN requests bigger than two packets
fotg210-udc: Remove a dubious condition leading to fotg210_done
fotg210-udc: Mask GRP2 interrupts we don't handle
fotg210-udc: Don't DMA more than the buffer can take
fotg210-udc: Complete OUT requests on short packets
Fabrice Gasnier (1):
mfd: stm32-timers: Avoid clearing auto reload register
Feilong Lin (1):
ACPI / hotplug / PCI: Fix reference count leak in enable_slot()
Felix Fietkau (1):
net: ethernet: mtk_eth_soc: fix RX VLAN offload
Fengnan Chang (1):
ext4: fix error code in ext4_commit_super
Filipe Manana (2):
btrfs: fix metadata extent leak after failure to create subvolume
btrfs: fix race when picking most recent mod log operation for an old root
Frank van der Linden (1):
bpf: fix up selftests after backports were fixed
Geert Uytterhoeven (1):
phy: marvell: ARMADA375_USBCLUSTER_PHY should not default to y, unconditionally
Giovanni Cabiddu (1):
crypto: qat - fix error path in adf_isr_resource_alloc()
Greg Kroah-Hartman (2):
kobject_uevent: remove warning in init_uevent_argv() Linux 4.14.233
Guchun Chen (1):
drm/amdgpu: fix NULL pointer dereference
Gustavo A. R. Silva (3):
sctp: Fix out-of-bounds warning in sctp_process_asconf_param()
wl3501_cs: Fix out-of-bounds warnings in wl3501_send_pkt
wl3501_cs: Fix out-of-bounds warnings in wl3501_mgmt_join
Hans Verkuil (3):
media: gspca/sq905.c: fix uninitialized variable
media: vivid: update EDID
media: gscpa/stv06xx: fix memory leak
Hans de Goede (5):
extcon: arizona: Fix some issues when HPDET IRQ fires after the jack has been unplugged
misc: lis3lv02d: Fix false-positive WARN on various HP models
Input: elants_i2c - do not bind to i2c-hid compatible ACPI instantiated devices
Input: silead - add workaround for x86 BIOS-es which bring the chip up in a stuck state
gpiolib: acpi: Add quirk to ignore EC wakeups on Dell Venue 10 Pro 5055
He Ying (1):
firmware: qcom-scm: Fix QCOM_SCM configuration
Heiko Carstens (1):
KVM: s390: fix guarded storage control register handling
Hemant Kumar (1):
usb: gadget: Fix double free of device descriptor pointers
Heming Zhao (1):
md-cluster: fix use-after-free issue when removing rdev
Hoang Le (1):
tipc: convert dest node's address to network order
Hui Wang (1):
ALSA: hda: generic: change the DAC ctl name for LO+SPK or LO+HP
Ilya Lipnitskiy (2):
MIPS: pci-rt2880: fix slot 0 configuration
MIPS: pci-legacy: stop using of_pci_range_to_resource
Ingo Molnar (1):
x86/platform/uv: Fix !KEXEC build failure
James Smart (4):
scsi: lpfc: Fix incorrect dbde assignment when building target abts wqe
scsi: lpfc: Fix pt2pt connection does not recover after LOGO
scsi: lpfc: Fix crash when a REG_RPI mailbox fails triggering a LOGO response
scsi: lpfc: Remove unsupported mbox PORT_CAPABILITIES logic
Jason Gunthorpe (1):
vfio/mdev: Do not allow a mdev_type to have a NULL parent pointer
Jeff Layton (1):
ceph: fix fscache invalidation
Jeffrey Mitchell (1):
ecryptfs: fix kernel panic with null dev_name
Jerome Forissier (1):
tee: optee: do not check memref size on return from Secure World
Jia Zhou (1):
ALSA: core: remove redundant spin_lock pair in snd_card_disconnect
Jia-Ju Bai (2):
rpmsg: qcom_glink_native: fix error return code of qcom_glink_rx_data()
kernel: kexec_file: fix error return code of kexec_calculate_store_digests()
Jiri Kosina (2):
iwlwifi: Fix softirq/hardirq disabling in iwl_pcie_enqueue_hcmd()
iwlwifi: Fix softirq/hardirq disabling in iwl_pcie_gen2_enqueue_hcmd()
Joe Thornber (2):
dm persistent data: packed struct should have an aligned() attribute too dm space map common: fix division bug in sm_ll_find_free_block()
Johan Hovold (4):
staging: greybus: uart: fix unprivileged TIOCCSERIAL
USB: cdc-acm: fix unprivileged TIOCCSERIAL
tty: actually undefine superseded ASYNC flags
tty: fix return value for unsupported ioctls
Johannes Berg (3):
cfg80211: scan: drop entry from hidden_list on overflow
mac80211: bail out if cipher schemes are invalid
um: Mark all kernel symbols as local
John Millikin (1):
x86/build: Propagate $(CLANG_FLAGS) to $(REALMODE_FLAGS)
Jonathan McDowell (1):
net: stmmac: Set FIFO sizes for ipq806x
Jonathon Reinhart (1):
netfilter: conntrack: Make global sysctls readonly in non-init netns
Josef Bacik (1):
btrfs: convert logic BUG_ON()'s in replace_path to ASSERT()'s
Kai-Heng Feng (2):
USB: Add LPM quirk for Lenovo ThinkPad USB-C Dock Gen2 Ethernet drm/radeon/dpm: Disable sclk switching on Oland when two 4K 60Hz monitors are connected
Kaixu Xia (1):
cxgb4: Fix the -Wmisleading-indentation warning
Kees Cook (1):
drm/radeon: Fix off-by-one power_state index heap overwrite
Krzysztof Kozlowski (4):
ARM: dts: exynos: correct PMIC interrupt trigger level on Odroid X/U3 family
ARM: dts: exynos: correct PMIC interrupt trigger level on SMDK5250
ARM: dts: exynos: correct PMIC interrupt trigger level on Snow
pinctrl: samsung: use 'int' for register masks in Exynos
Lin Ma (1):
bluetooth: eliminate the potential race condition when removing the HCI controller
Linus Torvalds (1):
Fix misc new gcc warnings
Lukasz Luba (1):
thermal/core/fair share: Lock the thermal zone while looping over instances
Lv Yunlong (7):
ALSA: emu8000: Fix a use after free in snd_emu8000_create_mixer
ALSA: sb: Fix two use after free in snd_sb_qsound_build
mtd: rawnand: gpmi: Fix a double free in gpmi_nand_init
crypto: qat - Fix a double free in adf_create_ring
mwl8k: Fix a double Free in mwl8k_probe_hw net:emac/emac-mac: Fix a use after free in emac_mac_tx_buf_send net:nfc:digital: Fix a double free in digital_tg_recv_dep_req
Maciej W. Rozycki (5):
FDDI: defxx: Bail out gracefully with unassigned PCI resource for CSR
FDDI: defxx: Make MMIO the configuration default except for EISA
MIPS: Reinstate platform `__div64_32' handler
MIPS: Avoid DIVU in `__div64_32' is result would be zero
MIPS: Avoid handcoded DIVU in `__div64_32' altogether
Maciej Żenczykowski (1):
net: fix nla_strcmp to handle more then one trailing null character
Mahesh Salgaonkar (1):
powerpc/eeh: Fix EEH handling for hugepages in ioremap space.
Marc Zyngier (1):
ACPI: GTDT: Don't corrupt interrupt mappings on watchdow probe failure
Marcel Hamer (1):
usb: dwc3: omap: improve extcon initialization
Marijn Suijten (1):
drm/msm/mdp5: Configure PP_SYNC_HEIGHT to double the vtotal
Mark Langsdorf (2):
ACPI: custom_method: fix potential use-after-free issue
ACPI: custom_method: fix a possible memory leak
Mark Pearson (1):
platform/x86: thinkpad_acpi: Correct thermal sensor allocation
Masami Hiramatsu (1):
x86/kprobes: Fix to check non boostable prefixes correctly
Matt Redfearn (2):
MIPS: Introduce isa-rev.h to define MIPS_ISA_REV
MIPS: cpu-features.h: Replace __mips_isa_rev with MIPS_ISA_REV
Matthias Schiffer (1):
power: supply: bq27xxx: fix power_avg for newer ICs
Maxim Mikityanskiy (1):
HID: plantronics: Workaround for double volume key presses
Maximilian Luz (1):
usb: xhci: Increase timeout for HC halt
Miaohe Lin (3):
khugepaged: fix wrong result value for trace_mm_collapse_huge_page_isolate() mm/hugeltb: handle the error case in hugetlb_fix_reserve_counts()
ksm: fix potential missing rmap_item for stable_node
Michael Ellerman (3):
powerpc/pseries: Stop calling printk in rtas_stop_self() powerpc/64s: Fix crashes when toggling stf barrier powerpc/64s: Fix crashes when toggling entry flush barrier
Michael Kelley (1):
Drivers: hv: vmbus: Increase wait time for VMbus unload
Michael Walle (1):
mtd: require write permissions for locking and badblock ioctls
Mihai Moldovan (1):
kconfig: nconf: stop endless search loops
Miklos Szeredi (1):
cuse: prevent clone
Muhammad Usama Anjum (1):
media: em28xx: fix memory leak
Nathan Chancellor (3):
ACPI: CPPC: Replace cppc_attr with kobj_attribute x86/events/amd/iommu: Fix sysfs type mismatch powerpc/prom: Mark identical_pvr_fixup as __init
Nikola Livic (1):
pNFS/flexfiles: fix incorrect size check in decode_nfs_fh()
Nobuhiro Iwamatsu (1):
rtc: ds1307: Fix wday settings for rx8130
Olga Kornievskaia (1):
NFSv4.2 fix handling of sr_eof in SEEK's reply
Or Cohen (1):
net/nfc: fix use-after-free llcp_sock_bind/connect
Otavio Pontes (1):
x86/microcode: Check for offline CPUs before requesting new microcode
Pan Bian (1):
bus: qcom: Put child node before return
Paul Aurich (1):
cifs: Return correct error code from smb2_get_enc_key
Paul Clements (1):
md/raid1: properly indicate failure when ending a failed write request
Pavel Machek (1):
intel_th: Consistency and off-by-one fix
Pavel Skripkin (1):
media: dvb-usb: fix memory leak in dvb_usb_adapter_init
Pawel Laszczak (1):
usb: gadget: uvc: add bInterval checking for HS mode
Paweł Chmiel (1):
clk: exynos7: Mark aclk_fsys1_200 as critical
Peilin Ye (1):
media: dvbdev: Fix memory leak in dvb_media_device_free()
Phil Elwell (1):
usb: dwc2: Fix gadget DMA unmap direction
Phillip Lougher (1):
squashfs: fix divide error in calculate_skip()
Phillip Potter (2):
net: usb: ax88179_178a: initialize local variables before use
fbdev: zero-fill colormap in fbcmap.c
Ping-Ke Shih (1):
rtlwifi: 8821ae: upgrade PHY and RF parameters
Quentin Perret (2):
Revert "of/fdt: Make sure no-map does not remove already reserved regions" Revert "fdt: Properly handle "no-map" field in the memory region"
Quinn Tran (1):
scsi: qla2xxx: Fix use after free in bsg
Rafael J. Wysocki (3):
ACPI: tables: x86: Reserve memory occupied by ACPI tables
ACPI: x86: Call acpi_boot_table_init() after acpi_table_upgrade()
PCI: PM: Do not read power state in pci_enable_device_flags()
Randy Dunlap (1):
powerpc: iommu: fix build when neither PCI or IBMVIO is set
Robin Murphy (1):
perf/arm_pmu_platform: Fix error handling
Romain Naour (1):
mips: Do not include hi and lo in clobber list for R6
Ruslan Bilovol (1):
usb: gadget: f_uac1: validate input parameters
Samuel Mendoza-Jonas (1):
bpf: Fix backport of "bpf: restrict unknown scalars of mixed signed bounds for unprivileged"
Sean Christopherson (1):
x86/cpu: Initialize MSR_TSC_AUX if RDTSCP *or* RDPID is supported
Sean Young (1):
media: ite-cir: check for receive overflow
Sergey Shtylyov (12):
pata_arasan_cf: fix IRQ check
pata_ipx4xx_cf: fix IRQ check
sata_mv: add IRQ checks
ata: libahci_platform: fix IRQ check
scsi: jazz_esp: Add IRQ check
scsi: sun3x_esp: Add IRQ check
scsi: sni_53c710: Add IRQ check
i2c: cadence: add IRQ check
i2c: emev2: add IRQ check
i2c: jz4780: add IRQ check
i2c: sh7760: add IRQ check
i2c: sh7760: fix IRQ error path
Seunghui Lee (1):
mmc: core: Set read only for SD cards with permanent write protect bit
Shuah Khan (1):
usbip: vudc synchronize sysfs code paths
Sindhu Devale (1):
RDMA/i40iw: Fix error unwinding when i40iw_hmc_sd_one fails
Srikar Dronamraju (1):
powerpc/smp: Set numa node before updating mask
Stefano Garzarella (1):
vsock/vmci: log once the failed queue pair allocation
Steffen Dirkwinkel (1):
platform/x86: pmc_atom: Match all Beckhoff Automation baytrail boards with critclk_systems DMI table
Steven Rostedt (VMware) (3):
ftrace: Handle commands when closing set_ftrace_filter file
tracing: Map all PIDs to command lines
tracing: Restructure trace_clock_global() to never block
Taehee Yoo (1):
hsr: use netdev_err() instead of WARN_ONCE()
Takashi Iwai (8):
ALSA: usb-audio: Add MIDI quirk for Vox ToneLab EX
ALSA: hda/conexant: Re-order CX5066 quirk table entries
ALSA: hda/realtek: Re-order ALC882 Acer quirk table entries
ALSA: hda/realtek: Re-order ALC882 Sony quirk table entries
ALSA: hda/realtek: Re-order ALC269 Sony quirk table entries
ALSA: hda/realtek: Re-order ALC269 Lenovo quirk table entries
ALSA: hda/realtek: Remove redundant entry for ALC861 Haier/Uniwill devices
ALSA: usb-audio: Add error checks for usb_driver_claim_interface() calls
Tetsuo Handa (4):
misc: vmw_vmci: explicitly initialize vmci_notify_bm_set_msg struct
misc: vmw_vmci: explicitly initialize vmci_datagram payload
ttyprintk: Add TTY hangup callback.
Bluetooth: initialize skb_queue_head at l2cap_chan_create()
Thinh Nguyen (2):
usb: xhci: Fix port minor revision
usb: dwc3: gadget: Fix START_TRANSFER link state check
Thomas Gleixner (2):
Revert 337f13046ff0 ("futex: Allow FUTEX_CLOCK_REALTIME with FUTEX_WAIT op")
KVM: x86: Cancel pvclock_gtod_work on module removal
Toke Høiland-Jørgensen (1):
ath9k: Fix error check in ath9k_hw_read_revisions() for PCI devices
Tomas Melin (1):
serial: 8250: fix potential deadlock in rs485-mode
Tong Zhang (5):
crypto: qat - don't release uninitialized resources
crypto: qat - ADF_STATUS_PF_RUNNING should be set after adf_dev_init
ALSA: hdsp: don't disable if not enabled
ALSA: hdspm: don't disable if not enabled
ALSA: rme9652: don't disable if not enabled
Tony Ambardar (1):
powerpc: fix EDEADLOCK redefinition error in uapi/asm/errno.h
Trond Myklebust (3):
NFSv4: Don't discard segments marked for return in _pnfs_return_layout() NFSv4.2: Always flush out writes in nfs42_proc_fallocate()
NFS: Deal correctly with attribute generation counter overflow
Tudor Ambarus (1):
spi: spi-ti-qspi: Free DMA resources
Tyrel Datwyler (1):
powerpc/pseries: extract host bridge from pci_bus prior to bus removal
Vasily Gorbik (1):
s390/disassembler: increase ebpf disasm buffer size
Vineet Gupta (1):
ARC: entry: fix off-by-one error in syscall number validation
Wang Wensheng (1):
IB/hfi1: Fix error return code in parse_platform_config()
Wei Yongjun (2):
spi: dln2: Fix reference leak to master
spi: omap-100k: Fix reference leak to master
Wesley Cheng (1):
usb: dwc3: gadget: Ignore EP queue requests during bus reset
William A. Kennington III (1):
spi: Fix use-after-free with devm_spi_alloc_*
Xie He (1):
net: lapbether: Prevent racing when checking whether the netif is running
Xin Long (3):
Revert "net/sctp: fix race condition in sctp_destroy_sock"
sctp: delay auto_asconf init until binding the first addr
sctp: fix a SCTP_MIB_CURRESTAB leak in sctp_sf_do_dupcook_b
Yang Yang (1):
jffs2: check the validity of dstlen in jffs2_zlib_compress()
Yang Yingliang (8):
phy: phy-twl4030-usb: Fix possible use-after-free in twl4030_usb_remove()
power: supply: generic-adc-battery: fix possible use-after-free in gab_remove()
power: supply: s3c_adc_battery: fix possible use-after-free in s3c_adc_bat_remove()
media: adv7604: fix possible use-after-free in adv76xx_remove()
media: i2c: adv7511-v4l2: fix possible use-after-free in adv7511_remove()
media: i2c: adv7842: fix possible use-after-free in adv7842_remove()
USB: gadget: udc: fix wrong pointer passed to IS_ERR() and PTR_ERR()
media: omap4iss: return error code when omap4iss_get() failed
Yaqi Chen (1):
samples/bpf: Fix broken tracex1 due to kprobe argument change
Yonghong Song (1):
selftests: Set CC to clang in lib.mk if LLVM is set
Zhang Yi (1):
ext4: fix check to prevent false positive report of incorrect used inodes
Zhao Heming (1):
md: md_open returns -EBUSY when entering racing area
Zhen Lei (2):
tpm: fix error return code in tpm2_get_cc_attrs_tbl()
ARM: 9064/1: hw_breakpoint: Do not directly check the event's overflow_handler hook
Zqiang (1):
lib: stackdepot: turn depot_lock spinlock to raw_spinlock
dongjian (1):
power: supply: Use IRQF_ONESHOT
karthik alapati (1):
staging: wimax/i2400m: fix byte-order issue
lizhe (1):
jffs2: Fix kasan slab-out-of-bounds problem
louis.wang (1):
ARM: 9066/1: ftrace: pause/unpause function graph tracer in cpu_suspend()
shaoyunl (1):
drm/amdgpu : Fix asic reset regression issue introduce by 8f211fe8ac7c4f
yangerkun (1):
block: reexpand iov_iter after read/write
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 14 -SUBLEVEL = 232 +SUBLEVEL = 233 EXTRAVERSION = NAME = Petit Gorille
arch/arc/kernel/entry.S +2 -2
@@ -169,7 +169,7 @@ tracesys: ; Do the Sys Call as we normally would. ; Validate the Sys Call number - cmp r8, NR_syscalls + cmp r8, NR_syscalls - 1 mov.hi r0, -ENOSYS bhi tracesys_exit
@@ -252,7 +252,7 @@ ENTRY(EV_Trap) ;============ Normal syscall case ; syscall num shd not exceed the total system calls avail - cmp r8, NR_syscalls + cmp r8, NR_syscalls - 1 mov.hi r0, -ENOSYS bhi .Lret_from_system_call
arch/arm/boot/dts/exynos4412-odroid-common.dtsi +1 -1
@@ -265,7 +265,7 @@ max77686: pmic@09 { compatible = "maxim,max77686"; interrupt-parent = <&gpx3>; - interrupts = <2 IRQ_TYPE_NONE>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&max77686_irq>; reg = <0x09>;
arch/arm/boot/dts/exynos5250-smdk5250.dts +1 -1
@@ -133,7 +133,7 @@ compatible = "maxim,max77686"; reg = <0x09>; interrupt-parent = <&gpx3>; - interrupts = <2 IRQ_TYPE_NONE>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&max77686_irq>; wakeup-source;
arch/arm/boot/dts/exynos5250-snow-common.dtsi +1 -1
@@ -284,7 +284,7 @@ max77686: max77686@09 { compatible = "maxim,max77686"; interrupt-parent = <&gpx3>; - interrupts = <2 IRQ_TYPE_NONE>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&max77686_irq>; wakeup-source;
arch/arm/kernel/hw_breakpoint.c +1 -1
@@ -891,7 +891,7 @@ static void breakpoint_handler(unsigned long unknown, struct pt_regs *regs) info->trigger = addr;pr_debug ("breakpoint fired: address = 0x%x\n" , addr);perf_bp_event (bp, regs); -if (!bp->overflow_handler) +if (is_default_overflow_handler (bp))enable_single_step (bp, addr); goto unlock; }
arch/arm/kernel/suspend.c +18 -1
@@ -1,4 +1,5 @@// SPDX-License-Identifier: GPL-2.0 +#include <linux/ftrace.h> #include <linux/init.h> #include <linux/slab.h> #include <linux/mm_types.h>
@@ -26,6 +27,13 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))if (!idmap_pgd)return -EINVAL ; +/* +* Function graph tracer state gets incosistent when the kernel +* calls functions that never return (aka suspend finishers) hence +* disable graph tracing during their execution. +*/ +pause_graph_tracing (); +/* * Provide a temporary page table with an identity mapping for * the MMU-enable code, required for resuming. On successful
@@ -33,6 +41,9 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))* back to the correct page tables. */ ret =__cpu_suspend (arg, fn, __mpidr); + +unpause_graph_tracing (); +if (ret ==0 ) {cpu_switch_mm (mm->pgd, mm);local_flush_bp_all ();
@@ -46,7 +57,13 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))int cpu_suspend (unsigned long arg,int (*fn)(unsigned long )) {u32 __mpidr =cpu_logical_map (smp_processor_id ()); -return __cpu_suspend (arg, fn, __mpidr); +int ret; + +pause_graph_tracing (); + ret =__cpu_suspend (arg, fn, __mpidr); +unpause_graph_tracing (); + +return ret; }#define idmap_pgd NULL#endif
arch/arm64/boot/dts/mediatek/mt8173.dtsi +1 -1
@@ -1029,7 +1029,7 @@ <&mmsys CLK_MM_DSI1_DIGITAL>, <&mipi_tx1>; clock-names = "engine", "digital", "hs"; - phy = <&mipi_tx1>; + phys = <&mipi_tx1>; phy-names = "dphy"; status = "disabled"; };
arch/arm64/kernel/vdso/vdso.lds.S +7 -1
@@ -39,6 +39,13 @@ SECTIONS .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } + /* + * Discard .note.gnu.property sections which are unused and have + * different alignment requirement from vDSO note sections. + */ + /DISCARD/ : { + *(.note.GNU-stack .note.gnu.property) + } .note : { *(.note.*) } :text :note . = ALIGN(16);
@@ -59,7 +66,6 @@ SECTIONS PROVIDE(end = .); /DISCARD/ : { - *(.note.GNU-stack) *(.data .data.* .gnu.linkonce.d.* .sdata*) *(.bss .sbss .dynbss .dynsbss) }
arch/mips/include/asm/cpu-features.h +3 -2
@@ -11,6 +11,7 @@#include <asm/cpu.h> #include <asm/cpu-info.h> +#include <asm/isa-rev.h> #include <cpu-feature-overrides.h> /*
@@ -493,7 +494,7 @@# define cpu_has_perf (cpu_data[0].options & MIPS_CPU_PERF)#endif -#if defined(CONFIG_SMP ) && defined(__mips_isa_rev) && (__mips_isa_rev >=6 ) +#if defined(CONFIG_SMP ) && (MIPS_ISA_REV >=6 )/* * Some systems share FTLB RAMs between threads within a core (siblings in * kernel parlance). This means that FTLB entries may become invalid at almost
@@ -525,7 +526,7 @@# define cpu_has_shared_ftlb_entries \ (current_cpu_data.options & MIPS_CPU_SHARED_FTLB_ENTRIES)# endif -#endif /* SMP && __mips_isa_rev >= 6 */ +#endif /* SMP && MIPS_ISA_REV >= 6 */ #ifndef cpu_has_shared_ftlb_ram# define cpu_has_shared_ftlb_ram 0
arch/mips/include/asm/div64.h +39 -16
87 lines not on this page · raw message
arch/mips/include/asm/isa-rev.h new file +24 -0
@@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* +* Copyright (C) 2018 MIPS Tech, LLC +* Author: Matt Redfearn <[email protected]> +*/ + +#ifndef __MIPS_ASM_ISA_REV_H__ +#define __MIPS_ASM_ISA_REV_H__ + +/* +* The ISA revision level. This is 0 for MIPS I to V and N for +* MIPS{32,64}rN. +*/ + +/* If the compiler has defined __mips_isa_rev, believe it. */ +#ifdef __mips_isa_rev +#define MIPS_ISA_REV __mips_isa_rev +#else +/* The compiler hasn't defined the isa rev so assume it's MIPS I - V (0) */ +#define MIPS_ISA_REV 0 +#endif + + +#endif /* __MIPS_ASM_ISA_REV_H__ */
arch/mips/pci/pci-legacy.c +7 -2
@@ -169,8 +169,13 @@ void pci_load_of_ranges(struct pci_controller *hose, struct device_node *node) res = hose->mem_resource;break ; } -if (res !=NULL ) -of_pci_range_to_resource (&range, node, res); +if (res !=NULL ) { + res->name = node->full_name; + res->flags = range.flags; + res->start = range.cpu_addr; + res->end = range.cpu_addr + range.size -1 ; + res->parent = res->child = res->sibling =NULL ; + } } }
arch/mips/pci/pci-rt2880.c +24 -13
@@ -183,7 +183,6 @@ static inline void rt2880_pci_write_u32(unsigned long reg, u32 val)int pcibios_map_irq (const struct pci_dev *dev,u8 slot,u8 pin) { -u16 cmd;int irq =-1 ;if (dev->bus->number !=0 )
@@ -191,8 +190,6 @@ int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)switch (PCI_SLOT (dev->devfn)) {case 0x00 : -rt2880_pci_write_u32 (PCI_BASE_ADDRESS_0 ,0x08000000 ); - (void )rt2880_pci_read_u32 (PCI_BASE_ADDRESS_0 );break ;case 0x11 : irq =RT288X_CPU_IRQ_PCI ;
@@ -204,16 +201,6 @@ int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)break ; } -pci_write_config_byte ((struct pci_dev *) dev, -PCI_CACHE_LINE_SIZE ,0x14 ); -pci_write_config_byte ((struct pci_dev *) dev,PCI_LATENCY_TIMER ,0xFF ); -pci_read_config_word ((struct pci_dev *) dev,PCI_COMMAND , &cmd); - cmd |=PCI_COMMAND_MASTER |PCI_COMMAND_IO |PCI_COMMAND_MEMORY | -PCI_COMMAND_INVALIDATE |PCI_COMMAND_FAST_BACK | -PCI_COMMAND_SERR |PCI_COMMAND_WAIT |PCI_COMMAND_PARITY ; -pci_write_config_word ((struct pci_dev *) dev,PCI_COMMAND , cmd); -pci_write_config_byte ((struct pci_dev *) dev,PCI_INTERRUPT_LINE , - dev->irq);return irq; }
@@ -252,6 +239,30 @@ static int rt288x_pci_probe(struct platform_device *pdev)int pcibios_plat_dev_init (struct pci_dev *dev) { +static bool slot0_init; + +/* +* Nobody seems to initialize slot 0, but this platform requires it, so +* do it once when some other slot is being enabled. The PCI subsystem +* should configure other slots properly, so no need to do anything +* special for those. +*/ +if (!slot0_init && dev->bus->number ==0 ) { +u16 cmd; +u32 bar0; + + slot0_init = true; + +pci_bus_write_config_dword (dev->bus,0 ,PCI_BASE_ADDRESS_0 , +0x08000000 ); +pci_bus_read_config_dword (dev->bus,0 ,PCI_BASE_ADDRESS_0 , + &bar0); + +pci_bus_read_config_word (dev->bus,0 ,PCI_COMMAND , &cmd); + cmd |=PCI_COMMAND_MASTER |PCI_COMMAND_IO |PCI_COMMAND_MEMORY ; +pci_bus_write_config_word (dev->bus,0 ,PCI_COMMAND , cmd); + } +return 0 ; }
arch/mips/vdso/gettimeofday.c +12 -2
@@ -18,6 +18,12 @@#include <asm/unistd.h> #include <asm/vdso.h> +#if MIPS_ISA_REV <6 +#define VDSO_SYSCALL_CLOBBERS "hi", "lo", +#else +#define VDSO_SYSCALL_CLOBBERS +#endif +#ifdef CONFIG_MIPS_CLOCK_VSYSCALL static __always_inline long gettimeofday_fallback(struct timeval *_tv,
@@ -34,7 +40,9 @@ static __always_inline long gettimeofday_fallback(struct timeval *_tv, : "=r" (ret), "=r" (error) : "r" (tv), "r" (tz), "r" (nr) : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", - "$14", "$15", "$24", "$25", "hi", "lo", "memory"); +"$14" ,"$15" ,"$24" ,"$25" , +VDSO_SYSCALL_CLOBBERS + "memory");return error ? -ret : ret; }
@@ -55,7 +63,9 @@ static __always_inline long clock_gettime_fallback(clockid_t _clkid, : "=r" (ret), "=r" (error) : "r" (clkid), "r" (ts), "r" (nr) : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", - "$14", "$15", "$24", "$25", "hi", "lo", "memory"); +"$14" ,"$15" ,"$24" ,"$25" , +VDSO_SYSCALL_CLOBBERS + "memory");return error ? -ret : ret; }
arch/powerpc/Kconfig +1 -1
@@ -208,7 +208,7 @@ config PPC select HAVE_MEMBLOCK_NODE_MAP select HAVE_MOD_ARCH_SPECIFIC select HAVE_NMI if PERF_EVENTS || (PPC64 && PPC_BOOK3S) - select HAVE_HARDLOCKUP_DETECTOR_ARCH if (PPC64 && PPC_BOOK3S) + select HAVE_HARDLOCKUP_DETECTOR_ARCH if PPC64 && PPC_BOOK3S && SMP select HAVE_OPROFILE select HAVE_OPTPROBES if PPC64 select HAVE_PERF_EVENTS
arch/powerpc/Kconfig.debug +1 -0
@@ -349,6 +349,7 @@ config PPC_EARLY_DEBUG_CPM_ADDR config FAIL_IOMMU bool "Fault-injection capability for IOMMU" depends on FAULT_INJECTION + depends on PCI || IBMVIO help Provide fault-injection capability for IOMMU. Each device can be selectively enabled via the fail_iommu property.
arch/powerpc/include/uapi/asm/errno.h +1 -0
@@ -2,6 +2,7 @@#ifndef _ASM_POWERPC_ERRNO_H#define _ASM_POWERPC_ERRNO_H +#undef EDEADLOCK#include <asm-generic/errno.h> #undef EDEADLOCK
arch/powerpc/kernel/eeh.c +4 -7
@@ -365,14 +365,11 @@ static inline unsigned long eeh_token_to_phys(unsigned long token) pa =pte_pfn (*ptep);/* On radix we can do hugepage mappings for io, so handle that */ -if (hugepage_shift) { - pa <<= hugepage_shift; - pa |= token & ((1ul << hugepage_shift) -1 ); - }else { - pa <<=PAGE_SHIFT ; - pa |= token & (PAGE_SIZE -1 ); - } +if (!hugepage_shift) + hugepage_shift =PAGE_SHIFT ; + pa <<=PAGE_SHIFT ; + pa |= token & ((1ul << hugepage_shift) -1 );return pa; }
arch/powerpc/kernel/iommu.c +2 -2
@@ -1055,7 +1055,7 @@ int iommu_take_ownership(struct iommu_table *tbl)spin_lock_irqsave (&tbl->large_pool.lock, flags);for (i =0 ; i < tbl->nr_pools; i++) -spin_lock (&tbl->pools[i].lock); +spin_lock_nest_lock (&tbl->pools[i].lock, &tbl->large_pool.lock);if (tbl->it_offset ==0 )clear_bit (0 , tbl->it_map);
@@ -1084,7 +1084,7 @@ void iommu_release_ownership(struct iommu_table *tbl)spin_lock_irqsave (&tbl->large_pool.lock, flags);for (i =0 ; i < tbl->nr_pools; i++) -spin_lock (&tbl->pools[i].lock); +spin_lock_nest_lock (&tbl->pools[i].lock, &tbl->large_pool.lock);memset (tbl->it_map,0 , sz);
arch/powerpc/kernel/prom.c +1 -1
@@ -265,7 +265,7 @@ static struct feature_property { };#if defined(CONFIG_44x) && defined(CONFIG_PPC_FPU ) -static inline void identical_pvr_fixup (unsigned long node) +static __init void identical_pvr_fixup (unsigned long node) {unsigned int pvr;const char *model =of_get_flat_dt_prop (node,"model" ,NULL );
arch/powerpc/kernel/smp.c +3 -3
@@ -985,6 +985,9 @@ void start_secondary(void *unused)vdso_getcpu_init ();#endif +set_numa_node (numa_cpu_lookup_table[cpu]); +set_numa_mem (local_memory_node (numa_cpu_lookup_table[cpu])); +/* Update topology CPU masks */ add_cpu_to_masks (cpu);
@@ -995,9 +998,6 @@ void start_secondary(void *unused)if (!cpumask_equal (cpu_l2_cache_mask (cpu),cpu_sibling_mask (cpu))) shared_caches = true; -set_numa_node (numa_cpu_lookup_table[cpu]); -set_numa_mem (local_memory_node (numa_cpu_lookup_table[cpu])); -smp_wmb ();notify_cpu_starting (cpu);set_cpu_online (cpu, true);
arch/powerpc/lib/feature-fixups.c +32 -3
@@ -18,6 +18,7 @@#include <linux/string.h> #include <linux/init.h> #include <linux/sched/mm.h> +#include <linux/stop_machine.h> #include <asm/cputable.h> #include <asm/code-patching.h> #include <asm/page.h>
@@ -225,11 +226,25 @@ void do_stf_exit_barrier_fixups(enum stf_barrier_type types) : "unknown"); } +static int __do_stf_barrier_fixups (void *data) +{ +enum stf_barrier_type *types = data; + +do_stf_entry_barrier_fixups (*types); +do_stf_exit_barrier_fixups (*types); + +return 0 ; +}void do_stf_barrier_fixups (enum stf_barrier_type types) { -do_stf_entry_barrier_fixups (types); -do_stf_exit_barrier_fixups (types); +/* +* The call to the fallback entry flush, and the fallback/sync-ori exit +* flush can not be safely patched in/out while other CPUs are executing +* them. So call __do_stf_barrier_fixups() on one CPU while all other CPUs +* spin in the stop machine core with interrupts hard disabled. +*/ +stop_machine (__do_stf_barrier_fixups, &types,NULL ); }void do_uaccess_flush_fixups (enum l1d_flush_type types)
@@ -282,8 +297,9 @@ void do_uaccess_flush_fixups(enum l1d_flush_type types) : "unknown"); } -void do_entry_flush_fixups (enum l1d_flush_type types) +static int __do_entry_flush_fixups (void *data) { +enum l1d_flush_type types = *(enum l1d_flush_type *)data;unsigned int instrs[3 ], *dest;long *start, *end;int i;
@@ -334,6 +350,19 @@ void do_entry_flush_fixups(enum l1d_flush_type types) : "ori type" : (types &L1D_FLUSH_MTTRIG ) ?"mttrig type" : "unknown"); + +return 0 ; +} + +void do_entry_flush_fixups (enum l1d_flush_type types) +{ +/* +* The call to the fallback flush can not be safely patched in/out while +* other CPUs are executing it. So call __do_entry_flush_fixups() on one +* CPU while all other CPUs spin in the stop machine core with interrupts +* hard disabled. +*/ +stop_machine (__do_entry_flush_fixups, &types,NULL ); }void do_rfi_flush_fixups (enum l1d_flush_type types)
arch/powerpc/perf/isa207-common.c +2 -2
@@ -361,8 +361,8 @@ int isa207_get_constraint(u64 event, unsigned long *maskp, unsigned long *valp)* EBB events are pinned & exclusive, so this should never actually * hit, but we leave it as a fallback in case. */ - mask |=CNST_EBB_VAL (ebb); - value |=CNST_EBB_MASK ; + mask |=CNST_EBB_MASK ; + value |=CNST_EBB_VAL (ebb); *maskp = mask; *valp = value;
arch/powerpc/platforms/52xx/lite5200_sleep.S +1 -1
@@ -181,7 +181,7 @@ sram_code: udelay: /* r11 - tb_ticks_per_usec, r12 - usecs, overwrites r13 */ mullw r12, r12, r11 mftb r13 /* start */ - addi r12, r13, r12 /* end */ + add r12, r13, r12 /* end */ 1: mftb r13 /* current */ cmp cr0, r13, r12
arch/powerpc/platforms/pseries/hotplug-cpu.c +0 -3
@@ -95,9 +95,6 @@ static void rtas_stop_self(void)BUG_ON (rtas_stop_self_token ==RTAS_UNKNOWN_SERVICE ); -printk ("cpu %u (hwid %u) Ready to die...\n" , -smp_processor_id (),hard_smp_processor_id ()); -rtas_call_unlocked (&args, rtas_stop_self_token,0 ,1 ,NULL );panic ("Alas, I survived.\n" );
arch/powerpc/platforms/pseries/pci_dlpar.c +3 -1
@@ -66,6 +66,7 @@ EXPORT_SYMBOL_GPL(init_phb_dynamic);int remove_phb_dynamic (struct pci_controller *phb) {struct pci_bus *b = phb->bus; +struct pci_host_bridge *host_bridge =to_pci_host_bridge (b->bridge);struct resource *res;int rc, i;
@@ -92,7 +93,8 @@ int remove_phb_dynamic(struct pci_controller *phb)/* Remove the PCI bus and unregister the bridge device from sysfs */ phb->bus =NULL ;pci_remove_bus (b); -device_unregister (b->bridge); + host_bridge->bus =NULL ; +device_unregister (&host_bridge->dev);/* Now release the IO resource */ if (res->flags &IORESOURCE_IO )
arch/s390/kernel/dis.c +1 -1
@@ -2026,7 +2026,7 @@ void show_code(struct pt_regs *regs)void print_fn_code (unsigned char *code,unsigned long len) { -char buffer[64 ], *ptr; +char buffer[128 ], *ptr;int opsize, i;while (len) {
arch/s390/kvm/gaccess.h +41 -13
77 lines not on this page · raw message
arch/s390/kvm/kvm-s390.c +2 -2
@@ -3395,16 +3395,16 @@ static void store_regs(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) current->thread.fpu.fpc = vcpu->arch.host_fpregs.fpc; current->thread.fpu.regs = vcpu->arch.host_fpregs.regs;if (MACHINE_HAS_GS ) { +preempt_disable ();__ctl_set_bit (2 ,4 );if (vcpu->arch.gs_enabled)save_gs_cb (current->thread.gs_cb); -preempt_disable (); current->thread.gs_cb = vcpu->arch.host_gscb;restore_gs_cb (vcpu->arch.host_gscb); -preempt_enable ();if (!vcpu->arch.host_gscb)__ctl_clear_bit (2 ,4 ); vcpu->arch.host_gscb =NULL ; +preempt_enable (); } }
arch/um/kernel/dyn.lds.S +6 -0
@@ -7,6 +7,12 @@ OUTPUT_ARCH(ELF_ARCH) ENTRY(_start) jiffies = jiffies_64; +VERSION { + { + local: *; + }; +} + SECTIONS { PROVIDE (__executable_start = START);
arch/um/kernel/uml.lds.S +6 -0
@@ -7,6 +7,12 @@ OUTPUT_ARCH(ELF_ARCH) ENTRY(_start) jiffies = jiffies_64; +VERSION { + { + local: *; + }; +} + SECTIONS { /* This must contain the right address - not quite the default ELF one.*/
arch/x86/Kconfig +1 -0
@@ -526,6 +526,7 @@ config X86_UV depends on X86_EXTENDED_PLATFORM depends on NUMA depends on EFI + depends on KEXEC_CORE depends on X86_X2APIC depends on PCI ---help---
arch/x86/Makefile +1 -0
@@ -41,6 +41,7 @@ REALMODE_CFLAGS += $(call __cc-option, $(CC), $(REALMODE_CFLAGS), -ffreestanding REALMODE_CFLAGS += $(call __cc-option, $(CC), $(REALMODE_CFLAGS), -fno-stack-protector) REALMODE_CFLAGS += $(call __cc-option, $(CC), $(REALMODE_CFLAGS), -Wno-address-of-packed-member) REALMODE_CFLAGS += $(call __cc-option, $(CC), $(REALMODE_CFLAGS), $(cc_stack_align4)) +REALMODE_CFLAGS += $(CLANG_FLAGS) export REALMODE_CFLAGS # BITS is used as extension for files which are available in a 32 bit
arch/x86/entry/vdso/vma.c +1 -1
@@ -342,7 +342,7 @@ static void vgetcpu_cpu_init(void *arg)#ifdef CONFIG_NUMA node =cpu_to_node (cpu);#endif -if (static_cpu_has (X86_FEATURE_RDTSCP )) +if (boot_cpu_has (X86_FEATURE_RDTSCP ) ||boot_cpu_has (X86_FEATURE_RDPID ))write_rdtscp_aux ((node <<12 ) | cpu);/*
arch/x86/events/amd/iommu.c +3 -3
@@ -84,12 +84,12 @@ static struct attribute_group amd_iommu_events_group = { };struct amd_iommu_event_desc { -struct kobj_attribute attr; +struct device_attribute attr;const char *event; }; -static ssize_t _iommu_event_show (struct kobject *kobj, -struct kobj_attribute *attr,char *buf) +static ssize_t _iommu_event_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct amd_iommu_event_desc *event = container_of(attr, struct amd_iommu_event_desc, attr);
arch/x86/kernel/acpi/boot.c +12 -13
@@ -1553,10 +1553,18 @@ void __init acpi_boot_table_init(void)/* * Initialize the ACPI boot-time table parser. */ -if (acpi_table_init ()) { +if (acpi_locate_initial_tables ())disable_acpi (); -return ; - } +else +acpi_reserve_initial_tables (); +} + +int __init early_acpi_boot_init (void ) +{ +if (acpi_disabled) +return 1 ; + +acpi_table_init_complete ();acpi_table_parse (ACPI_SIG_BOOT , acpi_parse_sbf);
@@ -1569,18 +1577,9 @@ void __init acpi_boot_table_init(void) }else { printk(KERN_WARNING PREFIX "Disabling ACPI support\n");disable_acpi (); -return ; +return 1 ; } } -} - -int __init early_acpi_boot_init (void ) -{ -/* -* If acpi_disabled, bail out -*/ -if (acpi_disabled) -return 1 ;/* * Process the Multiple APIC Description Table (MADT), if present
arch/x86/kernel/cpu/microcode/core.c +4 -4
@@ -627,16 +627,16 @@ static ssize_t reload_store(struct device *dev,if (val !=1 )return size; - tmp_ret = microcode_ops->request_microcode_fw (bsp, µcode_pdev->dev, true); -if (tmp_ret !=UCODE_NEW ) -return size; -get_online_cpus (); ret =check_online_cpus ();if (ret) goto put; + tmp_ret = microcode_ops->request_microcode_fw (bsp, µcode_pdev->dev, true); +if (tmp_ret !=UCODE_NEW ) + goto put; +mutex_lock (µcode_mutex); ret =microcode_reload_late ();mutex_unlock (µcode_mutex);
arch/x86/kernel/kprobes/core.c +12 -5
@@ -173,6 +173,8 @@ NOKPROBE_SYMBOL(skip_prefixes);int can_boost (struct insn *insn,void *addr) {kprobe_opcode_t opcode; +insn_byte_t prefix; +int i;if (search_exception_tables ((unsigned long )addr))return 0 ;/* Page fault may occur on this address. */
@@ -185,9 +187,14 @@ int can_boost(struct insn *insn, void *addr)if (insn->opcode.nbytes !=1 )return 0 ; -/* Can't boost Address-size override prefix */ -if (unlikely (inat_is_address_size_prefix (insn->attr))) -return 0 ; +for_each_insn_prefix (insn, i, prefix) { +insn_attr_t attr; + + attr =inat_get_opcode_attribute (prefix); +/* Can't boost Address-size override prefix and CS override prefix */ +if (prefix ==0x2e ||inat_is_address_size_prefix (attr)) +return 0 ; + } opcode = insn->opcode.bytes[0 ];
@@ -212,8 +219,8 @@ int can_boost(struct insn *insn, void *addr)/* clear and set flags are boostable */ return (opcode ==0xf5 || (0xf7 < opcode && opcode <0xfe ));default : -/* CS override prefix and call are not boostable */ -return (opcode !=0x2e && opcode !=0x9a ); +/* call is not boostable */ +return opcode !=0x9a ; } }
arch/x86/kernel/setup.c +2 -5
@@ -1211,6 +1211,8 @@ void __init setup_arch(char **cmdline_p)reserve_initrd ();acpi_table_upgrade (); +/* Look for ACPI tables and reserve memory occupied by them. */ +acpi_boot_table_init ();vsmp_init ();
@@ -1218,11 +1220,6 @@ void __init setup_arch(char **cmdline_p)early_platform_quirks (); -/* -* Parse the ACPI tables for possible boot-time SMP configuration. -*/ -acpi_boot_table_init (); -early_acpi_boot_init ();initmem_init ();
arch/x86/kvm/x86.c +1 -0
@@ -6420,6 +6420,7 @@ void kvm_arch_exit(void)cpuhp_remove_state_nocalls (CPUHP_AP_X86_KVM_CLK_ONLINE );#ifdef CONFIG_X86_64 pvclock_gtod_unregister_notifier (&pvclock_gtod_notifier); +cancel_work_sync (&pvclock_gtod_work);#endif kvm_x86_ops =NULL ;kvm_mmu_module_exit ();
arch/x86/lib/msr-smp.c +2 -2
@@ -240,7 +240,7 @@ static void __wrmsr_safe_regs_on_cpu(void *info) rv->err =wrmsr_safe_regs (rv->regs); } -int rdmsr_safe_regs_on_cpu (unsigned int cpu,u32 *regs) +int rdmsr_safe_regs_on_cpu (unsigned int cpu,u32 regs[8 ]) {int err;struct msr_regs_info rv;
@@ -253,7 +253,7 @@ int rdmsr_safe_regs_on_cpu(unsigned int cpu, u32 *regs) }EXPORT_SYMBOL (rdmsr_safe_regs_on_cpu); -int wrmsr_safe_regs_on_cpu (unsigned int cpu,u32 *regs) +int wrmsr_safe_regs_on_cpu (unsigned int cpu,u32 regs[8 ]) {int err;struct msr_regs_info rv;
block/blk-mq.c +4 -2
@@ -2489,10 +2489,12 @@ EXPORT_SYMBOL(blk_mq_init_allocated_queue);void blk_mq_free_queue (struct request_queue *q) { -struct blk_mq_tag_set *set = q->tag_set; +struct blk_mq_tag_set *set = q->tag_set; -blk_mq_del_queue_tag_set (q); +/* Checks hctx->flags & BLK_MQ_F_TAG_QUEUE_SHARED. */ blk_mq_exit_hw_queues (q, set, set->nr_hw_queues); +/* May clear BLK_MQ_F_TAG_QUEUE_SHARED in hctx->flags. */ +blk_mq_del_queue_tag_set (q); }/* Basically redo blk_mq_init_queue with queue frozen */
crypto/api.c +1 -1
@@ -567,7 +567,7 @@ void crypto_destroy_tfm(void *mem, struct crypto_tfm *tfm) {struct crypto_alg *alg; -if (unlikely (!mem)) +if (IS_ERR_OR_NULL (mem))return ; alg = tfm->__crt_alg;
drivers/acpi/arm64/gtdt.c +6 -4
@@ -332,7 +332,7 @@ static int __init gtdt_import_sbsa_gwdt(struct acpi_gtdt_watchdog *wd, int index) {struct platform_device *pdev; -int irq =map_gt_gsi (wd->timer_interrupt, wd->timer_flags); +int irq;/* * According to SBSA specification the size of refresh and control
@@ -341,7 +341,7 @@ static int __init gtdt_import_sbsa_gwdt(struct acpi_gtdt_watchdog *wd,struct resource res[] = {DEFINE_RES_MEM (wd->control_frame_address,SZ_4K ),DEFINE_RES_MEM (wd->refresh_frame_address,SZ_4K ), -DEFINE_RES_IRQ (irq), + {}, };int nr_res =ARRAY_SIZE (res);
@@ -351,10 +351,11 @@ static int __init gtdt_import_sbsa_gwdt(struct acpi_gtdt_watchdog *wd,if (!(wd->refresh_frame_address && wd->control_frame_address)) {pr_err (FW_BUG "failed to get the Watchdog base address.\n" ); -acpi_unregister_gsi (wd->timer_interrupt);return -EINVAL ; } + irq =map_gt_gsi (wd->timer_interrupt, wd->timer_flags); + res[2 ] = (struct resource )DEFINE_RES_IRQ (irq);if (irq <=0 ) {pr_warn ("failed to map the Watchdog interrupt.\n" ); nr_res--;
@@ -367,7 +368,8 @@ static int __init gtdt_import_sbsa_gwdt(struct acpi_gtdt_watchdog *wd,*/ pdev =platform_device_register_simple ("sbsa-gwdt" , index, res, nr_res);if (IS_ERR (pdev)) { -acpi_unregister_gsi (wd->timer_interrupt); +if (irq >0 ) +acpi_unregister_gsi (wd->timer_interrupt);return PTR_ERR (pdev); }
drivers/acpi/cppc_acpi.c +3 -11
@@ -118,23 +118,15 @@ static DEFINE_PER_CPU(struct cpc_desc *, cpc_desc_ptr);*/ #define NUM_RETRIES 500 -struct cppc_attr { -struct attribute attr; -ssize_t (*show)(struct kobject *kobj, -struct attribute *attr,char *buf); -ssize_t (*store)(struct kobject *kobj, -struct attribute *attr,const char *c,ssize_t count); -}; -#define define_one_cppc_ro (_name) \ -static struct cppc_attr _name = \ +static struct kobj_attribute _name = \ __ATTR(_name, 0444, show_##_name, NULL)#define to_cpc_desc (a) container_of(a, struct cpc_desc, kobj)#define show_cppc_data (access_fn, struct_name, member_name) \ static ssize_t show_##member_name(struct kobject *kobj, \ - struct attribute *attr, char *buf) \ + struct kobj_attribute *attr, char *buf) \ { \ struct cpc_desc *cpc_ptr = to_cpc_desc(kobj); \ struct struct_name st_name = {0}; \
@@ -157,7 +149,7 @@ show_cppc_data(cppc_get_perf_ctrs, cppc_perf_fb_ctrs, reference_perf);show_cppc_data (cppc_get_perf_ctrs, cppc_perf_fb_ctrs, wraparound_time);static ssize_t show_feedback_ctrs (struct kobject *kobj, -struct attribute *attr,char *buf) +struct kobj_attribute *attr,char *buf) {struct cpc_desc *cpc_ptr =to_cpc_desc (kobj);struct cppc_perf_fb_ctrs fb_ctrs = {0 };
drivers/acpi/custom_method.c +3 -1
@@ -37,6 +37,8 @@ static ssize_t cm_write(struct file *file, const char __user * user_buf, sizeof(struct acpi_table_header)))return -EFAULT ; uncopied_bytes = max_size = table.length; +/* make sure the buf is not allocated */ +kfree (buf); buf =kzalloc (max_size,GFP_KERNEL );if (!buf)return -ENOMEM ;
@@ -50,6 +52,7 @@ static ssize_t cm_write(struct file *file, const char __user * user_buf, (*ppos + count < count) || (count > uncopied_bytes)) {kfree (buf); + buf =NULL ;return -EINVAL ; }
@@ -71,7 +74,6 @@ static ssize_t cm_write(struct file *file, const char __user * user_buf,add_taint (TAINT_OVERRIDDEN_ACPI_TABLE ,LOCKDEP_NOW_UNRELIABLE ); } -kfree (buf);return count; }
drivers/acpi/scan.c +1 -0
@@ -704,6 +704,7 @@ int acpi_device_add(struct acpi_device *device, result =acpi_device_set_name (device, acpi_device_bus_id);if (result) { +kfree_const (acpi_device_bus_id->bus_id);kfree (acpi_device_bus_id); goto err_unlock; }
drivers/acpi/tables.c +39 -3
62 lines not on this page · raw message
drivers/ata/libahci_platform.c +3 -1
@@ -518,11 +518,13 @@ int ahci_platform_init_host(struct platform_device *pdev,int i, irq, n_ports, rc; irq =platform_get_irq (pdev,0 ); -if (irq <=0 ) { +if (irq <0 ) {if (irq != -EPROBE_DEFER )dev_err (dev,"no irq\n" );return irq; } +if (!irq) +return -EINVAL ; hpriv->irq = irq;
drivers/ata/pata_arasan_cf.c +11 -4
@@ -819,12 +819,19 @@ static int arasan_cf_probe(struct platform_device *pdev)else quirk =CF_BROKEN_UDMA ;/* as it is on spear1340 */ -/* if irq is 0, support only PIO */ - acdev->irq =platform_get_irq (pdev,0 ); -if (acdev->irq) +/* +* If there's an error getting IRQ (or we do get IRQ0), +* support only PIO +*/ + ret =platform_get_irq (pdev,0 ); +if (ret >0 ) { + acdev->irq = ret; irq_handler = arasan_cf_interrupt; -else + }else if (ret == -EPROBE_DEFER ) { +return ret; + }else { quirk |=CF_BROKEN_MWDMA |CF_BROKEN_UDMA ; + } acdev->pbase = res->start; acdev->vbase = devm_ioremap_nocache(&pdev->dev, res->start,
drivers/ata/pata_ixp4xx_cf.c +5 -1
@@ -169,8 +169,12 @@ static int ixp4xx_pata_probe(struct platform_device *pdev)return -ENOMEM ; irq =platform_get_irq (pdev,0 ); -if (irq) +if (irq >0 )irq_set_irq_type (irq,IRQ_TYPE_EDGE_RISING ); +else if (irq <0 ) +return irq; +else +return -EINVAL ;/* Setup expansion bus chip selects */ *data->cs0_cfg = data->cs0_bits;
drivers/ata/sata_mv.c +4 -0
@@ -4112,6 +4112,10 @@ static int mv_platform_probe(struct platform_device *pdev) n_ports = mv_platform_data->n_ports; irq =platform_get_irq (pdev,0 ); } +if (irq <0 ) +return irq; +if (!irq) +return -EINVAL ; host =ata_host_alloc_pinfo (&pdev->dev, ppi, n_ports); hpriv =devm_kzalloc (&pdev->dev,sizeof (*hpriv),GFP_KERNEL );
drivers/bus/qcom-ebi2.c +3 -1
@@ -357,8 +357,10 @@ static int qcom_ebi2_probe(struct platform_device *pdev)/* Figure out the chipselect */ ret =of_property_read_u32 (child,"reg" , &csindex); -if (ret) +if (ret) { +of_node_put (child);return ret; + }if (csindex >5 ) { dev_err(dev,
drivers/char/tpm/tpm2-cmd.c +1 -0
@@ -1051,6 +1051,7 @@ static int tpm2_get_cc_attrs_tbl(struct tpm_chip *chip)if (nr_commands !=be32_to_cpup ((__be32 *)&buf.data[TPM_HEADER_SIZE +5 ])) { + rc = -EFAULT ;tpm_buf_destroy (&buf); goto out; }
drivers/char/ttyprintk.c +11 -0
@@ -159,12 +159,23 @@ static int tpk_ioctl(struct tty_struct *tty,return 0 ; } +/* +* TTY operations hangup function. +*/ +static void tpk_hangup (struct tty_struct *tty) +{ +struct ttyprintk_port *tpkp = tty->driver_data; + +tty_port_hangup (&tpkp->port); +} +static const struct tty_operations ttyprintk_ops = { .open = tpk_open, .close = tpk_close, .write = tpk_write, .write_room = tpk_write_room, .ioctl = tpk_ioctl, + .hangup = tpk_hangup, };static const struct tty_port_operations null_ops = { };
drivers/clk/samsung/clk-exynos7.c +6 -1
@@ -541,8 +541,13 @@ static const struct samsung_gate_clock top1_gate_clks[] __initconst = {GATE (CLK_ACLK_FSYS0_200 ,"aclk_fsys0_200" ,"dout_aclk_fsys0_200" ,ENABLE_ACLK_TOP13 ,28 ,CLK_SET_RATE_PARENT |CLK_IS_CRITICAL ,0 ), +/* +* This clock is required for the CMU_FSYS1 registers access, keep it +* enabled permanently until proper runtime PM support is added. +*/ GATE (CLK_ACLK_FSYS1_200 ,"aclk_fsys1_200" ,"dout_aclk_fsys1_200" , -ENABLE_ACLK_TOP13 ,24 ,CLK_SET_RATE_PARENT ,0 ), +ENABLE_ACLK_TOP13 ,24 ,CLK_SET_RATE_PARENT | +CLK_IS_CRITICAL ,0 ), GATE(CLK_SCLK_PHY_FSYS1_26M, "sclk_phy_fsys1_26m", "dout_sclk_phy_fsys1_26m", ENABLE_SCLK_TOP1_FSYS11,
drivers/clk/socfpga/clk-gate-a10.c +1 -0
@@ -157,6 +157,7 @@ static void __init __socfpga_gate_init(struct device_node *node,if (IS_ERR (socfpga_clk->sys_mgr_base_addr)) {pr_err ("%s: failed to find altr,sys-mgr regmap!\n" , __func__); +kfree (socfpga_clk);return ; } }
drivers/clk/uniphier/clk-uniphier-mux.c +2 -2
@@ -40,10 +40,10 @@ static int uniphier_clk_mux_set_parent(struct clk_hw *hw, u8 index)static u8 uniphier_clk_mux_get_parent (struct clk_hw *hw) {struct uniphier_clk_mux *mux =to_uniphier_clk_mux (hw); -int num_parents =clk_hw_get_num_parents (hw); +unsigned int num_parents =clk_hw_get_num_parents (hw);int ret;unsigned int val; -u8 i; +unsigned int i; ret =regmap_read (mux->regmap, mux->reg, &val);if (ret)
drivers/crypto/qat/qat_c3xxxvf/adf_drv.c +2 -2
@@ -238,12 +238,12 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)if (ret) goto out_err_free_reg; -set_bit (ADF_STATUS_PF_RUNNING , &accel_dev->status); - ret =adf_dev_init (accel_dev);if (ret) goto out_err_dev_shutdown; +set_bit (ADF_STATUS_PF_RUNNING , &accel_dev->status); + ret =adf_dev_start (accel_dev);if (ret) goto out_err_dev_stop;
drivers/crypto/qat/qat_c62xvf/adf_drv.c +2 -2
@@ -238,12 +238,12 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)if (ret) goto out_err_free_reg; -set_bit (ADF_STATUS_PF_RUNNING , &accel_dev->status); - ret =adf_dev_init (accel_dev);if (ret) goto out_err_dev_shutdown; +set_bit (ADF_STATUS_PF_RUNNING , &accel_dev->status); + ret =adf_dev_start (accel_dev);if (ret) goto out_err_dev_stop;
drivers/crypto/qat/qat_common/adf_isr.c +21 -8
@@ -330,19 +330,32 @@ int adf_isr_resource_alloc(struct adf_accel_dev *accel_dev) ret =adf_isr_alloc_msix_entry_table (accel_dev);if (ret) -return ret; -if (adf_enable_msix (accel_dev)) goto err_out; -if (adf_setup_bh (accel_dev)) - goto err_out; + ret =adf_enable_msix (accel_dev); +if (ret) + goto err_free_msix_table; -if (adf_request_irqs (accel_dev)) - goto err_out; + ret =adf_setup_bh (accel_dev); +if (ret) + goto err_disable_msix; + + ret =adf_request_irqs (accel_dev); +if (ret) + goto err_cleanup_bh;return 0 ; + +err_cleanup_bh: +adf_cleanup_bh (accel_dev); + +err_disable_msix: +adf_disable_msix (&accel_dev->accel_pci_dev); + +err_free_msix_table: +adf_isr_free_msix_entry_table (accel_dev); + err_out: -adf_isr_resource_free (accel_dev); -return -EFAULT ; +return ret; }EXPORT_SYMBOL_GPL (adf_isr_resource_alloc);
drivers/crypto/qat/qat_common/adf_transport.c +1 -0
@@ -197,6 +197,7 @@ static int adf_init_ring(struct adf_etr_ring_data *ring)dev_err (&GET_DEV (accel_dev),"Ring address not aligned\n" );dma_free_coherent (&GET_DEV (accel_dev), ring_size_bytes, ring->base_addr, ring->dma_addr); + ring->base_addr =NULL ;return -EFAULT ; }
drivers/crypto/qat/qat_common/adf_vf_isr.c +13 -4
@@ -304,17 +304,26 @@ int adf_vf_isr_resource_alloc(struct adf_accel_dev *accel_dev) goto err_out;if (adf_setup_pf2vf_bh (accel_dev)) - goto err_out; + goto err_disable_msi;if (adf_setup_bh (accel_dev)) - goto err_out; + goto err_cleanup_pf2vf_bh;if (adf_request_msi_irq (accel_dev)) - goto err_out; + goto err_cleanup_bh;return 0 ; + +err_cleanup_bh: +adf_cleanup_bh (accel_dev); + +err_cleanup_pf2vf_bh: +adf_cleanup_pf2vf_bh (accel_dev); + +err_disable_msi: +adf_disable_msi (accel_dev); + err_out: -adf_vf_isr_resource_free (accel_dev);return -EFAULT ; }EXPORT_SYMBOL_GPL (adf_vf_isr_resource_alloc);
drivers/crypto/qat/qat_dh895xccvf/adf_drv.c +2 -2
@@ -238,12 +238,12 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)if (ret) goto out_err_free_reg; -set_bit (ADF_STATUS_PF_RUNNING , &accel_dev->status); - ret =adf_dev_init (accel_dev);if (ret) goto out_err_dev_shutdown; +set_bit (ADF_STATUS_PF_RUNNING , &accel_dev->status); + ret =adf_dev_start (accel_dev);if (ret) goto out_err_dev_stop;
drivers/extcon/extcon-arizona.c +9 -8
@@ -602,7 +602,7 @@ static irqreturn_t arizona_hpdet_irq(int irq, void *data)struct arizona *arizona = info->arizona;int id_gpio = arizona->pdata.hpdet_id_gpio;unsigned int report =EXTCON_JACK_HEADPHONE ; -int ret, reading; +int ret, reading, state;bool mic = false;mutex_lock (&info->lock);
@@ -615,12 +615,11 @@ static irqreturn_t arizona_hpdet_irq(int irq, void *data) }/* If the cable was removed while measuring ignore the result */ - ret =extcon_get_state (info->edev,EXTCON_MECHANICAL ); -if (ret <0 ) { -dev_err (arizona->dev,"Failed to check cable state: %d\n" , - ret); + state =extcon_get_state (info->edev,EXTCON_MECHANICAL ); +if (state <0 ) { +dev_err (arizona->dev,"Failed to check cable state: %d\n" , state); goto out; - }else if (!ret) { + }else if (!state) {dev_dbg (arizona->dev,"Ignoring HPDET for removed cable\n" ); goto done; }
@@ -673,7 +672,7 @@ static irqreturn_t arizona_hpdet_irq(int irq, void *data) ARIZONA_ACCDET_MODE_MASK, ARIZONA_ACCDET_MODE_MIC);/* If we have a mic then reenable MICDET */ -if (mic || info->mic) +if (state && (mic || info->mic))arizona_start_mic (info);if (info->hpdet_active) {
@@ -681,7 +680,9 @@ static irqreturn_t arizona_hpdet_irq(int irq, void *data) info->hpdet_active = false; } - info->hpdet_done = true; +/* Do not set hp_det done when the cable has been unplugged */ +if (state) + info->hpdet_done = true; out:mutex_unlock (&info->lock);
drivers/firmware/Kconfig +1 -0
@@ -206,6 +206,7 @@ config FW_CFG_SYSFS_CMDLINE config QCOM_SCM bool depends on ARM || ARM64 + depends on HAVE_ARM_SMCCC select RESET_CONTROLLER config QCOM_SCM_32
drivers/gpio/gpiolib-acpi.c +14 -0
@@ -1404,6 +1404,20 @@ static const struct dmi_system_id gpiolib_acpi_quirks[] = { .no_edge_events_on_boot = true, }, }, + { +/* +* The Dell Venue 10 Pro 5055, with Bay Trail SoC + TI PMIC uses an +* external embedded-controller connected via I2C + an ACPI GPIO +* event handler on INT33FFC:02 pin 12, causing spurious wakeups. +*/ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Dell Inc." ), + DMI_MATCH(DMI_PRODUCT_NAME, "Venue 10 Pro 5055"), + }, + .driver_data = &(struct acpi_gpiolib_dmi_quirk ) { + .ignore_wake ="INT33FC:02@12" , + }, + }, {/* * HP X2 10 models with Cherry Trail SoC + TI PMIC use an
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c +1 -1
@@ -437,7 +437,7 @@ void amdgpu_irq_gpu_reset_resume_helper(struct amdgpu_device *adev)for (j =0 ; j <AMDGPU_MAX_IRQ_SRC_ID ; ++j) {struct amdgpu_irq_src *src = adev->irq.client[i].sources[j]; -if (!src) +if (!src || !src->funcs || !src->funcs->set)continue ;for (k =0 ; k < src->num_types; k++)amdgpu_irq_update (adev, src, k);
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +1 -1
@@ -742,7 +742,7 @@ static void amdgpu_ttm_tt_unpin_userptr(struct ttm_tt *ttm) DMA_BIDIRECTIONAL :DMA_TO_DEVICE ;/* double check that we don't free the table twice */ -if (!ttm->sg->sgl) +if (!ttm->sg || !ttm->sg->sgl)return ;/* free the sg table and pages again */
drivers/gpu/drm/i915/intel_pm.c +1 -1
@@ -2934,7 +2934,7 @@ int ilk_wm_max_level(const struct drm_i915_private *dev_priv)static void intel_print_wm_latency (struct drm_i915_private *dev_priv,const char *name, -const uint16_t wm[8 ]) +const uint16_t wm[]) {int level, max_level =ilk_wm_max_level (dev_priv);
drivers/gpu/drm/msm/mdp/mdp5/mdp5_cmd_encoder.c +9 -1
@@ -78,9 +78,17 @@ static int pingpong_tearcheck_setup(struct drm_encoder *encoder, | MDP5_PP_SYNC_CONFIG_VSYNC_IN_EN; cfg |=MDP5_PP_SYNC_CONFIG_VSYNC_COUNT (vclks_line); +/* +* Tearcheck emits a blanking signal every vclks_line * vtotal * 2 ticks on +* the vsync_clk equating to roughly half the desired panel refresh rate. +* This is only necessary as stability fallback if interrupts from the +* panel arrive too late or not at all, but is currently used by default +* because these panel interrupts are not wired up yet. +*/ mdp5_write (mdp5_kms,REG_MDP5_PP_SYNC_CONFIG_VSYNC (pp_id), cfg);mdp5_write (mdp5_kms, -REG_MDP5_PP_SYNC_CONFIG_HEIGHT (pp_id),0xfff0 ); +REG_MDP5_PP_SYNC_CONFIG_HEIGHT (pp_id), (2 * mode->vtotal)); +mdp5_write (mdp5_kms,REG_MDP5_PP_VSYNC_INIT_VAL (pp_id), mode->vdisplay);mdp5_write (mdp5_kms,REG_MDP5_PP_RD_PTR_IRQ (pp_id), mode->vdisplay +1 );
drivers/gpu/drm/radeon/radeon.h +1 -0
@@ -1562,6 +1562,7 @@ struct radeon_dpm {void *priv;u32 new_active_crtcs;int new_active_crtc_count; +int high_pixelclock_count;u32 current_active_crtcs;int current_active_crtc_count;bool single_display;
drivers/gpu/drm/radeon/radeon_atombios.c +3 -3
@@ -2260,10 +2260,10 @@ static int radeon_atombios_parse_power_table_1_3(struct radeon_device *rdev) rdev->pm.default_power_state_index = state_index -1 ; rdev->pm.power_state[state_index -1 ].default_clock_mode = &rdev->pm.power_state[state_index -1 ].clock_info[0 ]; - rdev->pm.power_state[state_index].flags &= + rdev->pm.power_state[state_index -1 ].flags &= ~RADEON_PM_STATE_SINGLE_DISPLAY_ONLY ; - rdev->pm.power_state[state_index].misc =0 ; - rdev->pm.power_state[state_index].misc2 =0 ; + rdev->pm.power_state[state_index -1 ].misc =0 ; + rdev->pm.power_state[state_index -1 ].misc2 =0 ; }return state_index; }
drivers/gpu/drm/radeon/radeon_kms.c +1 -0
@@ -531,6 +531,7 @@ static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *value = rdev->config.si.backend_enable_mask; }else {DRM_DEBUG_KMS ("BACKEND_ENABLED_MASK is si+ only!\n" ); +return -EINVAL ; }break ;case RADEON_INFO_MAX_SCLK :
drivers/gpu/drm/radeon/radeon_pm.c +8 -0
@@ -1715,6 +1715,7 @@ static void radeon_pm_compute_clocks_dpm(struct radeon_device *rdev)struct drm_device *ddev = rdev->ddev;struct drm_crtc *crtc;struct radeon_crtc *radeon_crtc; +struct radeon_connector *radeon_connector;if (!rdev->pm.dpm_enabled)return ;
@@ -1724,6 +1725,7 @@ static void radeon_pm_compute_clocks_dpm(struct radeon_device *rdev)/* update active crtc counts */ rdev->pm.dpm.new_active_crtcs =0 ; rdev->pm.dpm.new_active_crtc_count =0 ; + rdev->pm.dpm.high_pixelclock_count =0 ;if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) {list_for_each_entry (crtc, &ddev->mode_config.crtc_list, head) {
@@ -1731,6 +1733,12 @@ static void radeon_pm_compute_clocks_dpm(struct radeon_device *rdev)if (crtc->enabled) { rdev->pm.dpm.new_active_crtcs |= (1 << radeon_crtc->crtc_id); rdev->pm.dpm.new_active_crtc_count++; +if (!radeon_crtc->connector) +continue ; + + radeon_connector =to_radeon_connector (radeon_crtc->connector); +if (radeon_connector->pixelclock_for_modeset >297000 ) + rdev->pm.dpm.high_pixelclock_count++; } } }
drivers/gpu/drm/radeon/si_dpm.c +3 -0
@@ -3000,6 +3000,9 @@ static void si_apply_state_adjust_rules(struct radeon_device *rdev, (rdev->pdev->device == 0x6605)) { max_sclk =75000 ; } + +if (rdev->pm.dpm.high_pixelclock_count >1 ) + disable_sclk_switching = true; }if (rps->vce_active) {
drivers/hid/hid-ids.h +1 -0
@@ -859,6 +859,7 @@#define USB_DEVICE_ID_ORTEK_IHOME_IMAC_A210S 0x8003#define USB_VENDOR_ID_PLANTRONICS 0x047f +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES 0xc056#define USB_VENDOR_ID_PANASONIC 0x04da#define USB_DEVICE_ID_PANABOARD_UBT780 0x1044
drivers/hid/hid-plantronics.c +58 -2
113 lines not on this page · raw message
drivers/hsi/hsi_core.c +1 -2
@@ -223,8 +223,6 @@ static void hsi_add_client_from_dt(struct hsi_port *port,if (err) goto err; -dev_set_name (&cl->device,"%s" , name); - err =hsi_of_property_parse_mode (client,"hsi-mode" , &mode);if (err) { err = hsi_of_property_parse_mode(client, "hsi-rx-mode",
@@ -306,6 +304,7 @@ static void hsi_add_client_from_dt(struct hsi_port *port, cl->device.release = hsi_client_release; cl->device.of_node = client; +dev_set_name (&cl->device,"%s" , name);if (device_register (&cl->device) <0 ) {pr_err ("hsi: failed to register client: %s\n" , name);put_device (&cl->device);
drivers/hv/channel_mgmt.c +25 -5
@@ -768,6 +768,12 @@ static void init_vp_index(struct vmbus_channel *channel, u16 dev_type)free_cpumask_var (available_mask); } +#define UNLOAD_DELAY_UNIT_MS 10/* 10 milliseconds */ +#define UNLOAD_WAIT_MS (100*1000)/* 100 seconds */ +#define UNLOAD_WAIT_LOOPS (UNLOAD_WAIT_MS/UNLOAD_DELAY_UNIT_MS) +#define UNLOAD_MSG_MS (5*1000)/* Every 5 seconds */ +#define UNLOAD_MSG_LOOPS (UNLOAD_MSG_MS/UNLOAD_DELAY_UNIT_MS) +static void vmbus_wait_for_unload (void ) {int cpu;
@@ -785,12 +791,17 @@ static void vmbus_wait_for_unload(void)* vmbus_connection.unload_event. If not, the last thing we can do is * read message pages for all CPUs directly. * -* Wait no more than 10 seconds so that the panic path can't get -* hung forever in case the response message isn't seen. +* Wait up to 100 seconds since an Azure host must writeback any dirty +* data in its disk cache before the VMbus UNLOAD request will +* complete. This flushing has been empirically observed to take up +* to 50 seconds in cases with a lot of dirty data, so allow additional +* leeway and for inaccuracies in mdelay(). But eventually time out so +* that the panic path can't get hung forever in case the response +* message isn't seen. */ -for (i =0 ; i <1000 ; i++) { +for (i =1 ; i <=UNLOAD_WAIT_LOOPS ; i++) {if (completion_done (&vmbus_connection.unload_event)) -break ; + goto completed;for_each_online_cpu (cpu) {struct hv_per_cpu_context *hv_cpu
@@ -813,9 +824,18 @@ static void vmbus_wait_for_unload(void)vmbus_signal_eom (msg, message_type); } -mdelay (10 ); +/* +* Give a notice periodically so someone watching the +* serial output won't think it is completely hung. +*/ +if (!(i %UNLOAD_MSG_LOOPS )) +pr_notice ("Waiting for VMBus UNLOAD to complete\n" ); + +mdelay (UNLOAD_DELAY_UNIT_MS ); } +pr_err ("Continuing even though VMBus UNLOAD did not complete\n" ); +completed:/* * We're crashing and already got the UNLOAD_RESPONSE, cleanup all * maybe-pending messages on all CPUs to be able to receive new
drivers/hwtracing/intel_th/gth.c +2 -2
@@ -485,7 +485,7 @@ static void intel_th_gth_disable(struct intel_th_device *thdev, output->active = false;for_each_set_bit (master, gth->output[output->port].master, -TH_CONFIGURABLE_MASTERS ) { +TH_CONFIGURABLE_MASTERS +1 ) {gth_master_set (gth, master,-1 ); }spin_unlock (>h->gth_lock);
@@ -624,7 +624,7 @@ static void intel_th_gth_unassign(struct intel_th_device *thdev, othdev->output.port =-1 ; othdev->output.active = false; gth->output[port].output =NULL ; -for (master =0 ; master <=TH_CONFIGURABLE_MASTERS ; master++) +for (master =0 ; master <TH_CONFIGURABLE_MASTERS +1 ; master++)if (gth->master[master] == port) gth->master[master] =-1 ;spin_unlock (>h->gth_lock);
drivers/hwtracing/intel_th/pci.c +10 -0
@@ -248,6 +248,16 @@ static const struct pci_device_id intel_th_pci_id_table[] = { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x1bcc), .driver_data = (kernel_ulong_t)&intel_th_2x, }, + { +/* Alder Lake-M */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x54a6), + .driver_data = (kernel_ulong_t)&intel_th_2x, + }, + { +/* Rocket Lake CPU */ +PCI_DEVICE (PCI_VENDOR_ID_INTEL ,0x4c19 ), + .driver_data = (kernel_ulong_t)&intel_th_2x, + }, { 0 }, };
drivers/i2c/busses/i2c-cadence.c +4 -1
@@ -906,7 +906,10 @@ static int cdns_i2c_probe(struct platform_device *pdev)if (IS_ERR (id->membase))return PTR_ERR (id->membase); - id->irq =platform_get_irq (pdev,0 ); + ret =platform_get_irq (pdev,0 ); +if (ret <0 ) +return ret; + id->irq = ret; id->adap.owner =THIS_MODULE ; id->adap.dev.of_node = pdev->dev.of_node;
drivers/i2c/busses/i2c-emev2.c +4 -1
@@ -400,7 +400,10 @@ static int em_i2c_probe(struct platform_device *pdev)em_i2c_reset (&priv->adap); - priv->irq =platform_get_irq (pdev,0 ); + ret =platform_get_irq (pdev,0 ); +if (ret <0 ) + goto err_clk; + priv->irq = ret; ret =devm_request_irq (&pdev->dev, priv->irq, em_i2c_irq_handler,0 ,"em_i2c" , priv);if (ret)
drivers/i2c/busses/i2c-jz4780.c +4 -1
@@ -760,7 +760,10 @@ static int jz4780_i2c_probe(struct platform_device *pdev)jz4780_i2c_writew (i2c,JZ4780_I2C_INTM ,0x0 ); - i2c->irq =platform_get_irq (pdev,0 ); + ret =platform_get_irq (pdev,0 ); +if (ret <0 ) + goto err; + i2c->irq = ret; ret =devm_request_irq (&pdev->dev, i2c->irq, jz4780_i2c_irq,0 ,dev_name (&pdev->dev), i2c);if (ret)
drivers/i2c/busses/i2c-sh7760.c +4 -1
@@ -471,7 +471,10 @@ static int sh7760_i2c_probe(struct platform_device *pdev) goto out2; } - id->irq =platform_get_irq (pdev,0 ); + ret =platform_get_irq (pdev,0 ); +if (ret <0 ) + goto out3; + id->irq = ret; id->adap.nr = pdev->id; id->adap.algo = &sh7760_i2c_algo;
drivers/iio/gyro/mpu3050-core.c +11 -2
@@ -270,7 +270,16 @@ static int mpu3050_read_raw(struct iio_dev *indio_dev,case IIO_CHAN_INFO_OFFSET :switch (chan->type) {case IIO_TEMP : -/* The temperature scaling is (x+23000)/280 Celsius */ +/* +* The temperature scaling is (x+23000)/280 Celsius +* for the "best fit straight line" temperature range +* of -30C..85C. The 23000 includes room temperature +* offset of +35C, 280 is the precision scale and x is +* the 16-bit signed integer reported by hardware. +* +* Temperature value itself represents temperature of +* the sensor die. +*/ *val =23000 ;return IIO_VAL_INT ;default :
@@ -327,7 +336,7 @@ static int mpu3050_read_raw(struct iio_dev *indio_dev, goto out_read_raw_unlock; } - *val =be16_to_cpu (raw_val); + *val = (s16 )be16_to_cpu (raw_val); ret =IIO_VAL_INT ; goto out_read_raw_unlock;
drivers/iio/light/tsl2583.c +8 -0
@@ -350,6 +350,14 @@ static int tsl2583_als_calibrate(struct iio_dev *indio_dev)return lux_val; } +/* Avoid division by zero of lux_value later on */ +if (lux_val ==0 ) { +dev_err (&chip->client->dev, +"%s: lux_val of 0 will produce out of range trim_value\n" , + __func__); +return -ENODATA ; + } + gain_trim_val = (unsigned int )(((chip->als_settings.als_cal_target) * chip->als_settings.als_gain_trim) / lux_val);if ((gain_trim_val <250 ) || (gain_trim_val >4000 )) {
drivers/iio/proximity/pulsedlight-lidar-lite-v2.c +1 -0
@@ -166,6 +166,7 @@ static int lidar_get_measurement(struct lidar_data *data, u16 *reg) ret =lidar_write_control (data,LIDAR_REG_CONTROL_ACQUIRE );if (ret <0 ) {dev_err (&client->dev,"cannot send start measurement command" ); +pm_runtime_put_noidle (&client->dev);return ret; }
drivers/infiniband/hw/hfi1/firmware.c +1 -0
@@ -1885,6 +1885,7 @@ int parse_platform_config(struct hfi1_devdata *dd)dd_dev_err (dd,"%s: Failed CRC check at offset %ld\n" , __func__, (ptr - (u32 *)dd->platform_config.data)); + ret = -EINVAL ; goto bail; }/* Jump the CRC DWORD */
drivers/infiniband/hw/i40iw/i40iw.h +1 -0
@@ -210,6 +210,7 @@ struct i40iw_msix_vector {u32 irq;u32 cpu_affinity;u32 ceq_id; +cpumask_t mask; };struct l2params_work {
drivers/infiniband/hw/i40iw/i40iw_main.c +3 -4
@@ -676,7 +676,6 @@ static enum i40iw_status_code i40iw_configure_ceq_vector(struct i40iw_device *iw struct i40iw_msix_vector *msix_vec) {enum i40iw_status_code status; -cpumask_t mask;if (iwdev->msix_shared && !ceq_id) {tasklet_init (&iwdev->dpc_tasklet, i40iw_dpc, (unsigned long )iwdev);
@@ -686,9 +685,9 @@ static enum i40iw_status_code i40iw_configure_ceq_vector(struct i40iw_device *iw status =request_irq (msix_vec->irq, i40iw_ceq_handler,0 ,"CEQ" , iwceq); } -cpumask_clear (&mask); -cpumask_set_cpu (msix_vec->cpu_affinity, &mask); -irq_set_affinity_hint (msix_vec->irq, &mask); +cpumask_clear (&msix_vec->mask); +cpumask_set_cpu (msix_vec->cpu_affinity, &msix_vec->mask); +irq_set_affinity_hint (msix_vec->irq, &msix_vec->mask);if (status) {i40iw_pr_err ("ceq irq config fail\n" );
drivers/infiniband/hw/i40iw/i40iw_pble.c +2 -4
@@ -392,12 +392,9 @@ static enum i40iw_status_code add_pble_pool(struct i40iw_sc_dev *dev,i40iw_debug (dev,I40IW_DEBUG_PBLE ,"next_fpm_addr = %llx chunk_size[%u] = 0x%x\n" , pble_rsrc->next_fpm_addr, chunk->size, chunk->size); pble_rsrc->unallocated_pble -= (chunk->size >>3 ); -list_add (&chunk->list, &pble_rsrc->pinfo.clist); sd_reg_val = (sd_entry_type ==I40IW_SD_TYPE_PAGED ) ? sd_entry->u.pd_table.pd_page_addr.pa : sd_entry->u.bp.addr.pa; -if (sd_entry->valid) -return 0 ; -if (dev->is_pf) { +if (dev->is_pf && !sd_entry->valid) { ret_code =i40iw_hmc_sd_one (dev, hmc_info->hmc_fn_id, sd_reg_val, idx->sd_idx, sd_entry->entry_type, true);
@@ -408,6 +405,7 @@ static enum i40iw_status_code add_pble_pool(struct i40iw_sc_dev *dev, } sd_entry->valid = true; +list_add (&chunk->list, &pble_rsrc->pinfo.clist);return 0 ; error:kfree (chunk);
drivers/input/touchscreen/elants_i2c.c +42 -2
63 lines not on this page · raw message
drivers/input/touchscreen/silead.c +40 -4
68 lines not on this page · raw message
drivers/isdn/capi/kcapi.c +2 -2
@@ -845,7 +845,7 @@ EXPORT_SYMBOL(capi20_put_message);* Return value: CAPI result code */ -u16 capi20_get_manufacturer (u32 contr,u8 *buf) +u16 capi20_get_manufacturer (u32 contr,u8 buf[CAPI_MANUFACTURER_LEN ]) {struct capi_ctr *ctr;u16 ret;
@@ -915,7 +915,7 @@ EXPORT_SYMBOL(capi20_get_version);* Return value: CAPI result code */ -u16 capi20_get_serial (u32 contr,u8 *serial) +u16 capi20_get_serial (u32 contr,u8 serial[CAPI_SERIAL_LEN ]) {struct capi_ctr *ctr;u16 ret;
drivers/md/dm-rq.c +2 -0
@@ -822,6 +822,7 @@ int dm_mq_init_request_queue(struct mapped_device *md, struct dm_table *t)blk_mq_free_tag_set (md->tag_set); out_kfree_tag_set:kfree (md->tag_set); + md->tag_set =NULL ;return err; }
@@ -831,6 +832,7 @@ void dm_mq_cleanup_mapped_device(struct mapped_device *md)if (md->tag_set) {blk_mq_free_tag_set (md->tag_set);kfree (md->tag_set); + md->tag_set =NULL ; } }
drivers/md/md.c +43 -24
126 lines not on this page · raw message
drivers/md/persistent-data/dm-btree-internal.h +2 -2
@@ -34,12 +34,12 @@ struct node_header {__le32 max_entries;__le32 value_size;__le32 padding; -} __packed; +} __attribute__((packed, aligned(8)));struct btree_node {struct node_header header;__le64 keys[0 ]; -} __packed; +} __attribute__((packed,aligned (8 )));/*
drivers/md/persistent-data/dm-space-map-common.c +2 -0
@@ -337,6 +337,8 @@ int sm_ll_find_free_block(struct ll_disk *ll, dm_block_t begin,*/ begin =do_div (index_begin, ll->entries_per_block); end =do_div (end, ll->entries_per_block); +if (end ==0 ) + end = ll->entries_per_block;for (i = index_begin; i < index_end; i++, begin =0 ) {struct dm_block *blk;
drivers/md/persistent-data/dm-space-map-common.h +4 -4
@@ -33,7 +33,7 @@ struct disk_index_entry {__le64 blocknr;__le32 nr_free;__le32 none_free_before; -} __packed; +} __attribute__ ((packed, aligned(8)));#define MAX_METADATA_BITMAPS 255
@@ -43,7 +43,7 @@ struct disk_metadata_index {__le64 blocknr;struct disk_index_entry index[MAX_METADATA_BITMAPS ]; -} __packed; +} __attribute__ ((packed, aligned(8)));struct ll_disk ;
@@ -86,7 +86,7 @@ struct disk_sm_root {__le64 nr_allocated;__le64 bitmap_root;__le64 ref_count_root; -} __packed; +} __attribute__ ((packed, aligned(8)));#define ENTRIES_PER_BYTE 4
@@ -94,7 +94,7 @@ struct disk_bitmap_header {__le32 csum;__le32 not_used;__le64 blocknr; -} __packed; +} __attribute__ ((packed, aligned(8)));enum allocation_event {SM_NONE ,
drivers/md/raid1.c +2 -0
@@ -446,6 +446,8 @@ static void raid1_end_write_request(struct bio *bio)if (!test_bit (Faulty, &rdev->flags))set_bit (R1BIO_WriteError, &r1_bio->state);else { +/* Fail the request */ +set_bit (R1BIO_Degraded, &r1_bio->state);/* Finished with this branch */ r1_bio->bios[mirror] =NULL ; to_put = bio;
drivers/media/dvb-core/dvbdev.c +1 -0
@@ -218,6 +218,7 @@ static void dvb_media_device_free(struct dvb_device *dvbdev)if (dvbdev->adapter->conn) {media_device_unregister_entity (dvbdev->adapter->conn); +kfree (dvbdev->adapter->conn); dvbdev->adapter->conn =NULL ;kfree (dvbdev->adapter->conn_pads); dvbdev->adapter->conn_pads =NULL ;
drivers/media/i2c/adv7511-v4l2.c +1 -1
@@ -1976,7 +1976,7 @@ static int adv7511_remove(struct i2c_client *client)adv7511_set_isr (sd, false);adv7511_init_setup (sd); -cancel_delayed_work (&state->edid_handler); +cancel_delayed_work_sync (&state->edid_handler);i2c_unregister_device (state->i2c_edid);if (state->i2c_cec)i2c_unregister_device (state->i2c_cec);
drivers/media/i2c/adv7604.c +1 -1
@@ -3557,7 +3557,7 @@ static int adv76xx_remove(struct i2c_client *client)io_write (sd,0x6e ,0 );io_write (sd,0x73 ,0 ); -cancel_delayed_work (&state->delayed_work_enable_hotplug); +cancel_delayed_work_sync (&state->delayed_work_enable_hotplug);v4l2_async_unregister_subdev (sd);media_entity_cleanup (&sd->entity);adv76xx_unregister_clients (to_state (sd));
drivers/media/i2c/adv7842.c +1 -1
@@ -3599,7 +3599,7 @@ static int adv7842_remove(struct i2c_client *client)struct adv7842_state *state =to_state (sd);adv7842_irq_enable (sd, false); -cancel_delayed_work (&state->delayed_work_enable_hotplug); +cancel_delayed_work_sync (&state->delayed_work_enable_hotplug);v4l2_device_unregister_subdev (sd);media_entity_cleanup (&sd->entity);adv7842_unregister_clients (sd);
drivers/media/pci/saa7164/saa7164-encoder.c +11 -9
@@ -1024,7 +1024,7 @@ int saa7164_encoder_register(struct saa7164_port *port)printk (KERN_ERR "%s() failed (errno = %d), NO PCI configuration\n" , __func__, result); result = -ENOMEM ; - goto failed; + goto fail_pci; }/* Establish encoder defaults here */
@@ -1078,7 +1078,7 @@ int saa7164_encoder_register(struct saa7164_port *port) 100000, ENCODER_DEF_BITRATE);if (hdl->error) { result = hdl->error; - goto failed; + goto fail_hdl; } port->std =V4L2_STD_NTSC_M ;
@@ -1096,7 +1096,7 @@ int saa7164_encoder_register(struct saa7164_port *port)printk (KERN_INFO "%s: can't allocate mpeg device\n" , dev->name); result = -ENOMEM ; - goto failed; + goto fail_hdl; } port->v4l_device->ctrl_handler = hdl;
@@ -1107,10 +1107,7 @@ int saa7164_encoder_register(struct saa7164_port *port)if (result <0 ) {printk (KERN_INFO "%s: can't register mpeg device\n" , dev->name); -/* TODO: We're going to leak here if we don't dealloc -The buffers above. The unreg function can't deal wit it. -*/ - goto failed; + goto fail_reg; } printk(KERN_INFO "%s: registered device video%d [mpeg]\n",
@@ -1132,9 +1129,14 @@ int saa7164_encoder_register(struct saa7164_port *port)saa7164_api_set_encoder (port);saa7164_api_get_encoder (port); +return 0 ; - result =0 ; -failed: +fail_reg: +video_device_release (port->v4l_device); + port->v4l_device =NULL ; +fail_hdl: +v4l2_ctrl_handler_free (hdl); +fail_pci:return result; }
drivers/media/platform/vivid/vivid-core.c +3 -3
@@ -186,13 +186,13 @@ static const u8 vivid_hdmi_edid[256] = {0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x01 ,0x7b , -0x02 ,0x03 ,0x3f ,0xf0 ,0x51 ,0x61 ,0x60 ,0x5f , +0x02 ,0x03 ,0x3f ,0xf1 ,0x51 ,0x61 ,0x60 ,0x5f ,0x5e ,0x5d ,0x10 ,0x1f ,0x04 ,0x13 ,0x22 ,0x21 ,0x20 ,0x05 ,0x14 ,0x02 ,0x11 ,0x01 ,0x23 ,0x09 ,0x07 ,0x07 ,0x83 ,0x01 ,0x00 ,0x00 ,0x6d ,0x03 ,0x0c ,0x00 ,0x10 ,0x00 ,0x00 ,0x3c ,0x21 ,0x00 ,0x60 ,0x01 ,0x02 ,0x03 ,0x67 ,0xd8 ,0x5d ,0xc4 , -0x01 ,0x78 ,0x00 ,0x00 ,0xe2 ,0x00 ,0xea ,0xe3 , +0x01 ,0x78 ,0x00 ,0x00 ,0xe2 ,0x00 ,0xca ,0xe3 ,0x05 ,0x00 ,0x00 ,0xe3 ,0x06 ,0x01 ,0x00 ,0x4d ,0xd0 ,0x00 ,0xa0 ,0xf0 ,0x70 ,0x3e ,0x80 ,0x30 , 0x20, 0x35, 0x00, 0xc0, 0x1c, 0x32, 0x00, 0x00,
@@ -201,7 +201,7 @@ static const u8 vivid_hdmi_edid[256] = {0x00 ,0x00 ,0x1a ,0x1a ,0x1d ,0x00 ,0x80 ,0x51 ,0xd0 ,0x1c ,0x20 ,0x40 ,0x80 ,0x35 ,0x00 ,0xc0 ,0x1c ,0x32 ,0x00 ,0x00 ,0x1c ,0x00 ,0x00 ,0x00 , - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, }; static int vidioc_querycap(struct file *file, void *priv,
drivers/media/platform/vivid/vivid-vid-out.c +1 -1
@@ -1010,7 +1010,7 @@ int vivid_vid_out_s_fbuf(struct file *file, void *fh,return -EINVAL ; } dev->fbuf_out_flags &= ~(chroma_flags | alpha_flags); - dev->fbuf_out_flags = a->flags & (chroma_flags | alpha_flags); + dev->fbuf_out_flags |= a->flags & (chroma_flags | alpha_flags);return 0 ; }
drivers/media/rc/ite-cir.c +7 -1
@@ -285,8 +285,14 @@ static irqreturn_t ite_cir_isr(int irq, void *data)/* read the interrupt flags */ iflags = dev->params.get_irq_causes (dev); +/* Check for RX overflow */ +if (iflags &ITE_IRQ_RX_FIFO_OVERRUN ) { +dev_warn (&dev->rdev->dev,"receive overflow\n" ); +ir_raw_event_reset (dev->rdev); + } +/* check for the receive interrupt */ -if (iflags & (ITE_IRQ_RX_FIFO |ITE_IRQ_RX_FIFO_OVERRUN )) { +if (iflags &ITE_IRQ_RX_FIFO ) {/* read the FIFO bytes */ rx_bytes = dev->params.get_rx_bytes(dev, rx_buf,
drivers/media/tuners/m88rs6000t.c +3 -3
@@ -534,7 +534,7 @@ static int m88rs6000t_get_rf_strength(struct dvb_frontend *fe, u16 *strength) PGA2_cri =PGA2_GC >>2 ; PGA2_crf =PGA2_GC &0x03 ; -for (i =0 ; i <=RF_GC ; i++) +for (i =0 ; i <=RF_GC && i <ARRAY_SIZE (RFGS ); i++)RFG +=RFGS [i];if (RF_GC ==0 )
@@ -546,12 +546,12 @@ static int m88rs6000t_get_rf_strength(struct dvb_frontend *fe, u16 *strength)if (RF_GC ==3 )RFG +=100 ; -for (i =0 ; i <=IF_GC ; i++) +for (i =0 ; i <=IF_GC && i <ARRAY_SIZE (IFGS ); i++)IFG +=IFGS [i];TIAG =TIA_GC *TIA_GS ; -for (i =0 ; i <=BB_GC ; i++) +for (i =0 ; i <=BB_GC && i <ARRAY_SIZE (BBGS ); i++)BBG +=BBGS [i];PGA2G = PGA2_cri * PGA2_cri_GS + PGA2_crf * PGA2_crf_GS;
drivers/media/usb/dvb-usb/dvb-usb-init.c +16 -4
@@ -82,11 +82,17 @@ static int dvb_usb_adapter_init(struct dvb_usb_device *d, short *adapter_nrs) } } -if ((ret =dvb_usb_adapter_stream_init (adap)) || - (ret =dvb_usb_adapter_dvb_init (adap, adapter_nrs)) || - (ret =dvb_usb_adapter_frontend_init (adap))) { + ret =dvb_usb_adapter_stream_init (adap); +if (ret)return ret; - } + + ret =dvb_usb_adapter_dvb_init (adap, adapter_nrs); +if (ret) + goto dvb_init_err; + + ret =dvb_usb_adapter_frontend_init (adap); +if (ret) + goto frontend_init_err;/* use exclusive FE lock if there is multiple shared FEs */ if (adap->fe_adap[1 ].fe)
@@ -106,6 +112,12 @@ static int dvb_usb_adapter_init(struct dvb_usb_device *d, short *adapter_nrs) }return 0 ; + +frontend_init_err: +dvb_usb_adapter_dvb_exit (adap); +dvb_init_err: +dvb_usb_adapter_stream_exit (adap); +return ret; }static int dvb_usb_adapter_exit (struct dvb_usb_device *d)
drivers/media/usb/dvb-usb/dvb-usb.h +1 -1
@@ -474,7 +474,7 @@ extern int __must_check dvb_usb_generic_write(struct dvb_usb_device *, u8 *, u16);/* commonly used remote control parsing */ -extern int dvb_usb_nec_rc_key_to_event (struct dvb_usb_device *,u8 [],u32 *,int *); +extern int dvb_usb_nec_rc_key_to_event (struct dvb_usb_device *,u8 [5 ],u32 *,int *);/* commonly used firmware download types and function */ struct hexline {
drivers/media/usb/em28xx/em28xx-dvb.c +1 -0
@@ -2056,6 +2056,7 @@ static int em28xx_dvb_init(struct em28xx *dev)return result; out_free: +em28xx_uninit_usb_xfer (dev,EM28XX_DIGITAL_MODE );kfree (dvb); dev->dvb =NULL ; goto ret;
drivers/media/usb/gspca/gspca.c +2 -0
@@ -2141,6 +2141,8 @@ int gspca_dev_probe2(struct usb_interface *intf,#endif v4l2_ctrl_handler_free (gspca_dev->vdev.ctrl_handler);v4l2_device_unregister (&gspca_dev->v4l2_dev); +if (sd_desc->probe_error) + sd_desc->probe_error (gspca_dev);kfree (gspca_dev->usb_buf);kfree (gspca_dev);return ret;
drivers/media/usb/gspca/gspca.h +1 -0
@@ -102,6 +102,7 @@ struct sd_desc {cam_cf_op config;/* called on probe */ cam_op init;/* called on probe and resume */ cam_op init_controls;/* called on probe */ +cam_v_op probe_error;/* called if probe failed, do cleanup here */ cam_op start;/* called on stream on after URBs creation */ cam_pkt_op pkt_scan;/* optional operations */
drivers/media/usb/gspca/sq905.c +1 -1
@@ -167,7 +167,7 @@ static int sq905_read_data(struct gspca_dev *gspca_dev, u8 *data, int size, int need_lock) { int ret; -int act_len; +int act_len =0 ; gspca_dev->usb_buf[0 ] ='\0' ;if (need_lock)
drivers/media/usb/gspca/stv06xx/stv06xx.c +9 -0
@@ -534,12 +534,21 @@ static int sd_int_pkt_scan(struct gspca_dev *gspca_dev,static int stv06xx_config (struct gspca_dev *gspca_dev,const struct usb_device_id *id); +static void stv06xx_probe_error (struct gspca_dev *gspca_dev) +{ +struct sd *sd = (struct sd *)gspca_dev; + +kfree (sd->sensor_priv); + sd->sensor_priv =NULL ; +} +/* sub-driver description */ static const struct sd_desc sd_desc = { .name =MODULE_NAME , .config = stv06xx_config, .init = stv06xx_init, .init_controls = stv06xx_init_controls, + .probe_error = stv06xx_probe_error, .start = stv06xx_start, .stopN = stv06xx_stopN, .pkt_scan = stv06xx_pkt_scan,
drivers/memory/omap-gpmc.c +5 -2
@@ -1028,8 +1028,8 @@ EXPORT_SYMBOL(gpmc_cs_request);void gpmc_cs_free (int cs) { -struct gpmc_cs_data *gpmc = &gpmc_cs[cs]; -struct resource *res = &gpmc->mem; +struct gpmc_cs_data *gpmc; +struct resource *res;spin_lock (&gpmc_mem_lock);if (cs >= gpmc_cs_num || cs <0 || !gpmc_cs_reserved (cs)) {
@@ -1038,6 +1038,9 @@ void gpmc_cs_free(int cs)spin_unlock (&gpmc_mem_lock);return ; } + gpmc = &gpmc_cs[cs]; + res = &gpmc->mem; +gpmc_cs_disable_mem (cs);if (res->flags)release_resource (res);
drivers/mfd/stm32-timers.c +6 -1
@@ -20,13 +20,18 @@ static const struct regmap_config stm32_timers_regmap_cfg = {static void stm32_timers_get_arr_size (struct stm32_timers *ddata) { +u32 arr; + +/* Backup ARR to restore it after getting the maximum value */ +regmap_read (ddata->regmap,TIM_ARR , &arr); +/* * Only the available bits will be written so when readback * we get the maximum value of auto reload register */ regmap_write (ddata->regmap,TIM_ARR , ~0L );regmap_read (ddata->regmap,TIM_ARR , &ddata->max_arr); -regmap_write (ddata->regmap,TIM_ARR ,0x0 ); +regmap_write (ddata->regmap,TIM_ARR , arr); }static int stm32_timers_probe (struct platform_device *pdev)
drivers/misc/kgdbts.c +13 -13
@@ -107,19 +107,19 @@#include <asm/sections.h> -#define v1printk(a...) do { \ - if (verbose) \ - printk(KERN_INFO a); \ - } while (0) -#define v2printk(a...) do { \ - if (verbose > 1) \ - printk(KERN_INFO a); \ - touch_nmi_watchdog(); \ - } while (0) -#define eprintk(a...) do { \ - printk(KERN_ERR a); \ - WARN_ON(1); \ - } while (0) +#define v1printk(a...) do { \ + if (verbose) \ + printk(KERN_INFO a); \ +} while (0) +#define v2printk(a...) do { \ + if (verbose > 1) \ + printk(KERN_INFO a); \ + touch_nmi_watchdog(); \ +} while (0) +#define eprintk(a...) do { \ + printk(KERN_ERR a); \ + WARN_ON(1); \ +} while (0)#define MAX_CONFIG_LEN 40static struct kgdb_io kgdbts_io_ops;
drivers/misc/lis3lv02d/lis3lv02d.c +16 -5
@@ -221,7 +221,7 @@ static int lis3_3dc_rates[16] = {0, 1, 10, 25, 50, 100, 200, 400, 1600, 5000};static int lis3_3dlh_rates[4 ] = {50 ,100 ,400 ,1000 };/* ODR is Output Data Rate */ -static int lis3lv02d_get_odr (struct lis3lv02d *lis3) +static int lis3lv02d_get_odr_index (struct lis3lv02d *lis3) {u8 ctrl;int shift;
@@ -229,15 +229,23 @@ static int lis3lv02d_get_odr(struct lis3lv02d *lis3) lis3->read (lis3,CTRL_REG1 , &ctrl); ctrl &= lis3->odr_mask; shift =ffs (lis3->odr_mask) -1 ; -return lis3->odrs[(ctrl >> shift)]; +return (ctrl >> shift); }static int lis3lv02d_get_pwron_wait (struct lis3lv02d *lis3) { -int div =lis3lv02d_get_odr (lis3); +int odr_idx =lis3lv02d_get_odr_index (lis3); +int div = lis3->odrs[odr_idx]; -if (WARN_ONCE (div ==0 ,"device returned spurious data" )) +if (div ==0 ) { +if (odr_idx ==0 ) { +/* Power-down mode, not sampling no need to sleep */ +return 0 ; + } + +dev_err (&lis3->pdev->dev,"Error unknown odrs-index: %d\n" , odr_idx);return -ENXIO ; + }/* LIS3 power on delay is quite long */ msleep (lis3->pwron_delay / div);
@@ -820,9 +828,12 @@ static ssize_t lis3lv02d_rate_show(struct device *dev, struct device_attribute *attr, char *buf) { struct lis3lv02d *lis3 = dev_get_drvdata(dev); +int odr_idx;lis3lv02d_sysfs_poweron (lis3); -return sprintf (buf,"%d\n" ,lis3lv02d_get_odr (lis3)); + + odr_idx =lis3lv02d_get_odr_index (lis3); +return sprintf (buf,"%d\n" , lis3->odrs[odr_idx]); } static ssize_t lis3lv02d_rate_set(struct device *dev,
drivers/misc/vmw_vmci/vmci_doorbell.c +1 -1
@@ -334,7 +334,7 @@ int vmci_dbell_host_context_notify(u32 src_cid, struct vmci_handle handle)bool vmci_dbell_register_notification_bitmap (u32 bitmap_ppn) {int result; -struct vmci_notify_bm_set_msg bitmap_set_msg; +struct vmci_notify_bm_set_msg bitmap_set_msg = { }; bitmap_set_msg.hdr.dst =vmci_make_handle (VMCI_HYPERVISOR_CONTEXT_ID ,VMCI_SET_NOTIFY_BITMAP );
drivers/misc/vmw_vmci/vmci_guest.c +1 -1
@@ -169,7 +169,7 @@ static int vmci_check_host_caps(struct pci_dev *pdev) VMCI_UTIL_NUM_RESOURCES * sizeof(u32);struct vmci_datagram *check_msg; - check_msg =kmalloc (msg_size,GFP_KERNEL ); + check_msg =kzalloc (msg_size,GFP_KERNEL );if (!check_msg) {dev_err (&pdev->dev,"%s: Insufficient memory\n" , __func__);return -ENOMEM ;
drivers/mmc/core/block.c +12 -0
@@ -598,6 +598,18 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md, main_md->part_curr = value &EXT_CSD_PART_CONFIG_ACC_MASK ; } +/* +* Make sure to update CACHE_CTRL in case it was changed. The cache +* will get turned back on if the card is re-initialized, e.g. +* suspend/resume or hw reset in recovery. +*/ +if ((MMC_EXTRACT_INDEX_FROM_ARG (cmd.arg) ==EXT_CSD_CACHE_CTRL ) && + (cmd.opcode ==MMC_SWITCH )) { +u8 value =MMC_EXTRACT_VALUE_FROM_ARG (cmd.arg) &1 ; + + card->ext_csd.cache_ctrl = value; + } +/* * According to the SD specs, some commands require a delay after * issuing the command.
drivers/mmc/core/core.c +1 -1
@@ -1506,7 +1506,7 @@ int mmc_set_uhs_voltage(struct mmc_host *host, u32 ocr) err =mmc_wait_for_cmd (host, &cmd,0 );if (err) -return err; + goto power_cycle;if (!mmc_host_is_spi (host) && (cmd.resp[0 ] &R1_ERROR ))return -EIO ;
drivers/mmc/core/sd.c +6 -0
@@ -138,6 +138,9 @@ static int mmc_decode_csd(struct mmc_card *card) csd->erase_size =UNSTUFF_BITS (resp,39 ,7 ) +1 ; csd->erase_size <<= csd->write_blkbits -9 ; } + +if (UNSTUFF_BITS (resp,13 ,1 )) +mmc_card_set_readonly (card);break ;case 1 :/*
@@ -172,6 +175,9 @@ static int mmc_decode_csd(struct mmc_card *card) csd->write_blkbits =9 ; csd->write_partial =0 ; csd->erase_size =1 ; + +if (UNSTUFF_BITS (resp,13 ,1 )) +mmc_card_set_readonly (card);break ;default : pr_err("%s: unrecognised CSD structure version %d\n",
drivers/mtd/mtdchar.c +4 -4
@@ -689,16 +689,12 @@ static int mtdchar_ioctl(struct file *file, u_int cmd, u_long arg)case MEMGETINFO :case MEMREADOOB :case MEMREADOOB64 : -case MEMLOCK : -case MEMUNLOCK :case MEMISLOCKED :case MEMGETOOBSEL :case MEMGETBADBLOCK : -case MEMSETBADBLOCK :case OTPSELECT :case OTPGETREGIONCOUNT :case OTPGETREGIONINFO : -case OTPLOCK :case ECCGETLAYOUT :case ECCGETSTATS :case MTDFILEMODE :
@@ -709,9 +705,13 @@ static int mtdchar_ioctl(struct file *file, u_int cmd, u_long arg)/* "dangerous" commands */ case MEMERASE :case MEMERASE64 : +case MEMLOCK : +case MEMUNLOCK : +case MEMSETBADBLOCK :case MEMWRITEOOB :case MEMWRITEOOB64 :case MEMWRITE : +case OTPLOCK :if (!(file->f_mode &FMODE_WRITE ))return -EPERM ;break ;
drivers/mtd/nand/gpmi-nand/gpmi-nand.c +1 -1
@@ -2022,7 +2022,7 @@ static int gpmi_nand_init(struct gpmi_nand_data *this) this->bch_geometry.auxiliary_size =128 ; ret =gpmi_alloc_dma_buffer (this);if (ret) - goto err_out; +return ret; ret =nand_scan_ident (mtd,GPMI_IS_MX6 (this) ?2 :1 ,NULL );if (ret)
drivers/net/ethernet/cavium/liquidio/cn23xx_pf_regs.h +1 -1
@@ -521,7 +521,7 @@#define CN23XX_BAR1_INDEX_OFFSET 3#define CN23XX_PEM_BAR1_INDEX_REG (port, idx) \ - (CN23XX_PEM_BAR1_INDEX_START + ((port) << CN23XX_PEM_OFFSET) + \ + (CN23XX_PEM_BAR1_INDEX_START + (((u64)port) << CN23XX_PEM_OFFSET) + \ ((idx) << CN23XX_BAR1_INDEX_OFFSET))/*############################ DPI #########################*/
drivers/net/ethernet/cavium/thunder/nicvf_queues.c +1 -1
@@ -775,7 +775,7 @@ static void nicvf_rcv_queue_config(struct nicvf *nic, struct queue_set *qs, mbx.rq.msg =NIC_MBOX_MSG_RQ_CFG ; mbx.rq.qs_num = qs->vnic_id; mbx.rq.rq_num = qidx; - mbx.rq.cfg = (rq->caching <<26 ) | (rq->cq_qs <<19 ) | + mbx.rq.cfg = ((u64 )rq->caching <<26 ) | (rq->cq_qs <<19 ) | (rq->cq_idx <<16 ) | (rq->cont_rbdr_qs <<9 ) | (rq->cont_qs_rbdr_idx <<8 ) | (rq->start_rbdr_qs <<1 ) | (rq->start_qs_rbdr_idx);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c +1 -1
@@ -2446,7 +2446,7 @@ do { \seq_printf (seq,"%-12s" , s); \for (i =0 ; i < n; ++i) \seq_printf (seq," %16" fmt_spec, v); \ -seq_putc (seq,'\n' ); \ +seq_putc (seq,'\n' ); \ } while (0)#define S (s, v) S3("s", s, v)#define T3 (fmt_spec, s, v) S3(fmt_spec, s, tx[i].v)
drivers/net/ethernet/mediatek/mtk_eth_soc.c +1 -1
@@ -1041,7 +1041,7 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget, skb->protocol =eth_type_trans (skb, netdev);if (netdev->features &NETIF_F_HW_VLAN_CTAG_RX && -RX_DMA_VID (trxd.rxd3)) + (trxd.rxd2 &RX_DMA_VTAG ))__vlan_hwaccel_put_tag (skb,htons (ETH_P_8021Q ),RX_DMA_VID (trxd.rxd3));skb_record_rx_queue (skb,0 );
drivers/net/ethernet/mediatek/mtk_eth_soc.h +1 -0
@@ -283,6 +283,7 @@#define RX_DMA_DONE BIT(31)#define RX_DMA_PLEN0 (_x) (((_x) & 0x3fff) << 16)#define RX_DMA_GET_PLEN0 (_x) (((_x) >> 16) & 0x3fff) +#define RX_DMA_VTAG BIT(15)/* QDMA descriptor rxd3 */ #define RX_DMA_VID (_x) ((_x) & 0xfff)
drivers/net/ethernet/qualcomm/emac/emac-mac.c +3 -1
@@ -1458,6 +1458,7 @@ int emac_mac_tx_buf_send(struct emac_adapter *adpt, struct emac_tx_queue *tx_q, {struct emac_tpd tpd;u32 prod_idx; +int len;memset (&tpd,0 ,sizeof (tpd));
@@ -1477,9 +1478,10 @@ int emac_mac_tx_buf_send(struct emac_adapter *adpt, struct emac_tx_queue *tx_q,if (skb_network_offset (skb) !=ETH_HLEN )TPD_TYP_SET (&tpd,1 ); + len = skb->len;emac_tx_fill_tpd (adpt, tx_q, skb, &tpd); -netdev_sent_queue (adpt->netdev, skb->len); +netdev_sent_queue (adpt->netdev, len);/* Make sure the are enough free descriptors to hold one * maximum-sized SKB. We need one desc for each fragment,
drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c +2 -0
@@ -363,6 +363,8 @@ static int ipq806x_gmac_probe(struct platform_device *pdev) plat_dat->bsp_priv = gmac; plat_dat->fix_mac_speed = ipq806x_gmac_fix_mac_speed; plat_dat->multicast_filter_bins =0 ; + plat_dat->tx_fifo_size =8192 ; + plat_dat->rx_fifo_size =8192 ; err =stmmac_dvr_probe (&pdev->dev, plat_dat, &stmmac_res);if (err)
drivers/net/ethernet/ti/davinci_emac.c +2 -2
@@ -183,11 +183,11 @@ static const char emac_version_string[] = "TI DaVinci EMAC Linux v6.1";/* EMAC mac_status register */ #define EMAC_MACSTATUS_TXERRCODE_MASK (0xF00000)#define EMAC_MACSTATUS_TXERRCODE_SHIFT (20) -#define EMAC_MACSTATUS_TXERRCH_MASK (0x7) +#define EMAC_MACSTATUS_TXERRCH_MASK (0x70000)#define EMAC_MACSTATUS_TXERRCH_SHIFT (16)#define EMAC_MACSTATUS_RXERRCODE_MASK (0xF000)#define EMAC_MACSTATUS_RXERRCODE_SHIFT (12) -#define EMAC_MACSTATUS_RXERRCH_MASK (0x7) +#define EMAC_MACSTATUS_RXERRCH_MASK (0x700)#define EMAC_MACSTATUS_RXERRCH_SHIFT (8)/* EMAC RX register masks */
drivers/net/fddi/Kconfig +9 -6
@@ -28,17 +28,20 @@ config DEFXX config DEFXX_MMIO bool - prompt "Use MMIO instead of PIO" if PCI || EISA + prompt "Use MMIO instead of IOP" if PCI || EISA depends on DEFXX - default n if PCI || EISA + default n if EISA default y ---help--- This instructs the driver to use EISA or PCI memory-mapped I/O - (MMIO) as appropriate instead of programmed I/O ports (PIO). + (MMIO) as appropriate instead of programmed I/O ports (IOP). Enabling this gives an improvement in processing time in parts - of the driver, but it may cause problems with EISA (DEFEA) - adapters. TURBOchannel does not have the concept of I/O ports, - so MMIO is always used for these (DEFTA) adapters. + of the driver, but it requires a memory window to be configured + for EISA (DEFEA) adapters that may not always be available. + Conversely some PCIe host bridges do not support IOP, so MMIO + may be required to access PCI (DEFPA) adapters on downstream PCI + buses with some systems. TURBOchannel does not have the concept + of I/O ports, so MMIO is always used for these (DEFTA) adapters. If unsure, say N.
drivers/net/fddi/defxx.c +30 -17
78 lines not on this page · raw message
drivers/net/usb/ax88179_178a.c +2 -2
@@ -307,12 +307,12 @@ static int ax88179_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,int ret;if (2 == size) { -u16 buf; +u16 buf =0 ; ret =__ax88179_read_cmd (dev, cmd, value, index, size, &buf,0 );le16_to_cpus (&buf); *((u16 *)data) = buf; }else if (4 == size) { -u32 buf; +u32 buf =0 ; ret =__ax88179_read_cmd (dev, cmd, value, index, size, &buf,0 );le32_to_cpus (&buf); *((u32 *)data) = buf;
drivers/net/wan/lapbether.c +25 -7
@@ -56,6 +56,8 @@ struct lapbethdev {struct list_head node;struct net_device *ethdev;/* link to ethernet device */ struct net_device *axdev;/* lapbeth device (lapb#) */ +bool up; +spinlock_t up_lock;/* Protects "up" */ };static LIST_HEAD (lapbeth_devices);
@@ -103,8 +105,9 @@ static int lapbeth_rcv(struct sk_buff *skb, struct net_device *dev, struct packercu_read_lock (); lapbeth =lapbeth_get_x25_dev (dev);if (!lapbeth) - goto drop_unlock; -if (!netif_running (lapbeth->axdev)) + goto drop_unlock_rcu; +spin_lock_bh (&lapbeth->up_lock); +if (!lapbeth->up) goto drop_unlock; len = skb->data[0 ] + skb->data[1 ] *256 ;
@@ -119,11 +122,14 @@ static int lapbeth_rcv(struct sk_buff *skb, struct net_device *dev, struct packe goto drop_unlock; } out: +spin_unlock_bh (&lapbeth->up_lock);rcu_read_unlock ();return 0 ; drop_unlock:kfree_skb (skb); goto out; +drop_unlock_rcu: +rcu_read_unlock (); drop:kfree_skb (skb);return 0 ;
@@ -151,13 +157,11 @@ static int lapbeth_data_indication(struct net_device *dev, struct sk_buff *skb)static netdev_tx_t lapbeth_xmit (struct sk_buff *skb,struct net_device *dev) { +struct lapbethdev *lapbeth =netdev_priv (dev);int err; -/* -* Just to be *really* sure not to send anything if the interface -* is down, the ethernet device may have gone. -*/ -if (!netif_running (dev)) +spin_lock_bh (&lapbeth->up_lock); +if (!lapbeth->up) goto drop;/* There should be a pseudo header of 1 byte added by upper layers.
@@ -188,6 +192,7 @@ static netdev_tx_t lapbeth_xmit(struct sk_buff *skb, goto drop; } out: +spin_unlock_bh (&lapbeth->up_lock);return NETDEV_TX_OK ; drop:kfree_skb (skb);
@@ -279,6 +284,7 @@ static const struct lapb_register_struct lapbeth_callbacks = {*/ static int lapbeth_open (struct net_device *dev) { +struct lapbethdev *lapbeth =netdev_priv (dev);int err;if ((err =lapb_register (dev, &lapbeth_callbacks)) !=LAPB_OK ) {
@@ -286,13 +292,22 @@ static int lapbeth_open(struct net_device *dev)return -ENODEV ; } +spin_lock_bh (&lapbeth->up_lock); + lapbeth->up = true; +spin_unlock_bh (&lapbeth->up_lock); +return 0 ; }static int lapbeth_close (struct net_device *dev) { +struct lapbethdev *lapbeth =netdev_priv (dev);int err; +spin_lock_bh (&lapbeth->up_lock); + lapbeth->up = false; +spin_unlock_bh (&lapbeth->up_lock); +if ((err =lapb_unregister (dev)) !=LAPB_OK )pr_err ("lapb_unregister error: %d\n" , err);
@@ -350,6 +365,9 @@ static int lapbeth_new_device(struct net_device *dev)dev_hold (dev); lapbeth->ethdev = dev; + lapbeth->up = false; +spin_lock_init (&lapbeth->up_lock); + rc = -EIO ;if (register_netdevice (ndev)) goto fail;
drivers/net/wimax/i2400m/op-rfkill.c +1 -1
@@ -101,7 +101,7 @@ int i2400m_op_rfkill_sw_toggle(struct wimax_dev *wimax_dev,if (cmd ==NULL ) goto error_alloc; cmd->hdr.type =cpu_to_le16 (I2400M_MT_CMD_RF_CONTROL ); - cmd->hdr.length =sizeof (cmd->sw_rf); + cmd->hdr.length =cpu_to_le16 (sizeof (cmd->sw_rf)); cmd->hdr.version =cpu_to_le16 (I2400M_L3L4_VERSION ); cmd->sw_rf.hdr.type =cpu_to_le16 (I2400M_TLV_RF_OPERATION ); cmd->sw_rf.hdr.length =cpu_to_le16 (sizeof (cmd->sw_rf.status));
drivers/net/wireless/ath/ath9k/htc_drv_init.c +1 -1
@@ -246,7 +246,7 @@ static unsigned int ath9k_regread(void *hw_priv, u32 reg_offset)if (unlikely (r)) {ath_dbg (common,WMI ,"REGISTER READ FAILED: (0x%04x, %d)\n" , reg_offset, r); -return -EIO ; +return -1 ; }return be32_to_cpu (val);
drivers/net/wireless/ath/ath9k/hw.c +1 -1
@@ -285,7 +285,7 @@ static bool ath9k_hw_read_revisions(struct ath_hw *ah) srev =REG_READ (ah,AR_SREV ); -if (srev == -EIO ) { +if (srev ==-1 ) {ath_err (ath9k_hw_common (ah),"Failed to read SREV register" );return false;
drivers/net/wireless/intel/ipw2x00/libipw_wx.c +4 -2
@@ -649,8 +649,10 @@ int libipw_wx_set_encodeext(struct libipw_device *ieee, }if (ext->alg !=IW_ENCODE_ALG_NONE ) { -memcpy (sec.keys[idx], ext->key, ext->key_len); - sec.key_sizes[idx] = ext->key_len; +int key_len =clamp_val (ext->key_len,0 ,SCM_KEY_LEN ); + +memcpy (sec.keys[idx], ext->key, key_len); + sec.key_sizes[idx] = key_len; sec.flags |= (1 << idx);if (ext->alg ==IW_ENCODE_ALG_WEP ) { sec.encode_alg[idx] =SEC_ALG_WEP ;
drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c +4 -3
@@ -559,6 +559,7 @@ static int iwl_pcie_gen2_enqueue_hcmd(struct iwl_trans *trans,const u8 *cmddata[IWL_MAX_CMD_TBS_PER_TFD ];u16 cmdlen[IWL_MAX_CMD_TBS_PER_TFD ];struct iwl_tfh_tfd *tfd =iwl_pcie_get_tfd (trans, txq, txq->write_ptr); +unsigned long flags2;memset (tfd,0 ,sizeof (*tfd));
@@ -629,10 +630,10 @@ static int iwl_pcie_gen2_enqueue_hcmd(struct iwl_trans *trans, goto free_dup_buf; } -spin_lock_bh (&txq->lock); +spin_lock_irqsave (&txq->lock, flags2);if (iwl_queue_space (txq) < ((cmd->flags &CMD_ASYNC ) ?2 :1 )) { -spin_unlock_bh (&txq->lock); +spin_unlock_irqrestore (&txq->lock, flags2);IWL_ERR (trans,"No space in command queue\n" );iwl_op_mode_cmd_queue_full (trans->op_mode);
@@ -773,7 +774,7 @@ static int iwl_pcie_gen2_enqueue_hcmd(struct iwl_trans *trans,spin_unlock_irqrestore (&trans_pcie->reg_lock, flags); out: -spin_unlock_bh (&txq->lock); +spin_unlock_irqrestore (&txq->lock, flags2); free_dup_buf:if (idx <0 )kfree (dup_buf);
drivers/net/wireless/intel/iwlwifi/pcie/tx.c +4 -3
@@ -1473,6 +1473,7 @@ static int iwl_pcie_enqueue_hcmd(struct iwl_trans *trans,u32 cmd_pos;const u8 *cmddata[IWL_MAX_CMD_TBS_PER_TFD ];u16 cmdlen[IWL_MAX_CMD_TBS_PER_TFD ]; +unsigned long flags2; if (WARN(!trans->wide_cmd_header && group_id > IWL_ALWAYS_LONG_GROUP,
@@ -1556,10 +1557,10 @@ static int iwl_pcie_enqueue_hcmd(struct iwl_trans *trans, goto free_dup_buf; } -spin_lock_bh (&txq->lock); +spin_lock_irqsave (&txq->lock, flags2);if (iwl_queue_space (txq) < ((cmd->flags &CMD_ASYNC ) ?2 :1 )) { -spin_unlock_bh (&txq->lock);
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt7601u/eeprom.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8821ae/table.c +370 -130
500 lines not on this page · raw message
drivers/net/wireless/wl3501.h +23 -24
47 lines not on this page · raw message
drivers/net/wireless/wl3501_cs.c +29 -25
54 lines not on this page · raw message
drivers/pinctrl/samsung/pinctrl-exynos.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/power/supply/bq27xxx_battery.c +27 -24
51 lines not on this page · raw message
drivers/power/supply/generic-adc-battery.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/power/supply/tps65090-charger.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/power/supply/tps65217_charger.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/scsi/device_handler/scsi_dh_alua.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/scsi/lpfc/lpfc_hw4.h +1 -173
174 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_init.c +2 -101
103 lines not on this page · raw message
drivers/usb/gadget/function/f_uac1.c +43 -0
43 lines not on this page · raw message
drivers/usb/gadget/udc/pch_udc.c +33 -16
49 lines not on this page · raw message
fs/ext4/ialloc.c +32 -16
48 lines not on this page · raw message
kernel/module.c +44 -17
61 lines not on this page · raw message
kernel/trace/trace.c +15 -26
41 lines not on this page · raw message
kernel/trace/trace_clock.c +30 -14
44 lines not on this page · raw message
net/netfilter/nf_conntrack_standalone.c +4 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/test_verifier.c +12 -0
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.