Linux 4.19.270
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.270 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/driver-api/spi.rst | 4 Documentation/fault-injection/fault-injection.txt | 4 Documentation/sphinx/load_config.py | 6 Makefile | 2 arch/alpha/kernel/entry.S | 4 arch/arm/boot/dts/armada-370.dtsi | 2 arch/arm/boot/dts/armada-375.dtsi | 2 arch/arm/boot/dts/armada-380.dtsi | 4 arch/arm/boot/dts/armada-385-turris-omnia.dts | 18 arch/arm/boot/dts/armada-385.dtsi | 6 arch/arm/boot/dts/armada-39x.dtsi | 6 arch/arm/boot/dts/armada-xp-mv78230.dtsi | 8 arch/arm/boot/dts/armada-xp-mv78260.dtsi | 16 arch/arm/boot/dts/dove.dtsi | 2 arch/arm/boot/dts/qcom-apq8064.dtsi | 2 arch/arm/boot/dts/spear600.dtsi | 2 arch/arm/mach-mmp/time.c | 11 arch/arm/nwfpe/Makefile | 6 arch/arm64/boot/dts/mediatek/mt2712-evb.dts | 4 arch/arm64/boot/dts/mediatek/mt2712e.dtsi | 22 arch/arm64/boot/dts/mediatek/mt6797.dtsi | 2 arch/arm64/include/asm/atomic_ll_sc.h | 2 arch/arm64/include/asm/atomic_lse.h | 2 arch/mips/bcm63xx/clk.c | 2 arch/mips/kernel/vpe-cmp.c | 4 arch/mips/kernel/vpe-mt.c | 4 arch/parisc/include/uapi/asm/mman.h | 17 arch/parisc/kernel/sys_parisc.c | 27 arch/parisc/kernel/syscall_table.S | 2 arch/powerpc/kernel/rtas.c | 20 arch/powerpc/perf/callchain.c | 1 arch/powerpc/perf/hv-gpci-requests.h | 4 arch/powerpc/perf/hv-gpci.c | 33 arch/powerpc/perf/hv-gpci.h | 1 arch/powerpc/perf/req-gen/perf.h | 20 arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c | 1 arch/powerpc/platforms/83xx/mpc832x_rdb.c | 2 arch/powerpc/sysdev/xive/spapr.c | 1 arch/riscv/include/asm/uaccess.h | 2 arch/s390/include/asm/percpu.h | 2 arch/x86/boot/bioscall.S | 4 arch/x86/events/intel/uncore_snbep.c | 1 arch/x86/ia32/ia32_aout.c | 3 arch/x86/kernel/cpu/bugs.c | 2 arch/x86/kernel/cpu/intel_rdt_rdtgroup.c | 26 arch/x86/kernel/cpu/microcode/intel.c | 8 arch/x86/kernel/uprobes.c | 4 arch/x86/xen/smp.c | 41 arch/x86/xen/smp_pv.c | 12 arch/x86/xen/spinlock.c | 6 arch/x86/xen/xen-ops.h | 2 block/blk-mq-sysfs.c | 11 block/partition-generic.c | 7 crypto/tcrypt.c | 9 drivers/acpi/acpica/dsmethod.c | 10 drivers/acpi/acpica/utcopy.c | 7 drivers/ata/ahci.c | 32 drivers/ata/pata_ixp4xx_cf.c | 2 drivers/base/class.c | 5 drivers/base/dd.c | 17 drivers/base/power/runtime.c | 18 drivers/block/drbd/drbd_main.c | 3 drivers/bluetooth/btusb.c | 6 drivers/bluetooth/hci_bcsp.c | 2 drivers/bluetooth/hci_h5.c | 2 drivers/bluetooth/hci_qca.c | 2 drivers/char/hw_random/amd-rng.c | 18 drivers/char/hw_random/geode-rng.c | 36 drivers/char/ipmi/ipmi_msghandler.c | 12 drivers/char/ipmi/ipmi_si_intf.c | 27 drivers/char/tpm/tpm_crb.c | 31 drivers/char/tpm/tpm_tis.c | 9 drivers/clk/rockchip/clk-pll.c | 1 drivers/clk/samsung/clk-pll.c | 1 drivers/clk/socfpga/clk-gate.c | 11 drivers/clk/socfpga/clk-periph.c | 8 drivers/clk/socfpga/clk-pll.c | 17 drivers/clk/st/clkgen-fsyn.c | 5 drivers/clocksource/sh_cmt.c | 16 drivers/cpufreq/amd_freq_sensitivity.c | 2 drivers/cpuidle/dt_idle_states.c | 2 drivers/crypto/ccree/cc_debugfs.c | 2 drivers/crypto/img-hash.c | 8 drivers/crypto/n2_core.c | 6 drivers/dio/dio.c | 8 drivers/edac/edac_device.c | 17 drivers/edac/edac_module.h | 2 drivers/firmware/efi/efi.c | 9 drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h | 5 drivers/gpu/drm/drm_connector.c | 3 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 5 drivers/gpu/drm/radeon/radeon_bios.c | 19 drivers/gpu/drm/sti/sti_dvo.c | 7 drivers/gpu/drm/sti/sti_hda.c | 7 drivers/gpu/drm/sti/sti_hdmi.c | 7 drivers/gpu/drm/tegra/dc.c | 4 drivers/gpu/drm/virtio/virtgpu_ioctl.c | 10 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 3 drivers/hid/hid-ids.h | 3 drivers/hid/hid-plantronics.c | 9 drivers/hid/hid-sensor-custom.c | 2 drivers/hid/wacom_sys.c | 8 drivers/hid/wacom_wac.c | 4 drivers/hid/wacom_wac.h | 1 drivers/hsi/controllers/omap_ssi_core.c | 14 drivers/i2c/busses/i2c-ismt.c | 3 drivers/i2c/busses/i2c-pxa-pci.c | 10 drivers/iio/adc/ad_sigma_delta.c | 8 drivers/infiniband/core/nldev.c | 2 drivers/infiniband/hw/hfi1/affinity.c | 2 drivers/infiniband/hw/hfi1/firmware.c | 6 drivers/infiniband/hw/mlx5/qp.c | 49 - drivers/infiniband/sw/rxe/rxe_qp.c | 6 drivers/infiniband/ulp/ipoib/ipoib_netlink.c | 7 drivers/input/touchscreen/elants_i2c.c | 9 drivers/iommu/amd_iommu_init.c | 7 drivers/iommu/amd_iommu_v2.c | 1 drivers/iommu/fsl_pamu.c | 2 drivers/iommu/mtk_iommu_v1.c | 26 drivers/irqchip/irq-gic-pm.c | 2 drivers/isdn/hardware/mISDN/hfcmulti.c | 19 drivers/isdn/hardware/mISDN/hfcpci.c | 13 drivers/isdn/hardware/mISDN/hfcsusb.c | 12 drivers/macintosh/macio-adb.c | 4 drivers/macintosh/macio_asic.c | 2 drivers/mcb/mcb-core.c | 4 drivers/mcb/mcb-parse.c | 2 drivers/md/dm-cache-metadata.c | 54 + drivers/md/dm-cache-target.c | 11 drivers/md/dm-thin-metadata.c | 9 drivers/md/dm-thin.c | 18 drivers/md/md-bitmap.c | 47 - drivers/md/md.c | 9 drivers/md/raid1.c | 1 drivers/media/dvb-core/dmxdev.c | 8 drivers/media/dvb-core/dvb_ca_en50221.c | 2 drivers/media/dvb-core/dvb_frontend.c | 10 drivers/media/dvb-core/dvbdev.c | 33 drivers/media/dvb-frontends/bcm3510.c | 1 drivers/media/dvb-frontends/stv0288.c | 5 drivers/media/i2c/ad5820.c | 10 drivers/media/pci/saa7164/saa7164-core.c | 4 drivers/media/pci/solo6x10/solo6x10-core.c | 1 drivers/media/platform/coda/coda-bit.c | 14 drivers/media/platform/exynos4-is/fimc-core.c | 2 drivers/media/platform/exynos4-is/media-dev.c | 6 drivers/media/platform/qcom/camss/camss-video.c | 3 drivers/media/platform/s5p-mfc/s5p_mfc.c | 17 drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c | 4 drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 12 drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c | 14 drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c | 1 drivers/media/platform/vivid/vivid-vid-cap.c | 1 drivers/media/radio/si470x/radio-si470x-usb.c | 4 drivers/media/rc/imon.c | 6 drivers/media/usb/dvb-usb/az6027.c | 4 drivers/media/usb/dvb-usb/dvb-usb-init.c | 4 drivers/misc/cxl/guest.c | 24 drivers/misc/cxl/pci.c | 21 drivers/misc/sgi-gru/grufault.c | 13 drivers/misc/sgi-gru/grumain.c | 22 drivers/misc/sgi-gru/grutables.h | 2 drivers/misc/tifm_7xx1.c | 2 drivers/mmc/host/atmel-mci.c | 9 drivers/mmc/host/meson-gx-mmc.c | 4 drivers/mmc/host/mmci.c | 4 drivers/mmc/host/moxart-mmc.c | 4 drivers/mmc/host/mxcmmc.c | 4 drivers/mmc/host/rtsx_usb_sdmmc.c | 11 drivers/mmc/host/sdhci_f_sdh30.c | 3 drivers/mmc/host/toshsd.c | 6 drivers/mmc/host/via-sdmmc.c | 4 drivers/mmc/host/vub300.c | 13 drivers/mmc/host/wbsd.c | 12 drivers/mmc/host/wmt-sdmmc.c | 6 drivers/mtd/lpddr/lpddr2_nvm.c | 2 drivers/mtd/maps/pxa2xx-flash.c | 2 drivers/mtd/mtdcore.c | 4 drivers/net/bonding/bond_main.c | 49 - drivers/net/can/usb/kvaser_usb/kvaser_usb.h | 30 drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c | 115 ++ drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c | 167 +++ drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c | 437 ++++++++-- drivers/net/can/usb/mcba_usb.c | 10 drivers/net/dsa/lan9303-core.c | 4 drivers/net/ethernet/amd/atarilance.c | 2 drivers/net/ethernet/amd/lance.c | 2 drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 3 drivers/net/ethernet/amd/xgbe/xgbe-i2c.c | 4 drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 4 drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 23 drivers/net/ethernet/apple/bmac.c | 2 drivers/net/ethernet/apple/mace.c | 2 drivers/net/ethernet/dnet.c | 4 drivers/net/ethernet/intel/igb/igb_main.c | 10 drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c | 4 drivers/net/ethernet/myricom/myri10ge/myri10ge.c | 1 drivers/net/ethernet/neterion/s2io.c | 2 drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c | 3 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 8 drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h | 10 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 8 drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c | 2 drivers/net/ethernet/rdc/r6040.c | 5 drivers/net/ethernet/renesas/ravb_main.c | 2 drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c | 3 drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h | 2 drivers/net/ethernet/ti/netcp_core.c | 2 drivers/net/ethernet/xilinx/xilinx_emaclite.c | 2 drivers/net/fddi/defxx.c | 22 drivers/net/hamradio/baycom_epp.c | 2 drivers/net/hamradio/scc.c | 6 drivers/net/loopback.c | 2 drivers/net/ntb_netdev.c | 4 drivers/net/phy/xilinx_gmii2rgmii.c | 1 drivers/net/ppp/ppp_generic.c | 2 drivers/net/usb/rndis_host.c | 3 drivers/net/wan/farsync.c | 2 drivers/net/wireless/ath/ar5523/ar5523.c | 6 drivers/net/wireless/ath/ath10k/pci.c | 20 drivers/net/wireless/ath/ath9k/hif_usb.c | 46 - drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c | 5 drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h | 11 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 18 drivers/net/wireless/rsi/rsi_91x_core.c | 4 drivers/net/wireless/rsi/rsi_91x_hal.c | 6 drivers/nfc/pn533/pn533.c | 4 drivers/nfc/pn533/usb.c | 44 - drivers/parisc/led.c | 3 drivers/pci/irq.c | 2 drivers/pci/pci-sysfs.c | 13 drivers/pci/pci.c | 2 drivers/perf/arm_dsu_pmu.c | 6 drivers/pinctrl/mediatek/mtk-eint.c | 9 drivers/pinctrl/pinconf-generic.c | 4 drivers/platform/x86/mxm-wmi.c | 8 drivers/platform/x86/sony-laptop.c | 21 drivers/pnp/core.c | 4 drivers/power/avs/smartreflex.c | 1 drivers/power/supply/power_supply_core.c | 2 drivers/rapidio/devices/rio_mport_cdev.c | 15 drivers/rapidio/rio-scan.c | 8 drivers/rapidio/rio.c | 9 drivers/regulator/core.c | 10 drivers/regulator/da9211-regulator.c | 11 drivers/rtc/rtc-mxc_v2.c | 4 drivers/rtc/rtc-snvs.c | 16 drivers/rtc/rtc-st-lpc.c | 1 drivers/s390/net/ctcm_main.c | 11 drivers/s390/net/lcs.c | 8 drivers/s390/net/netiucv.c | 9 drivers/scsi/fcoe/fcoe.c | 1 drivers/scsi/fcoe/fcoe_sysfs.c | 19 drivers/scsi/hpsa.c | 31 drivers/scsi/hpsa.h | 1 drivers/scsi/ipr.c | 10 drivers/scsi/scsi_debug.c | 2 drivers/scsi/snic/snic_disc.c | 3 drivers/soc/qcom/Kconfig | 1 drivers/soc/ti/knav_qmss_queue.c | 2 drivers/soc/ux500/ux500-soc-id.c | 10 drivers/staging/rtl8192e/rtllib_rx.c | 2 drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c | 4 drivers/staging/wilc1000/wilc_sdio.c | 1 drivers/tty/hvc/hvc_xen.c | 46 - drivers/tty/serial/altera_uart.c | 21 drivers/tty/serial/amba-pl011.c | 14 drivers/tty/serial/pch_uart.c | 4 drivers/tty/serial/serial-tegra.c | 388 +++++++- drivers/tty/serial/sunsab.c | 8 drivers/uio/uio_dmem_genirq.c | 13 drivers/usb/dwc3/core.c | 7 drivers/usb/gadget/function/f_hid.c | 271 ++++-- drivers/usb/gadget/function/f_uvc.c | 5 drivers/usb/gadget/function/u_hid.h | 1 drivers/usb/gadget/udc/fotg210-udc.c | 12 drivers/usb/musb/musb_gadget.c | 2 drivers/usb/serial/cp210x.c | 2 drivers/usb/serial/f81534.c | 12 drivers/usb/serial/option.c | 3 drivers/usb/storage/alauda.c | 2 drivers/usb/typec/bus.c | 2 drivers/vfio/platform/vfio_platform_common.c | 3 drivers/video/fbdev/Kconfig | 1 drivers/video/fbdev/pm2fb.c | 9 drivers/video/fbdev/uvesafb.c | 1 drivers/video/fbdev/vermilion/vermilion.c | 4 drivers/video/fbdev/via/via-core.c | 9 drivers/vme/bridges/vme_fake.c | 2 drivers/vme/bridges/vme_tsi148.c | 1 drivers/xen/events/events_base.c | 10 drivers/xen/privcmd.c | 2 fs/binfmt_aout.c | 2 fs/binfmt_elf_fdpic.c | 7 fs/binfmt_flat.c | 3 fs/binfmt_misc.c | 8 fs/btrfs/ioctl.c | 9 fs/btrfs/rcu-string.h | 6 fs/btrfs/send.c | 11 fs/char_dev.c | 2 fs/cifs/connect.c | 4 fs/cifs/link.c | 1 fs/debugfs/file.c | 28 fs/ext4/ext4.h | 10 fs/ext4/extents.c | 139 ++- fs/ext4/extents_status.c | 389 ++++++++ fs/ext4/extents_status.h | 76 + fs/ext4/indirect.c | 9 fs/ext4/inode.c | 132 ++- fs/ext4/ioctl.c | 10 fs/ext4/namei.c | 3 fs/ext4/resize.c | 6 fs/ext4/super.c | 58 + fs/ext4/xattr.c | 182 ++-- fs/ext4/xattr.h | 1 fs/f2fs/segment.c | 2 fs/hfs/inode.c | 13 fs/hfs/trans.c | 2 fs/hfsplus/hfsplus_fs.h | 2 fs/hfsplus/inode.c | 16 fs/hfsplus/options.c | 4 fs/jfs/jfs_dmap.c | 27 fs/libfs.c | 22 fs/mbcache.c | 121 +- fs/nfs/nfs4proc.c | 19 fs/nfs/nfs4state.c | 2 fs/nfs/nfs4xdr.c | 10 fs/nfsd/nfs4callback.c | 4 fs/nfsd/nfs4xdr.c | 11 fs/nilfs2/the_nilfs.c | 31 fs/ocfs2/stackglue.c | 8 fs/orangefs/orangefs-debugfs.c | 3 fs/orangefs/orangefs-mod.c | 8 fs/overlayfs/dir.c | 46 - fs/pnode.c | 2 fs/pstore/Kconfig | 1 fs/pstore/pmsg.c | 7 fs/pstore/ram.c | 2 fs/pstore/ram_core.c | 6 fs/quota/dquot.c | 110 +- fs/reiserfs/namei.c | 4 fs/reiserfs/xattr_security.c | 2 fs/sysv/itree.c | 2 fs/udf/inode.c | 76 - fs/udf/namei.c | 8 fs/udf/truncate.c | 48 - fs/xattr.c | 2 include/asm-generic/tlb.h | 6 include/linux/can/platform/sja1000.h | 2 include/linux/debugfs.h | 19 include/linux/eventfd.h | 2 include/linux/fs.h | 12 include/linux/mbcache.h | 41 include/linux/proc_fs.h | 2 include/linux/quotaops.h | 2 include/linux/sunrpc/rpc_pipe_fs.h | 5 include/linux/timerqueue.h | 2 include/media/dvbdev.h | 32 include/net/mrp.h | 1 include/trace/events/ext4.h | 39 include/uapi/linux/swab.h | 2 include/uapi/sound/asequencer.h | 8 kernel/acct.c | 2 kernel/events/core.c | 8 kernel/gcov/gcc_4_7.c | 5 kernel/relay.c | 4 kernel/trace/blktrace.c | 3 kernel/trace/trace.c | 15 kernel/trace/trace_events_hist.c | 2 lib/notifier-error-inject.c | 2 lib/test_firmware.c | 1 mm/khugepaged.c | 24 mm/memory.c | 5 net/802/mrp.c | 18 net/bluetooth/hci_core.c | 2 net/bluetooth/l2cap_core.c | 3 net/bluetooth/rfcomm/core.c | 2 net/caif/cfctrl.c | 6 net/core/filter.c | 11 net/core/skbuff.c | 3 net/core/stream.c | 6 net/ipv4/inet_connection_sock.c | 16 net/ipv4/udp_tunnel.c | 1 net/ipv6/raw.c | 4 net/netfilter/ipset/ip_set_bitmap_ip.c | 4 net/nfc/netlink.c | 52 - net/openvswitch/datapath.c | 25 net/rxrpc/sendmsg.c | 2 net/sched/ematch.c | 2 net/sched/sch_api.c | 8 net/sched/sch_atm.c | 5 net/sunrpc/auth_gss/auth_gss.c | 19 net/sunrpc/auth_gss/svcauth_gss.c | 9 net/sunrpc/clnt.c | 2 net/vmw_vsock/vmci_transport.c | 6 net/wireless/reg.c | 4 samples/vfio-mdev/mdpy-fb.c | 8 security/apparmor/apparmorfs.c | 4 security/apparmor/policy.c | 2 security/apparmor/policy_unpack.c | 2 security/device_cgroup.c | 33 security/integrity/ima/ima_template.c | 9 sound/core/control_compat.c | 4 sound/drivers/mts64.c | 3 sound/pci/asihpi/hpioctl.c | 2 sound/pci/hda/patch_hdmi.c | 36 sound/soc/codecs/pcm512x.c | 8 sound/soc/codecs/rt298.c | 7 sound/soc/codecs/rt5670.c | 2 sound/soc/codecs/wm8994.c | 5 sound/soc/intel/boards/bytcr_rt5640.c | 15 sound/soc/mediatek/mt8173/mt8173-rt5650-rt5514.c | 7 sound/soc/pxa/mmp-pcm.c | 2 sound/soc/rockchip/rockchip_pdm.c | 1 sound/soc/rockchip/rockchip_spdif.c | 1 sound/soc/soc-ops.c | 9 sound/usb/line6/driver.c | 3 sound/usb/line6/midi.c | 6 sound/usb/line6/midibuf.c | 25 sound/usb/line6/midibuf.h | 5 sound/usb/line6/pod.c | 3 tools/arch/parisc/include/uapi/asm/mman.h | 12 tools/perf/bench/bench.h | 12 tools/perf/tests/attr.py | 1 tools/perf/util/auxtrace.c | 2 tools/perf/util/dwarf-aux.c | 23 tools/perf/util/symbol-elf.c | 2 tools/testing/ktest/ktest.pl | 102 +- tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc | 15 tools/testing/selftests/lib.mk | 5 tools/testing/selftests/powerpc/dscr/dscr_sysfs_test.c | 5 tools/testing/selftests/proc/proc-uptime-002.c | 3 435 files changed, 4743 insertions(+), 1631 deletions(-)
Aakarsh Jain (1):
media: s5p-mfc: Add variant data for MFC v7 hardware for Exynos 3250 SoC
Adam Vodopjan (1):
ata: ahci: Fix PCS quirk application for suspend
Aditya Garg (1):
hfsplus: fix bug causing custom uid and gid being unable to be assigned with mount
Adrian Hunter (1):
perf auxtrace: Fix address filter duplicate symbol selection
Ahung Cheng (1):
serial: tegra: avoid reg access when clk disabled
Ajay Kaher (1):
perf symbol: correction while adjusting symbol
Akinobu Mita (3):
libfs: add DEFINE_SIMPLE_ATTRIBUTE_SIGNED for signed value lib/notifier-error-inject: fix error when writing -errno to debugfs file
debugfs: fix error when writing negative value to atomic_t debugfs file
Al Viro (1):
alpha: fix syscall entry in !AUDUT_SYSCALL case
Alexey Dobriyan (1):
proc: fixup uptime selftest
Amadeusz Sławiński (1):
ASoC: codecs: rt298: Add quirk for KBL-R RVP platform
Anastasia Belova (1):
MIPS: BCM63xx: Add check for NULL for clk in clk_enable
Andy Shevchenko (1):
fbdev: ssd1307fb: Drop optional dependency
AngeloGioacchino Del Regno (4):
arm64: dts: mt2712e: Fix unit_address_vs_reg warning for oscillators
arm64: dts: mt2712e: Fix unit address for pinctrl node
arm64: dts: mt2712-evb: Fix vproc fixed regulators unit names
arm64: dts: mediatek: mt6797: Fix 26M oscillator unit name
Anssi Hannula (4):
can: kvaser_usb_leaf: Set Warning state even without bus errors
can: kvaser_usb_leaf: Fix improved state not being reported
can: kvaser_usb_leaf: Fix wrong CAN state after stopping
can: kvaser_usb_leaf: Fix bogus restart events
Arnd Bergmann (1):
hfs/hfsplus: use WARN_ON for sanity check
Artem Chernyshev (1):
net: vmw_vsock: vmci: Check memcpy_from_msg()
Artem Egorkine (2):
ALSA: line6: correct midi status byte when receiving data from podxt
ALSA: line6: fix stack overflow in line6_midi_transmit
Ashok Raj (1):
x86/microcode/intel: Do not retry microcode reloading on the APs
Baisong Zhong (2):
ALSA: seq: fix undefined behavior in bit shift for SNDRV_SEQ_FILTER_USE_EVENT
media: dvb-usb: az6027: fix null-ptr-deref in az6027_i2c_xfer()
Baokun Li (7):
ext4: add inode table check in __ext4_get_inode_loc to aovid possible infinite loop
ext4: add helper to check quota inums
ext4: fix bug_on in __es_tree_search caused by bad boot loader inode
ext4: fix corruption when online resizing a 1K bigalloc fs
ext4: correct inconsistent error msg in nojournal mode
ext4: fix bug_on in __es_tree_search caused by bad quota inode
ext4: fix use-after-free in ext4_orphan_cleanup
Barnabás Pőcze (1):
timerqueue: Use rb_entry_safe() in timerqueue_getnext()
Ben Dooks (1):
riscv: uaccess: fix type of 0 variable on error in get_user()
Biju Das (1):
ravb: Fix "failed to switch device to config mode" message during unbind
Bitterblue Smith (2):
wifi: rtl8xxxu: Fix reading the vendor of combo chips
wifi: rtl8xxxu: Add __packed to struct rtl8723bu_c2h
Bruno Thomsen (1):
USB: serial: cp210x: add Kamstrup RF sniffer PIDs
Cai Xinchen (1):
rapidio: devices: fix missing put_device in mport_cdev_open
Charles Keepax (1):
ASoC: ops: Correct bounds check for second channel on SX controls
Chen Jiahao (1):
drivers: soc: ti: knav_qmss_queue: Mark knav_acc_firmwares as static
Chen Zhongjin (6):
perf: Fix possible memleak in pmu_dev_alloc()
fs: sysv: Fix sysv_nblocks() returns wrong value
media: dvb-core: Fix ignored return value in dvb_register_frontend()
wifi: cfg80211: Fix not unregister reg_pdev when load_builtin_regdb_keys() fails
scsi: fcoe: Fix transport not deattached when fcoe_if_init() fails
vme: Fix error not catched in fake_init()
Chris Chiu (1):
rtl8xxxu: add enumeration for channel bandwidth
Christian Brauner (1):
pnode: terminate at peers of source
Christophe JAILLET (4):
fbdev: uvesafb: Fixes an error handling path in uvesafb_probe() powerpc/52xx: Fix a resource leak in an error handling path
myri10ge: Fix an error handling path in myri10ge_probe() iommu/mediatek-v1: Fix an error handling path in mtk_iommu_v1_probe()
Chuck Lever (1):
SUNRPC: Don't leak netobj memory when gss_read_proxy_verf() fails
Clement Lecigne (1):
ALSA: pcm: Move rwsem lock inside snd_ctl_elem_read to prevent UAF
Cong Wang (1):
net_sched: reject TCF_EM_SIMPLE case for complex ematch module
Corentin Labbe (1):
crypto: n2 - add missing hash statesize
Dan Aloni (1):
nfsd: under NFSv4.1, fix double svc_xprt_put on rpc_create failure
Dan Carpenter (3):
bonding: uninitialized variable in bond_miimon_inspect()
staging: rtl8192u: Fix use after free in ieee80211_rx()
ipmi: fix use after free in _ipmi_destroy_user()
Daniil Tatianin (1):
qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure
David Howells (2):
net, proc: Provide PROC_FS=n fallback for proc_create_net_single_write()
rxrpc: Fix missing unlock in rxrpc_do_sendmsg()
Deren Wu (1):
mmc: vub300: fix warning - do not call blocking ops when !TASK_RUNNING
Dinh Nguyen (1):
clk: socfpga: use clk_hw_register for a5/c5
Dmitry Osipenko (2):
tty: serial: tegra: Activate RX DMA transfer by request
tty: serial: tegra: Handle RX transfer in PIO mode if DMA wasn't started
Don Brace (1):
scsi: hpsa: use local workqueues instead of system workqueues
Dongdong Zhang (1):
f2fs: fix normal discard process
Dongliang Mu (1):
fs: jfs: fix shift-out-of-bounds in dbAllocAG
Doug Brown (1):
ARM: mmp: fix timer_read delay
Douglas Anderson (1):
Input: elants_i2c - properly handle the reset GPIO when power is off
Dragos Tatulea (1):
IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces
Duke Xin (1):
USB: serial: option: add Quectel EM05-G modem
Eelco Chaudron (1):
openvswitch: Fix flow lookup to use unmasked key
Eliav Farber (1):
EDAC/device: Fix period calculation in edac_device_reset_delay_period()
Eran Ben Elisha (1):
net/mlx5: Rename ptp clock info
Eric Biggers (1):
ext4: don't allow journal inode to have encrypt flag
Eric Dumazet (1):
net: stream: purge sk_error_queue in sk_stream_kill_queues()
Eric Pilmore (1):
ntb_netdev: Use dev_kfree_skb_any() in interrupt context
Eric W. Biederman (1):
binfmt: Move install_exec_creds after setup_new_exec to match binfmt_elf
Eric Whitney (4):
ext4: generalize extents status tree search functions
ext4: add new pending reservation mechanism
ext4: fix reserved cluster accounting at delayed write time
ext4: fix delayed allocation bug in ext4_clu_mapped for bigalloc + inline
Fedor Pchelkin (3):
wifi: ath9k: hif_usb: fix memory leak of urbs in ath9k_hif_usb_dealloc_tx_urbs()
wifi: ath9k: hif_usb: Fix use-after-free in ath9k_hif_usb_reg_in_cb()
wifi: ath9k: verify the expected usb_endpoints are present
Ferry Toth (3):
usb: dwc3: core: defer probe on ulpi_read_id timeout
usb: ulpi: defer ulpi_register on ulpi_read_id timeout Revert "usb: ulpi: defer ulpi_register on ulpi_read_id timeout"
Filipe Manana (1):
btrfs: send: avoid unnecessary backref lookups when finding clone source
Florian-Ewald Mueller (1):
md/bitmap: Fix bitmap chunk size overflow issues
Frederick Lawler (1):
net: sched: disallow noqueue for qdisc classes
GUO Zihua (1):
rtc: mxc_v2: Add missing clk_disable_unprepare()
Gabriel Somlo (1):
serial: altera_uart: fix locking in polling mode
Gaosheng Cui (7):
ALSA: mts64: fix possible null-ptr-defer in snd_mts64_interrupt
apparmor: fix a memleak in multi_transaction_new()
scsi: snic: Fix possible UAF in snic_tgt_create()
crypto: img-hash - Fix variable dereferenced before check 'hdev->req'
staging: vme_user: Fix possible UAF in tsi148_dma_list_add
rtc: st-lpc: Add missing clk_disable_unprepare in st_rtc_probe()
ext4: fix undefined behavior in bit shift for ext4_check_flag_values
Gautam Menghani (1):
media: imon: fix a race condition in send_packet()
Gavrilov Ilia (2):
relay: fix type mismatch when allocating memory in relay_create_buf()
netfilter: ipset: Fix overflow before widen in the bitmap_ip_create() function.
Geert Uytterhoeven (1):
clocksource/drivers/sh_cmt: Make sure channel clock supply is enabled
Greg Kroah-Hartman (1):
Linux 4.19.270
Hangbin Liu (1):
net/tunnel: wait until all sk_user_data reader finish before releasing the sock
Hanjun Guo (3):
drm/radeon: Add the missed acpi_put_table() to fix memory leak
tpm: tpm_crb: Add the missed acpi_put_table() to fix memory leak
tpm: tpm_tis: Add the missed acpi_put_table() to fix memory leak
Hans de Goede (3):
ASoC: rt5670: Remove unbalanced pm_runtime_put()
ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet platform/x86: sony-laptop: Don't turn off 0x153 keyboard backlight during probe
Harshit Mogalapalli (2):
xen/privcmd: Fix a possible warning in privcmd_ioctl_mmap_resource()
scsi: scsi_debug: Fix a warning in resp_write_scat()
Heiko Carstens (1):
s390/percpu: add READ_ONCE() to arch_this_cpu_to_op_simple()
Heiko Schocher (1):
can: sja1000: fix size of OCR_MODE_MASK define
Helge Deller (1):
parisc: Align parisc MADV_XXX constants with all other architectures
Herbert Xu (1):
ipv6: raw: Deduct extension header length in rawv6_push_pending_frames
Hoi Pok Wu (1):
fs: jfs: fix shift-out-of-bounds in dbDiscardAG
Huaxin Lu (1):
ima: Fix a potential NULL pointer access in ima_restore_measurement_list
Hui Tang (2):
mtd: lpddr2_nvm: Fix possible null-ptr-deref
i2c: pxa-pci: fix missing pci_disable_device() on error in ce4100_i2c_probe
Isaac J. Manjarres (1):
driver core: Fix bus_type.match() error handling in __driver_attach()
Ivaylo Dimitrov (1):
usb: musb: remove extra check in musb_gadget_vbus_draw
Jakub Kicinski (1):
bpf: pull before calling skb_postpull_rcsum()
Jamal Hadi Salim (1):
net: sched: atm: dont intepret cls results when asked to drop
Jan Kara (17):
udf: Discard preallocation before extending file with a hole
udf: Fix preallocation discarding at indirect extent boundary
udf: Do not bother looking for prealloc extents if i_lenExtents matches i_size
udf: Fix extending file within last block
ext4: avoid BUG_ON when creating xattrs
ext4: initialize quota before expanding inode in setproject ioctl
ext4: avoid unaccounted block allocation when expanding inode
mbcache: don't reclaim used entries
mbcache: add functions to delete entry if unused
ext4: remove EA inode entry from mbcache on inode eviction
ext4: unindent codeblock in ext4_xattr_block_set()
ext4: fix race when reusing xattr blocks
mbcache: automatically delete entries from cache on freeing
ext4: fix deadlock due to mbcache entry corruption
udf: Fix extension of the last extent in the file
mbcache: Avoid nesting of cache->c_list_lock under bit locks
quota: Factor out setup of quota inode
Jann Horn (2):
mm/khugepaged: fix GUP-fast interaction by sending IPI mm/khugepaged: invoke MMU notifiers in shmem/file collapse paths
Jason A. Donenfeld (2):
media: stv0288: use explicitly signed char
ARM: ux500: do not directly dereference __iomem
Jason Gerecke (1):
HID: wacom: Ensure bootloader PID is usable in hidraw mode
Jason Yan (1):
ext4: goto right label 'failed_mount3a'
Jeff Layton (1):
nfsd: fix handling of readdir in v4root vs. mount upcall timeout
Jerry Ray (1):
net: lan9303: Fix read error execution path
Jialiang Wang (1):
nfp: fix use-after-free in area_cache_get()
Jiamei Xie (1):
serial: amba-pl011: avoid SBSA UART accessing DMACR register
Jiang Li (1):
md/raid1: stop mdx_raid1 thread when raid1 array run failed
Jiasheng Jiang (3):
media: coda: Add check for dcoda_iram_alloc
media: coda: Add check for kmalloc
usb: storage: Add check for kcalloc
Jiguang Xiao (1):
net: amd-xgbe: add missed tasklet_kill
Jimmy Assarsson (5):
can: kvaser_usb: kvaser_usb_leaf: Get capabilities from device
can: kvaser_usb: kvaser_usb_leaf: Rename {leaf,usbcan}_cmd_error_event to {leaf,usbcan}_cmd_can_error_event
can: kvaser_usb: kvaser_usb_leaf: Handle CMD_ERROR_EVENT
can: kvaser_usb: Add struct kvaser_usb_busparams
can: kvaser_usb: Compare requested bittiming parameters with actual parameters in do_set_{,data}_bittiming
Jiri Slaby (2):
tty: serial: clean up stop-tx part in altera_uart_tx_chars()
tty: serial: altera_uart_{r,t}x_chars() need only uart_port
Johan Hovold (2):
USB: serial: f81534: fix division by zero on line-speed change
efi: fix NULL-deref in init error path
John Johansen (2):
apparmor: fix lockdep warning when removing a namespace
apparmor: Fix abi check to include v8 abi
John Keeping (2):
usb: gadget: f_hid: fix f_hidg lifetime vs cdev
usb: gadget: f_hid: fix refcount leak on error path
John Stultz (3):
pstore: Switch pmsg_lock to an rt_mutex to avoid priority inversion
pstore: Make sure CONFIG_PSTORE_PMSG selects CONFIG_RT_MUTEXES
driver core: Set deferred_probe_timeout to a longer default if CONFIG_MODULES is set
Jon Hunter (1):
serial: tegra: Only print FIFO error message when an error occurs
Jonathan Corbet (1):
docs: Fix the docs build with Sphinx 6.0
Jonathan Neuschäfer (1):
spi: Update reference to struct spi_controller
Juergen Gross (1):
xen/events: only register debug interrupt for 2-level events
Junlin Yang (1):
pata_ipx4xx_cf: Fix unsigned comparison with less than zero
Kai Vehmanen (1):
ALSA: hda/hdmi: fix failures at PCM open on Intel ICL and later
Kajol Jain (1):
powerpc/hv-gpci: Fix hv_gpci event list
Kartik (1):
serial: tegra: Read DMA status before terminating
Kees Cook (1):
igb: Do not free q_vector unless new one was allocated
Keita Suzuki (1):
media: dvb-core: Fix double free in dvb_register_device()
Kim Phillips (1):
iommu/amd: Fix ivrs_acpihid cmdline parsing code
Kory Maincent (1):
arm: dts: spear600: Fix clcd interrupt
Krishna Yarlagadda (6):
serial: tegra: check for FIFO mode enabled status
serial: tegra: set maximum num of uart ports to 8
serial: tegra: add support to use 8 bytes trigger
serial: tegra: add support to adjust baud rate
serial: tegra: report clk rate errors
serial: tegra: Add PIO mode support
Kunihiko Hayashi (1):
mmc: f-sdh30: Add quirks for broken timeout clock capability
Lee Jones (1):
clk: socfpga: clk-pll: Remove unused variable 'rc'
Li Zetao (3):
ACPICA: Fix use-after-free in acpi_ut_copy_ipackage_to_ipackage()
net: farsync: Fix kmemleak when rmmods farsync
r6040: Fix kmemleak in probe and remove
Li Zhong (1):
drivers/md/md-bitmap: check the return value of md_bitmap_get_counter()
Liang He (1):
media: c8sectpfe: Add of_node_put() when breaking out of loop
Libo Chen (1):
ktest.pl: Fix incorrect reboot for grub2bls
Lin Ma (3):
media: dvbdev: adopts refcnt to avoid UAF
media: dvbdev: fix build warning due to comments
media: dvbdev: fix refcnt bug
Linus Torvalds (1):
hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling
Linus Walleij (1):
usb: fotg210-udc: Fix ages old endianness issues
Liu Shixin (4):
media: vivid: fix compose size exceed boundary
ALSA: asihpi: fix missing pci_disable_device()
media: saa7164: fix missing pci_disable_device()
binfmt_misc: fix shift-out-of-bounds in check_special_flags
Luca Weiss (1):
ARM: dts: qcom: apq8064: fix coresight compatible
Luo Meng (3):
dm thin: Fix UAF in run_timer_softirq()
dm cache: Fix UAF in destroy()
dm thin: resume even if in FAIL mode
Luís Henriques (1):
ext4: fix error code return to user-space in ext4_get_branch()
Manivannan Sadhasivam (1):
soc: qcom: Select REMAP_MMIO for LLCC driver
Maor Gottlieb (2):
bonding: Export skip slave logic to function RDMA/mlx5: Fix validation of max_rd_atomic caps for DC
Marcus Folkesson (1):
HID: hid-sensor-custom: set fixed size for custom attributes
Marek Szyprowski (1):
ASoC: wm8994: Fix potential deadlock
Marek Vasut (1):
wifi: rsi: Fix handling of 802.3 EAPOL frames sent via control port
Mark Brown (1):
ASoC: ops: Check bounds for second channel in snd_soc_put_volsw_sx()
Mark Rutland (1):
arm64: cmpxchg_double*: hazard against entire exchange variable
Mark Zhang (1):
RDMA/nldev: Return "-EAGAIN" if the cm_id isn't from expected port
Masami Hiramatsu (Google) (2):
perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data
Masayoshi Mizuma (4):
ktest: Add support for meta characters in GRUB_MENU
ktest: introduce _get_grub_index
ktest: cleanup get_grub_index
ktest: introduce grub2bls REBOOT_TYPE option
Matt Redfearn (1):
include/uapi/linux/swab: Fix potentially missing __always_inline
Maxim Devaev (1):
usb: gadget: f_hid: optional SETUP/SET_REPORT mode
Mazin Al Haddad (1):
media: dvb-usb: fix memory leak in dvb_usb_adapter_init()
Miaoqian Lin (4):
cxl: Fix refcount leak in cxl_calc_capp_routing selftests/powerpc: Fix resource leaks
nfc: Fix potential resource leaks
net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe
Michael Kelley (1):
tpm/tpm_crb: Fix error message in __crb_relinquish_locality()
Michael S. Tsirkin (1):
PCI: Fix pci_device_is_present() for VFs by checking PF
Michael Walle (1):
wifi: wilc1000: sdio: fix module autoloading
Mickaël Salaün (1):
selftests: Use optional USERCFLAGS and USERLDFLAGS
Mike Snitzer (2):
dm cache: Fix ABBA deadlock between shrink_slab and dm_cache_metadata_abort dm cache: set needs_check flag after aborting metadata
Mikulas Patocka (1):
md: fix a crash in mempool_free
Ming Lei (1):
block: unhash blkdev part inode when the part is deleted
Minsuk Kang (3):
nfc: pn533: Clear nfc_target before being used
wifi: brcmfmac: Fix potential shift-out-of-bounds in brcmf_fw_alloc_request()
nfc: pn533: Wait for out_urb's completion in pn533_usb_send_frame()
Nathan Chancellor (8):
net: ethernet: ti: Fix return type of netcp_ndo_start_xmit()
hamradio: baycom_epp: Fix return type of baycom_send_packet() drm/amdgpu: Fix type of second parameter in trans_msg() callback s390/ctcm: Fix return type of ctc{mp,}m_tx() s390/netiucv: Fix return type of netiucv_tx()
s390/lcs: Fix return type of lcs_start_xmit() drm/fsl-dcu: Fix return type of fsl_dcu_drm_connector_mode_valid() drm/sti: Fix return type of sti_{dvo,hda,hdmi}_connector_mode_valid()
Nathan Lynch (2):
powerpc/rtas: avoid device tree lookups in rtas_os_term() powerpc/rtas: avoid scheduling in rtas_os_term()
Nicholas Piggin (1):
powerpc/perf: callchain validate kernel stack pointer bounds
Nick Desaulniers (1):
ARM: 9256/1: NWFPE: avoid compiler-generated __aeabi_uldivmod
Nuno Sá (1):
iio: adc: ad_sigma_delta: do not use internal iio_dev lock
Oleg Nesterov (1):
uprobes/x86: Allow to probe a NOP instruction with 0x66 prefix
Ondrej Mosnacek (1):
fs: don't audit the capability check in simple_xattr_list()
Pali Rohár (8):
ARM: dts: dove: Fix assigned-addresses for every PCIe Root Port
ARM: dts: armada-370: Fix assigned-addresses for every PCIe Root Port
ARM: dts: armada-xp: Fix assigned-addresses for every PCIe Root Port
ARM: dts: armada-375: Fix assigned-addresses for every PCIe Root Port
ARM: dts: armada-38x: Fix assigned-addresses for every PCIe Root Port
ARM: dts: armada-39x: Fix assigned-addresses for every PCIe Root Port
ARM: dts: turris-omnia: Add ethernet aliases
ARM: dts: turris-omnia: Add switch port 6 node
Paolo Abeni (1):
net/ulp: prevent ULP without clone op from entering the LISTEN status
Patrik John (1):
serial: tegra: Change lower tolerance baud rate limit for tegra20 and tegra30
Paulo Alcantara (1):
cifs: fix confusing debug message
Peter Newman (1):
x86/resctrl: Fix task CLOSID/RMID update race
Peter Zijlstra (1):
x86/boot: Avoid using Intel mnemonics in AT&T syntax asm
Piergiorgio Beruto (1):
stmmac: fix potential division by 0
Rafael J. Wysocki (2):
PM: runtime: Do not call __rpm_callback() from rpm_idle()
ACPICA: Fix error code path in acpi_ds_call_control_method()
Rafael Mendonca (3):
vfio: platform: Do not pass return buffer to ACPI _RST method
uio: uio_dmem_genirq: Fix missing unlock in irq configuration
uio: uio_dmem_genirq: Fix deadlock between irq config and handling
Rahul Rameshbabu (1):
net/mlx5: Fix ptp max frequency adjustment range
Rasmus Villemoes (1):
net: loopback: use NET_NAME_PREDICTABLE for name_assign_type
Reinette Chatre (1):
x86/resctrl: Use task_curr() instead of task_struct->on_cpu to prevent unnecessary IPI
Ricardo Ribalda (3):
pinctrl: meditatek: Startup with the IRQs disabled
media: i2c: ad5820: Fix error path
regulator: da9211: Use irq handler when ready
Rickard x Andersson (1):
gcov: add support for checksum field
Rob Clark (1):
drm/virtio: Fix GEM handle creation UAF
Roberto Sassu (1):
reiserfs: Add missing calls to reiserfs_security_free()
Rodrigo Branco (1):
x86/bugs: Flush IBP in ib_prctl_set()
Roger Pau Monne (1):
hvc/xen: lock console list traversal
Rui Zhang (1):
regulator: core: fix use_count leakage when handling boot-on
Ryusuke Konishi (1):
nilfs2: fix shift-out-of-bounds/overflow in nilfs_sb2_bad_offset()
Sascha Hauer (1):
PCI/sysfs: Fix double free in error path
Sasha Levin (1):
btrfs: replace strncpy() with strscpy()
Schspa Shi (1):
mrp: introduce active flags to prevent UAF when applicant uninit
Shang XiaoJing (6):
ocfs2: fix memory leak in ocfs2_stack_glue_init()
irqchip: gic-pm: Use pm_runtime_resume_and_get() in gic_probe()
scsi: ipr: Fix WARNING in ipr_init()
samples: vfio-mdev: Fix missing pci_disable_device() in mdpy_fb_probe()
fbdev: via: Fix error in via_core_init()
parisc: led: Fix potential null-ptr-deref in start_task()
Shigeru Yoshida (3):
udf: Avoid double brelse() in udf_rename()
wifi: ar5523: Fix use-after-free on ar5523_cmd() timed out
media: si470x: Fix use-after-free in si470x_int_in_callback()Shuqi Zhang (1):
ext4: use kmemdup() to replace kmalloc + memcpy
Simon Ser (1):
drm/connector: send hotplug uevent on connector cleanup
Smitha T Murthy (3):
media: s5p-mfc: Fix to handle reference queue during finishing
media: s5p-mfc: Clear workbit to handle error condition
media: s5p-mfc: Fix in register read and write for H264
Stanislav Fomichev (2):
bpf: make sure skb->len != 0 when redirecting to a tunneling device
ppp: associate skb with a device at tx
Stefan Eichenberger (1):
rtc: snvs: Allow a time difference on clock register read
Stephen Boyd (1):
pstore: Avoid kcore oops by vmap()ing with VM_IOREMAP
Steven Rostedt (2):
ktest.pl minconfig: Unset configs instead of just removing them kest.pl: Fix grub2 menu handling for rebooting
Subash Abhinov Kasiviswanathan (1):
skbuff: Account for tail adjustment during pull operations
Sungwoo Kim (1):
Bluetooth: L2CAP: Fix u8 overflow
Sven Peter (1):
usb: typec: Check for ops->exit instead of ops->enter in altmode_exit
Szymon Heidrich (2):
usb: gadget: uvc: Prevent buffer overflow in setup handler
usb: rndis_host: Secure rndis_query check against int overflow
Takashi Iwai (1):
media: dvb-core: Fix UAF due to refcount races at releasing
Terry Junge (1):
HID: plantronics: Additional PIDs for double volume key presses quirk
Tom Lendacky (2):
net: amd-xgbe: Fix logic around active and passive cables
net: amd-xgbe: Check only the minimum speed for active/passive cables
Tony Jones (1):
perf script python: Remove explicit shebang from tests/attr.c
Tony Nguyen (1):
igb: Initialize mailbox message for VF reset
Trond Myklebust (3):
NFSv4.2: Fix a memory stomp in decode_attr_security_label
NFSv4: Fix a deadlock between nfs4_open_recover_helper() and delegreturn NFSv4.x: Fail client initialisation if state manager thread can't run
Ulf Hansson (2):
cpuidle: dt: Return the correct numbers of parsed idle states
PM: runtime: Improve path in rpm_idle() when no callback
Uwe Kleine-König (1):
crypto: ccree - Make cc_debugfs_global_fini() available for module init function
Ville Syrjälä (1):
drm/sti: Use drm_mode_copy()
Vincent Mailhol (1):
can: kvaser_usb: do not increase tx statistics when sending error message frames
Vladimir Zapolskiy (1):
media: camss: Clean up received buffers on failed start of streaming
Volker Lendecke (1):
cifs: Fix uninitialized memory read for smb311 posix symlink create
Wang Jingjin (2):
ASoC: rockchip: pdm: Add missing clk_disable_unprepare() in rockchip_pdm_runtime_resume()
ASoC: rockchip: spdif: Add missing clk_disable_unprepare() in rk_spdif_runtime_resume()
Wang ShaoBo (2):
drbd: remove call to memset before free device/resource/connection
SUNRPC: Fix missing release socket in rpc_sockname()
Wang Weiyang (2):
rapidio: fix possible UAF when kfifo_alloc() fails
device_cgroup: Roll back to original exceptions after copy failure
Wang Yufen (5):
pstore/ram: Fix error return code in ramoops_probe()
wifi: brcmfmac: Fix error return code in brcmf_sdio_download_firmware() RDMA/hfi1: Fix error return code in parse_platform_config()
ASoC: mediatek: mt8173-rt5650-rt5514: fix refcount leak in mt8173_rt5650_rt5514_dev_probe()
binfmt: Fix error return code in load_elf_fdpic_binary()
Xie Shaowen (1):
macintosh/macio-adb: check the return value of ioremap()
Xiongfeng Wang (9):
perf/x86/intel/uncore: Fix reference count leak in hswep_has_limit_sbox()
cpufreq: amd_freq_sensitivity: Add missing pci_dev_put() drm/radeon: Fix PCI device refcount leak in radeon_atrm_get_bios() drm/amdgpu: Fix PCI device refcount leak in amdgpu_atrm_get_bios() RDMA/hfi: Decrease PCI device reference count in error path
hwrng: amd - Fix PCI device refcount leak
hwrng: geode - Fix PCI device refcount leak
serial: pch: Fix PCI device refcount leak in pch_request_dma()
fbdev: vermilion: decrease reference count in error path
Xiu Jianfeng (7):
x86/xen: Fix memory leak in xen_smp_intr_init{_pv}() x86/xen: Fix memory leak in xen_init_lock_cpu()
ima: Fix misuse of dereference of pointer in template_desc_init_fields()
wifi: ath10k: Fix return value in ath10k_pci_init()
clk: rockchip: Fix memory leak in rockchip_clk_register_pll()
clk: samsung: Fix memory leak in _samsung_clk_register_pll()
clk: st: Fix memory leak in st_of_quadfs_setup()
Yan Lei (1):
media: dvb-frontends: fix leak of memory fw
Yang Jihong (2):
blktrace: Fix output non-blktrace event when blk_classic option enabled
tracing: Fix infinite loop in tracing_read_pipe on overflowed print_trace_line
Yang Yingliang (51):
MIPS: vpe-mt: fix possible memory leak while module exiting
MIPS: vpe-cmp: fix possible memory leak while module exiting
PNP: fix name memory leak in pnp_alloc_dev()
rapidio: fix possible name leaks when rio_add_device() fails
rapidio: rio: fix possible name leak in rio_register_mport()
regulator: core: fix unbalanced of node refcount in regulator_dev_lookup()
media: solo6x10: fix possible memory leak in solo_sysfs_init()
regulator: core: fix module refcount leak in set_supply()
mmc: moxart: fix return value check of mmc_add_host()
mmc: mxcmmc: fix return value check of mmc_add_host()
mmc: rtsx_usb_sdmmc: fix return value check of mmc_add_host()
mmc: toshsd: fix return value check of mmc_add_host()
mmc: vub300: fix return value check of mmc_add_host()
mmc: wmt-sdmmc: fix return value check of mmc_add_host()
mmc: atmel-mci: fix return value check of mmc_add_host()
mmc: meson-gx: fix return value check of mmc_add_host()
mmc: via-sdmmc: fix return value check of mmc_add_host()
mmc: wbsd: fix return value check of mmc_add_host()
mmc: mmci: fix return value check of mmc_add_host()
ethernet: s2io: don't call dev_kfree_skb() under spin_lock_irqsave()
net: apple: mace: don't call dev_kfree_skb() under spin_lock_irqsave()
net: apple: bmac: don't call dev_kfree_skb() under spin_lock_irqsave()
net: emaclite: don't call dev_kfree_skb() under spin_lock_irqsave()
net: ethernet: dnet: don't call dev_kfree_skb() under spin_lock_irqsave()
hamradio: don't call dev_kfree_skb() under spin_lock_irqsave()
net: amd: lance: don't call dev_kfree_skb() under spin_lock_irqsave()
Bluetooth: btusb: don't call kfree_skb() under spin_lock_irqsave()
Bluetooth: hci_qca: don't call kfree_skb() under spin_lock_irqsave()
Bluetooth: hci_h5: don't call kfree_skb() under spin_lock_irqsave()
Bluetooth: hci_bcsp: don't call kfree_skb() under spin_lock_irqsave()
Bluetooth: hci_core: don't call kfree_skb() under spin_lock_irqsave()
Bluetooth: RFCOMM: don't call kfree_skb() under spin_lock_irqsave()
scsi: hpsa: Fix error handling in hpsa_add_sas_host()
scsi: hpsa: Fix possible memory leak in hpsa_add_sas_device()
scsi: fcoe: Fix possible name leak when device_register() fails
drivers: dio: fix possible memory leak in dio_init()
class: fix possible memory leak in __class_register()
cxl: fix possible null-ptr-deref in cxl_guest_init_afu|adapter()
cxl: fix possible null-ptr-deref in cxl_pci_init_afu|adapter()
mcb: mcb-parse: fix error handing in chameleon_parse_gdd()
chardev: fix error handling in cdev_device_add()
fbdev: pm2fb: fix missing pci_disable_device()
HSI: omap_ssi_core: fix unbalanced pm_runtime_disable()
HSI: omap_ssi_core: fix possible memory leak in ssi_probe()
iommu/amd: Fix pci device refcount leak in ppr_notifier()
macintosh: fix possible memory leak in macio_add_one_device() powerpc/xive: add missing iounmap() in error path in xive_spapr_populate_irq_data() powerpc/83xx/mpc832x_rdb: call platform_device_put() in error case in of_fsl_spi_probe()
mISDN: hfcsusb: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
mISDN: hfcpci: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
mISDN: hfcmulti: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
Yasushi SHOJI (1):
can: mcba_usb: Fix termination command argument
Ye Bin (5):
blk-mq: fix possible memleak when register 'hctx' failed
ext4: init quota for 'old.inode' in 'ext4_rename'
ext4: fix inode leak in ext4_xattr_inode_create() on an error path
ext4: allocate extended attribute value in vmalloc area
ext4: fix uninititialized value in 'ext4_evict_inode'
Yipeng Zou (1):
selftests/ftrace: event_triggers: wait longer for test_event_enable
Yong Wu (1):
iommu/mediatek-v1: Add error handle for mtk_iommu_probe
Yongqiang Liu (1):
net: defxx: Fix missing err handling in dfx_init()
Yu Liao (1):
platform/x86: mxm-wmi: fix memleak in mxm_wmi_call_mx[ds|mx]()
Yuan Can (7):
perf: arm_dsu: Fix hotplug callback leak in dsu_pmu_init()
media: platform: exynos4-is: Fix error handling in fimc_md_init()
drivers: net: qlcnic: Fix potential memory leak in qlcnic_sriov_init()
scsi: hpsa: Fix possible memory leak in hpsa_init_one()
serial: sunsab: Fix error handling in sunsab_init()
HSI: omap_ssi_core: Fix error handling in ssi_init() iommu/fsl_pamu: Fix resource leak in fsl_pamu_probe()
YueHaibing (1):
staging: rtl8192e: Fix potential use-after-free in rtllib_rx_Monitor()
Zack Rusin (1):
drm/vmwgfx: Validate the box size for the snooped cursor
Zeng Heng (3):
ASoC: pxa: fix null-pointer dereference in filter()
PCI: Check for alloc failure in pci_request_irq()
power: supply: fix residue sysfs file in error handle route of __power_supply_register()
Zhang Qilong (3):
soc: ti: smartreflex: Fix PM disable depth imbalance in omap_sr_probe
eventfd: change int to __u64 in eventfd_signal() ifndef CONFIG_EVENTFD
ASoC: pcm512x: Fix PM disable depth imbalance in pcm512x_probe
Zhang Tianci (1):
ovl: Use ovl mounter's fsuid and fsgid in ovl_link()
Zhang Xiaoxu (4):
mtd: Fix device name leak when register device failed in add_mtd_device() RDMA/rxe: Fix NULL-ptr-deref in rxe_qp_do_cleanup() when socket create failed
orangefs: Fix sysfs not cleanup when dev init failed
orangefs: Fix kmemleak in orangefs_prepare_debugfs_help_string()
Zhang Yiqun (1):
crypto: tcrypt - Fix multibuffer skcipher speed test mem leak
Zhang Yuchen (2):
ipmi: fix memleak when unload ipmi driver
ipmi: fix long wait in unload when IPMI disconnect
Zhang Zekun (1):
drm/tegra: Add missing clk_disable_unprepare() in tegra_dc_probe()
ZhangPeng (3):
hfs: Fix OOB Write in hfs_asc2mac
pinctrl: pinconf-generic: add missing of_node_put()
hfs: fix OOB Read in __hfs_brec_find
Zheng Wang (1):
misc: sgi-gru: fix use-after-free error in gru_set_context_option, gru_fault and gru_handle_user_call_os
Zheng Yejian (2):
tracing/hist: Fix issue of losting command info in error_log
acct: fix potential integer overflow in encode_comp_t()
Zheng Yongjun (1):
mtd: maps: pxa2xx-flash: fix memory leak in probe
Zhengchao Shao (3):
test_firmware: fix memory leak in test_firmware_init()
drivers: mcb: fix resource leak in mcb_probe()
caif: fix memory leak in cfctrl_linkup_request()
Zheyu Ma (1):
i2c: ismt: Fix an out-of-bounds bug in ismt_access()
Zhihao Cheng (1):
dm thin: Use last transaction's pmd->root when commit failed
delisun (1):
serial: pl011: Do not clear RX FIFO & RX interrupt in unthrottle.
minoura makoto (1):
SUNRPC: ensure the matching upcall is in-flight upon downcall
ruanjinjie (1):
misc: tifm: fix possible memory leak in tifm_7xx1_switch_media()
zhengliang (1):
ext4: lost matching-pair of trace in ext4_truncate
Greg Kroah-Hartman
maintainerDocumentation/driver-api/spi.rst +2 -2
@@ -25,8 +25,8 @@ hardware, which may be as simple as a set of GPIO pins or as complex as a pair of FIFOs connected to dual DMA engines on the other side of the SPI shift register (maximizing throughput). Such drivers bridge between whatever bus they sit on (often the platform bus) and SPI, and expose -the SPI side of their device as a :c:type:`struct spi_master -<spi_master>`. SPI devices are children of that master, +the SPI side of their device as a :c:type:`struct spi_controller +<spi_controller>`. SPI devices are children of that master, represented as a :c:type:`struct spi_device <spi_device>` and manufactured from :c:type:`struct spi_board_info <spi_board_info>` descriptors which are usually provided by
Documentation/fault-injection/fault-injection.txt +2 -2
@@ -71,8 +71,8 @@ configuration of fault-injection capabilities. - /sys/kernel/debug/fail*/times: - specifies how many times failures may happen at most. - A value of -1 means "no limit". + specifies how many times failures may happen at most. A value of -1 + means "no limit". - /sys/kernel/debug/fail*/space:
Documentation/sphinx/load_config.py +4 -2
@@ -3,7 +3,7 @@ import os import sys -from sphinx.util.pycompat import execfile_ +from sphinx.util.osutil import fs_encoding # ------------------------------------------------------------------------------ def loadConfig(namespace):
@@ -25,7 +25,9 @@ def loadConfig(namespace): sys.stdout.write("load additional sphinx-config: %s\n" % config_file) config = namespace.copy() config['__file__'] = config_file - execfile_(config_file, config) + with open(config_file, 'rb') as f: + code = compile(f.read(), fs_encoding, 'exec') + exec(code, config) del config['__file__'] namespace.update(config) else:
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 269 +SUBLEVEL = 270 EXTRAVERSION = NAME = "People's Front"
arch/alpha/kernel/entry.S +3 -1
@@ -469,8 +469,10 @@ entSys: #ifdef CONFIG_AUDITSYSCALL lda $6, _TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT and $3, $6, $3 -#endif bne $3, strace +#else + blbs $3, strace /* check for SYSCALL_TRACE in disguise */ +#endif beq $4, 1f ldq $27, 0($5) 1: jsr $26, ($27), alpha_ni_syscall
arch/arm/boot/dts/armada-370.dtsi +1 -1
@@ -74,7 +74,7 @@ pcie2: pcie@2,0 { device_type = "pci"; - assigned-addresses = <0x82002800 0 0x80000 0 0x2000>; + assigned-addresses = <0x82001000 0 0x80000 0 0x2000>; reg = <0x1000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
arch/arm/boot/dts/armada-375.dtsi +1 -1
@@ -584,7 +584,7 @@ pcie1: pcie@2,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x44000 0 0x2000>; + assigned-addresses = <0x82001000 0 0x44000 0 0x2000>; reg = <0x1000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
arch/arm/boot/dts/armada-380.dtsi +2 -2
@@ -79,7 +79,7 @@ /* x1 port */ pcie@2,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x40000 0 0x2000>; + assigned-addresses = <0x82001000 0 0x40000 0 0x2000>; reg = <0x1000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -98,7 +98,7 @@ /* x1 port */ pcie@3,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x44000 0 0x2000>; + assigned-addresses = <0x82001800 0 0x44000 0 0x2000>; reg = <0x1800 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
arch/arm/boot/dts/armada-385-turris-omnia.dts +17 -1
@@ -22,6 +22,12 @@ stdout-path = &uart0; }; + aliases { + ethernet0 = ð0; + ethernet1 = ð1; + ethernet2 = ð2; + }; + memory { device_type = "memory"; reg = <0x00000000 0x40000000>; /* 1024 MB */
@@ -291,7 +297,17 @@ }; }; - /* port 6 is connected to eth0 */ + ports@6 { + reg = <6>; + label = "cpu"; + ethernet = <ð0>; + phy-mode = "rgmii-id"; + + fixed-link { + speed = <1000>; + full-duplex; + }; + }; }; }; };
arch/arm/boot/dts/armada-385.dtsi +3 -3
@@ -84,7 +84,7 @@ /* x1 port */ pcie2: pcie@2,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x40000 0 0x2000>; + assigned-addresses = <0x82001000 0 0x40000 0 0x2000>; reg = <0x1000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -103,7 +103,7 @@ /* x1 port */ pcie3: pcie@3,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x44000 0 0x2000>; + assigned-addresses = <0x82001800 0 0x44000 0 0x2000>; reg = <0x1800 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -125,7 +125,7 @@ */ pcie4: pcie@4,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x48000 0 0x2000>; + assigned-addresses = <0x82002000 0 0x48000 0 0x2000>; reg = <0x2000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
arch/arm/boot/dts/armada-39x.dtsi +3 -3
@@ -456,7 +456,7 @@ /* x1 port */ pcie@2,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x40000 0 0x2000>; + assigned-addresses = <0x82001000 0 0x40000 0 0x2000>; reg = <0x1000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -475,7 +475,7 @@ /* x1 port */ pcie@3,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x44000 0 0x2000>; + assigned-addresses = <0x82001800 0 0x44000 0 0x2000>; reg = <0x1800 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -497,7 +497,7 @@ */ pcie@4,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x48000 0 0x2000>; + assigned-addresses = <0x82002000 0 0x48000 0 0x2000>; reg = <0x2000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
arch/arm/boot/dts/armada-xp-mv78230.dtsi +4 -4
@@ -97,7 +97,7 @@ pcie2: pcie@2,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x44000 0 0x2000>; + assigned-addresses = <0x82001000 0 0x44000 0 0x2000>; reg = <0x1000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -115,7 +115,7 @@ pcie3: pcie@3,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x48000 0 0x2000>; + assigned-addresses = <0x82001800 0 0x48000 0 0x2000>; reg = <0x1800 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -133,7 +133,7 @@ pcie4: pcie@4,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x4c000 0 0x2000>; + assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>; reg = <0x2000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -151,7 +151,7 @@ pcie5: pcie@5,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x80000 0 0x2000>; + assigned-addresses = <0x82002800 0 0x80000 0 0x2000>; reg = <0x2800 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
arch/arm/boot/dts/armada-xp-mv78260.dtsi +8 -8
@@ -112,7 +112,7 @@ pcie2: pcie@2,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x44000 0 0x2000>; + assigned-addresses = <0x82001000 0 0x44000 0 0x2000>; reg = <0x1000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -130,7 +130,7 @@ pcie3: pcie@3,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x48000 0 0x2000>; + assigned-addresses = <0x82001800 0 0x48000 0 0x2000>; reg = <0x1800 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -148,7 +148,7 @@ pcie4: pcie@4,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x4c000 0 0x2000>; + assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>; reg = <0x2000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -166,7 +166,7 @@ pcie5: pcie@5,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x80000 0 0x2000>; + assigned-addresses = <0x82002800 0 0x80000 0 0x2000>; reg = <0x2800 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -184,7 +184,7 @@ pcie6: pcie@6,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x84000 0 0x2000>; + assigned-addresses = <0x82003000 0 0x84000 0 0x2000>; reg = <0x3000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -202,7 +202,7 @@ pcie7: pcie@7,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x88000 0 0x2000>; + assigned-addresses = <0x82003800 0 0x88000 0 0x2000>; reg = <0x3800 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -220,7 +220,7 @@ pcie8: pcie@8,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x8c000 0 0x2000>; + assigned-addresses = <0x82004000 0 0x8c000 0 0x2000>; reg = <0x4000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
@@ -238,7 +238,7 @@ pcie9: pcie@9,0 { device_type = "pci"; - assigned-addresses = <0x82000800 0 0x42000 0 0x2000>; + assigned-addresses = <0x82004800 0 0x42000 0 0x2000>; reg = <0x4800 0 0 0 0>; #address-cells = <3>; #size-cells = <2>;
arch/arm/boot/dts/dove.dtsi +1 -1
@@ -129,7 +129,7 @@ pcie1: pcie@2 { device_type = "pci"; status = "disabled"; - assigned-addresses = <0x82002800 0 0x80000 0 0x2000>; + assigned-addresses = <0x82001000 0 0x80000 0 0x2000>; reg = <0x1000 0 0 0 0>; clocks = <&gate_clk 5>; marvell,pcie-port = <1>;
arch/arm/boot/dts/qcom-apq8064.dtsi +1 -1
@@ -1604,7 +1604,7 @@ }; etb@1a01000 { - compatible = "coresight-etb10", "arm,primecell"; + compatible = "arm,coresight-etb10", "arm,primecell"; reg = <0x1a01000 0x1000>; clocks = <&rpmcc RPM_QDSS_CLK>;
arch/arm/boot/dts/spear600.dtsi +1 -1
@@ -53,7 +53,7 @@ compatible = "arm,pl110", "arm,primecell"; reg = <0xfc200000 0x1000>; interrupt-parent = <&vic1>; - interrupts = <12>; + interrupts = <13>; status = "disabled"; };
arch/arm/mach-mmp/time.c +7 -4
@@ -52,18 +52,21 @@static void __iomem *mmp_timer_base =TIMERS_VIRT_BASE ;/* -* FIXME: the timer needs some delay to stablize the counter capture +* Read the timer through the CVWR register. Delay is required after requesting +* a read. The CR register cannot be directly read due to metastability issues +* documented in the PXA168 software manual. */ static inline uint32_t timer_read (void ) { -int delay =100 ; +uint32_t val; +int delay =3 ;__raw_writel (1 , mmp_timer_base +TMR_CVWR (1 ));while (delay--) -cpu_relax (); + val =__raw_readl (mmp_timer_base +TMR_CVWR (1 )); -return __raw_readl (mmp_timer_base +TMR_CVWR (1 )); +return val; } static u64 notrace mmp_read_sched_clock(void)
arch/arm/nwfpe/Makefile +6 -0
@@ -11,3 +11,9 @@ nwfpe-y += fpa11.o fpa11_cpdo.o fpa11_cpdt.o \ entry.o nwfpe-$(CONFIG_FPE_NWFPE_XP) += extended_cpdo.o + +# Try really hard to avoid generating calls to __aeabi_uldivmod() from +# float64_rem() due to loop elision. +ifdef CONFIG_CC_IS_CLANG +CFLAGS_softfloat.o += -mllvm -replexitval=never +endif
arch/arm64/boot/dts/mediatek/mt2712-evb.dts +2 -2
@@ -25,14 +25,14 @@ stdout-path = "serial0:921600n8"; }; - cpus_fixed_vproc0: fixedregulator@0 { + cpus_fixed_vproc0: regulator-vproc-buck0 { compatible = "regulator-fixed"; regulator-name = "vproc_buck0"; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1000000>; }; - cpus_fixed_vproc1: fixedregulator@1 { + cpus_fixed_vproc1: regulator-vproc-buck1 { compatible = "regulator-fixed"; regulator-name = "vproc_buck1"; regulator-min-microvolt = <1000000>;
arch/arm64/boot/dts/mediatek/mt2712e.dtsi +11 -11
@@ -158,70 +158,70 @@ #clock-cells = <0>; }; - clk26m: oscillator@0 { + clk26m: oscillator-26m { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <26000000>; clock-output-names = "clk26m"; }; - clk32k: oscillator@1 { + clk32k: oscillator-32k { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <32768>; clock-output-names = "clk32k"; }; - clkfpc: oscillator@2 { + clkfpc: oscillator-50m { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <50000000>; clock-output-names = "clkfpc"; }; - clkaud_ext_i_0: oscillator@3 { + clkaud_ext_i_0: oscillator-aud0 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <6500000>; clock-output-names = "clkaud_ext_i_0"; }; - clkaud_ext_i_1: oscillator@4 { + clkaud_ext_i_1: oscillator-aud1 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <196608000>; clock-output-names = "clkaud_ext_i_1"; }; - clkaud_ext_i_2: oscillator@5 { + clkaud_ext_i_2: oscillator-aud2 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <180633600>; clock-output-names = "clkaud_ext_i_2"; }; - clki2si0_mck_i: oscillator@6 { + clki2si0_mck_i: oscillator-i2s0 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <30000000>; clock-output-names = "clki2si0_mck_i"; }; - clki2si1_mck_i: oscillator@7 { + clki2si1_mck_i: oscillator-i2s1 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <30000000>; clock-output-names = "clki2si1_mck_i"; }; - clki2si2_mck_i: oscillator@8 { + clki2si2_mck_i: oscillator-i2s2 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <30000000>; clock-output-names = "clki2si2_mck_i"; }; - clktdmin_mclk_i: oscillator@9 { + clktdmin_mclk_i: oscillator-mclk { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <30000000>;
@@ -264,7 +264,7 @@ reg = <0 0x10005000 0 0x1000>; }; - pio: pinctrl@10005000 { + pio: pinctrl@1000b000 { compatible = "mediatek,mt2712-pinctrl"; reg = <0 0x1000b000 0 0x1000>; mediatek,pctl-regmap = <&syscfg_pctl_a>;
arch/arm64/boot/dts/mediatek/mt6797.dtsi +1 -1
@@ -101,7 +101,7 @@ }; }; - clk26m: oscillator@0 { + clk26m: oscillator-26m { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <26000000>;
arch/arm64/include/asm/atomic_ll_sc.h +1 -1
@@ -320,7 +320,7 @@ __LL_SC_PREFIX(__cmpxchg_double##name(unsigned long old1, \" cbnz %w0, 1b\n" \ " " #mb "\n" \ "2:" \ - : "=&r" (tmp), "=&r" (ret), "+Q" (*(unsigned long *)ptr) \ + : "=&r" (tmp), "=&r" (ret), "+Q" (*(__uint128_t *)ptr) \ : "r" (old1), "r" (old2), "r" (new1), "r" (new2) \ : cl); \ \
arch/arm64/include/asm/atomic_lse.h +1 -1
@@ -555,7 +555,7 @@ static inline long __cmpxchg_double##name(unsigned long old1, \" eor %[old2], %[old2], %[oldval2]\n" \ " orr %[old1], %[old1], %[old2]") \ : [old1] "+&r" (x0), [old2] "+&r" (x1), \ -[v] " +Q " (*(unsigned long *)ptr) \ +[v] " +Q " (*(__uint128_t *)ptr) \ : [new1] " r" (x2), [new2] " r" (x3), [ptr] " r" (x4), \ [oldval1] " r" (oldval1), [oldval2] " r" (oldval2) \ : __LL_SC_CLOBBERS, ##cl); \
arch/mips/bcm63xx/clk.c +2 -0
@@ -361,6 +361,8 @@ static struct clk clk_periph = {*/ int clk_enable (struct clk *clk) { +if (!clk) +return 0 ;mutex_lock (&clocks_mutex);clk_enable_unlocked (clk);mutex_unlock (&clocks_mutex);
arch/mips/kernel/vpe-cmp.c +2 -2
@@ -75,7 +75,6 @@ ATTRIBUTE_GROUPS(vpe);static void vpe_device_release (struct device *cd) { -kfree (cd); }static struct class vpe_class = {
@@ -157,6 +156,7 @@ int __init vpe_module_init(void)device_del (&vpe_device); out_class: +put_device (&vpe_device);class_unregister (&vpe_class); out_chrdev:
@@ -169,7 +169,7 @@ void __exit vpe_module_exit(void) {struct vpe *v, *n; -device_del (&vpe_device); +device_unregister (&vpe_device);class_unregister (&vpe_class);unregister_chrdev (major,VPE_MODULE_NAME );
arch/mips/kernel/vpe-mt.c +2 -2
@@ -313,7 +313,6 @@ ATTRIBUTE_GROUPS(vpe);static void vpe_device_release (struct device *cd) { -kfree (cd); }static struct class vpe_class = {
@@ -497,6 +496,7 @@ int __init vpe_module_init(void)device_del (&vpe_device); out_class: +put_device (&vpe_device);class_unregister (&vpe_class); out_chrdev:
@@ -509,7 +509,7 @@ void __exit vpe_module_exit(void) {struct vpe *v, *n; -device_del (&vpe_device); +device_unregister (&vpe_device);class_unregister (&vpe_class);unregister_chrdev (major,VPE_MODULE_NAME );
arch/parisc/include/uapi/asm/mman.h +8 -9
@@ -50,25 +50,24 @@#define MADV_DONTFORK 10/* don't inherit across fork */ #define MADV_DOFORK 11/* do inherit across fork */ -#define MADV_MERGEABLE 65/* KSM may merge identical pages */ -#define MADV_UNMERGEABLE 66/* KSM may not merge identical pages */ +#define MADV_MERGEABLE 12/* KSM may merge identical pages */ +#define MADV_UNMERGEABLE 13/* KSM may not merge identical pages */ -#define MADV_HUGEPAGE 67/* Worth backing with hugepages */ -#define MADV_NOHUGEPAGE 68/* Not worth backing with hugepages */ +#define MADV_HUGEPAGE 14/* Worth backing with hugepages */ +#define MADV_NOHUGEPAGE 15/* Not worth backing with hugepages */ -#define MADV_DONTDUMP 69/* Explicity exclude from the core dump, +#define MADV_DONTDUMP 16/* Explicity exclude from the core dump, overrides the coredump filter bits */ -#define MADV_DODUMP 70/* Clear the MADV_NODUMP flag */ +#define MADV_DODUMP 17/* Clear the MADV_NODUMP flag */ -#define MADV_WIPEONFORK 71/* Zero memory on fork, child only */ -#define MADV_KEEPONFORK 72/* Undo MADV_WIPEONFORK */ +#define MADV_WIPEONFORK 18/* Zero memory on fork, child only */ +#define MADV_KEEPONFORK 19/* Undo MADV_WIPEONFORK */ #define MADV_HWPOISON 100/* poison a page for testing */ #define MADV_SOFT_OFFLINE 101/* soft offline page for testing */ /* compatibility flags */ #define MAP_FILE 0 -#define MAP_VARIABLE 0#define PKEY_DISABLE_ACCESS 0x1#define PKEY_DISABLE_WRITE 0x2
arch/parisc/kernel/sys_parisc.c +27 -0
@@ -386,3 +386,30 @@ long parisc_personality(unsigned long personality)return err; } + +/* +* madvise() wrapper +* +* Up to kernel v6.1 parisc has different values than all other +* platforms for the MADV_xxx flags listed below. +* To keep binary compatibility with existing userspace programs +* translate the former values to the new values. +* +* XXX: Remove this wrapper in year 2025 (or later) +*/ + +asmlinkage notrace long parisc_madvise(unsigned long start, size_t len_in, int behavior) +{ +switch (behavior) { +case 65 : behavior =MADV_MERGEABLE ;break ; +case 66 : behavior =MADV_UNMERGEABLE ;break ; +case 67 : behavior =MADV_HUGEPAGE ;break ; +case 68 : behavior =MADV_NOHUGEPAGE ;break ; +case 69 : behavior =MADV_DONTDUMP ;break ; +case 70 : behavior =MADV_DODUMP ;break ; +case 71 : behavior =MADV_WIPEONFORK ;break ; +case 72 : behavior =MADV_KEEPONFORK ;break ; + } + +return sys_madvise (start, len_in, behavior); +}
arch/parisc/kernel/syscall_table.S +1 -1
@@ -195,7 +195,7 @@ ENTRY_COMP(sysinfo) ENTRY_SAME(shutdown) ENTRY_SAME(fsync) - ENTRY_SAME(madvise) + ENTRY_OURS(madvise) ENTRY_SAME(clone_wrapper) /* 120 */ ENTRY_SAME(setdomainname) ENTRY_COMP(sendfile)
arch/powerpc/kernel/rtas.c +16 -4
@@ -717,6 +717,7 @@ void __noreturn rtas_halt(void)/* Must be in the RMO region, so we place it here */ static char rtas_os_term_buf[2048 ]; +static s32 ibm_os_term_token =RTAS_UNKNOWN_SERVICE ;void rtas_os_term (char *str) {
@@ -728,16 +729,20 @@ void rtas_os_term(char *str)* this property may terminate the partition which we want to avoid * since it interferes with panic_timeout. */ -if (RTAS_UNKNOWN_SERVICE ==rtas_token ("ibm,os-term" ) || -RTAS_UNKNOWN_SERVICE ==rtas_token ("ibm,extended-os-term" )) +if (ibm_os_term_token ==RTAS_UNKNOWN_SERVICE )return ;snprintf (rtas_os_term_buf,2048 ,"OS panic: %s" , str); +/* +* Keep calling as long as RTAS returns a "try again" status, +* but don't use rtas_busy_delay(), which potentially +* schedules. +*/ do { - status =rtas_call (rtas_token ("ibm,os-term" ),1 ,1 ,NULL , + status =rtas_call (ibm_os_term_token,1 ,1 ,NULL ,__pa (rtas_os_term_buf)); - }while (rtas_busy_delay (status)); + }while (rtas_busy_delay_time (status));if (status !=0 )printk (KERN_EMERG "ibm,os-term call failed %d\n" , status);
@@ -1332,6 +1337,13 @@ void __init rtas_initialize(void) no_entry =of_property_read_u32 (rtas.dev,"linux,rtas-entry" , &entry); rtas.entry = no_entry ? rtas.base : entry; +/* +* Discover these now to avoid device tree lookups in the +* panic path. +*/ +if (of_property_read_bool (rtas.dev,"ibm,extended-os-term" )) + ibm_os_term_token =rtas_token ("ibm,os-term" ); +/* If RTAS was found, allocate the RMO buffer for it and look for * the stop-self token if any */
arch/powerpc/perf/callchain.c +1 -0
@@ -68,6 +68,7 @@ perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *re next_sp = fp[0 ];if (next_sp == sp +STACK_INT_FRAME_SIZE && +validate_sp (sp, current,STACK_INT_FRAME_SIZE ) && fp[STACK_FRAME_MARKER ] ==STACK_FRAME_REGS_MARKER ) {/* * This looks like an interrupt frame for an
arch/powerpc/perf/hv-gpci-requests.h +4 -0
@@ -79,6 +79,7 @@ REQUEST(__field(0, 8, partition_id) )#include I (REQUEST_END ) +#ifdef ENABLE_EVENTS_COUNTERINFO_V6 /* * Not available for counter_info_version >= 0x8, use * run_instruction_cycles_by_partition(0x100) instead.
@@ -92,6 +93,7 @@ REQUEST(__field(0, 8, partition_id) __count(0x10, 8, cycles) )#include I (REQUEST_END ) +#endif #define REQUEST_NAME system_performance_capabilities#define REQUEST_NUM 0x40
@@ -103,6 +105,7 @@ REQUEST(__field(0, 1, perf_collect_privileged) )#include I (REQUEST_END ) +#ifdef ENABLE_EVENTS_COUNTERINFO_V6 #define REQUEST_NAME processor_bus_utilization_abc_links#define REQUEST_NUM 0x50#define REQUEST_IDX_KIND "hw_chip_id=?"
@@ -194,6 +197,7 @@ REQUEST(__field(0, 4, phys_processor_idx) __count(0x28, 8, instructions_completed) )#include I (REQUEST_END ) +#endif /* Processor_core_power_mode (0x95) skipped, no counters */ /* Affinity_domain_information_by_virtual_processor (0xA0) skipped,
arch/powerpc/perf/hv-gpci.c +32 -1
@@ -74,7 +74,7 @@ static struct attribute_group format_group = {static struct attribute_group event_group = { .name ="events" , - .attrs = hv_gpci_event_attrs, +/* .attrs is set in init */ };#define HV_CAPS_ATTR (_name, _format) \
@@ -292,6 +292,7 @@ static int hv_gpci_init(void)int r;unsigned long hret;struct hv_perf_caps caps; +struct hv_gpci_request_buffer *arg;hv_gpci_assert_offsets_correct ();
@@ -310,6 +311,36 @@ static int hv_gpci_init(void)/* sampling not supported */ h_gpci_pmu.capabilities |=PERF_PMU_CAP_NO_INTERRUPT ; + arg = (void *)get_cpu_var (hv_gpci_reqb); +memset (arg,0 ,HGPCI_REQ_BUFFER_SIZE ); + +/* +* hcall H_GET_PERF_COUNTER_INFO populates the output +* counter_info_version value based on the system hypervisor. +* Pass the counter request 0x10 corresponds to request type +* 'Dispatch_timebase_by_processor', to get the supported +* counter_info_version. +*/ + arg->params.counter_request =cpu_to_be32 (0x10 ); + + r =plpar_hcall_norets (H_GET_PERF_COUNTER_INFO , +virt_to_phys (arg),HGPCI_REQ_BUFFER_SIZE ); +if (r) { +pr_devel ("hcall failed, can't get supported counter_info_version: 0x%x\n" , r); + arg->params.counter_info_version_out =0x8 ; + } + +/* +* Use counter_info_version_out value to assign +* required hv-gpci event list. +*/ +if (arg->params.counter_info_version_out >=0x8 ) + event_group.attrs = hv_gpci_event_attrs; +else + event_group.attrs = hv_gpci_event_attrs_v6; + +put_cpu_var (hv_gpci_reqb); + r =perf_pmu_register (&h_gpci_pmu, h_gpci_pmu.name,-1 );if (r)return r;
arch/powerpc/perf/hv-gpci.h +1 -0
@@ -53,6 +53,7 @@ enum {#define REQUEST_FILE "../hv-gpci-requests.h"#define NAME_LOWER hv_gpci#define NAME_UPPER HV_GPCI +#define ENABLE_EVENTS_COUNTERINFO_V6 #include "req-gen/perf.h" #undef REQUEST_FILE#undef NAME_LOWER
arch/powerpc/perf/req-gen/perf.h +20 -0
@@ -139,6 +139,26 @@ PMU_EVENT_ATTR_STRING( \#define REQUEST_ (r_name, r_value, r_idx_1, r_fields) \ r_fields +/* Generate event list for platforms with counter_info_version 0x6 or below */ +static __maybe_unused struct attribute *hv_gpci_event_attrs_v6[] = { +#include REQUEST_FILE +NULL +}; + +/* +* Based on getPerfCountInfo v1.018 documentation, some of the hv-gpci +* events were deprecated for platform firmware that supports +* counter_info_version 0x8 or above. +* Those deprecated events are still part of platform firmware that +* support counter_info_version 0x6 and below. As per the getPerfCountInfo +* v1.018 documentation there is no counter_info_version 0x7. +* Undefining macro ENABLE_EVENTS_COUNTERINFO_V6, to disable the addition of +* deprecated events in "hv_gpci_event_attrs" attribute group, for platforms +* that supports counter_info_version 0x8 or above. +*/ +#undef ENABLE_EVENTS_COUNTERINFO_V6 + +/* Generate event list for platforms with counter_info_version 0x8 or above*/ static __maybe_unused struct attribute *hv_gpci_event_attrs[] = { #include REQUEST_FILE NULL
arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c +1 -0
@@ -531,6 +531,7 @@ static int mpc52xx_lpbfifo_probe(struct platform_device *op) err_bcom_rx_irq:bcom_gen_bd_rx_release (lpbfifo.bcom_rx_task); err_bcom_rx: +free_irq (lpbfifo.irq, &lpbfifo); err_irq:iounmap (lpbfifo.regs); lpbfifo.regs =NULL ;
arch/powerpc/platforms/83xx/mpc832x_rdb.c +1 -1
@@ -111,7 +111,7 @@ static int __init of_fsl_spi_probe(char *type, char *compatible, u32 sysclk, goto next; unreg: -platform_device_del (pdev); +platform_device_put (pdev); err:pr_err ("%pOF: registration failed\n" , np); next:
arch/powerpc/sysdev/xive/spapr.c +1 -0
@@ -389,6 +389,7 @@ static int xive_spapr_populate_irq_data(u32 hw_irq, struct xive_irq_data *data) data->trig_mmio =ioremap (data->trig_page,1u << data->esb_shift);if (!data->trig_mmio) { +iounmap (data->eoi_mmio);pr_err ("Failed to map trigger page for irq 0x%x\n" , hw_irq);return -ENOMEM ; }
arch/riscv/include/asm/uaccess.h +1 -1
@@ -260,7 +260,7 @@ do { \might_fault (); \access_ok (VERIFY_READ , __p,sizeof (*__p)) ? \__get_user ((x), __p) : \ - ((x) =0 , -EFAULT ); \ + ((x) = (__force __typeof__(x))0, -EFAULT); \ })#define __put_user_asm (insn, x, ptr, err) \
arch/s390/include/asm/percpu.h +1 -1
@@ -31,7 +31,7 @@pcp_op_T__ *ptr__; \preempt_disable_notrace (); \ ptr__ =raw_cpu_ptr (&(pcp)); \ - prev__ = *ptr__; \ + prev__ =READ_ONCE (*ptr__); \ do { \ old__ = prev__; \ new__ = old__ op (val); \
arch/x86/boot/bioscall.S +2 -2
@@ -35,7 +35,7 @@ intcall: movw %dx, %si movw %sp, %di movw $11, %cx - rep; movsd + rep; movsl /* Pop full state from the stack */ popal
@@ -70,7 +70,7 @@ intcall: jz 4f movw %sp, %si movw $11, %cx - rep; movsd + rep; movsl 4: addw $44, %sp /* Restore state and return */
arch/x86/events/intel/uncore_snbep.c +1 -0
@@ -2699,6 +2699,7 @@ static bool hswep_has_limit_sbox(unsigned int device)return false;pci_read_config_dword (dev,HSWEP_PCU_CAPID4_OFFET , &capid4); +pci_dev_put (dev);if (!hswep_get_chop (capid4))return true;
arch/x86/ia32/ia32_aout.c +1 -2
@@ -298,6 +298,7 @@ static int load_aout_binary(struct linux_binprm *bprm)set_personality_ia32 (false);setup_new_exec (bprm); +install_exec_creds (bprm); regs->cs = __USER32_CS; regs->r8 = regs->r9 = regs->r10 = regs->r11 = regs->r12 =
@@ -314,8 +315,6 @@ static int load_aout_binary(struct linux_binprm *bprm)if (retval <0 )return retval; -install_exec_creds (bprm); -if (N_MAGIC (ex) ==OMAGIC ) {unsigned long text_addr, map_size;
arch/x86/kernel/cpu/bugs.c +2 -0
@@ -1778,6 +1778,8 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)if (ctrl ==PR_SPEC_FORCE_DISABLE )task_set_spec_ib_force_disable (task);task_update_spec_tif (task); +if (task == current) +indirect_branch_prediction_barrier ();break ;default :return -ERANGE ;
arch/x86/kernel/cpu/intel_rdt_rdtgroup.c +16 -10
@@ -585,8 +585,10 @@ static int __rdtgroup_move_task(struct task_struct *tsk,/* * Ensure the task's closid and rmid are written before determining if * the task is current that will decide if it will be interrupted. +* This pairs with the full barrier between the rq->curr update and +* resctrl_sched_in() during context switch. */ -barrier (); +smp_mb ();/* * By now, the task's closid and rmid are set. If the task is current
@@ -2140,19 +2142,23 @@ static void rdt_move_group_tasks(struct rdtgroup *from, struct rdtgroup *to, t->closid = to->closid; t->rmid = to->mon.rmid; -#ifdef CONFIG_SMP /* -* This is safe on x86 w/o barriers as the ordering -* of writing to task_cpu() and t->on_cpu is -* reverse to the reading here. The detection is -* inaccurate as tasks might move or schedule -* before the smp function call takes place. In -* such a case the function call is pointless, but +* Order the closid/rmid stores above before the loads +* in task_curr(). This pairs with the full barrier +* between the rq->curr update and resctrl_sched_in() +* during context switch. +*/ +smp_mb (); + +/* +* If the task is on a CPU, set the CPU in the mask. +* The detection is inaccurate as tasks might move or +* schedule before the smp function call takes place. +* In such a case the function call is pointless, but * there is no other side effect. */ -if (mask && t->on_cpu) +if (IS_ENABLED (CONFIG_SMP ) && mask &&task_curr (t))cpumask_set_cpu (task_cpu (t), mask); -#endif } }read_unlock (&tasklist_lock);
arch/x86/kernel/cpu/microcode/intel.c +1 -7
@@ -662,7 +662,6 @@ void load_ucode_intel_ap(void)else iup = &intel_ucode_patch; -reget:if (!*iup) { patch =__load_ucode_intel (&uci);if (!patch)
@@ -673,12 +672,7 @@ void load_ucode_intel_ap(void) uci.mc = *iup; -if (apply_microcode_early (&uci, true)) { -/* Mixed-silicon system? Try to refetch the proper patch: */ - *iup =NULL ; - - goto reget; - } +apply_microcode_early (&uci, true); }static struct microcode_intel *find_patch (struct ucode_cpu_info *uci)
arch/x86/kernel/uprobes.c +3 -1
@@ -735,8 +735,9 @@ static int branch_setup_xol_ops(struct arch_uprobe *auprobe, struct insn *insn)switch (opc1) {case 0xeb :/* jmp 8 */ case 0xe9 :/* jmp 32 */ -case 0x90 :/* prefix* + nop; same as jmp with .offs = 0 */ break ; +case 0x90 :/* prefix* + nop; same as jmp with .offs = 0 */ + goto setup;case 0xe8 :/* call relative */ branch_clear_offset (auprobe, insn);
@@ -765,6 +766,7 @@ static int branch_setup_xol_ops(struct arch_uprobe *auprobe, struct insn *insn)return -ENOTSUPP ; } +setup: auprobe->branch.opc1 = opc1; auprobe->branch.ilen = insn->length; auprobe->branch.offs = insn->immediate.value;
arch/x86/xen/smp.c +22 -19
92 lines not on this page · raw message
arch/x86/xen/smp_pv.c +6 -6
@@ -94,18 +94,18 @@ asmlinkage __visible void cpu_bringup_and_idle(void)void xen_smp_intr_free_pv (unsigned int cpu) { +kfree (per_cpu (xen_irq_work, cpu).name); +per_cpu (xen_irq_work, cpu).name =NULL ;if (per_cpu (xen_irq_work, cpu).irq >=0 ) {unbind_from_irqhandler (per_cpu (xen_irq_work, cpu).irq,NULL );per_cpu (xen_irq_work, cpu).irq =-1 ; -kfree (per_cpu (xen_irq_work, cpu).name); -per_cpu (xen_irq_work, cpu).name =NULL ; } +kfree (per_cpu (xen_pmu_irq, cpu).name); +per_cpu (xen_pmu_irq, cpu).name =NULL ;if (per_cpu (xen_pmu_irq, cpu).irq >=0 ) {unbind_from_irqhandler (per_cpu (xen_pmu_irq, cpu).irq,NULL );per_cpu (xen_pmu_irq, cpu).irq =-1 ; -kfree (per_cpu (xen_pmu_irq, cpu).name); -per_cpu (xen_pmu_irq, cpu).name =NULL ; } }
@@ -115,6 +115,7 @@ int xen_smp_intr_init_pv(unsigned int cpu)char *callfunc_name, *pmu_name; callfunc_name =kasprintf (GFP_KERNEL ,"irqwork%d" , cpu); +per_cpu (xen_irq_work, cpu).name = callfunc_name; rc = bind_ipi_to_irqhandler(XEN_IRQ_WORK_VECTOR, cpu, xen_irq_work_interrupt,
@@ -124,10 +125,10 @@ int xen_smp_intr_init_pv(unsigned int cpu)if (rc <0 ) goto fail;per_cpu (xen_irq_work, cpu).irq = rc; -per_cpu (xen_irq_work, cpu).name = callfunc_name;if (is_xen_pmu) { pmu_name =kasprintf (GFP_KERNEL ,"pmu%d" , cpu); +per_cpu (xen_pmu_irq, cpu).name = pmu_name; rc = bind_virq_to_irqhandler(VIRQ_XENPMU, cpu, xen_pmu_irq_handler, IRQF_PERCPU|IRQF_NOBALANCING,
@@ -135,7 +136,6 @@ int xen_smp_intr_init_pv(unsigned int cpu)if (rc <0 ) goto fail;per_cpu (xen_pmu_irq, cpu).irq = rc; -per_cpu (xen_pmu_irq, cpu).name = pmu_name; }return 0 ;
arch/x86/xen/spinlock.c +3 -3
@@ -83,6 +83,7 @@ void xen_init_lock_cpu(int cpu) cpu, per_cpu(lock_kicker_irq, cpu)); name =kasprintf (GFP_KERNEL ,"spinlock%d" , cpu); +per_cpu (irq_name, cpu) = name; irq = bind_ipi_to_irqhandler(XEN_SPIN_UNLOCK_VECTOR, cpu, dummy_handler,
@@ -93,7 +94,6 @@ void xen_init_lock_cpu(int cpu)if (irq >=0 ) {disable_irq (irq);/* make sure it's never delivered */ per_cpu (lock_kicker_irq, cpu) = irq; -per_cpu (irq_name, cpu) = name; }printk ("cpu %d spinlock event irq %d\n" , cpu, irq);
@@ -106,6 +106,8 @@ void xen_uninit_lock_cpu(int cpu)if (!xen_pvspin)return ; +kfree (per_cpu (irq_name, cpu)); +per_cpu (irq_name, cpu) =NULL ;/* * When booting the kernel with 'mitigations=auto,nosmt', the secondary * CPUs are not activated, and lock_kicker_irq is not initialized.
@@ -116,8 +118,6 @@ void xen_uninit_lock_cpu(int cpu)unbind_from_irqhandler (irq,NULL );per_cpu (lock_kicker_irq, cpu) =-1 ; -kfree (per_cpu (irq_name, cpu)); -per_cpu (irq_name, cpu) =NULL ; }PV_CALLEE_SAVE_REGS_THUNK (xen_vcpu_stolen);
arch/x86/xen/xen-ops.h +2 -0
@@ -30,6 +30,8 @@ extern struct start_info *xen_start_info;extern struct shared_info xen_dummy_shared_info;extern struct shared_info *HYPERVISOR_shared_info; +extern bool xen_fifo_events; +void xen_setup_mfn_list_list (void );void xen_build_mfn_list_list (void );void xen_setup_machphys_mapping (void );
block/blk-mq-sysfs.c +9 -2
@@ -241,7 +241,7 @@ static int blk_mq_register_hctx(struct blk_mq_hw_ctx *hctx) {struct request_queue *q = hctx->queue;struct blk_mq_ctx *ctx; -int i, ret; +int i, j, ret;if (!hctx->nr_ctx)return 0 ;
@@ -253,9 +253,16 @@ static int blk_mq_register_hctx(struct blk_mq_hw_ctx *hctx)hctx_for_each_ctx (hctx, ctx, i) { ret =kobject_add (&ctx->kobj, &hctx->kobj,"cpu%u" , ctx->cpu);if (ret) -break ; + goto out; } +return 0 ; +out: +hctx_for_each_ctx (hctx, ctx, j) { +if (j < i) +kobject_del (&ctx->kobj); + } +kobject_del (&hctx->kobj);return ret; }
block/partition-generic.c +7 -0
@@ -276,6 +276,7 @@ void delete_partition(struct gendisk *disk, int partno)struct disk_part_tbl *ptbl =rcu_dereference_protected (disk->part_tbl,1 );struct hd_struct *part; +struct block_device *bdev;if (partno >= ptbl->len)return ;
@@ -296,6 +297,12 @@ void delete_partition(struct gendisk *disk, int partno)* "in-use" until we really free the gendisk. */ blk_invalidate_devt (part_devt (part)); + + bdev =bdget (part_devt (part)); +if (bdev) { +remove_inode_hash (bdev->bd_inode); +bdput (bdev); + }hd_struct_kill (part); }
crypto/tcrypt.c +0 -9
@@ -1285,15 +1285,6 @@ static void test_mb_skcipher_speed(const char *algo, int enc, int secs, goto out_free_tfm; } - -for (i =0 ; i < num_mb; ++i) -if (testmgr_alloc_buf (data[i].xbuf)) { -while (i--) -testmgr_free_buf (data[i].xbuf); - goto out_free_tfm; - } - -for (i =0 ; i < num_mb; ++i) { data[i].req =skcipher_request_alloc (tfm,GFP_KERNEL );if (!data[i].req) {
drivers/acpi/acpica/dsmethod.c +8 -2
@@ -517,7 +517,7 @@ acpi_ds_call_control_method(struct acpi_thread_state *thread, info =ACPI_ALLOCATE_ZEROED (sizeof (struct acpi_evaluate_info ));if (!info) { status =AE_NO_MEMORY ; - goto cleanup; + goto pop_walk_state; } info->parameters = &this_walk_state->operands[0 ];
@@ -529,7 +529,7 @@ acpi_ds_call_control_method(struct acpi_thread_state *thread,ACPI_FREE (info);if (ACPI_FAILURE (status)) { - goto cleanup; + goto pop_walk_state; }/*
@@ -561,6 +561,12 @@ acpi_ds_call_control_method(struct acpi_thread_state *thread,return_ACPI_STATUS (status); +pop_walk_state: + +/* On error, pop the walk state to be deleted from thread */ + +acpi_ds_pop_walk_state (thread); + cleanup:/* On error, we must terminate the method properly */
drivers/acpi/acpica/utcopy.c +0 -7
@@ -916,13 +916,6 @@ acpi_ut_copy_ipackage_to_ipackage(union acpi_operand_object *source_obj, status =acpi_ut_walk_package_tree (source_obj, dest_obj, acpi_ut_copy_ielement_to_ielement, walk_state); -if (ACPI_FAILURE (status)) { - -/* On failure, delete the destination package object */ - -acpi_ut_remove_reference (dest_obj); - } -return_ACPI_STATUS (status); }
drivers/ata/ahci.c +23 -9
@@ -97,6 +97,7 @@ enum board_ids {static int ahci_init_one (struct pci_dev *pdev,const struct pci_device_id *ent);static void ahci_remove_one (struct pci_dev *dev);static void ahci_shutdown_one (struct pci_dev *dev); +static void ahci_intel_pcs_quirk (struct pci_dev *pdev,struct ahci_host_priv *hpriv);static int ahci_vt8251_hardreset (struct ata_link *link,unsigned int *class,unsigned long deadline); static int ahci_avn_hardreset(struct ata_link *link, unsigned int *class,
@@ -655,6 +656,25 @@ static void ahci_pci_save_initial_config(struct pci_dev *pdev,ahci_save_initial_config (&pdev->dev, hpriv); } +static int ahci_pci_reset_controller (struct ata_host *host) +{ +struct pci_dev *pdev =to_pci_dev (host->dev); +struct ahci_host_priv *hpriv = host->private_data; +int rc; + + rc =ahci_reset_controller (host); +if (rc) +return rc; + +/* +* If platform firmware failed to enable ports, try to enable +* them here. +*/ +ahci_intel_pcs_quirk (pdev, hpriv); + +return 0 ; +} +static void ahci_pci_init_controller (struct ata_host *host) {struct ahci_host_priv *hpriv = host->private_data;
@@ -857,7 +877,7 @@ static int ahci_pci_device_runtime_resume(struct device *dev)struct ata_host *host =pci_get_drvdata (pdev);int rc; - rc =ahci_reset_controller (host); + rc =ahci_pci_reset_controller (host);if (rc)return rc;ahci_pci_init_controller (host);
@@ -892,7 +912,7 @@ static int ahci_pci_device_resume(struct device *dev)ahci_mcp89_apple_enable (pdev);if (pdev->dev.power.power_state.event ==PM_EVENT_SUSPEND ) { - rc =ahci_reset_controller (host); + rc =ahci_pci_reset_controller (host);if (rc)return rc;
@@ -1769,12 +1789,6 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)/* save initial config */ ahci_pci_save_initial_config (pdev, hpriv); -/* -* If platform firmware failed to enable ports, try to enable -* them here. -*/ -ahci_intel_pcs_quirk (pdev, hpriv); -/* prepare host */ if (hpriv->cap &HOST_CAP_NCQ ) { pi.flags |=ATA_FLAG_NCQ ;
@@ -1884,7 +1898,7 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)if (rc)return rc; - rc =ahci_reset_controller (host); + rc =ahci_pci_reset_controller (host);if (rc)return rc;
drivers/ata/pata_ixp4xx_cf.c +1 -1
@@ -139,12 +139,12 @@ static void ixp4xx_setup_port(struct ata_port *ap,static int ixp4xx_pata_probe (struct platform_device *pdev) { -unsigned int irq;struct resource *cs0, *cs1;struct ata_host *host;struct ata_port *ap;struct ixp4xx_pata_data *data =dev_get_platdata (&pdev->dev);int ret; +int irq; cs0 =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); cs1 =platform_get_resource (pdev,IORESOURCE_MEM ,1 );
drivers/base/class.c +5 -0
@@ -185,6 +185,11 @@ int __class_register(struct class *cls, struct lock_class_key *key) } error =class_add_groups (class_get (cls), cls->class_groups);class_put (cls); +if (error) { +kobject_del (&cp->subsys.kobj); +kfree_const (cp->subsys.kobj.name); +kfree (cp); + }return error; }EXPORT_SYMBOL_GPL (__class_register);
drivers/base/dd.c +15 -2
@@ -220,7 +220,16 @@ static int deferred_devs_show(struct seq_file *s, void *data) }DEFINE_SHOW_ATTRIBUTE (deferred_devs); +#ifdef CONFIG_MODULES +/* +* In the case of modules, set the default probe timeout to +* 30 seconds to give userland some time to load needed modules +*/ +static int deferred_probe_timeout =30 ; +#else +/* In the case of !modules, no probe timeout needed */ static int deferred_probe_timeout =-1 ; +#endif static int __init deferred_probe_timeout_setup (char *str) { deferred_probe_timeout =simple_strtol (str,NULL ,10 );
@@ -902,8 +911,12 @@ static int __driver_attach(struct device *dev, void *data)*/ return 0 ; }else if (ret <0 ) { -dev_dbg (dev,"Bus failed to match device: %d" , ret); -return ret; +dev_dbg (dev,"Bus failed to match device: %d\n" , ret); +/* +* Driver could not match with device, but may match with +* another device on the bus. +*/ +return 0 ; }/* ret > 0 means positive match */ if (dev->parent && dev->bus->need_parent_lock)
drivers/base/power/runtime.c +14 -4
@@ -403,7 +403,10 @@ static int rpm_idle(struct device *dev, int rpmflags)/* Pending requests need to be canceled. */ dev->power.request =RPM_REQ_NONE ; -if (dev->power.no_callbacks) + callback =RPM_GET_CALLBACK (dev, runtime_idle); + +/* If no callback assume success. */ +if (!callback || dev->power.no_callbacks) goto out;/* Carry out an asynchronous or a synchronous idle notification. */
@@ -419,10 +422,17 @@ static int rpm_idle(struct device *dev, int rpmflags) dev->power.idle_notification = true; - callback =RPM_GET_CALLBACK (dev, runtime_idle); +if (dev->power.irq_safe) +spin_unlock (&dev->power.lock); +else +spin_unlock_irq (&dev->power.lock); + + retval =callback (dev); -if (callback) - retval =__rpm_callback (callback, dev); +if (dev->power.irq_safe) +spin_lock (&dev->power.lock); +else +spin_lock_irq (&dev->power.lock); dev->power.idle_notification = false;wake_up_all (&dev->power.wait_queue);
drivers/block/drbd/drbd_main.c +0 -3
@@ -2258,7 +2258,6 @@ void drbd_destroy_device(struct kref *kref)kref_put (&peer_device->connection->kref, drbd_destroy_connection);kfree (peer_device); } -memset (device,0xfd ,sizeof (*device));kfree (device);kref_put (&resource->kref, drbd_destroy_resource); }
@@ -2351,7 +2350,6 @@ void drbd_destroy_resource(struct kref *kref)idr_destroy (&resource->devices);free_cpumask_var (resource->cpu_mask);kfree (resource->name); -memset (resource,0xf2 ,sizeof (*resource));kfree (resource); }
@@ -2748,7 +2746,6 @@ void drbd_destroy_connection(struct kref *kref)drbd_free_socket (&connection->data);kfree (connection->int_dig_in);kfree (connection->int_dig_vv); -memset (connection,0xfc ,sizeof (*connection));kfree (connection);kref_put (&resource->kref, drbd_destroy_resource); }
drivers/bluetooth/btusb.c +3 -3
@@ -501,13 +501,13 @@ static inline void btusb_free_frags(struct btusb_data *data)spin_lock_irqsave (&data->rxlock, flags); -kfree_skb (data->evt_skb); +dev_kfree_skb_irq (data->evt_skb); data->evt_skb =NULL ; -kfree_skb (data->acl_skb); +dev_kfree_skb_irq (data->acl_skb); data->acl_skb =NULL ; -kfree_skb (data->sco_skb); +dev_kfree_skb_irq (data->sco_skb); data->sco_skb =NULL ;spin_unlock_irqrestore (&data->rxlock, flags);
drivers/bluetooth/hci_bcsp.c +1 -1
@@ -393,7 +393,7 @@ static void bcsp_pkt_cull(struct bcsp_struct *bcsp) i++;__skb_unlink (skb, &bcsp->unack); -kfree_skb (skb); +dev_kfree_skb_irq (skb); }if (skb_queue_empty (&bcsp->unack))
drivers/bluetooth/hci_h5.c +1 -1
@@ -311,7 +311,7 @@ static void h5_pkt_cull(struct h5 *h5)break ;__skb_unlink (skb, &h5->unack); -kfree_skb (skb); +dev_kfree_skb_irq (skb); }if (skb_queue_empty (&h5->unack))
drivers/bluetooth/hci_qca.c +1 -1
@@ -810,7 +810,7 @@ static int qca_enqueue(struct hci_uart *hu, struct sk_buff *skb)default :BT_ERR ("Illegal tx state: %d (losing packet)" , qca->tx_ibs_state); -kfree_skb (skb); +dev_kfree_skb_irq (skb);break ; }
drivers/char/hw_random/amd-rng.c +13 -5
@@ -143,15 +143,19 @@ static int __init mod_init(void) found: err =pci_read_config_dword (pdev,0x58 , &pmbase);if (err) -return err; + goto put_dev; pmbase &=0x0000FF00 ; -if (pmbase ==0 ) -return -EIO ; +if (pmbase ==0 ) { + err = -EIO ; + goto put_dev; + } priv =kzalloc (sizeof (*priv),GFP_KERNEL ); -if (!priv) -return -ENOMEM ; +if (!priv) { + err = -ENOMEM ; + goto put_dev; + }if (!request_region (pmbase +PMBASE_OFFSET ,PMBASE_SIZE ,DRV_NAME )) { dev_err(&pdev->dev, DRV_NAME " region 0x%x already in use!\n",
@@ -185,6 +189,8 @@ static int __init mod_init(void)release_region (pmbase +PMBASE_OFFSET ,PMBASE_SIZE ); out:kfree (priv); +put_dev: +pci_dev_put (pdev);return err; }
@@ -200,6 +206,8 @@ static void __exit mod_exit(void)release_region (priv->pmbase +PMBASE_OFFSET ,PMBASE_SIZE ); +pci_dev_put (priv->pcidev); +kfree (priv); }
drivers/char/hw_random/geode-rng.c +28 -8
@@ -51,6 +51,10 @@ static const struct pci_device_id pci_tbl[] = { };MODULE_DEVICE_TABLE (pci, pci_tbl); +struct amd_geode_priv { +struct pci_dev *pcidev; +void __iomem *membase; +};static int geode_rng_data_read (struct hwrng *rng,u32 *data) {
@@ -90,6 +94,7 @@ static int __init mod_init(void)const struct pci_device_id *ent;void __iomem *mem;unsigned long rng_base; +struct amd_geode_priv *priv;for_each_pci_dev (pdev) { ent =pci_match_id (pci_tbl, pdev);
@@ -97,17 +102,26 @@ static int __init mod_init(void) goto found; }/* Device not found. */ - goto out; +return err; found: + priv =kzalloc (sizeof (*priv),GFP_KERNEL ); +if (!priv) { + err = -ENOMEM ; + goto put_dev; + } + rng_base =pci_resource_start (pdev,0 );if (rng_base ==0 ) - goto out; + goto free_priv; err = -ENOMEM ; mem =ioremap (rng_base,0x58 );if (!mem) - goto out; - geode_rng.priv = (unsigned long )mem; + goto free_priv; + + geode_rng.priv = (unsigned long )priv; + priv->membase = mem; + priv->pcidev = pdev;pr_info ("AMD Geode RNG detected\n" ); err =hwrng_register (&geode_rng);
@@ -116,20 +130,26 @@ static int __init mod_init(void) err); goto err_unmap; } -out:return err; err_unmap:iounmap (mem); - goto out; +free_priv: +kfree (priv); +put_dev: +pci_dev_put (pdev); +return err; } static void __exit mod_exit(void) { -void __iomem *mem = (void __iomem *)geode_rng.priv; +struct amd_geode_priv *priv; + priv = (struct amd_geode_priv *)geode_rng.priv;hwrng_unregister (&geode_rng); -iounmap (mem); +iounmap (priv->membase); +pci_dev_put (priv->pcidev); +kfree (priv); }module_init (mod_init);
drivers/char/ipmi/ipmi_msghandler.c +9 -3
@@ -1219,6 +1219,7 @@ static void _ipmi_destroy_user(struct ipmi_user *user)unsigned long flags;struct cmd_rcvr *rcvr;struct cmd_rcvr *rcvrs =NULL ; +struct module *owner;if (!acquire_ipmi_user (user, &i)) {/*
@@ -1278,8 +1279,9 @@ static void _ipmi_destroy_user(struct ipmi_user *user)kfree (rcvr); } + owner = intf->owner;kref_put (&intf->refcount, intf_free); -module_put (intf->owner); +module_put (owner); }int ipmi_destroy_user (struct ipmi_user *user)
@@ -3461,12 +3463,16 @@ static void deliver_smi_err_response(struct ipmi_smi *intf,struct ipmi_smi_msg *msg, unsigned char err) { + int rv; msg->rsp[0 ] = msg->data[0 ] |4 ; msg->rsp[1 ] = msg->data[1 ]; msg->rsp[2 ] = err; msg->rsp_size =3 ; -/* It's an error, so it will never requeue, no need to check return. */ -handle_one_recv_msg (intf, msg); + +/* This will never requeue, but it may ask us to free the message. */ + rv =handle_one_recv_msg (intf, msg); +if (rv ==0 ) +ipmi_free_smi_msg (msg); }static void cleanup_smi_msgs (struct ipmi_smi *intf)
drivers/char/ipmi/ipmi_si_intf.c +19 -8
@@ -2187,6 +2187,20 @@ static int __init init_ipmi_si(void) }module_init (init_ipmi_si); +static void wait_msg_processed (struct smi_info *smi_info) +{ +unsigned long jiffies_now; +long time_diff; + +while (smi_info->curr_msg || (smi_info->si_state !=SI_NORMAL )) { + jiffies_now = jiffies; + time_diff = (((long )jiffies_now - (long )smi_info->last_timeout_jiffies) + *SI_USEC_PER_JIFFY ); +smi_event_handler (smi_info, time_diff); +schedule_timeout_uninterruptible (1 ); + } +} +static void shutdown_smi (void *send_info) {struct smi_info *smi_info = send_info;
@@ -2221,16 +2235,13 @@ static void shutdown_smi(void *send_info)* in the BMC. Note that timers and CPU interrupts are off, * so no need for locks. */ -while (smi_info->curr_msg || (smi_info->si_state !=SI_NORMAL )) { -poll (smi_info); -schedule_timeout_uninterruptible (1 ); - } +wait_msg_processed (smi_info); +if (smi_info->handlers)disable_si_irq (smi_info); -while (smi_info->curr_msg || (smi_info->si_state !=SI_NORMAL )) { -poll (smi_info); -schedule_timeout_uninterruptible (1 ); - } + +wait_msg_processed (smi_info); +if (smi_info->handlers) smi_info->handlers->cleanup (smi_info->si_sm);
drivers/char/tpm/tpm_crb.c +21 -10
@@ -256,7 +256,7 @@ static int __crb_relinquish_locality(struct device *dev,iowrite32 (CRB_LOC_CTRL_RELINQUISH , &priv->regs_h->loc_ctrl);if (!crb_wait_for_reg_32 (&priv->regs_h->loc_state, mask, value,TPM2_TIMEOUT_C )) { -dev_warn (dev,"TPM_LOC_STATE_x.requestAccess timed out\n" ); +dev_warn (dev,"TPM_LOC_STATE_x.Relinquish timed out\n" );return -ETIME ; }
@@ -680,12 +680,16 @@ static int crb_acpi_add(struct acpi_device *device)/* Should the FIFO driver handle this? */ sm = buf->start_method; -if (sm ==ACPI_TPM2_MEMORY_MAPPED ) -return -ENODEV ; +if (sm ==ACPI_TPM2_MEMORY_MAPPED ) { + rc = -ENODEV ; + goto out; + } priv =devm_kzalloc (dev,sizeof (struct crb_priv ),GFP_KERNEL ); -if (!priv) -return -ENOMEM ; +if (!priv) { + rc = -ENOMEM ; + goto out; + }if (sm ==ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC ) {if (buf->header.length < (sizeof (*buf) +sizeof (*crb_smc))) {
@@ -693,7 +697,8 @@ static int crb_acpi_add(struct acpi_device *device)FW_BUG "TPM2 ACPI table has wrong size %u for start method type %d\n" , buf->header.length, ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC); -return -EINVAL ; + rc = -EINVAL ; + goto out; } crb_smc = ACPI_ADD_PTR(struct tpm2_crb_smc, buf, sizeof(*buf)); priv->smc_func_id = crb_smc->smc_func_id;
@@ -704,17 +709,23 @@ static int crb_acpi_add(struct acpi_device *device) rc =crb_map_io (device, priv, buf);if (rc) -return rc; + goto out; chip =tpmm_chip_alloc (dev, &tpm_crb); -if (IS_ERR (chip)) -return PTR_ERR (chip); +if (IS_ERR (chip)) { + rc =PTR_ERR (chip); + goto out; + }dev_set_drvdata (&chip->dev, priv); chip->acpi_dev_handle = device->handle; chip->flags =TPM_CHIP_FLAG_TPM2 ; -return tpm_chip_register (chip); + rc =tpm_chip_register (chip); + +out: +acpi_put_table ((struct acpi_table_header *)buf); +return rc; }static int crb_acpi_remove (struct acpi_device *device)
drivers/char/tpm/tpm_tis.c +5 -4
@@ -129,6 +129,7 @@ static int check_acpi_tpm2(struct device *dev)const struct acpi_device_id *aid =acpi_match_device (tpm_acpi_tbl, dev);struct acpi_table_tpm2 *tbl;acpi_status st; +int ret =0 ;if (!aid || aid->driver_data !=DEVICE_IS_TPM2 )return 0 ;
@@ -136,8 +137,7 @@ static int check_acpi_tpm2(struct device *dev)/* If the ACPI TPM2 signature is matched then a global ACPI_SIG_TPM2 * table is mandatory */ - st = -acpi_get_table (ACPI_SIG_TPM2 ,1 , (struct acpi_table_header **)&tbl); + st =acpi_get_table (ACPI_SIG_TPM2 ,1 , (struct acpi_table_header **)&tbl);if (ACPI_FAILURE (st) || tbl->header.length <sizeof (*tbl)) {dev_err (dev,FW_BUG "failed to get TPM2 ACPI table\n" );return -EINVAL ;
@@ -145,9 +145,10 @@ static int check_acpi_tpm2(struct device *dev)/* The tpm2_crb driver handles this device */ if (tbl->start_method !=ACPI_TPM2_MEMORY_MAPPED ) -return -ENODEV ; + ret = -ENODEV ; - return 0; +acpi_put_table ((struct acpi_table_header *)tbl); + return ret; }#else static int check_acpi_tpm2 (struct device *dev)
drivers/clk/rockchip/clk-pll.c +1 -0
@@ -972,6 +972,7 @@ struct clk *rockchip_clk_register_pll(struct rockchip_clk_provider *ctx,return mux_clk; err_pll: +kfree (pll->rate_table);clk_unregister (mux_clk); mux_clk = pll_clk; err_mux:
drivers/clk/samsung/clk-pll.c +1 -0
@@ -1392,6 +1392,7 @@ static void __init _samsung_clk_register_pll(struct samsung_clk_provider *ctx,if (ret) {pr_err ("%s: failed to register pll clock %s : %d\n" , __func__, pll_clk->name, ret); +kfree (pll->rate_table);kfree (pll);return ; }
drivers/clk/socfpga/clk-gate.c +7 -4
@@ -183,12 +183,13 @@ static void __init __socfpga_gate_init(struct device_node *node,u32 div_reg[3 ];u32 clk_phase[2 ];u32 fixed_div; -struct clk *clk; +struct clk_hw *hw_clk;struct socfpga_gate_clk *socfpga_clk;const char *clk_name = node->name;const char *parent_name[SOCFPGA_MAX_PARENTS ];struct clk_init_data init;int rc; +int err; socfpga_clk =kzalloc (sizeof (*socfpga_clk),GFP_KERNEL );if (WARN_ON (!socfpga_clk))
@@ -237,12 +238,14 @@ static void __init __socfpga_gate_init(struct device_node *node, init.parent_names = parent_name; socfpga_clk->hw.hw.init = &init; - clk =clk_register (NULL , &socfpga_clk->hw.hw); -if (WARN_ON (IS_ERR (clk))) { + hw_clk = &socfpga_clk->hw.hw; + + err =clk_hw_register (NULL , hw_clk); +if (err) {kfree (socfpga_clk);return ; } - rc =of_clk_add_provider (node, of_clk_src_simple_get, clk); + rc =of_clk_add_provider (node, of_clk_src_simple_get, hw_clk);if (WARN_ON (rc))return ; }
drivers/clk/socfpga/clk-periph.c +4 -4
@@ -61,7 +61,7 @@ static __init void __socfpga_periph_init(struct device_node *node, const struct clk_ops *ops) {u32 reg; -struct clk *clk; +struct clk_hw *hw_clk;struct socfpga_periph_clk *periph_clk;const char *clk_name = node->name;const char *parent_name[SOCFPGA_MAX_PARENTS ];
@@ -104,13 +104,13 @@ static __init void __socfpga_periph_init(struct device_node *node, init.parent_names = parent_name; periph_clk->hw.hw.init = &init; + hw_clk = &periph_clk->hw.hw; - clk =clk_register (NULL , &periph_clk->hw.hw); -if (WARN_ON (IS_ERR (clk))) { +if (clk_hw_register (NULL , hw_clk)) {kfree (periph_clk);return ; } - rc =of_clk_add_provider (node, of_clk_src_simple_get, clk); + rc =of_clk_add_provider (node, of_clk_src_simple_get, hw_clk); }void __init socfpga_periph_init (struct device_node *node)
drivers/clk/socfpga/clk-pll.c +10 -7
@@ -80,17 +80,18 @@ static struct clk_ops clk_pll_ops = { .get_parent = clk_pll_get_parent, }; -static __init struct clk *__socfpga_pll_init (struct device_node *node, +static __init struct clk_hw *__socfpga_pll_init (struct device_node *node,const struct clk_ops *ops) {u32 reg; -struct clk *clk; +struct clk_hw *hw_clk;struct socfpga_pll *pll_clk;const char *clk_name = node->name;const char *parent_name[SOCFPGA_MAX_PARENTS ];struct clk_init_data init;struct device_node *clkmgr_np;int rc; +int err;of_property_read_u32 (node,"reg" , ®);
@@ -118,13 +119,15 @@ static __init struct clk *__socfpga_pll_init(struct device_node *node, clk_pll_ops.enable = clk_gate_ops.enable; clk_pll_ops.disable = clk_gate_ops.disable; - clk =clk_register (NULL , &pll_clk->hw.hw); -if (WARN_ON (IS_ERR (clk))) { + hw_clk = &pll_clk->hw.hw; + + err =clk_hw_register (NULL , hw_clk); +if (err) {kfree (pll_clk); -return NULL ; +return ERR_PTR (err); } - rc =of_clk_add_provider (node, of_clk_src_simple_get, clk); -return clk; + rc =of_clk_add_provider (node, of_clk_src_simple_get, hw_clk); +return hw_clk; }void __init socfpga_pll_init (struct device_node *node)
drivers/clk/st/clkgen-fsyn.c +3 -2
@@ -948,9 +948,10 @@ static void __init st_of_quadfs_setup(struct device_node *np, clk =st_clk_register_quadfs_pll (pll_name, clk_parent_name, data, reg, lock); -if (IS_ERR (clk)) +if (IS_ERR (clk)) { +kfree (lock); goto err_exit; -else + }else pr_debug("%s: parent %s rate %u\n", __clk_get_name(clk), __clk_get_name(clk_get_parent(clk)),
drivers/clocksource/sh_cmt.c +13 -3
@@ -239,6 +239,8 @@ static const struct sh_cmt_info sh_cmt_info[] = {#define CMCNT 1/* channel register */ #define CMCOR 2/* channel register */ +#define CMCLKE 0x1000/* CLK Enable Register (R-Car Gen2) */ +static inline u32 sh_cmt_read_cmstr (struct sh_cmt_channel *ch) {if (ch->iostart)
@@ -856,6 +858,7 @@ static int sh_cmt_setup_channel(struct sh_cmt_channel *ch, unsigned int index, unsigned int hwidx, bool clockevent, bool clocksource, struct sh_cmt_device *cmt) { + u32 value;int ret;/* Skip unused channels. */
@@ -885,6 +888,11 @@ static int sh_cmt_setup_channel(struct sh_cmt_channel *ch, unsigned int index, ch->iostart = cmt->mapbase + ch->hwidx *0x100 ; ch->ioctrl = ch->iostart +0x10 ; ch->timer_bit =0 ; + +/* Enable the clock supply to the channel */ + value =ioread32 (cmt->mapbase +CMCLKE ); + value |=BIT (hwidx); +iowrite32 (value, cmt->mapbase +CMCLKE );break ; }
@@ -991,12 +999,10 @@ static int sh_cmt_setup(struct sh_cmt_device *cmt, struct platform_device *pdev)else cmt->rate =clk_get_rate (cmt->clk) /8 ; -clk_disable (cmt->clk); -/* Map the memory resource(s). */ ret =sh_cmt_map_memory (cmt);if (ret <0 ) - goto err_clk_unprepare; + goto err_clk_disable;/* Allocate and setup the channels. */ cmt->num_channels =hweight8 (cmt->hw_channels);
@@ -1024,6 +1030,8 @@ static int sh_cmt_setup(struct sh_cmt_device *cmt, struct platform_device *pdev) mask &= ~(1 << hwidx); } +clk_disable (cmt->clk); +platform_set_drvdata (pdev, cmt);return 0 ;
@@ -1031,6 +1039,8 @@ static int sh_cmt_setup(struct sh_cmt_device *cmt, struct platform_device *pdev) err_unmap:kfree (cmt->channels);iounmap (cmt->mapbase); +err_clk_disable: +clk_disable (cmt->clk); err_clk_unprepare:clk_unprepare (cmt->clk); err_clk_put:
drivers/cpufreq/amd_freq_sensitivity.c +2 -0
@@ -122,6 +122,8 @@ static int __init amd_freq_sensitivity_init(void)if (!pcidev) {if (!static_cpu_has (X86_FEATURE_PROC_FEEDBACK ))return -ENODEV ; + }else { +pci_dev_put (pcidev); }if (rdmsrl_safe (MSR_AMD64_FREQ_SENSITIVITY_ACTUAL , &val))
drivers/cpuidle/dt_idle_states.c +1 -1
@@ -224,6 +224,6 @@ int dt_init_idle_driver(struct cpuidle_driver *drv,* also be 0 on platforms with missing DT idle states or legacy DT * configuration predating the DT idle states bindings. */ -return i; +return state_idx - start_idx; }EXPORT_SYMBOL_GPL (dt_init_idle_driver);
drivers/crypto/ccree/cc_debugfs.c +1 -1
@@ -46,7 +46,7 @@ int __init cc_debugfs_global_init(void)return !cc_debugfs_dir; } -void __exit cc_debugfs_global_fini(void) +void cc_debugfs_global_fini (void ) {debugfs_remove (cc_debugfs_dir); }
drivers/crypto/img-hash.c +6 -2
@@ -359,12 +359,16 @@ static int img_hash_dma_init(struct img_hash_dev *hdev)static void img_hash_dma_task (unsigned long d) {struct img_hash_dev *hdev = (struct img_hash_dev *)d; -struct img_hash_request_ctx *ctx =ahash_request_ctx (hdev->req); +struct img_hash_request_ctx *ctx;u8 *addr;size_t nbytes, bleft, wsend, len, tbc;struct scatterlist tsg; -if (!hdev->req || !ctx->sg) +if (!hdev->req) +return ; + + ctx =ahash_request_ctx (hdev->req); +if (!ctx->sg)return ; addr =sg_virt (ctx->sg);
drivers/crypto/n2_core.c +6 -0
@@ -1286,6 +1286,7 @@ struct n2_hash_tmpl {const u32 *hash_init;u8 hw_op_hashsz;u8 digest_size; +u8 statesize;u8 block_size;u8 auth_type;u8 hmac_type;
@@ -1317,6 +1318,7 @@ static const struct n2_hash_tmpl hash_tmpls[] = { .hmac_type = AUTH_TYPE_HMAC_MD5, .hw_op_hashsz = MD5_DIGEST_SIZE, .digest_size = MD5_DIGEST_SIZE, + .statesize = sizeof(struct md5_state), .block_size = MD5_HMAC_BLOCK_SIZE }, { .name = "sha1", .hash_zero = sha1_zero_message_hash,
@@ -1325,6 +1327,7 @@ static const struct n2_hash_tmpl hash_tmpls[] = { .hmac_type = AUTH_TYPE_HMAC_SHA1, .hw_op_hashsz = SHA1_DIGEST_SIZE, .digest_size = SHA1_DIGEST_SIZE, + .statesize = sizeof(struct sha1_state), .block_size = SHA1_BLOCK_SIZE }, { .name = "sha256", .hash_zero = sha256_zero_message_hash,
@@ -1333,6 +1336,7 @@ static const struct n2_hash_tmpl hash_tmpls[] = { .hmac_type = AUTH_TYPE_HMAC_SHA256, .hw_op_hashsz = SHA256_DIGEST_SIZE, .digest_size = SHA256_DIGEST_SIZE, + .statesize = sizeof(struct sha256_state), .block_size = SHA256_BLOCK_SIZE }, { .name = "sha224", .hash_zero = sha224_zero_message_hash,
@@ -1341,6 +1345,7 @@ static const struct n2_hash_tmpl hash_tmpls[] = { .hmac_type = AUTH_TYPE_RESERVED, .hw_op_hashsz = SHA256_DIGEST_SIZE, .digest_size = SHA224_DIGEST_SIZE, + .statesize = sizeof(struct sha256_state), .block_size = SHA224_BLOCK_SIZE }, };#define NUM_HASH_TMPLS ARRAY_SIZE(hash_tmpls)
@@ -1482,6 +1487,7 @@ static int __n2_register_one_ahash(const struct n2_hash_tmpl *tmpl) halg = &ahash->halg; halg->digestsize = tmpl->digest_size; + halg->statesize = tmpl->statesize; base = &halg->base;snprintf (base->cra_name,CRYPTO_MAX_ALG_NAME ,"%s" , tmpl->name);
drivers/dio/dio.c +8 -0
@@ -110,6 +110,12 @@ static char dio_no_name[] = { 0 };#endif /* CONFIG_DIO_CONSTANTS */ +static void dio_dev_release (struct device *dev) +{ + struct dio_dev *ddev = container_of(dev, typeof(struct dio_dev), dev); +kfree (ddev); +} +int __init dio_find (int deviceid) {/* Called to find a DIO device before the full bus scan has run.
@@ -222,6 +228,7 @@ static int __init dio_init(void) dev->bus = &dio_bus; dev->dev.parent = &dio_bus.dev; dev->dev.bus = &dio_bus_type; + dev->dev.release = dio_dev_release; dev->scode = scode; dev->resource.start = pa; dev->resource.end = pa +DIO_SIZE (scode, va);
@@ -249,6 +256,7 @@ static int __init dio_init(void)if (error) {pr_err ("DIO: Error registering device %s\n" , dev->name); +put_device (&dev->dev);continue ; } error =dio_create_sysfs_dev_files (dev);
drivers/edac/edac_device.c +8 -9
@@ -424,17 +424,16 @@ static void edac_device_workq_teardown(struct edac_device_ctl_info *edac_dev)* Then restart the workq on the new delay */ void edac_device_reset_delay_period (struct edac_device_ctl_info *edac_dev, -unsigned long value) +unsigned long msec) { -unsigned long jiffs =msecs_to_jiffies (value); - -if (value ==1000 ) - jiffs =round_jiffies_relative (value); - - edac_dev->poll_msec = value; - edac_dev->delay = jiffs; + edac_dev->poll_msec = msec; + edac_dev->delay =msecs_to_jiffies (msec); -edac_mod_work (&edac_dev->work, jiffs); +/* See comment in edac_device_workq_setup() above */ +if (edac_dev->poll_msec ==1000 ) +edac_mod_work (&edac_dev->work,round_jiffies_relative (edac_dev->delay)); +else +edac_mod_work (&edac_dev->work, edac_dev->delay); }int edac_device_alloc_index (void )
drivers/edac/edac_module.h +1 -1
@@ -57,7 +57,7 @@ bool edac_stop_work(struct delayed_work *work);bool edac_mod_work (struct delayed_work *work,unsigned long delay);extern void edac_device_reset_delay_period (struct edac_device_ctl_info - *edac_dev,unsigned long value); + *edac_dev,unsigned long msec);extern void edac_mc_reset_delay_period (unsigned long value);extern void *edac_align_ptr (void **p,unsigned size,int n_elems);
drivers/firmware/efi/efi.c +6 -3
@@ -359,8 +359,8 @@ static int __init efisubsys_init(void) efi_kobj =kobject_create_and_add ("efi" , firmware_kobj);if (!efi_kobj) {pr_err ("efi: Firmware registration failed.\n" ); -destroy_workqueue (efi_rts_wq); -return -ENOMEM ; + error = -ENOMEM ; + goto err_destroy_wq; } error =generic_ops_register ();
@@ -396,7 +396,10 @@ static int __init efisubsys_init(void)generic_ops_unregister (); err_put:kobject_put (efi_kobj); -destroy_workqueue (efi_rts_wq); +err_destroy_wq: +if (efi_rts_wq) +destroy_workqueue (efi_rts_wq); +return error; }
drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c +1 -0
@@ -312,6 +312,7 @@ static bool amdgpu_atrm_get_bios(struct amdgpu_device *adev)if (!found)return false; +pci_dev_put (pdev); adev->bios =kmalloc (size,GFP_KERNEL );if (!adev->bios) {
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h +4 -1
@@ -48,6 +48,8 @@ struct amdgpu_vf_error_buffer {uint64_t data[AMDGPU_VF_ERROR_ENTRY_SIZE ]; }; +enum idh_request ; +/** * struct amdgpu_virt_ops - amdgpu device virt operations */
@@ -56,7 +58,8 @@ struct amdgpu_virt_ops {int (*rel_full_gpu)(struct amdgpu_device *adev,bool init);int (*reset_gpu)(struct amdgpu_device *adev);int (*wait_reset)(struct amdgpu_device *adev); -void (*trans_msg)(struct amdgpu_device *adev,u32 req,u32 data1,u32 data2,u32 data3); +void (*trans_msg)(struct amdgpu_device *adev,enum idh_request req, +u32 data1,u32 data2,u32 data3); };/*
drivers/gpu/drm/drm_connector.c +3 -0
@@ -413,6 +413,9 @@ void drm_connector_cleanup(struct drm_connector *connector)mutex_destroy (&connector->mutex);memset (connector,0 ,sizeof (*connector)); + +if (dev->registered) +drm_sysfs_hotplug_event (dev); }EXPORT_SYMBOL (drm_connector_cleanup);
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c +3 -2
@@ -83,8 +83,9 @@ static int fsl_dcu_drm_connector_get_modes(struct drm_connector *connector)return num_modes; } -static int fsl_dcu_drm_connector_mode_valid (struct drm_connector *connector, -struct drm_display_mode *mode) +static enum drm_mode_status +fsl_dcu_drm_connector_mode_valid (struct drm_connector *connector, +struct drm_display_mode *mode) {if (mode->hdisplay &0xf )return MODE_ERROR ;
drivers/gpu/drm/radeon/radeon_bios.c +12 -7
@@ -223,6 +223,7 @@ static bool radeon_atrm_get_bios(struct radeon_device *rdev)if (!found)return false; +pci_dev_put (pdev); rdev->bios =kmalloc (size,GFP_KERNEL );if (!rdev->bios) {
@@ -608,13 +609,14 @@ static bool radeon_acpi_vfct_bios(struct radeon_device *rdev)acpi_size tbl_size;UEFI_ACPI_VFCT *vfct;unsigned offset; +bool r = false;if (!ACPI_SUCCESS (acpi_get_table ("VFCT" ,1 , &hdr)))return false; tbl_size = hdr->length;if (tbl_size <sizeof (UEFI_ACPI_VFCT )) {DRM_ERROR ("ACPI VFCT table present but broken (too short #1)\n" ); -return false; + goto out; } vfct = (UEFI_ACPI_VFCT *)hdr;
@@ -627,13 +629,13 @@ static bool radeon_acpi_vfct_bios(struct radeon_device *rdev) offset +=sizeof (VFCT_IMAGE_HEADER );if (offset > tbl_size) {DRM_ERROR ("ACPI VFCT image header truncated\n" ); -return false; + goto out; } offset += vhdr->ImageLength;if (offset > tbl_size) {DRM_ERROR ("ACPI VFCT image truncated\n" ); -return false; + goto out; } if (vhdr->ImageLength &&
@@ -645,15 +647,18 @@ static bool radeon_acpi_vfct_bios(struct radeon_device *rdev) rdev->bios =kmemdup (&vbios->VbiosContent, vhdr->ImageLength,GFP_KERNEL ); +if (rdev->bios) + r = true; -if (!rdev->bios) -return false; - return true; + goto out; } }DRM_ERROR ("ACPI VFCT table present but broken (too short #2)\n" ); -return false; + +out: +acpi_put_table (hdr); +return r; }#else static inline bool radeon_acpi_vfct_bios (struct radeon_device *rdev)
drivers/gpu/drm/sti/sti_dvo.c +4 -3
@@ -288,7 +288,7 @@ static void sti_dvo_set_mode(struct drm_bridge *bridge,DRM_DEBUG_DRIVER ("\n" ); -memcpy (&dvo->mode, mode,sizeof (struct drm_display_mode )); +drm_mode_copy (&dvo->mode, mode);/* According to the path used (main or aux), the dvo clocks should * have a different parent clock. */
@@ -346,8 +346,9 @@ static int sti_dvo_connector_get_modes(struct drm_connector *connector)#define CLK_TOLERANCE_HZ 50 -static int sti_dvo_connector_mode_valid (struct drm_connector *connector, -struct drm_display_mode *mode) +static enum drm_mode_status +sti_dvo_connector_mode_valid (struct drm_connector *connector, +struct drm_display_mode *mode) {int target = mode->clock *1000 ;int target_min = target -CLK_TOLERANCE_HZ ;
drivers/gpu/drm/sti/sti_hda.c +4 -3
@@ -518,7 +518,7 @@ static void sti_hda_set_mode(struct drm_bridge *bridge,DRM_DEBUG_DRIVER ("\n" ); -memcpy (&hda->mode, mode,sizeof (struct drm_display_mode )); +drm_mode_copy (&hda->mode, mode);if (!hda_get_mode_idx (hda->mode, &mode_idx)) {DRM_ERROR ("Undefined mode\n" );
@@ -596,8 +596,9 @@ static int sti_hda_connector_get_modes(struct drm_connector *connector)#define CLK_TOLERANCE_HZ 50 -static int sti_hda_connector_mode_valid (struct drm_connector *connector, -struct drm_display_mode *mode) +static enum drm_mode_status +sti_hda_connector_mode_valid (struct drm_connector *connector, +struct drm_display_mode *mode) {int target = mode->clock *1000 ;int target_min = target -CLK_TOLERANCE_HZ ;
drivers/gpu/drm/sti/sti_hdmi.c +4 -3
@@ -926,7 +926,7 @@ static void sti_hdmi_set_mode(struct drm_bridge *bridge,DRM_DEBUG_DRIVER ("\n" );/* Copy the drm display mode in the connector local structure */ -memcpy (&hdmi->mode, mode,sizeof (struct drm_display_mode )); +drm_mode_copy (&hdmi->mode, mode);/* Update clock framerate according to the selected mode */ ret =clk_set_rate (hdmi->clk_pix, mode->clock *1000 );
@@ -989,8 +989,9 @@ static int sti_hdmi_connector_get_modes(struct drm_connector *connector)#define CLK_TOLERANCE_HZ 50 -static int sti_hdmi_connector_mode_valid (struct drm_connector *connector, -struct drm_display_mode *mode) +static enum drm_mode_status +sti_hdmi_connector_mode_valid (struct drm_connector *connector, +struct drm_display_mode *mode) {int target = mode->clock *1000 ;int target_min = target -CLK_TOLERANCE_HZ ;
drivers/gpu/drm/tegra/dc.c +3 -1
@@ -2376,8 +2376,10 @@ static int tegra_dc_probe(struct platform_device *pdev)usleep_range (2000 ,4000 ); err =reset_control_assert (dc->rst); -if (err <0 ) +if (err <0 ) { +clk_disable_unprepare (dc->clk);return err; + }usleep_range (2000 ,4000 );
drivers/gpu/drm/virtio/virtgpu_ioctl.c +9 -1
@@ -309,7 +309,6 @@ static int virtio_gpu_resource_create_ioctl(struct drm_device *dev, void *data, }return ret; } -drm_gem_object_put_unlocked (obj); rc->res_handle = res_id;/* similiar to a VM address */ rc->bo_handle = handle;
@@ -318,6 +317,15 @@ static int virtio_gpu_resource_create_ioctl(struct drm_device *dev, void *data,virtio_gpu_unref_list (&validate_list);dma_fence_put (&fence->f); } + +/* +* The handle owns the reference now. But we must drop our +* remaining reference *after* we no longer need to dereference +* the obj. Otherwise userspace could guess the handle and +* race closing it from another thread. +*/ +drm_gem_object_put_unlocked (obj); +return 0 ; fail_unref:if (vgdev->has_virgl_3d) {
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +2 -1
@@ -179,7 +179,8 @@ void vmw_kms_cursor_snoop(struct vmw_surface *srf,if (cmd->dma.guest.ptr.offset %PAGE_SIZE || box->x !=0 || box->y !=0 || box->z !=0 || box->srcx !=0 || box->srcy !=0 || box->srcz !=0 || - box->d !=1 || box_count !=1 ) { + box->d !=1 || box_count !=1 || + box->w >64 || box->h >64 ) {/* TODO handle none page aligned offsets */ /* TODO handle more dst & src != 0 */ /* TODO handle more then one copy */
drivers/hid/hid-ids.h +3 -0
@@ -908,7 +908,10 @@#define USB_DEVICE_ID_ORTEK_IHOME_IMAC_A210S 0x8003#define USB_VENDOR_ID_PLANTRONICS 0x047f +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3210_SERIES 0xc055#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES 0xc056 +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3215_SERIES 0xc057 +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES 0xc058#define USB_VENDOR_ID_PANASONIC 0x04da#define USB_DEVICE_ID_PANABOARD_UBT780 0x1044
drivers/hid/hid-plantronics.c +9 -0
@@ -201,9 +201,18 @@ static int plantronics_probe(struct hid_device *hdev, }static const struct hid_device_id plantronics_devices[] = { + {HID_USB_DEVICE (USB_VENDOR_ID_PLANTRONICS , +USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3210_SERIES ), + .driver_data =PLT_QUIRK_DOUBLE_VOLUME_KEYS }, {HID_USB_DEVICE (USB_VENDOR_ID_PLANTRONICS ,USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES ), .driver_data =PLT_QUIRK_DOUBLE_VOLUME_KEYS }, + {HID_USB_DEVICE (USB_VENDOR_ID_PLANTRONICS , +USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3215_SERIES ), + .driver_data =PLT_QUIRK_DOUBLE_VOLUME_KEYS }, + {HID_USB_DEVICE (USB_VENDOR_ID_PLANTRONICS , +USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES ), + .driver_data =PLT_QUIRK_DOUBLE_VOLUME_KEYS }, {HID_USB_DEVICE (USB_VENDOR_ID_PLANTRONICS ,HID_ANY_ID ) }, { } };
drivers/hid/hid-sensor-custom.c +1 -1
@@ -67,7 +67,7 @@ struct hid_sensor_sample {u32 raw_len; } __packed; -static struct attribute hid_custom_attrs[] = { +static struct attribute hid_custom_attrs[HID_CUSTOM_TOTAL_ATTRS ] = { {.name ="name" , .mode =S_IRUGO }, {.name ="units" , .mode =S_IRUGO }, {.name ="unit-expo" , .mode =S_IRUGO },
drivers/hid/wacom_sys.c +8 -0
@@ -163,6 +163,9 @@ static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report, {struct wacom *wacom =hid_get_drvdata (hdev); +if (wacom->wacom_wac.features.type ==BOOTLOADER ) +return 0 ; +if (size >WACOM_PKGLEN_MAX )return 1 ;
@@ -2759,6 +2762,11 @@ static int wacom_probe(struct hid_device *hdev, goto fail; } +if (features->type ==BOOTLOADER ) { +hid_warn (hdev,"Using device in hidraw-only mode" ); +return hid_hw_start (hdev,HID_CONNECT_HIDRAW ); + } + error =wacom_parse_and_register (wacom, false);if (error) goto fail;
drivers/hid/wacom_wac.c +4 -0
@@ -4680,6 +4680,9 @@ static const struct wacom_features wacom_features_0x37B =static const struct wacom_features wacom_features_HID_ANY_ID = {"Wacom HID" , .type =HID_GENERIC , .oVid =HID_ANY_ID , .oPid =HID_ANY_ID }; +static const struct wacom_features wacom_features_0x94 = + {"Wacom Bootloader" , .type =BOOTLOADER }; +#define USB_DEVICE_WACOM (prod) \ HID_DEVICE(BUS_USB, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\ .driver_data = (kernel_ulong_t)&wacom_features_##prod
@@ -4753,6 +4756,7 @@ const struct hid_device_id wacom_ids[] = { { USB_DEVICE_WACOM(0x84) }, { USB_DEVICE_WACOM(0x90) }, { USB_DEVICE_WACOM(0x93) }, + { USB_DEVICE_WACOM(0x94) }, { USB_DEVICE_WACOM(0x97) }, { USB_DEVICE_WACOM(0x9A) }, { USB_DEVICE_WACOM(0x9F) },
drivers/hid/wacom_wac.h +1 -0
@@ -244,6 +244,7 @@ enum {MTTPC ,MTTPC_B ,HID_GENERIC , +BOOTLOADER , MAX_TYPE };
drivers/hsi/controllers/omap_ssi_core.c +11 -3
@@ -538,8 +538,10 @@ static int ssi_probe(struct platform_device *pd)platform_set_drvdata (pd, ssi); err =ssi_add_controller (ssi, pd); -if (err <0 ) +if (err <0 ) { +hsi_put_controller (ssi); goto out1; + }pm_runtime_enable (&pd->dev);
@@ -572,9 +574,9 @@ static int ssi_probe(struct platform_device *pd)device_for_each_child (&pd->dev,NULL , ssi_remove_ports); out2:ssi_remove_controller (ssi); +pm_runtime_disable (&pd->dev); out1:platform_set_drvdata (pd,NULL ); -pm_runtime_disable (&pd->dev);return err; }
@@ -665,7 +667,13 @@ static int __init ssi_init(void) {if (ret)return ret; -return platform_driver_register (&ssi_port_pdriver); + ret =platform_driver_register (&ssi_port_pdriver); +if (ret) { +platform_driver_unregister (&ssi_pdriver); +return ret; + } + +return 0 ; }module_init (ssi_init);
drivers/i2c/busses/i2c-ismt.c +3 -0
@@ -504,6 +504,9 @@ static int ismt_access(struct i2c_adapter *adap, u16 addr,if (read_write ==I2C_SMBUS_WRITE ) {/* Block Write */ dev_dbg (dev,"I2C_SMBUS_BLOCK_DATA: WRITE\n" ); +if (data->block[0 ] <1 || data->block[0 ] >I2C_SMBUS_BLOCK_MAX ) +return -EINVAL ; + dma_size = data->block[0 ] +1 ; dma_direction =DMA_TO_DEVICE ; desc->wr_len_cmd = dma_size;
drivers/i2c/busses/i2c-pxa-pci.c +3 -7
@@ -105,7 +105,7 @@ static int ce4100_i2c_probe(struct pci_dev *dev,int i;struct ce4100_devices *sds; - ret =pci_enable_device_mem (dev); + ret =pcim_enable_device (dev);if (ret)return ret;
@@ -114,10 +114,8 @@ static int ce4100_i2c_probe(struct pci_dev *dev,return -EINVAL ; } sds =kzalloc (sizeof (*sds),GFP_KERNEL ); -if (!sds) { - ret = -ENOMEM ; - goto err_mem; - } +if (!sds) +return -ENOMEM ;for (i =0 ; i <ARRAY_SIZE (sds->pdev); i++) { sds->pdev[i] =add_i2c_device (dev, i);
@@ -133,8 +131,6 @@ static int ce4100_i2c_probe(struct pci_dev *dev, err_dev_add:kfree (sds); -err_mem: -pci_disable_device (dev);return ret; }
drivers/iio/adc/ad_sigma_delta.c +4 -4
@@ -283,10 +283,10 @@ int ad_sigma_delta_single_conversion(struct iio_dev *indio_dev,unsigned int sample, raw_sample;int ret =0 ; -if (iio_buffer_enabled (indio_dev)) -return -EBUSY ; + ret =iio_device_claim_direct_mode (indio_dev); +if (ret) +return ret; -mutex_lock (&indio_dev->mlock);ad_sigma_delta_set_channel (sigma_delta, chan->address);spi_bus_lock (sigma_delta->spi->master);
@@ -320,7 +320,7 @@ int ad_sigma_delta_single_conversion(struct iio_dev *indio_dev,ad_sigma_delta_set_mode (sigma_delta,AD_SD_MODE_IDLE ); sigma_delta->bus_locked = false;spi_bus_unlock (sigma_delta->spi->master); -mutex_unlock (&indio_dev->mlock); +iio_device_release_direct_mode (indio_dev);if (ret)return ret;
drivers/infiniband/core/nldev.c +1 -1
@@ -433,7 +433,7 @@ static int fill_res_cm_id_entry(struct sk_buff *msg,struct nlattr *entry_attr;if (port && port != cm_id->port_num) -return 0 ; +return -EAGAIN ; entry_attr =nla_nest_start (msg,RDMA_NLDEV_ATTR_RES_CM_ID_ENTRY );if (!entry_attr)
drivers/infiniband/hw/hfi1/affinity.c +2 -0
@@ -217,6 +217,8 @@ int node_affinity_init(void)for (node =0 ; node < node_affinity.num_possible_nodes; node++) hfi1_per_node_cntr[node] =1 ; +pci_dev_put (dev); +return 0 ; }
drivers/infiniband/hw/hfi1/firmware.c +6 -0
@@ -1786,6 +1786,7 @@ int parse_platform_config(struct hfi1_devdata *dd)if (!dd->platform_config.data) {dd_dev_err (dd,"%s: Missing config file\n" , __func__); + ret = -EINVAL ; goto bail; } ptr = (u32 *)dd->platform_config.data;
@@ -1794,6 +1795,7 @@ int parse_platform_config(struct hfi1_devdata *dd) ptr++;if (magic_num !=PLATFORM_CONFIG_MAGIC_NUM ) {dd_dev_err (dd,"%s: Bad config file\n" , __func__); + ret = -EINVAL ; goto bail; }
@@ -1817,6 +1819,7 @@ int parse_platform_config(struct hfi1_devdata *dd)if (file_length > dd->platform_config.size) {dd_dev_info (dd,"%s:File claims to be larger than read size\n" , __func__); + ret = -EINVAL ; goto bail; }else if (file_length < dd->platform_config.size) { dd_dev_info(dd,
@@ -1837,6 +1840,7 @@ int parse_platform_config(struct hfi1_devdata *dd)dd_dev_err (dd,"%s: Failed validation at offset %ld\n" , __func__, (ptr - (u32 *) dd->platform_config.data)); + ret = -EINVAL ; goto bail; }
@@ -1883,6 +1887,7 @@ int parse_platform_config(struct hfi1_devdata *dd) __func__, table_type, (ptr - (u32 *) dd->platform_config.data)); + ret = -EINVAL ; goto bail;/* We don't trust this file now */ } pcfgcache->config_tables[table_type].table = ptr;
@@ -1907,6 +1912,7 @@ int parse_platform_config(struct hfi1_devdata *dd) __func__, table_type, (ptr - (u32 *)dd->platform_config.data)); + ret = -EINVAL ; goto bail;/* We don't trust this file now */ } pcfgcache->config_tables[table_type].table_metadata =
drivers/infiniband/hw/mlx5/qp.c +35 -14
62 lines not on this page · raw message
drivers/infiniband/sw/rxe/rxe_qp.c +3 -3
@@ -836,12 +836,12 @@ static void rxe_qp_do_cleanup(struct work_struct *work) qp->resp.mr =NULL ; } -if (qp_type (qp) ==IB_QPT_RC ) -sk_dst_reset (qp->sk->sk); -free_rd_atomic_resources (qp);if (qp->sk) { +if (qp_type (qp) ==IB_QPT_RC ) +sk_dst_reset (qp->sk->sk); +kernel_sock_shutdown (qp->sk,SHUT_RDWR );sock_release (qp->sk); }
drivers/infiniband/ulp/ipoib/ipoib_netlink.c +7 -0
@@ -42,6 +42,11 @@ static const struct nla_policy ipoib_policy[IFLA_IPOIB_MAX + 1] = { [IFLA_IPOIB_UMCAST] = { .type = NLA_U16 }, }; +static unsigned int ipoib_get_max_num_queues (void ) +{ + return min_t(unsigned int, num_possible_cpus(), 128); +} +static int ipoib_fill_info (struct sk_buff *skb,const struct net_device *dev) {struct ipoib_dev_priv *priv =ipoib_priv (dev);
@@ -147,6 +152,8 @@ static struct rtnl_link_ops ipoib_link_ops __read_mostly = { .changelink = ipoib_changelink, .get_size = ipoib_get_size, .fill_info = ipoib_fill_info, + .get_num_rx_queues = ipoib_get_max_num_queues, + .get_num_tx_queues = ipoib_get_max_num_queues, };int __init ipoib_netlink_init (void )
drivers/input/touchscreen/elants_i2c.c +3 -6
@@ -1082,14 +1082,12 @@ static int elants_i2c_power_on(struct elants_data *ts)if (IS_ERR_OR_NULL (ts->reset_gpio))return 0 ; -gpiod_set_value_cansleep (ts->reset_gpio,1 ); - error =regulator_enable (ts->vcc33);if (error) {dev_err (&ts->client->dev,"failed to enable vcc33 regulator: %d\n" , error); - goto release_reset_gpio; +return error; } error =regulator_enable (ts->vccio);
@@ -1098,7 +1096,7 @@ static int elants_i2c_power_on(struct elants_data *ts)"failed to enable vccio regulator: %d\n" , error);regulator_disable (ts->vcc33); - goto release_reset_gpio; +return error; }/*
@@ -1107,7 +1105,6 @@ static int elants_i2c_power_on(struct elants_data *ts)*/ udelay (ELAN_POWERON_DELAY_USEC ); -release_reset_gpio:gpiod_set_value_cansleep (ts->reset_gpio,0 );if (error)return error;
@@ -1215,7 +1212,7 @@ static int elants_i2c_probe(struct i2c_client *client,return error; } - ts->reset_gpio =devm_gpiod_get (&client->dev,"reset" ,GPIOD_OUT_LOW ); + ts->reset_gpio =devm_gpiod_get (&client->dev,"reset" ,GPIOD_OUT_HIGH );if (IS_ERR (ts->reset_gpio)) { error =PTR_ERR (ts->reset_gpio);
drivers/iommu/amd_iommu_init.c +7 -0
@@ -2946,6 +2946,13 @@ static int __init parse_ivrs_acpihid(char *str)return 1 ; } +/* +* Ignore leading zeroes after ':', so e.g., AMDI0095:00 +* will match AMDI0095:0 in the second strcmp in acpi_dev_hid_uid_match +*/ +while (*uid =='0' && *(uid +1 )) + uid++; + i = early_acpihid_map_size++;memcpy (early_acpihid_map[i].hid, hid,strlen (hid));memcpy (early_acpihid_map[i].uid, uid,strlen (uid));
drivers/iommu/amd_iommu_v2.c +1 -0
@@ -626,6 +626,7 @@ static int ppr_notifier(struct notifier_block *nb, unsigned long e, void *data)put_device_state (dev_state); out: +pci_dev_put (pdev);return ret; }
drivers/iommu/fsl_pamu.c +1 -1
@@ -1134,7 +1134,7 @@ static int fsl_pamu_probe(struct platform_device *pdev) ret =create_csd (ppaact_phys, mem_size, csd_port_id);if (ret) {dev_err (dev,"could not create coherence subdomain\n" ); -return ret; + goto error; } }
drivers/iommu/mtk_iommu_v1.c +21 -5
@@ -626,18 +626,34 @@ static int mtk_iommu_probe(struct platform_device *pdev) ret =iommu_device_sysfs_add (&data->iommu, &pdev->dev,NULL ,dev_name (&pdev->dev));if (ret) -return ret; + goto out_clk_unprepare;iommu_device_set_ops (&data->iommu, &mtk_iommu_ops); ret =iommu_device_register (&data->iommu);if (ret) -return ret; + goto out_sysfs_remove; -if (!iommu_present (&platform_bus_type)) -bus_set_iommu (&platform_bus_type, &mtk_iommu_ops); +if (!iommu_present (&platform_bus_type)) { + ret =bus_set_iommu (&platform_bus_type, &mtk_iommu_ops); +if (ret) + goto out_dev_unreg; + } -return component_master_add_with_match (dev, &mtk_iommu_com_ops, match); + ret =component_master_add_with_match (dev, &mtk_iommu_com_ops, match); +if (ret) + goto out_bus_set_null; +return ret; + +out_bus_set_null: +bus_set_iommu (&platform_bus_type,NULL ); +out_dev_unreg: +iommu_device_unregister (&data->iommu); +out_sysfs_remove: +iommu_device_sysfs_remove (&data->iommu); +out_clk_unprepare: +clk_disable_unprepare (data->bclk); +return ret; }static int mtk_iommu_remove (struct platform_device *pdev)
drivers/irqchip/irq-gic-pm.c +1 -1
@@ -112,7 +112,7 @@ static int gic_probe(struct platform_device *pdev)pm_runtime_enable (dev); - ret =pm_runtime_get_sync (dev); + ret =pm_runtime_resume_and_get (dev);if (ret <0 ) goto rpm_disable;
drivers/isdn/hardware/mISDN/hfcmulti.c +13 -6
@@ -3233,6 +3233,7 @@ static int hfcm_l1callback(struct dchannel *dch, u_int cmd) {struct hfc_multi *hc = dch->hw; +struct sk_buff_head free_queue;u_long flags;switch (cmd) {
@@ -3261,6 +3262,7 @@ hfcm_l1callback(struct dchannel *dch, u_int cmd)l1_event (dch->l1,HW_POWERUP_IND );break ;case HW_DEACT_REQ : +__skb_queue_head_init (&free_queue);/* start deactivation */ spin_lock_irqsave (&hc->lock, flags);if (hc->ctype ==HFC_TYPE_E1 ) {
@@ -3280,20 +3282,21 @@ hfcm_l1callback(struct dchannel *dch, u_int cmd)plxsd_checksync (hc,0 ); } } -skb_queue_purge (&dch->squeue); +skb_queue_splice_init (&dch->squeue, &free_queue);if (dch->tx_skb) { -dev_kfree_skb (dch->tx_skb); +__skb_queue_tail (&free_queue, dch->tx_skb); dch->tx_skb =NULL ; } dch->tx_idx =0 ;if (dch->rx_skb) { -dev_kfree_skb (dch->rx_skb); +__skb_queue_tail (&free_queue, dch->rx_skb); dch->rx_skb =NULL ; }test_and_clear_bit (FLG_TX_BUSY , &dch->Flags);if (test_and_clear_bit (FLG_BUSY_TIMER , &dch->Flags))del_timer (&dch->timer);spin_unlock_irqrestore (&hc->lock, flags); +__skb_queue_purge (&free_queue);break ;case HW_POWERUP_REQ :spin_lock_irqsave (&hc->lock, flags);
@@ -3400,6 +3403,9 @@ handle_dmsg(struct mISDNchannel *ch, struct sk_buff *skb)case PH_DEACTIVATE_REQ :test_and_clear_bit (FLG_L2_ACTIVATED , &dch->Flags);if (dch->dev.D.protocol !=ISDN_P_TE_S0 ) { +struct sk_buff_head free_queue; + +__skb_queue_head_init (&free_queue);spin_lock_irqsave (&hc->lock, flags);if (debug &DEBUG_HFCMULTI_MSG ) printk(KERN_DEBUG
@@ -3421,14 +3427,14 @@ handle_dmsg(struct mISDNchannel *ch, struct sk_buff *skb)/* deactivate */ dch->state =1 ; } -skb_queue_purge (&dch->squeue); +skb_queue_splice_init (&dch->squeue, &free_queue);if (dch->tx_skb) { -dev_kfree_skb (dch->tx_skb); +__skb_queue_tail (&free_queue, dch->tx_skb); dch->tx_skb =NULL ; } dch->tx_idx =0 ;if (dch->rx_skb) { -dev_kfree_skb (dch->rx_skb); +__skb_queue_tail (&free_queue, dch->rx_skb); dch->rx_skb =NULL ; }test_and_clear_bit (FLG_TX_BUSY , &dch->Flags);
@@ -3440,6 +3446,7 @@ handle_dmsg(struct mISDNchannel *ch, struct sk_buff *skb)#endif ret =0 ;spin_unlock_irqrestore (&hc->lock, flags); +__skb_queue_purge (&free_queue); }else ret =l1_event (dch->l1, hh->prim);break ;
drivers/isdn/hardware/mISDN/hfcpci.c +9 -4
@@ -1633,16 +1633,19 @@ hfcpci_l2l1D(struct mISDNchannel *ch, struct sk_buff *skb)test_and_clear_bit (FLG_L2_ACTIVATED , &dch->Flags);spin_lock_irqsave (&hc->lock, flags);if (hc->hw.protocol ==ISDN_P_NT_S0 ) { +struct sk_buff_head free_queue; + +__skb_queue_head_init (&free_queue);/* prepare deactivation */ Write_hfc (hc,HFCPCI_STATES ,0x40 ); -skb_queue_purge (&dch->squeue); +skb_queue_splice_init (&dch->squeue, &free_queue);if (dch->tx_skb) { -dev_kfree_skb (dch->tx_skb); +__skb_queue_tail (&free_queue, dch->tx_skb); dch->tx_skb =NULL ; } dch->tx_idx =0 ;if (dch->rx_skb) { -dev_kfree_skb (dch->rx_skb); +__skb_queue_tail (&free_queue, dch->rx_skb); dch->rx_skb =NULL ; }test_and_clear_bit (FLG_TX_BUSY , &dch->Flags);
@@ -1655,10 +1658,12 @@ hfcpci_l2l1D(struct mISDNchannel *ch, struct sk_buff *skb) hc->hw.mst_m &= ~HFCPCI_MASTER ;Write_hfc (hc,HFCPCI_MST_MODE , hc->hw.mst_m); ret =0 ; +spin_unlock_irqrestore (&hc->lock, flags); +__skb_queue_purge (&free_queue); }else { ret =l1_event (dch->l1, hh->prim); +spin_unlock_irqrestore (&hc->lock, flags); } -spin_unlock_irqrestore (&hc->lock, flags);break ; }if (!ret)
drivers/isdn/hardware/mISDN/hfcsusb.c +8 -4
@@ -337,20 +337,24 @@ hfcusb_l2l1D(struct mISDNchannel *ch, struct sk_buff *skb)test_and_clear_bit (FLG_L2_ACTIVATED , &dch->Flags);if (hw->protocol ==ISDN_P_NT_S0 ) { +struct sk_buff_head free_queue; + +__skb_queue_head_init (&free_queue);hfcsusb_ph_command (hw,HFC_L1_DEACTIVATE_NT );spin_lock_irqsave (&hw->lock, flags); -skb_queue_purge (&dch->squeue); +skb_queue_splice_init (&dch->squeue, &free_queue);if (dch->tx_skb) { -dev_kfree_skb (dch->tx_skb); +__skb_queue_tail (&free_queue, dch->tx_skb); dch->tx_skb =NULL ; } dch->tx_idx =0 ;if (dch->rx_skb) { -dev_kfree_skb (dch->rx_skb); +__skb_queue_tail (&free_queue, dch->rx_skb); dch->rx_skb =NULL ; }test_and_clear_bit (FLG_TX_BUSY , &dch->Flags);spin_unlock_irqrestore (&hw->lock, flags); +__skb_queue_purge (&free_queue);#ifdef FIXME if (test_and_clear_bit (FLG_L1_BUSY , &dch->Flags))dchannel_sched_event (&hc->dch,D_CLEARBUSY );
@@ -1344,7 +1348,7 @@ tx_iso_complete(struct urb *urb)printk ("\n" ); } -dev_kfree_skb (tx_skb); +dev_consume_skb_irq (tx_skb); tx_skb =NULL ;if (fifo->dch &&get_next_dframe (fifo->dch)) tx_skb = fifo->dch->tx_skb;
drivers/macintosh/macio-adb.c +4 -0
@@ -106,6 +106,10 @@ int macio_init(void)return -ENXIO ; } adb =ioremap (r.start,sizeof (struct adb_regs )); +if (!adb) { +of_node_put (adbs); +return -ENOMEM ; + }out_8 (&adb->ctrl.r,0 );out_8 (&adb->intr.r,0 );
drivers/macintosh/macio_asic.c +1 -1
@@ -427,7 +427,7 @@ static struct macio_dev * macio_add_one_device(struct macio_chip *chip,if (of_device_register (&dev->ofdev) !=0 ) {printk (KERN_DEBUG "macio: device registration error for %s!\n" ,dev_name (&dev->ofdev.dev)); -kfree (dev); +put_device (&dev->ofdev.dev);return NULL ; }
drivers/mcb/mcb-core.c +3 -1
@@ -74,8 +74,10 @@ static int mcb_probe(struct device *dev)get_device (dev); ret = mdrv->probe (mdev, found_id); -if (ret) +if (ret) {module_put (carrier_mod); +put_device (dev); + }return ret; }
drivers/mcb/mcb-parse.c +1 -1
@@ -107,7 +107,7 @@ static int chameleon_parse_gdd(struct mcb_bus *bus,return 0 ; err: -mcb_free_dev (mdev); +put_device (&mdev->dev);return ret; }
drivers/md/dm-cache-metadata.c +47 -7
86 lines not on this page · raw message
drivers/md/dm-cache-target.c +6 -5
@@ -1010,16 +1010,16 @@ static void abort_transaction(struct cache *cache)if (get_cache_mode (cache) >=CM_READ_ONLY )return ; -if (dm_cache_metadata_set_needs_check (cache->cmd)) { -DMERR ("%s: failed to set 'needs_check' flag in metadata" , dev_name); -set_cache_mode (cache,CM_FAIL ); - } -DMERR_LIMIT ("%s: aborting current metadata transaction" , dev_name);if (dm_cache_metadata_abort (cache->cmd)) {DMERR ("%s: failed to abort metadata transaction" , dev_name);set_cache_mode (cache,CM_FAIL ); } + +if (dm_cache_metadata_set_needs_check (cache->cmd)) { +DMERR ("%s: failed to set 'needs_check' flag in metadata" , dev_name); +set_cache_mode (cache,CM_FAIL ); + } }static void metadata_operation_failed (struct cache *cache,const char *op,int r)
@@ -1987,6 +1987,7 @@ static void destroy(struct cache *cache)if (cache->prison)dm_bio_prison_destroy_v2 (cache->prison); +cancel_delayed_work_sync (&cache->waker);if (cache->wq)destroy_workqueue (cache->wq);
drivers/md/dm-thin-metadata.c +9 -0
@@ -660,6 +660,15 @@ static int __open_metadata(struct dm_pool_metadata *pmd) goto bad_cleanup_data_sm; } +/* +* For pool metadata opening process, root setting is redundant +* because it will be set again in __begin_transaction(). But dm +* pool aborting process really needs to get last transaction's +* root to avoid accessing broken btree. +*/ + pmd->root =le64_to_cpu (disk_super->data_mapping_root); + pmd->details_root =le64_to_cpu (disk_super->device_details_root); +__setup_btree_details (pmd);dm_bm_unlock (sblock);
drivers/md/dm-thin.c +14 -4
@@ -2921,6 +2921,8 @@ static void __pool_destroy(struct pool *pool)dm_bio_prison_destroy (pool->prison);dm_kcopyd_client_destroy (pool->copier); +cancel_delayed_work_sync (&pool->waker); +cancel_delayed_work_sync (&pool->no_space_timeout);if (pool->wq)destroy_workqueue (pool->wq);
@@ -3547,20 +3549,28 @@ static int pool_preresume(struct dm_target *ti)*/ r =bind_control_target (pool, ti);if (r) -return r; + goto out; r =maybe_resize_data_dev (ti, &need_commit1);if (r) -return r; + goto out; r =maybe_resize_metadata_dev (ti, &need_commit2);if (r) -return r; + goto out;if (need_commit1 || need_commit2) (void )commit (pool); +out: +/* +* When a thin-pool is PM_FAIL, it cannot be rebuilt if +* bio is in deferred list. Therefore need to return 0 +* to allow pool_resume() to flush IO. +*/ +if (r &&get_pool_mode (pool) ==PM_FAIL ) + r =0 ; -return 0 ; +return r; }
Lines of this file are not shown. View the raw message.
drivers/md/md-bitmap.c +27 -20
47 lines not on this page · raw message
drivers/media/dvb-core/dvb_ca_en50221.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/pci/saa7164/saa7164-core.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/media/pci/solo6x10/solo6x10-core.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/coda/coda-bit.c +10 -4
Lines of this file are not shown. View the raw message.
drivers/media/platform/exynos4-is/fimc-core.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/exynos4-is/media-dev.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/camss/camss-video.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/s5p-mfc/s5p_mfc.c +15 -2
Lines of this file are not shown. View the raw message.
drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/s5p-mfc/s5p_mfc_enc.c +10 -2
Lines of this file are not shown. View the raw message.
drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c +7 -7
Lines of this file are not shown. View the raw message.
drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/vivid/vivid-vid-cap.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/radio/si470x/radio-si470x-usb.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/media/usb/dvb-usb/dvb-usb-init.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/bonding/bond_main.c +27 -22
49 lines not on this page · raw message
drivers/net/can/usb/kvaser_usb/kvaser_usb.h +27 -3
Lines of this file are not shown. View the raw message.
drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c +106 -9
115 lines not on this page · raw message
drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c +136 -31
167 lines not on this page · raw message
drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c +387 -50
437 lines not on this page · raw message
drivers/net/ethernet/amd/xgbe/xgbe-drv.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-i2c.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-mdio.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +8 -15
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igb/igb_main.c +7 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/myricom/myri10ge/myri10ge.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h +2 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/renesas/ravb_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/xilinx/xilinx_emaclite.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ar5523/ar5523.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath9k/hif_usb.c +29 -17
46 lines not on this page · raw message
drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h +10 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +9 -9
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rsi/rsi_91x_core.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/nfc/pn533/usb.c +41 -3
44 lines not on this page · raw message
drivers/power/supply/power_supply_core.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/rapidio/devices/rio_mport_cdev.c +9 -6
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/tty/hvc/hvc_xen.c +29 -17
46 lines not on this page · raw message
drivers/tty/serial/serial-tegra.c +325 -63
388 lines not on this page · raw message
drivers/usb/gadget/function/f_hid.c +215 -56
271 lines not on this page · raw message
drivers/vfio/platform/vfio_platform_common.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/video/fbdev/vermilion/vermilion.c +3 -1
Lines of this file are not shown. View the raw message.
fs/ext4/extents.c +99 -40
139 lines not on this page · raw message
fs/ext4/extents_status.c +371 -18
389 lines not on this page · raw message
fs/ext4/extents_status.h +73 -3
76 lines not on this page · raw message
fs/ext4/inode.c +99 -33
132 lines not on this page · raw message
fs/ext4/super.c +45 -13
58 lines not on this page · raw message
fs/ext4/xattr.c +95 -87
182 lines not on this page · raw message
fs/mbcache.c +83 -38
121 lines not on this page · raw message
fs/overlayfs/dir.c +30 -16
46 lines not on this page · raw message
fs/quota/dquot.c +69 -41
110 lines not on this page · raw message
fs/udf/inode.c +34 -42
76 lines not on this page · raw message
fs/udf/truncate.c +15 -33
48 lines not on this page · raw message
include/linux/mbcache.h +31 -10
41 lines not on this page · raw message
net/nfc/netlink.c +38 -14
52 lines not on this page · raw message
sound/soc/mediatek/mt8173/mt8173-rt5650-rt5514.c +5 -2
Lines of this file are not shown. View the raw message.
tools/arch/parisc/include/uapi/asm/mman.h +6 -6
Lines of this file are not shown. View the raw message.
tools/testing/ktest/ktest.pl +74 -28
102 lines not on this page · raw message
tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc +11 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/powerpc/dscr/dscr_sysfs_test.c +4 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/proc/proc-uptime-002.c +2 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.