Linux 4.14.303
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.303 kernel.
All users of the 4.14 kernel series must upgrade.
The updated 4.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.14.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/driver-api/spi.rst | 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/mt6797.dtsi | 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/s390/include/asm/percpu.h | 2 arch/x86/boot/bioscall.S | 4 arch/x86/kernel/cpu/bugs.c | 2 arch/x86/kernel/cpu/microcode/intel.c | 8 - arch/x86/kernel/uprobes.c | 4 arch/x86/xen/spinlock.c | 6 block/blk-mq-sysfs.c | 11 + block/partition-generic.c | 6 drivers/acpi/acpica/dsmethod.c | 10 + drivers/acpi/acpica/utcopy.c | 7 - drivers/base/class.c | 5 drivers/base/dd.c | 8 - 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 | 8 - 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/st/clkgen-fsyn.c | 5 drivers/cpuidle/dt_idle_states.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/gpu/drm/amd/amdgpu/amdgpu_bios.c | 1 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/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/hw/hfi1/affinity.c | 2 drivers/infiniband/hw/hfi1/firmware.c | 6 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/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 | 2 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 | 2 drivers/media/dvb-core/dvbdev.c | 33 +++- drivers/media/dvb-core/dvbdev.h | 31 ++-- 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-8x16/camss-video.c | 3 drivers/media/platform/s5p-mfc/s5p_mfc.c | 17 ++ 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/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 | 2 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 | 14 -- 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/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 | 2 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/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 | 2 drivers/regulator/da9211-regulator.c | 11 - 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 | 7 - drivers/scsi/ipr.c | 10 + drivers/scsi/snic/snic_disc.c | 3 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/tty/hvc/hvc_xen.c | 46 ++++-- drivers/tty/serial/amba-pl011.c | 3 drivers/tty/serial/pch_uart.c | 4 drivers/tty/serial/sunsab.c | 8 + drivers/uio/uio_dmem_genirq.c | 13 + drivers/usb/common/ulpi.c | 2 drivers/usb/dwc3/core.c | 7 - drivers/usb/gadget/function/f_uvc.c | 5 drivers/usb/gadget/udc/fotg210-udc.c | 12 - drivers/usb/musb/musb_gadget.c | 2 drivers/usb/serial/cp210x.c | 2 drivers/usb/serial/option.c | 3 drivers/usb/storage/alauda.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 fs/binfmt_misc.c | 8 - fs/char_dev.c | 2 fs/cifs/connect.c | 4 fs/ext4/ext4.h | 2 fs/ext4/indirect.c | 9 + fs/ext4/inode.c | 18 ++ fs/ext4/ioctl.c | 10 - fs/ext4/namei.c | 3 fs/ext4/xattr.c | 15 -- 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/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/pnode.c | 2 fs/pstore/Kconfig | 1 fs/pstore/pmsg.c | 7 - fs/pstore/ram.c | 2 fs/pstore/ram_core.c | 6 fs/reiserfs/namei.c | 4 fs/reiserfs/xattr_security.c | 2 fs/sysv/itree.c | 2 fs/udf/balloc.c | 5 fs/udf/inode.c | 84 +++++------- fs/udf/namei.c | 8 - fs/udf/truncate.c | 48 ++---- fs/udf/udfdecl.h | 3 fs/xattr.c | 2 include/asm-generic/tlb.h | 6 include/linux/can/platform/sja1000.h | 2 include/linux/eventfd.h | 2 include/linux/fs.h | 12 + include/linux/once.h | 28 ++++ include/linux/sunrpc/rpc_pipe_fs.h | 5 include/linux/timerqueue.h | 2 include/net/mrp.h | 1 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/power/snapshot.c | 4 kernel/trace/blktrace.c | 3 kernel/trace/trace.c | 15 ++ lib/notifier-error-inject.c | 2 lib/once.c | 30 ++++ 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/inet_hashtables.c | 4 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/sched/ematch.c | 2 net/sched/sch_api.c | 10 + net/sched/sch_atm.c | 5 net/sunrpc/auth_gss/auth_gss.c | 19 ++ net/sunrpc/clnt.c | 2 net/vmw_vsock/vmci_transport.c | 6 security/apparmor/apparmorfs.c | 4 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/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/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/lib/traceevent/Makefile | 2 tools/perf/bench/bench.h | 12 - tools/perf/tests/attr.py | 1 tools/perf/util/auxtrace.c | 2 tools/testing/ktest/ktest.pl | 3 tools/testing/selftests/lib.mk | 5 tools/testing/selftests/powerpc/dscr/dscr_sysfs_test.c | 5 346 files changed, 1912 insertions(+), 795 deletions(-)
Aakarsh Jain (1):
media: s5p-mfc: Add variant data for MFC v7 hardware for Exynos 3250 SoC
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
Akinobu Mita (2):
libfs: add DEFINE_SIMPLE_ATTRIBUTE_SIGNED for signed value lib/notifier-error-inject: fix error when writing -errno to debugfs file
Al Viro (1):
alpha: fix syscall entry in !AUDUT_SYSCALL case
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 (1):
arm64: dts: mediatek: mt6797: Fix 26M oscillator unit name
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 (2):
ext4: add inode table check in __ext4_get_inode_loc to aovid possible infinite loop
ext4: fix bug_on in __es_tree_search caused by bad boot loader inode
Barnabás Pőcze (1):
timerqueue: Use rb_entry_safe() in timerqueue_getnext()
Ben Hutchings (1):
libtraceevent: Fix build with binutils 2.35
Biju Das (1):
ravb: Fix "failed to switch device to config mode" message during unbind
Bitterblue Smith (1):
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 (4):
perf: Fix possible memleak in pmu_dev_alloc()
fs: sysv: Fix sysv_nblocks() returns wrong value
scsi: fcoe: Fix transport not deattached when fcoe_if_init() fails
vme: Fix error not catched in fake_init()
Christian Brauner (1):
pnode: terminate at peers of source
Christophe JAILLET (3):
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()
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 (2):
bonding: uninitialized variable in bond_miimon_inspect()
staging: rtl8192u: Fix use after free in ieee80211_rx()
Daniil Tatianin (1):
qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure
Deren Wu (1):
mmc: vub300: fix warning - do not call blocking ops when !TASK_RUNNING
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()
Eric Dumazet (2):
once: add DO_ONCE_SLOW() for sleepable contexts
net: stream: purge sk_error_queue in sk_stream_kill_queues()
Eric Pilmore (1):
ntb_netdev: Use dev_kfree_skb_any() in interrupt context
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 (2):
usb: dwc3: core: defer probe on ulpi_read_id timeout Revert "usb: ulpi: defer ulpi_register on ulpi_read_id timeout"
Frederick Lawler (1):
net: sched: disallow noqueue for qdisc classes
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 (1):
netfilter: ipset: Fix overflow before widen in the bitmap_ip_create() function.
Greg Kroah-Hartman (1):
Linux 4.14.303
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 (2):
ASoC: rt5670: Remove unbalanced pm_runtime_put()
platform/x86: sony-laptop: Don't turn off 0x153 keyboard backlight during probe
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 (9):
udf: Discard preallocation before extending file with a hole
udf: Drop unused arguments of udf_delete_aext()
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
udf: Fix extension of the last extent in the file
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
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
John Stultz (2):
pstore: Switch pmsg_lock to an rt_mutex to avoid priority inversion
pstore: Make sure CONFIG_PSTORE_PMSG selects CONFIG_RT_MUTEXES
Jonathan Corbet (1):
docs: Fix the docs build with Sphinx 6.0
Jonathan Neuschäfer (1):
spi: Update reference to struct spi_controller
Kajol Jain (1):
powerpc/hv-gpci: Fix hv_gpci event list
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
Kunihiko Hayashi (1):
mmc: f-sdh30: Add quirks for broken timeout clock capability
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
Liang He (1):
media: c8sectpfe: Add of_node_put() when breaking out of loop
Lin Ma (2):
media: dvbdev: adopts refcnt to avoid UAF
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 (2):
dm thin: Fix UAF in run_timer_softirq()
dm cache: Fix UAF in destroy()
Luís Henriques (1):
ext4: fix error code return to user-space in ext4_get_branch()
Marcus Folkesson (1):
HID: hid-sensor-custom: set fixed size for custom attributes
Marek Szyprowski (1):
ASoC: wm8994: Fix potential deadlock
Mark Brown (1):
ASoC: ops: Check bounds for second channel in snd_soc_put_volsw_sx()
Matt Redfearn (1):
include/uapi/linux/swab: Fix potentially missing __always_inline
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
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 (7):
net: ethernet: ti: Fix return type of netcp_ndo_start_xmit()
hamradio: baycom_epp: Fix return type of baycom_send_packet() 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
Paulo Alcantara (1):
cifs: fix confusing debug message
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 (1):
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
Rasmus Villemoes (1):
net: loopback: use NET_NAME_PREDICTABLE for name_assign_type
Ricardo Ribalda (2):
media: i2c: ad5820: Fix error path
regulator: da9211: Use irq handler when ready
Rickard x Andersson (1):
gcov: add support for checksum field
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
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
Schspa Shi (1):
mrp: introduce active flags to prevent UAF when applicant uninit
Shang XiaoJing (5):
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()
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()Simon Ser (1):
drm/connector: send hotplug uevent on connector cleanup
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 (1):
ktest.pl minconfig: Unset configs instead of just removing them
Subash Abhinov Kasiviswanathan (1):
skbuff: Account for tail adjustment during pull operations
Sungwoo Kim (1):
Bluetooth: L2CAP: Fix u8 overflow
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 (1):
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 (1):
cpuidle: dt: Return the correct numbers of parsed idle states
Ville Syrjälä (1):
drm/sti: Use drm_mode_copy()
Vladimir Zapolskiy (1):
media: camss: Clean up received buffers on failed start of streaming
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 (1):
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 (4):
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()
Xie Shaowen (1):
macintosh/macio-adb: check the return value of ioremap()
Xiongfeng Wang (7):
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 (6):
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 (49):
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: 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 (4):
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
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 (5):
media: platform: exynos4-is: Fix error handling in fimc_md_init()
drivers: net: qlcnic: Fix potential memory leak in qlcnic_sriov_init()
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 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 Yuchen (1):
ipmi: fix memleak when unload ipmi driver
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 (1):
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
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()
xiongxin (1):
PM: hibernate: Fix mistake in kerneldoc comment
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/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 = 14 -SUBLEVEL = 302 +SUBLEVEL = 303 EXTRAVERSION = NAME = Petit Gorille
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
@@ -111,7 +111,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
@@ -621,7 +621,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
@@ -116,7 +116,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>;
@@ -135,7 +135,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
@@ -55,6 +55,12 @@ stdout-path = &uart0; }; + aliases { + ethernet0 = ð0; + ethernet1 = ð1; + ethernet2 = ð2; + }; + memory { device_type = "memory"; reg = <0x00000000 0x40000000>; /* 1024 MB */
@@ -324,7 +330,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
@@ -121,7 +121,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>;
@@ -140,7 +140,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>;
@@ -162,7 +162,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
@@ -493,7 +493,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>;
@@ -512,7 +512,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>;
@@ -534,7 +534,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
@@ -134,7 +134,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>;
@@ -152,7 +152,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>;
@@ -170,7 +170,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>;
@@ -188,7 +188,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
@@ -149,7 +149,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>;
@@ -167,7 +167,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>;
@@ -185,7 +185,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>;
@@ -203,7 +203,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>;
@@ -221,7 +221,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>;
@@ -239,7 +239,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>;
@@ -257,7 +257,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>;
@@ -275,7 +275,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
@@ -1534,7 +1534,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/mt6797.dtsi +1 -1
@@ -101,7 +101,7 @@ }; }; - clk26m: oscillator@0 { + clk26m: oscillator-26m { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <26000000>;
arch/mips/bcm63xx/clk.c +2 -0
@@ -317,6 +317,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
@@ -48,25 +48,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
@@ -385,3 +385,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
@@ -716,6 +716,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) {
@@ -727,16 +728,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);
@@ -1331,6 +1336,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
@@ -138,6 +138,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
@@ -323,6 +323,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/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/kernel/cpu/bugs.c +2 -0
@@ -1776,6 +1776,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/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
@@ -718,8 +718,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);
@@ -748,6 +749,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/spinlock.c +3 -3
@@ -81,6 +81,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,
@@ -91,7 +92,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);
@@ -104,6 +104,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.
@@ -114,8 +116,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);
block/blk-mq-sysfs.c +9 -2
@@ -235,7 +235,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 ;
@@ -247,9 +247,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 +6 -0
@@ -270,6 +270,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 ;
@@ -283,6 +284,11 @@ void delete_partition(struct gendisk *disk, int partno)kobject_put (part->holder_dir);device_del (part_to_dev (part)); + bdev =bdget (part_devt (part)); +if (bdev) { +remove_inode_hash (bdev->bd_inode); +bdput (bdev); + }hd_struct_kill (part); }
drivers/acpi/acpica/dsmethod.c +8 -2
@@ -551,7 +551,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 ];
@@ -563,7 +563,7 @@ acpi_ds_call_control_method(struct acpi_thread_state *thread,ACPI_FREE (info);if (ACPI_FAILURE (status)) { - goto cleanup; + goto pop_walk_state; }/*
@@ -595,6 +595,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
@@ -950,13 +950,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/base/class.c +5 -0
@@ -187,6 +187,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 +6 -2
@@ -785,8 +785,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)/* Needed for USB */
drivers/bluetooth/btusb.c +3 -3
@@ -490,13 +490,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
@@ -392,7 +392,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
@@ -264,7 +264,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
@@ -715,7 +715,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 +6 -2
@@ -2931,12 +2931,16 @@ static void deliver_smi_err_response(ipmi_smi_t 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 (ipmi_smi_t intf)
drivers/char/tpm/tpm_crb.c +21 -10
@@ -257,7 +257,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 ; }
@@ -613,12 +613,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; + }/* The reason for the extra quirk is that the PTT in 4th Gen Core CPUs * report only ACPI start but in practice seems to require both
@@ -638,7 +642,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;
@@ -647,17 +652,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
@@ -105,6 +105,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 ;
@@ -112,8 +113,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 ;
@@ -121,9 +121,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/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/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/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
@@ -1276,6 +1276,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;
@@ -1307,6 +1308,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,
@@ -1315,6 +1317,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,
@@ -1323,6 +1326,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,
@@ -1331,6 +1335,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)
@@ -1470,6 +1475,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/gpu/drm/amd/amdgpu/amdgpu_bios.c +1 -0
@@ -307,6 +307,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/drm_connector.c +3 -0
@@ -352,6 +352,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
@@ -215,6 +215,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) {
@@ -600,13 +601,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;
@@ -619,13 +621,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 &&
@@ -637,15 +639,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
@@ -924,7 +924,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 );
@@ -988,8 +988,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/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
@@ -859,7 +859,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
@@ -61,6 +61,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 ;
@@ -2616,6 +2619,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
@@ -4477,6 +4477,9 @@ static const struct wacom_features wacom_features_0x361 =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
@@ -4550,6 +4553,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
@@ -237,6 +237,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
@@ -495,6 +495,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
@@ -282,10 +282,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);
@@ -319,7 +319,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/hw/hfi1/affinity.c +2 -0
@@ -165,6 +165,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
@@ -1761,6 +1761,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;
@@ -1769,6 +1770,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; }
@@ -1779,6 +1781,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,
@@ -1798,6 +1801,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; }
@@ -1844,6 +1848,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;
@@ -1868,6 +1873,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/sw/rxe/rxe_qp.c +3 -3
@@ -866,12 +866,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);
@@ -170,6 +175,8 @@ static struct rtnl_link_ops ipoib_link_ops __read_mostly = { .dellink = ipoib_unregister_child_dev, .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
@@ -1089,14 +1089,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);
@@ -1105,7 +1103,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; }/*
@@ -1114,7 +1112,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;
@@ -1222,7 +1219,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
@@ -2919,6 +2919,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
@@ -624,6 +624,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/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
@@ -1631,16 +1631,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);
@@ -1653,10 +1656,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 );
@@ -1340,7 +1344,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
@@ -107,6 +107,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
@@ -426,7 +426,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
@@ -1019,16 +1019,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)
@@ -2034,6 +2034,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 +2 -0
@@ -2932,6 +2932,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);
drivers/md/md.c +6 -3
@@ -418,13 +418,14 @@ static void md_end_flush(struct bio *bio)struct md_rdev *rdev = bio->bi_private;struct mddev *mddev = rdev->mddev; +bio_put (bio); +rdev_dec_pending (rdev, mddev);if (atomic_dec_and_test (&mddev->flush_pending)) {/* The pre-request flush has finished */ queue_work (md_wq, &mddev->flush_work); } -bio_put (bio); }static void md_submit_flush_data (struct work_struct *ws);
@@ -805,10 +806,12 @@ static void super_written(struct bio *bio) }else clear_bit (LastDev, &rdev->flags); +bio_put (bio); + +rdev_dec_pending (rdev, mddev); +if (atomic_dec_and_test (&mddev->pending_writes))wake_up (&mddev->sb_wait); -rdev_dec_pending (rdev, mddev); -bio_put (bio); } void md_super_write(struct mddev *mddev, struct md_rdev *rdev,
drivers/md/raid1.c +1 -0
@@ -3105,6 +3105,7 @@ static int raid1_run(struct mddev *mddev)* RAID1 needs at least one disk in active */ if (conf->raid_disks - mddev->degraded <1 ) { +md_unregister_thread (&conf->thread); ret = -EINVAL ; goto abort; }
drivers/media/dvb-core/dmxdev.c +8 -0
@@ -738,6 +738,11 @@ static int dvb_demux_open(struct inode *inode, struct file *file)if (mutex_lock_interruptible (&dmxdev->mutex))return -ERESTARTSYS ; +if (dmxdev->exit) { +mutex_unlock (&dmxdev->mutex); +return -ENODEV ; + } +for (i =0 ; i < dmxdev->filternum; i++)if (dmxdev->filter[i].state ==DMXDEV_STATE_FREE )break ;
@@ -1253,7 +1258,10 @@ EXPORT_SYMBOL(dvb_dmxdev_init);void dvb_dmxdev_release (struct dmxdev *dmxdev) { +mutex_lock (&dmxdev->mutex); dmxdev->exit =1 ; +mutex_unlock (&dmxdev->mutex); +if (dmxdev->dvbdev->users >1 ) {wait_event (dmxdev->dvbdev->wait_queue, dmxdev->dvbdev->users ==1 );
drivers/media/dvb-core/dvb_ca_en50221.c +1 -1
@@ -167,7 +167,7 @@ static void dvb_ca_private_free(struct dvb_ca_private *ca) {unsigned int i; -dvb_free_device (ca->dvbdev); +dvb_device_put (ca->dvbdev);for (i =0 ; i < ca->slot_count; i++)vfree (ca->slot_info[i].rx_buffer.data);
drivers/media/dvb-core/dvb_frontend.c +1 -1
@@ -146,7 +146,7 @@ static void __dvb_frontend_free(struct dvb_frontend *fe)struct dvb_frontend_private *fepriv = fe->frontend_priv;if (fepriv) -dvb_free_device (fepriv->dvbdev); +dvb_device_put (fepriv->dvbdev);dvb_frontend_invoke_release (fe, fe->ops.release);
drivers/media/dvb-core/dvbdev.c +26 -7
@@ -84,7 +84,7 @@ static int dvb_device_open(struct inode *inode, struct file *file) new_fops =fops_get (dvbdev->fops);if (!new_fops) goto fail; - file->private_data = dvbdev; + file->private_data =dvb_device_get (dvbdev);replace_fops (file, new_fops);if (file->f_op->open) err = file->f_op->open (inode, file);
@@ -148,6 +148,9 @@ int dvb_generic_release(struct inode *inode, struct file *file) } dvbdev->users++; + +dvb_device_put (dvbdev); +return 0 ; }EXPORT_SYMBOL (dvb_generic_release);
@@ -319,6 +322,7 @@ static int dvb_create_media_entity(struct dvb_device *dvbdev, GFP_KERNEL);if (!dvbdev->pads) {kfree (dvbdev->entity); + dvbdev->entity =NULL ;return -ENOMEM ; } }
@@ -463,6 +467,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev, }memcpy (dvbdev, template,sizeof (struct dvb_device )); +kref_init (&dvbdev->ref); dvbdev->type = type; dvbdev->id = id; dvbdev->adapter = adap;
@@ -493,7 +498,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,#endif dvbdev->minor = minor; - dvb_minors[minor] = dvbdev; + dvb_minors[minor] =dvb_device_get (dvbdev);up_write (&minor_rwsem); ret =dvb_register_media_device (dvbdev, type, minor, demux_sink_pads);
@@ -534,6 +539,7 @@ void dvb_remove_device(struct dvb_device *dvbdev)down_write (&minor_rwsem); dvb_minors[dvbdev->minor] =NULL ; +dvb_device_put (dvbdev);up_write (&minor_rwsem);dvb_media_device_free (dvbdev);
@@ -545,21 +551,34 @@ void dvb_remove_device(struct dvb_device *dvbdev)EXPORT_SYMBOL (dvb_remove_device); -void dvb_free_device (struct dvb_device *dvbdev) +static void dvb_free_device (struct kref *ref) { -if (!dvbdev) -return ; + struct dvb_device *dvbdev = container_of(ref, struct dvb_device, ref);kfree (dvbdev->fops);kfree (dvbdev); } -EXPORT_SYMBOL (dvb_free_device); + + +struct dvb_device *dvb_device_get (struct dvb_device *dvbdev) +{ +kref_get (&dvbdev->ref); +return dvbdev; +} +EXPORT_SYMBOL (dvb_device_get); + + +void dvb_device_put (struct dvb_device *dvbdev) +{ +if (dvbdev) +kref_put (&dvbdev->ref, dvb_free_device); +}void dvb_unregister_device (struct dvb_device *dvbdev) {dvb_remove_device (dvbdev); -dvb_free_device (dvbdev); +dvb_device_put (dvbdev); }EXPORT_SYMBOL (dvb_unregister_device);
drivers/media/dvb-core/dvbdev.h +17 -14
@@ -133,6 +133,7 @@ struct dvb_adapter {*/ struct dvb_device {struct list_head list_head; +struct kref ref;const struct file_operations *fops;struct dvb_adapter *adapter;int type;
@@ -164,6 +165,20 @@ struct dvb_device {void *priv; }; +/** +* dvb_device_get - Increase dvb_device reference +* +* @dvbdev: pointer to struct dvb_device +*/ +struct dvb_device *dvb_device_get (struct dvb_device *dvbdev); + +/** +* dvb_device_get - Decrease dvb_device reference +* +* @dvbdev: pointer to struct dvb_device +*/ +void dvb_device_put (struct dvb_device *dvbdev); +/** * dvb_register_adapter - Registers a new DVB adapter *
@@ -210,29 +225,17 @@ int dvb_register_device(struct dvb_adapter *adap,/** * dvb_remove_device - Remove a registered DVB device * -* This does not free memory. To do that, call dvb_free_device(). +* This does not free memory. dvb_free_device() will do that when +* reference counter is empty * * @dvbdev: pointer to struct dvb_device */ void dvb_remove_device (struct dvb_device *dvbdev); -/** -* dvb_free_device - Free memory occupied by a DVB device. -* -* Call dvb_unregister_device() before calling this function. -* -* @dvbdev: pointer to struct dvb_device -*/ -void dvb_free_device (struct dvb_device *dvbdev);/** * dvb_unregister_device - Unregisters a DVB device * -* This is a combination of dvb_remove_device() and dvb_free_device(). -* Using this function is usually a mistake, and is often an indicator -* for a use-after-free bug (when a userspace process keeps a file -* handle to a detached device). -* * @dvbdev: pointer to struct dvb_device */ void dvb_unregister_device (struct dvb_device *dvbdev);
drivers/media/dvb-frontends/bcm3510.c +1 -0
@@ -649,6 +649,7 @@ static int bcm3510_download_firmware(struct dvb_frontend* fe)deb_info ("firmware chunk, addr: 0x%04x, len: 0x%04x, total length: 0x%04zx\n" ,addr,len,fw->size);if ((ret =bcm3510_write_ram (st,addr,&b[i+4 ],len)) <0 ) {err ("firmware download failed: %d\n" ,ret); +release_firmware (fw);return ret; } i +=4 + len;
drivers/media/dvb-frontends/stv0288.c +2 -3
@@ -458,9 +458,8 @@ static int stv0288_set_frontend(struct dvb_frontend *fe)struct stv0288_state *state = fe->demodulator_priv;struct dtv_frontend_properties *c = &fe->dtv_property_cache; -char tm; -unsigned char tda[3 ]; -u8 reg, time_out =0 ; +u8 tda[3 ], reg, time_out =0 ; +s8 tm;dprintk ("%s : FE_SET_FRONTEND\n" , __func__);
drivers/media/i2c/ad5820.c +5 -5
@@ -321,18 +321,18 @@ static int ad5820_probe(struct i2c_client *client, ret =media_entity_pads_init (&coil->subdev.entity,0 ,NULL );if (ret <0 ) - goto cleanup2; + goto clean_mutex; ret =v4l2_async_register_subdev (&coil->subdev);if (ret <0 ) - goto cleanup; + goto clean_entity;return ret; -cleanup2: -mutex_destroy (&coil->power_lock); -cleanup: +clean_entity:media_entity_cleanup (&coil->subdev.entity); +clean_mutex: +mutex_destroy (&coil->power_lock);return ret; }
drivers/media/pci/saa7164/saa7164-core.c +3 -1
@@ -1240,7 +1240,7 @@ static int saa7164_initdev(struct pci_dev *pci_dev,if (saa7164_dev_setup (dev) <0 ) { err = -EINVAL ; - goto fail_free; + goto fail_dev; }/* print pci info */
@@ -1408,6 +1408,8 @@ static int saa7164_initdev(struct pci_dev *pci_dev, fail_irq:saa7164_dev_unregister (dev); +fail_dev: +pci_disable_device (pci_dev); fail_free:v4l2_device_unregister (&dev->v4l2_dev);kfree (dev);
drivers/media/pci/solo6x10/solo6x10-core.c +1 -0
@@ -428,6 +428,7 @@ static int solo_sysfs_init(struct solo_dev *solo_dev) solo_dev->nr_chans);if (device_register (dev)) { +put_device (dev); dev->parent =NULL ;return -ENOMEM ; }
drivers/media/platform/coda/coda-bit.c +10 -4
@@ -637,7 +637,7 @@ static void coda_setup_iram(struct coda_ctx *ctx)/* Only H.264BP and H.263P3 are considered */ iram_info->buf_dbk_y_use =coda_iram_alloc (iram_info, w64); iram_info->buf_dbk_c_use =coda_iram_alloc (iram_info, w64); -if (!iram_info->buf_dbk_c_use) +if (!iram_info->buf_dbk_y_use || !iram_info->buf_dbk_c_use) goto out; iram_info->axi_sram_use |= dbk_bits;
@@ -661,7 +661,7 @@ static void coda_setup_iram(struct coda_ctx *ctx) iram_info->buf_dbk_y_use =coda_iram_alloc (iram_info, w128); iram_info->buf_dbk_c_use =coda_iram_alloc (iram_info, w128); -if (!iram_info->buf_dbk_c_use) +if (!iram_info->buf_dbk_y_use || !iram_info->buf_dbk_c_use) goto out; iram_info->axi_sram_use |= dbk_bits;
@@ -865,10 +865,16 @@ static int coda_start_encoding(struct coda_ctx *ctx) }if (dst_fourcc ==V4L2_PIX_FMT_JPEG ) { -if (!ctx->params.jpeg_qmat_tab[0 ]) +if (!ctx->params.jpeg_qmat_tab[0 ]) { ctx->params.jpeg_qmat_tab[0 ] =kmalloc (64 ,GFP_KERNEL ); -if (!ctx->params.jpeg_qmat_tab[1 ]) +if (!ctx->params.jpeg_qmat_tab[0 ]) +return -ENOMEM ; + } +if (!ctx->params.jpeg_qmat_tab[1 ]) { ctx->params.jpeg_qmat_tab[1 ] =kmalloc (64 ,GFP_KERNEL ); +if (!ctx->params.jpeg_qmat_tab[1 ]) +return -ENOMEM ; + }coda_set_jpeg_compression_quality (ctx, ctx->params.jpeg_quality); }
drivers/media/platform/exynos4-is/fimc-core.c +1 -1
@@ -1255,7 +1255,7 @@ int __init fimc_register_driver(void)return platform_driver_register (&fimc_driver); } -void __exit fimc_unregister_driver(void) +void fimc_unregister_driver (void ) {platform_driver_unregister (&fimc_driver); }
drivers/media/platform/exynos4-is/media-dev.c +5 -1
@@ -1561,7 +1561,11 @@ static int __init fimc_md_init(void)if (ret)return ret; -return platform_driver_register (&fimc_md_driver); + ret =platform_driver_register (&fimc_md_driver); +if (ret) +fimc_unregister_driver (); + +return ret; } static void __exit fimc_md_exit(void)
drivers/media/platform/qcom/camss-8x16/camss-video.c +2 -1
@@ -353,7 +353,7 @@ static int video_start_streaming(struct vb2_queue *q, unsigned int count) ret =media_pipeline_start (&vdev->entity, &video->pipe);if (ret <0 ) -return ret; + goto flush_buffers; ret =video_check_format (video);if (ret <0 )
@@ -382,6 +382,7 @@ static int video_start_streaming(struct vb2_queue *q, unsigned int count) error:media_pipeline_stop (&vdev->entity); +flush_buffers: video->ops->flush_buffers (video,VB2_BUF_STATE_QUEUED );return ret;
drivers/media/platform/s5p-mfc/s5p_mfc.c +15 -2
@@ -1582,8 +1582,18 @@ static struct s5p_mfc_variant mfc_drvdata_v7 = { .port_num = MFC_NUM_PORTS_V7, .buf_size = &buf_size_v7, .fw_name[0] = "s5p-mfc-v7.fw", - .clk_names = {"mfc", "sclk_mfc"}, - .num_clocks = 2, + .clk_names = {"mfc"}, + .num_clocks = 1, +}; + +static struct s5p_mfc_variant mfc_drvdata_v7_3250 = { + .version =MFC_VERSION_V7 , + .version_bit =MFC_V7_BIT , + .port_num =MFC_NUM_PORTS_V7 , + .buf_size = &buf_size_v7, + .fw_name[0 ] ="s5p-mfc-v7.fw" , + .clk_names = {"mfc" ,"sclk_mfc" }, + .num_clocks =2 , }; static struct s5p_mfc_buf_size_v6 mfc_buf_size_v8 = {
@@ -1630,6 +1640,9 @@ static const struct of_device_id exynos_mfc_match[] = { }, { .compatible = "samsung,mfc-v7", .data = &mfc_drvdata_v7, + }, { + .compatible = "samsung,exynos3250-mfc", + .data = &mfc_drvdata_v7_3250, }, { .compatible = "samsung,mfc-v8", .data = &mfc_drvdata_v8,
drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c +1 -0
@@ -947,6 +947,7 @@ static int configure_channels(struct c8sectpfei *fei)if (ret) {dev_err (fei->dev,"configure_memdma_and_inputblock failed\n" ); +of_node_put (child); goto err_unmap; } index++;
drivers/media/platform/vivid/vivid-vid-cap.c +1 -0
@@ -938,6 +938,7 @@ int vivid_vid_cap_s_selection(struct file *file, void *fh, struct v4l2_selectionif (dev->has_compose_cap) {v4l2_rect_set_min_size (compose, &min_rect);v4l2_rect_set_max_size (compose, &max_rect); +v4l2_rect_map_inside (compose, &fmt); } dev->fmt_cap_rect = fmt;tpg_s_buf_height (&dev->tpg, fmt.height);
drivers/media/radio/si470x/radio-si470x-usb.c +3 -1
@@ -736,8 +736,10 @@ static int si470x_usb_driver_probe(struct usb_interface *intf,/* start radio */ retval =si470x_start_usb (radio); -if (retval <0 ) +if (retval <0 && !radio->int_in_running) goto err_buf; +else if (retval <0 )/* in case of radio->int_in_running == 1 */ + goto err_all;/* set initial frequency */ si470x_set_freq (radio,87.5 *FREQ_MUL );/* available in all regions */
drivers/media/rc/imon.c +3 -3
@@ -637,15 +637,14 @@ static int send_packet(struct imon_context *ictx)pr_err_ratelimited ("error submitting urb(%d)\n" , retval); }else {/* Wait for transmission to complete (or abort) */ -mutex_unlock (&ictx->lock); retval =wait_for_completion_interruptible ( &ictx->tx.finished);if (retval) {usb_kill_urb (ictx->tx_urb);pr_err_ratelimited ("task interrupted\n" ); } -mutex_lock (&ictx->lock); + ictx->tx.busy = false; retval = ictx->tx.status;if (retval)pr_err_ratelimited ("packet tx failed (%d)\n" , retval);
@@ -952,7 +951,8 @@ static ssize_t vfd_write(struct file *file, const char __user *buf,return -ENODEV ; } -mutex_lock (&ictx->lock); +if (mutex_lock_interruptible (&ictx->lock)) +return -ERESTARTSYS ;if (!ictx->dev_present_intf0) {pr_err_ratelimited ("no iMON device present\n" );
drivers/media/usb/dvb-usb/az6027.c +4 -0
@@ -978,6 +978,10 @@ static int az6027_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[], int nif (msg[i].addr ==0x99 ) { req =0xBE ; index =0 ; +if (msg[i].len <1 ) { + i = -EOPNOTSUPP ; +break ; + } value = msg[i].buf[0 ] &0x00ff ; length =1 ;az6027_usb_out_op (d, req, value, index, data, length);
drivers/media/usb/dvb-usb/dvb-usb-init.c +3 -1
@@ -84,7 +84,7 @@ static int dvb_usb_adapter_init(struct dvb_usb_device *d, short *adapter_nrs) ret =dvb_usb_adapter_stream_init (adap);if (ret) -return ret; + goto stream_init_err; ret =dvb_usb_adapter_dvb_init (adap, adapter_nrs);if (ret)
@@ -117,6 +117,8 @@ static int dvb_usb_adapter_init(struct dvb_usb_device *d, short *adapter_nrs)dvb_usb_adapter_dvb_exit (adap); dvb_init_err:dvb_usb_adapter_stream_exit (adap); +stream_init_err: +kfree (adap->priv);return ret; }
drivers/misc/cxl/guest.c +14 -10
@@ -971,10 +971,10 @@ int cxl_guest_init_afu(struct cxl *adapter, int slice, struct device_node *afu_n* if it returns an error! */ if ((rc =cxl_register_afu (afu))) - goto err_put1; + goto err_put_dev;if ((rc =cxl_sysfs_afu_add (afu))) - goto err_put1; + goto err_del_dev;/* * pHyp doesn't expose the programming models supported by the
@@ -990,7 +990,7 @@ int cxl_guest_init_afu(struct cxl *adapter, int slice, struct device_node *afu_n afu->modes_supported =CXL_MODE_DIRECTED ;if ((rc =cxl_afu_select_best_mode (afu))) - goto err_put2; + goto err_remove_sysfs; adapter->afu[afu->slice] = afu;
@@ -1010,10 +1010,12 @@ int cxl_guest_init_afu(struct cxl *adapter, int slice, struct device_node *afu_nreturn 0 ; -err_put2: +err_remove_sysfs:cxl_sysfs_afu_remove (afu); -err_put1: -device_unregister (&afu->dev); +err_del_dev: +device_del (&afu->dev); +err_put_dev: +put_device (&afu->dev); free = false;guest_release_serr_irq (afu); err2:
@@ -1147,18 +1149,20 @@ struct cxl *cxl_guest_init_adapter(struct device_node *np, struct platform_devic* even if it returns an error! */ if ((rc =cxl_register_adapter (adapter))) - goto err_put1; + goto err_put_dev;if ((rc =cxl_sysfs_adapter_add (adapter))) - goto err_put1; + goto err_del_dev;/* release the context lock as the adapter is configured */ cxl_adapter_context_unlock (adapter);return adapter; -err_put1: -device_unregister (&adapter->dev); +err_del_dev: +device_del (&adapter->dev); +err_put_dev: +put_device (&adapter->dev); free = false;cxl_guest_remove_chardev (adapter); err1:
drivers/misc/cxl/pci.c +13 -8
@@ -395,6 +395,7 @@ int cxl_calc_capp_routing(struct pci_dev *dev, u64 *chipid, rc =get_phb_index (np, phb_index);if (rc) {pr_err ("cxl: invalid phb index\n" ); +of_node_put (np);return rc; }
@@ -1398,10 +1399,10 @@ static int pci_init_afu(struct cxl *adapter, int slice, struct pci_dev *dev)* if it returns an error! */ if ((rc =cxl_register_afu (afu))) - goto err_put1; + goto err_put_dev;if ((rc =cxl_sysfs_afu_add (afu))) - goto err_put1; + goto err_del_dev; adapter->afu[afu->slice] = afu;
@@ -1410,10 +1411,12 @@ static int pci_init_afu(struct cxl *adapter, int slice, struct pci_dev *dev)return 0 ; -err_put1: +err_del_dev: +device_del (&afu->dev); +err_put_dev:pci_deconfigure_afu (afu);cxl_debugfs_afu_remove (afu); -device_unregister (&afu->dev); +put_device (&afu->dev);return rc; err_free_native:
@@ -1874,23 +1877,25 @@ static struct cxl *cxl_pci_init_adapter(struct pci_dev *dev)* even if it returns an error! */ if ((rc =cxl_register_adapter (adapter))) - goto err_put1; + goto err_put_dev;if ((rc =cxl_sysfs_adapter_add (adapter))) - goto err_put1; + goto err_del_dev;/* Release the context lock as adapter is configured */ cxl_adapter_context_unlock (adapter);return adapter; -err_put1: +err_del_dev: +device_del (&adapter->dev); +err_put_dev:/* This should mirror cxl_remove_adapter, except without the * sysfs parts */ cxl_debugfs_adapter_remove (adapter);cxl_deconfigure_adapter (adapter); -device_unregister (&adapter->dev); +put_device (&adapter->dev);return ERR_PTR (rc); err_release:
drivers/misc/sgi-gru/grufault.c +11 -2
@@ -661,6 +661,7 @@ int gru_handle_user_call_os(unsigned long cb)if ((cb & (GRU_HANDLE_STRIDE -1 )) || ucbnum >=GRU_NUM_CB )return -EINVAL ; +again: gts =gru_find_lock_gts (cb);if (!gts)return -EINVAL ;
@@ -669,7 +670,11 @@ int gru_handle_user_call_os(unsigned long cb)if (ucbnum >= gts->ts_cbr_au_count *GRU_CBR_AU_SIZE ) goto exit; -gru_check_context_placement (gts); +if (gru_check_context_placement (gts)) { +gru_unlock_gts (gts); +gru_unload_context (gts,1 ); + goto again; + }/* * CCH may contain stale data if ts_force_cch_reload is set.
@@ -887,7 +892,11 @@ int gru_set_context_option(unsigned long arg) }else { gts->ts_user_blade_id = req.val1; gts->ts_user_chiplet_id = req.val0; -gru_check_context_placement (gts); +if (gru_check_context_placement (gts)) { +gru_unlock_gts (gts); +gru_unload_context (gts,1 ); +return ret; + } }break ;case sco_gseg_owner:
drivers/misc/sgi-gru/grumain.c +18 -4
@@ -729,9 +729,10 @@ static int gru_check_chiplet_assignment(struct gru_state *gru,* chiplet. Misassignment can occur if the process migrates to a different * blade or if the user changes the selected blade/chiplet. */ -void gru_check_context_placement (struct gru_thread_state *gts) +int gru_check_context_placement (struct gru_thread_state *gts) {struct gru_state *gru; +int ret =0 ;/* * If the current task is the context owner, verify that the
@@ -739,15 +740,23 @@ void gru_check_context_placement(struct gru_thread_state *gts)* references. Pthread apps use non-owner references to the CBRs. */ gru = gts->ts_gru; +/* +* If gru or gts->ts_tgid_owner isn't initialized properly, return +* success to indicate that the caller does not need to unload the +* gru context.The caller is responsible for their inspection and +* reinitialization if needed. +*/ if (!gru || gts->ts_tgid_owner != current->tgid) -return ; +return ret;if (!gru_check_chiplet_assignment (gru, gts)) {STAT (check_context_unload); -gru_unload_context (gts,1 ); + ret = -EINVAL ; }else if (gru_retarget_intr (gts)) {STAT (check_context_retarget_intr); } + +return ret; }
@@ -947,7 +956,12 @@ int gru_fault(struct vm_fault *vmf)mutex_lock (>s->ts_ctxlock);preempt_disable (); -gru_check_context_placement (gts); +if (gru_check_context_placement (gts)) { +preempt_enable (); +mutex_unlock (>s->ts_ctxlock); +gru_unload_context (gts,1 ); +return VM_FAULT_NOPAGE ; + }if (!gts->ts_gru) {STAT (load_user_context);
drivers/misc/sgi-gru/grutables.h +1 -1
@@ -651,7 +651,7 @@ extern int gru_user_flush_tlb(unsigned long arg);extern int gru_user_unload_context (unsigned long arg);extern int gru_get_exception_detail (unsigned long arg);extern int gru_set_context_option (unsigned long address); -extern void gru_check_context_placement (struct gru_thread_state *gts); +extern int gru_check_context_placement (struct gru_thread_state *gts);extern int gru_cpu_fault_map_id (void );extern struct vm_area_struct *gru_find_vma (unsigned long vaddr);extern void gru_flush_all_tlb (struct gru_state *gru);
drivers/misc/tifm_7xx1.c +1 -1
@@ -194,7 +194,7 @@ static void tifm_7xx1_switch_media(struct work_struct *work)spin_unlock_irqrestore (&fm->lock, flags); }if (sock) -tifm_free_device (&sock->dev); +put_device (&sock->dev); }spin_lock_irqsave (&fm->lock, flags); }
drivers/mmc/host/mmci.c +3 -1
@@ -1792,7 +1792,9 @@ static int mmci_probe(struct amba_device *dev,pm_runtime_set_autosuspend_delay (&dev->dev,50 );pm_runtime_use_autosuspend (&dev->dev); -mmc_add_host (mmc); + ret =mmc_add_host (mmc); +if (ret) + goto clk_disable;pm_runtime_put (&dev->dev);return 0 ;
drivers/mmc/host/moxart-mmc.c +3 -1
@@ -660,7 +660,9 @@ static int moxart_probe(struct platform_device *pdev) goto out;dev_set_drvdata (dev, mmc); -mmc_add_host (mmc); + ret =mmc_add_host (mmc); +if (ret) + goto out;dev_dbg (dev,"IRQ=%d, FIFO is %d bytes\n" , irq, host->fifo_width);
drivers/mmc/host/mxcmmc.c +3 -1
@@ -1169,7 +1169,9 @@ static int mxcmci_probe(struct platform_device *pdev) host->watchdog.function = &mxcmci_watchdog; host->watchdog.data = (unsigned long )mmc; -mmc_add_host (mmc); + ret =mmc_add_host (mmc); +if (ret) + goto out_free_dma;return 0 ;
drivers/mmc/host/rtsx_usb_sdmmc.c +10 -1
@@ -1355,6 +1355,7 @@ static int rtsx_usb_sdmmc_drv_probe(struct platform_device *pdev)#ifdef RTSX_USB_USE_LEDS_CLASS int err;#endif +int ret; ucr =usb_get_intfdata (to_usb_interface (pdev->dev.parent));if (!ucr)
@@ -1393,7 +1394,15 @@ static int rtsx_usb_sdmmc_drv_probe(struct platform_device *pdev)INIT_WORK (&host->led_work, rtsx_usb_update_led);#endif -mmc_add_host (mmc); + ret =mmc_add_host (mmc); +if (ret) { +#ifdef RTSX_USB_USE_LEDS_CLASS +led_classdev_unregister (&host->led); +#endif +mmc_free_host (mmc); +pm_runtime_disable (&pdev->dev); +return ret; + }return 0 ; }
drivers/mmc/host/sdhci_f_sdh30.c +3 -0
@@ -180,6 +180,9 @@ static int sdhci_f_sdh30_probe(struct platform_device *pdev)if (reg &SDHCI_CAN_DO_8BIT ) priv->vendor_hs200 =F_SDH30_EMMC_HS200 ; +if (!(reg &SDHCI_TIMEOUT_CLK_MASK )) + host->quirks |=SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK ; + ret =sdhci_add_host (host);if (ret) goto err_add_host;
drivers/mmc/host/toshsd.c +5 -1
@@ -655,7 +655,9 @@ static int toshsd_probe(struct pci_dev *pdev, const struct pci_device_id *ent)if (ret) goto unmap; -mmc_add_host (mmc); + ret =mmc_add_host (mmc); +if (ret) + goto free_irq; base =pci_resource_start (pdev,0 );dev_dbg (&pdev->dev,"MMIO %pa, IRQ %d\n" , &base, pdev->irq);
@@ -664,6 +666,8 @@ static int toshsd_probe(struct pci_dev *pdev, const struct pci_device_id *ent)return 0 ; +free_irq: +free_irq (pdev->irq, host); unmap:pci_iounmap (pdev, host->ioaddr); release:
drivers/mmc/host/via-sdmmc.c +3 -1
@@ -1168,7 +1168,9 @@ static int via_sd_probe(struct pci_dev *pcidev, pcidev->subsystem_device == 0x3891) sdhost->quirks =VIA_CRDR_QUIRK_300MS_PWRDELAY ; -mmc_add_host (mmc); + ret =mmc_add_host (mmc); +if (ret) + goto unmap;return 0 ;
drivers/mmc/host/vub300.c +10 -3
@@ -2052,6 +2052,7 @@ static void vub300_enable_sdio_irq(struct mmc_host *mmc, int enable)return ;kref_get (&vub300->kref);if (enable) { +set_current_state (TASK_RUNNING );mutex_lock (&vub300->irq_mutex);if (vub300->irqs_queued) { vub300->irqs_queued -=1 ;
@@ -2067,6 +2068,7 @@ static void vub300_enable_sdio_irq(struct mmc_host *mmc, int enable)vub300_queue_poll_work (vub300,0 ); }mutex_unlock (&vub300->irq_mutex); +set_current_state (TASK_INTERRUPTIBLE ); }else { vub300->irq_enabled =0 ; }
@@ -2309,14 +2311,14 @@ static int vub300_probe(struct usb_interface *interface,0x0000 ,0x0000 , &vub300->system_port_status, sizeof(vub300->system_port_status), 1000);if (retval <0 ) { - goto error4; + goto error5; }else if (sizeof (vub300->system_port_status) == retval) { vub300->card_present = (0x0001 & vub300->system_port_status.port_flags) ?1 :0 ; vub300->read_only = (0x0010 & vub300->system_port_status.port_flags) ?1 :0 ; }else { - goto error4; + goto error5; }usb_set_intfdata (interface, vub300);INIT_DELAYED_WORK (&vub300->pollwork, vub300_pollwork_thread);
@@ -2342,8 +2344,13 @@ static int vub300_probe(struct usb_interface *interface,"USB vub300 remote SDIO host controller[%d]" "connected with no SD/SDIO card inserted\n" , interface_to_InterfaceNumber(interface)); -mmc_add_host (mmc); + retval =mmc_add_host (mmc); +if (retval) + goto error6; +return 0 ; +error6: +del_timer_sync (&vub300->inactivity_timer); error5:mmc_free_host (mmc);/*
drivers/mmc/host/wbsd.c +11 -1
@@ -1716,7 +1716,17 @@ static int wbsd_init(struct device *dev, int base, int irq, int dma,*/ wbsd_init_device (host); -mmc_add_host (mmc); + ret =mmc_add_host (mmc); +if (ret) { +if (!pnp) +wbsd_chip_poweroff (host); + +wbsd_release_resources (host); +wbsd_free_mmc (dev); + +mmc_free_host (mmc); +return ret; + }pr_info ("%s: W83L51xD" ,mmc_hostname (mmc));if (host->chip_id !=0 )
drivers/mmc/host/wmt-sdmmc.c +5 -1
@@ -863,11 +863,15 @@ static int wmt_mci_probe(struct platform_device *pdev)/* configure the controller to a known 'ready' state */ wmt_reset_hardware (mmc); -mmc_add_host (mmc); + ret =mmc_add_host (mmc); +if (ret) + goto fail7;dev_info (&pdev->dev,"WMT SDHC Controller initialized\n" );return 0 ; +fail7: +clk_disable_unprepare (priv->clk_sdmmc); fail6:clk_put (priv->clk_sdmmc); fail5_and_a_half:
drivers/mtd/lpddr/lpddr2_nvm.c +2 -0
@@ -448,6 +448,8 @@ static int lpddr2_nvm_probe(struct platform_device *pdev)/* lpddr2_nvm address range */ add_range =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); +if (!add_range) +return -ENODEV ;/* Populate map_info data structure */ *map = (struct map_info ) {
drivers/mtd/maps/pxa2xx-flash.c +2 -0
@@ -69,6 +69,7 @@ static int pxa2xx_flash_probe(struct platform_device *pdev)if (!info->map.virt) {printk (KERN_WARNING "Failed to ioremap %s\n" , info->map.name); +kfree (info);return -ENOMEM ; } info->map.cached =
@@ -91,6 +92,7 @@ static int pxa2xx_flash_probe(struct platform_device *pdev)iounmap ((void *)info->map.virt);if (info->map.cached)iounmap (info->map.cached); +kfree (info);return -EIO ; } info->mtd->dev.parent = &pdev->dev;
drivers/mtd/mtdcore.c +3 -1
@@ -552,8 +552,10 @@ int add_mtd_device(struct mtd_info *mtd)dev_set_drvdata (&mtd->dev, mtd);of_node_get (mtd_get_of_node (mtd)); error =device_register (&mtd->dev); -if (error) +if (error) { +put_device (&mtd->dev); goto fail_added; + }if (!IS_ERR_OR_NULL (dfs_dir_mtd)) { mtd->dbg.dfs_dir =debugfs_create_dir (dev_name (&mtd->dev), dfs_dir_mtd);
drivers/net/bonding/bond_main.c +1 -1
@@ -2076,10 +2076,10 @@ static int bond_slave_info_query(struct net_device *bond_dev, struct ifslave *in/* called with rcu_read_lock() */ static int bond_miimon_inspect (struct bonding *bond) { +bool ignore_updelay = false;int link_state, commit =0 ;struct list_head *iter;struct slave *slave; -bool ignore_updelay; ignore_updelay = !rcu_dereference (bond->curr_active_slave);
drivers/net/can/usb/mcba_usb.c +7 -3
@@ -58,6 +58,10 @@#define MCBA_VER_REQ_USB 1#define MCBA_VER_REQ_CAN 2 +/* Drive the CAN_RES signal LOW "0" to activate R24 and R25 */ +#define MCBA_VER_TERMINATION_ON 0 +#define MCBA_VER_TERMINATION_OFF 1 +#define MCBA_SIDL_EXID_MASK 0x8#define MCBA_DLC_MASK 0xf#define MCBA_DLC_RTR_MASK 0x40
@@ -480,7 +484,7 @@ static void mcba_usb_process_ka_usb(struct mcba_priv *priv, priv->usb_ka_first_pass = false; } -if (msg->termination_state) +if (msg->termination_state ==MCBA_VER_TERMINATION_ON ) priv->can.termination =MCBA_TERMINATION_ENABLED ;else priv->can.termination =MCBA_TERMINATION_DISABLED ;
@@ -800,9 +804,9 @@ static int mcba_set_termination(struct net_device *netdev, u16 term) };if (term ==MCBA_TERMINATION_ENABLED ) - usb_msg.termination =1 ; + usb_msg.termination =MCBA_VER_TERMINATION_ON ;else - usb_msg.termination =0 ; + usb_msg.termination =MCBA_VER_TERMINATION_OFF ;mcba_usb_xmit_cmd (priv, (struct mcba_usb_msg *)&usb_msg);
drivers/net/dsa/lan9303-core.c +3 -1
@@ -721,9 +721,11 @@ static void lan9303_get_ethtool_stats(struct dsa_switch *ds, int port, ret =lan9303_read_switch_port ( chip, port, lan9303_mib[u].offset, ®); -if (ret) +if (ret) {dev_warn (chip->dev,"Reading status port %d reg %u failed\n" , port, lan9303_mib[u].offset); + reg =0 ; + } data[u] = reg; } }
drivers/net/ethernet/amd/atarilance.c +1 -1
@@ -825,7 +825,7 @@ lance_start_xmit(struct sk_buff *skb, struct net_device *dev) lp->memcpy_f (PKTBUF_ADDR (head), (void *)skb->data, skb->len ); head->flag =TMD1_OWN_CHIP |TMD1_ENP |TMD1_STP ; dev->stats.tx_bytes += skb->len; -dev_kfree_skb ( skb ); +dev_consume_skb_irq (skb); lp->cur_tx++;while ( lp->cur_tx >=TX_RING_SIZE && lp->dirty_tx >=TX_RING_SIZE ) { lp->cur_tx -=TX_RING_SIZE ;
drivers/net/ethernet/amd/lance.c +1 -1
@@ -997,7 +997,7 @@ static netdev_tx_t lance_start_xmit(struct sk_buff *skb,skb_copy_from_linear_data (skb, &lp->tx_bounce_buffs[entry], skb->len); lp->tx_ring[entry].base = ((u32 )isa_virt_to_bus ((lp->tx_bounce_buffs + entry)) &0xffffff ) |0x83000000 ; -dev_kfree_skb (skb); +dev_consume_skb_irq (skb); }else { lp->tx_skbuff[entry] = skb; lp->tx_ring[entry].base = ((u32 )isa_virt_to_bus (skb->data) &0xffffff ) |0x83000000 ;
drivers/net/ethernet/amd/xgbe/xgbe-drv.c +3 -0
@@ -1142,6 +1142,9 @@ static void xgbe_free_irqs(struct xgbe_prv_data *pdata)devm_free_irq (pdata->dev, pdata->dev_irq, pdata); +tasklet_kill (&pdata->tasklet_dev); +tasklet_kill (&pdata->tasklet_ecc); +if (pdata->vdata->ecc_support && (pdata->dev_irq != pdata->ecc_irq))devm_free_irq (pdata->dev, pdata->ecc_irq, pdata);
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 +2 -12
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/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 +1 -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/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/udf/inode.c +38 -46
84 lines not on this page · raw message
fs/udf/truncate.c +15 -33
48 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/selftests/powerpc/dscr/dscr_sysfs_test.c +4 -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.