Linux 4.14.256
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.256 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/admin-guide/kernel-parameters.txt | 7 Documentation/devicetree/bindings/regulator/samsung,s5m8767.txt | 23 -- Makefile | 2 arch/arm/Makefile | 22 +- arch/arm/boot/dts/at91-tse850-3.dts | 2 arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi | 2 arch/arm/boot/dts/omap3-gta04.dtsi | 2 arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi | 2 arch/arm/kernel/stacktrace.c | 3 arch/arm/mm/Kconfig | 2 arch/arm/mm/mmu.c | 4 arch/arm64/boot/dts/xilinx/zynqmp.dtsi | 4 arch/hexagon/lib/io.c | 4 arch/ia64/Kconfig.debug | 2 arch/m68k/Kconfig.machine | 1 arch/mips/Kconfig | 4 arch/mips/bcm63xx/clk.c | 6 arch/mips/generic/yamon-dt.c | 2 arch/mips/include/asm/mips-cm.h | 12 - arch/mips/kernel/mips-cm.c | 21 -- arch/mips/kernel/r2300_fpu.S | 4 arch/mips/kernel/syscall.c | 9 arch/mips/lantiq/clk.c | 6 arch/mips/lantiq/xway/dma.c | 14 - arch/mips/sni/time.c | 4 arch/parisc/kernel/entry.S | 4 arch/parisc/kernel/smp.c | 19 + arch/parisc/mm/init.c | 4 arch/powerpc/boot/dts/charon.dts | 2 arch/powerpc/boot/dts/digsy_mtc.dts | 2 arch/powerpc/boot/dts/lite5200.dts | 2 arch/powerpc/boot/dts/lite5200b.dts | 2 arch/powerpc/boot/dts/media5200.dts | 2 arch/powerpc/boot/dts/mpc5200b.dtsi | 2 arch/powerpc/boot/dts/o2d.dts | 2 arch/powerpc/boot/dts/o2d.dtsi | 2 arch/powerpc/boot/dts/o2dnt2.dts | 2 arch/powerpc/boot/dts/o3dnt.dts | 2 arch/powerpc/boot/dts/pcm032.dts | 2 arch/powerpc/boot/dts/tqm5200.dts | 2 arch/powerpc/include/asm/code-patching.h | 1 arch/powerpc/lib/code-patching.c | 7 arch/powerpc/net/bpf_jit.h | 33 ++- arch/powerpc/net/bpf_jit_comp64.c | 37 ++- arch/powerpc/platforms/85xx/mpc85xx_pm_ops.c | 3 arch/powerpc/sysdev/dcr-low.S | 2 arch/s390/mm/gmap.c | 5 arch/sh/Kconfig.debug | 1 arch/sh/include/asm/sfp-machine.h | 8 arch/sh/kernel/cpu/sh4a/smp-shx3.c | 5 arch/x86/events/intel/uncore_snbep.c | 4 arch/x86/include/asm/page_64_types.h | 2 arch/x86/kernel/irq.c | 4 crypto/pcrypt.c | 12 - drivers/acpi/acpica/acglobal.h | 2 drivers/acpi/acpica/hwesleep.c | 8 drivers/acpi/acpica/hwsleep.c | 11 - drivers/acpi/acpica/hwxfsleep.c | 7 drivers/acpi/battery.c | 2 drivers/acpi/pmic/intel_pmic.c | 51 ++-- drivers/android/binder.c | 20 + drivers/ata/libata-core.c | 2 drivers/ata/libata-eh.c | 8 drivers/auxdisplay/ht16k33.c | 66 +++--- drivers/auxdisplay/img-ascii-lcd.c | 10 drivers/char/hw_random/mtk-rng.c | 9 drivers/char/tpm/tpm2-space.c | 3 drivers/cpuidle/sysfs.c | 5 drivers/crypto/qat/qat_common/adf_pf2vf_msg.c | 13 + drivers/crypto/qat/qat_common/adf_vf_isr.c | 6 drivers/dma/at_xdmac.c | 2 drivers/dma/dmaengine.h | 2 drivers/edac/sb_edac.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 1 drivers/gpu/drm/drm_plane_helper.c | 1 drivers/gpu/drm/msm/msm_gem.c | 4 drivers/gpu/drm/udl/udl_connector.c | 2 drivers/hv/hyperv_vmbus.h | 1 drivers/hwmon/hwmon.c | 6 drivers/hwmon/pmbus/lm25066.c | 23 ++ drivers/i2c/busses/i2c-xlr.c | 6 drivers/iio/dac/ad5446.c | 9 drivers/infiniband/hw/mlx4/qp.c | 4 drivers/infiniband/hw/qedr/verbs.c | 15 - drivers/infiniband/sw/rxe/rxe_param.h | 2 drivers/input/mouse/elantech.c | 13 + drivers/input/serio/i8042-x86ia64io.h | 14 + drivers/irqchip/irq-bcm6345-l1.c | 2 drivers/irqchip/irq-s3c24xx.c | 22 +- drivers/media/i2c/mt9p031.c | 28 ++ drivers/media/pci/cx23885/cx23885-alsa.c | 3 drivers/media/pci/netup_unidvb/netup_unidvb_core.c | 27 +- drivers/media/platform/mtk-vpu/mtk_vpu.c | 5 drivers/media/platform/s5p-mfc/s5p_mfc.c | 6 drivers/media/radio/si470x/radio-si470x-i2c.c | 2 drivers/media/radio/si470x/radio-si470x-usb.c | 2 drivers/media/rc/ite-cir.c | 2 drivers/media/rc/mceusb.c | 1 drivers/media/usb/dvb-usb/az6027.c | 1 drivers/media/usb/dvb-usb/dibusb-common.c | 2 drivers/media/usb/uvc/uvc_v4l2.c | 7 drivers/memory/fsl_ifc.c | 13 - drivers/memstick/core/ms_block.c | 2 drivers/memstick/host/jmb38x_ms.c | 2 drivers/memstick/host/r592.c | 8 drivers/mmc/host/Kconfig | 2 drivers/mmc/host/dw_mmc.c | 3 drivers/mmc/host/mxs-mmc.c | 10 drivers/mtd/spi-nor/hisi-sfc.c | 1 drivers/net/bonding/bond_sysfs_slave.c | 36 +-- drivers/net/ethernet/amd/xgbe/xgbe-common.h | 8 drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 20 + drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h | 4 drivers/net/ethernet/cavium/thunder/nic_main.c | 2 drivers/net/ethernet/cavium/thunder/nicvf_main.c | 4 drivers/net/ethernet/ibm/ibmvnic.c | 3 drivers/net/ethernet/intel/i40e/i40e.h | 1 drivers/net/ethernet/intel/i40e/i40e_main.c | 5 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 drivers/net/ethernet/sfc/ptp.c | 4 drivers/net/ethernet/sfc/siena_sriov.c | 2 drivers/net/ethernet/ti/davinci_emac.c | 16 + drivers/net/phy/micrel.c | 5 drivers/net/phy/phylink.c | 2 drivers/net/tun.c | 5 drivers/net/vmxnet3/vmxnet3_drv.c | 1 drivers/net/wireless/ath/ath10k/mac.c | 6 drivers/net/wireless/ath/ath10k/usb.c | 7 drivers/net/wireless/ath/ath10k/wmi.h | 3 drivers/net/wireless/ath/ath6kl/usb.c | 7 drivers/net/wireless/ath/ath9k/main.c | 4 drivers/net/wireless/ath/dfs_pattern_detector.c | 10 drivers/net/wireless/ath/wcn36xx/main.c | 4 drivers/net/wireless/ath/wcn36xx/smd.c | 44 +++- drivers/net/wireless/broadcom/b43/phy_g.c | 2 drivers/net/wireless/broadcom/b43legacy/radio.c | 2 drivers/net/wireless/intel/iwlwifi/mvm/utils.c | 3 drivers/net/wireless/marvell/libertas/if_usb.c | 2 drivers/net/wireless/marvell/libertas_tf/if_usb.c | 2 drivers/net/wireless/marvell/mwifiex/11n.c | 5 drivers/net/wireless/marvell/mwifiex/cfg80211.c | 32 +-- drivers/net/wireless/marvell/mwifiex/pcie.c | 8 drivers/net/wireless/marvell/mwifiex/usb.c | 16 + drivers/net/wireless/marvell/mwl8k.c | 2 drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8225.c | 14 - drivers/net/xen-netfront.c | 8 drivers/nfc/pn533/pn533.c | 6 drivers/pci/host/pci-aardvark.c | 23 +- drivers/pci/msi.c | 24 +- drivers/pci/quirks.c | 1 drivers/pinctrl/core.c | 2 drivers/platform/x86/hp_accel.c | 2 drivers/platform/x86/thinkpad_acpi.c | 2 drivers/platform/x86/wmi.c | 9 drivers/power/supply/bq27xxx_battery_i2c.c | 3 drivers/power/supply/max17042_battery.c | 8 drivers/power/supply/rt5033_battery.c | 2 drivers/regulator/s5m8767.c | 21 -- drivers/s390/cio/css.c | 4 drivers/scsi/advansys.c | 4 drivers/scsi/csiostor/csio_lnode.c | 2 drivers/scsi/dc395x.c | 1 drivers/scsi/lpfc/lpfc_sli.c | 1 drivers/scsi/qla2xxx/qla_gbl.h | 2 drivers/scsi/qla2xxx/qla_mr.c | 23 -- drivers/scsi/qla2xxx/qla_os.c | 27 -- drivers/scsi/qla2xxx/qla_target.c | 14 - drivers/sh/maple/maple.c | 5 drivers/soc/tegra/pmc.c | 4 drivers/spi/spi-bcm-qspi.c | 5 drivers/spi/spi-pl022.c | 5 drivers/target/target_core_alua.c | 1 drivers/target/target_core_device.c | 2 drivers/target/target_core_internal.h | 1 drivers/target/target_core_transport.c | 76 +++++-- drivers/tty/serial/8250/8250_dw.c | 2 drivers/tty/serial/serial_core.c | 16 + drivers/tty/serial/xilinx_uartps.c | 3 drivers/tty/tty_buffer.c | 3 drivers/usb/chipidea/core.c | 19 + drivers/usb/gadget/legacy/hid.c | 4 drivers/usb/host/max3421-hcd.c | 25 -- drivers/usb/host/ohci-tmio.c | 2 drivers/usb/host/xhci-hub.c | 3 drivers/usb/misc/iowarrior.c | 8 drivers/usb/musb/tusb6010.c | 5 drivers/usb/serial/keyspan.c | 15 - drivers/video/console/sticon.c | 12 - drivers/video/fbdev/chipsfb.c | 2 drivers/watchdog/Kconfig | 2 drivers/watchdog/f71808e_wdt.c | 4 drivers/watchdog/omap_wdt.c | 6 drivers/xen/balloon.c | 86 ++++++-- drivers/xen/xen-pciback/conf_space_capability.c | 2 fs/btrfs/async-thread.c | 14 + fs/btrfs/tree-log.c | 4 fs/ext4/super.c | 9 fs/jfs/jfs_mount.c | 51 ++-- fs/nfs/flexfilelayout/flexfilelayoutdev.c | 4 fs/nfs/pnfs_nfs.c | 4 fs/nfs/write.c | 17 - fs/ocfs2/file.c | 8 fs/orangefs/dcache.c | 4 fs/quota/quota_tree.c | 15 + fs/tracefs/inode.c | 3 include/linux/console.h | 2 include/linux/filter.h | 1 include/linux/libata.h | 2 include/linux/lsm_hooks.h | 28 +- include/linux/rpmsg.h | 2 include/linux/sched/task_stack.h | 4 include/linux/security.h | 28 +- include/linux/virtio_net.h | 7 include/net/llc.h | 4 include/rdma/rdma_netlink.h | 2 include/target/target_core_base.h | 6 include/uapi/linux/pci_regs.h | 6 kernel/bpf/core.c | 4 kernel/cgroup/cgroup.c | 31 ++- kernel/events/core.c | 10 kernel/locking/lockdep.c | 2 kernel/power/swap.c | 7 kernel/sched/core.c | 3 kernel/signal.c | 19 - kernel/trace/trace.c | 62 ++++-- kernel/trace/tracing_map.c | 40 ++- lib/decompress_unxz.c | 2 lib/xz/xz_dec_lzma2.c | 21 +- lib/xz/xz_dec_stream.c | 6 mm/oom_kill.c | 23 -- mm/slab.h | 2 mm/zsmalloc.c | 7 net/batman-adv/bridge_loop_avoidance.c | 103 ++++++++-- net/batman-adv/fragmentation.c | 26 +- net/batman-adv/hard-interface.c | 3 net/batman-adv/multicast.c | 31 +++ net/batman-adv/multicast.h | 15 + net/batman-adv/soft-interface.c | 5 net/bluetooth/l2cap_sock.c | 10 net/bluetooth/sco.c | 24 +- net/core/stream.c | 3 net/core/sysctl_net_core.c | 2 net/ipv6/addrconf.c | 3 net/netfilter/nfnetlink_queue.c | 2 net/nfc/core.c | 32 +-- net/nfc/nci/core.c | 11 - net/vmw_vsock/af_vsock.c | 2 net/wireless/util.c | 1 samples/kprobes/kretprobe_example.c | 2 scripts/leaking_addresses.pl | 3 security/apparmor/label.c | 4 security/integrity/evm/evm_main.c | 2 security/security.c | 14 - security/selinux/hooks.c | 31 +-- security/smack/smackfs.c | 11 - sound/core/oss/mixer_oss.c | 43 +++- sound/core/timer.c | 17 - sound/isa/gus/gus_dma.c | 2 sound/pci/hda/hda_intel.c | 28 ++ sound/soc/codecs/cs42l42.c | 9 sound/soc/soc-dapm.c | 29 ++ sound/synth/emux/emux.c | 2 sound/usb/6fire/comm.c | 2 sound/usb/6fire/firmware.c | 6 sound/usb/line6/driver.c | 14 - sound/usb/line6/driver.h | 2 sound/usb/line6/podhd.c | 6 sound/usb/line6/toneport.c | 2 sound/usb/misc/ua101.c | 4 269 files changed, 1680 insertions(+), 910 deletions(-)
Ahmad Fatoum (1):
watchdog: f71808e_wdt: fix inaccurate report in WDIOC_GETTIMEOUT
Aleksander Jan Bajkowski (2):
MIPS: lantiq: dma: add small delay after reset
MIPS: lantiq: dma: reset correct number of channel
Alex Xu (Hello71) (1):
drm/plane-helper: fix uninitialized variable reference
Alexander Antonov (2):
perf/x86/intel/uncore: Fix filter_tid mask for CHA events on Skylake Server perf/x86/intel/uncore: Fix IIO event constraints for Skylake Server
Alok Prasad (1):
RDMA/qedr: Fix NULL deref for query_qp on the GSI QP
Anant Thazhemadam (1):
media: usb: dvd-usb: fix uninit-value bug in dibusb_read_eeprom_byte()
Anatolij Gustschin (1):
powerpc/5200: dts: fix memory node unit name
Anders Roxell (1):
PM: hibernate: fix sparse warnings
Andreas Kemnade (1):
arm: dts: omap3-gta04a4: accelerometer irq fix
André Almeida (1):
ACPI: battery: Accept charges over the design capacity as full
Andy Shevchenko (1):
serial: 8250_dw: Drop wrong use of ACPI_PTR()
Anel Orazgaliyeva (1):
cpuidle: Fix kobject memory leaks in error paths
Anssi Hannula (1):
serial: xilinx_uartps: Fix race condition causing stuck TX
Arnaud Pouliquen (1):
rpmsg: Fix rpmsg_create_ept return when RPMSG config is not defined
Arnd Bergmann (4):
hyperv/vmbus: include linux/bitops.h
ARM: 9136/1: ARMv7-M uses BE-8, not BE-32
memstick: avoid out-of-range warning
ARM: 9156/1: drop cc-option fallbacks for architecture selection
Austin Kim (2):
ALSA: synth: missing check for possible NULL after the call to kstrdup
evm: mark evm_fixmode as __ro_after_init
Baptiste Lepers (1):
pnfs/flexfiles: Fix misplaced barrier in nfs4_ff_layout_prepare_ds
Barnabás Pőcze (1):
platform/x86: wmi: do not fail if disabling fails
Bart Van Assche (1):
MIPS: sni: Fix the build
Benjamin Li (1):
wcn36xx: handle connection loss indication
Chengfeng Ye (2):
nfc: pn533: Fix double free when pn533_fill_fragment_skbs() fails
ALSA: gus: fix null pointer dereference on pointer block
Christian Löhle (1):
mmc: dw_mmc: Dont wait for DRTO on Write RSP error
Christophe JAILLET (5):
media: mtk-vpu: Fix a resource leak in the error handling path of 'mtk_vpu_probe()'
mmc: mxs-mmc: disable regulator on error and in the remove function soc/tegra: Fix an error handling path in tegra_powergate_power_up()
i2c: xlr: Fix a resource leak in the error handling path of 'xlr_i2c_probe()' platform/x86: hp_accel: Fix an error handling path in 'lis3lv02d_probe()'
Christophe Leroy (1):
video: fbdev: chipsfb: use memset_io() instead of memset()
Claudiu Beznea (1):
dmaengine: at_xdmac: fix AT_XDMAC_CC_PERID() macro
Colin Ian King (2):
media: cx23885: Fix snd_card_free call on null card pointer
MIPS: generic/yamon-dt: fix uninitialized variable error
Damien Le Moal (1):
libata: fix read log timeout value
Dan Carpenter (7):
tpm: Check for integer overflow in tpm2_map_response_body()
b43legacy: fix a lower bounds test
b43: fix a lower bounds test
memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host() drm/msm: uninitialized variable in msm_gem_import()
usb: gadget: hid: fix error code in do_config()
scsi: csiostor: Uninitialized data in csio_ln_vnp_read_cbfn()
Daniel Jordan (1):
crypto: pcrypt - Delay write to padata->info
David Hildenbrand (1):
s390/gmap: don't unconditionally call pte_unmap_unlock() in __gmap_zap()
Dirk Bender (1):
media: mt9p031: Fix corrupted frame after restarting stream
Dmitry Bogdanov (1):
scsi: qla2xxx: Fix unmap of already freed sgl
Dmitry Osipenko (1):
soc/tegra: pmc: Fix imbalanced clock disabling in error code path
Dongli Zhang (2):
xen/netfront: stop tx queues during live migration
vmxnet3: do not stop tx queues after netif_device_detach()
Dongliang Mu (2):
JFS: fix memleak in jfs_mount
memory: fsl_ifc: fix leak of irq and nand_irq in fsl_ifc_ctrl_probe
Eiichi Tsukata (1):
vsock: prevent unnecessary refcnt inc for nonblocking connect
Eric Badger (1):
EDAC/sb_edac: Fix top-of-high-memory value for Broadwell/Haswell
Eric Dumazet (1):
llc: fix out-of-bound array index in llc_sk_dev_hash()
Eric W. Biederman (2):
signal: Remove the bogus sigkill_pending in ptrace_stop signal/mips: Update (_save|_restore)_fp_context to fail with -EFAULT
Erik Ekman (1):
sfc: Don't use netif_info before net_device setup
Evgeny Novikov (1):
mtd: spi-nor: hisi-sfc: Remove excessive clk_disable_unprepare()
Filipe Manana (1):
btrfs: fix lost error handling when replaying directory deletes
Florian Westphal (1):
netfilter: nfnetlink_queue: fix OOB when mac header was cleared
Geert Uytterhoeven (4):
mips: cm: Convert to bitfield API to fix out-of-bounds access
auxdisplay: img-ascii-lcd: Fix lock-up when displaying empty string
auxdisplay: ht16k33: Connect backlight to fbdev
auxdisplay: ht16k33: Fix frame buffer device blanking
Giovanni Cabiddu (2):
crypto: qat - detect PFVF collision after ACK
crypto: qat - disregard spurious PFVF interrupts
Greg Kroah-Hartman (1):
Linux 4.14.256
Greg Thelen (1):
perf/core: Avoid put_page() when GUP fails
Guanghui Feng (1):
tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc
Guo Zhi (1):
scsi: advansys: Fix kernel pointer leak
Hans de Goede (2):
power: supply: bq27xxx: Fix kernel crash on IRQ handler register error
ACPI: PMIC: Fix intel_pmic_regs_handler() read accesses
Helge Deller (2):
parisc: Fix ptrace check on syscall return
task_stack: Fix end_of_stack() for architectures with upwards-growing stack
Henrik Grimler (1):
power: supply: max17042_battery: use VFSOC for capacity when no rsns
Huang Guobin (1):
bonding: Fix a use-after-free problem when bond_sysfs_slave_add() failed
Ingmar Klein (1):
PCI: Mark Atheros QCA6174 to avoid bus reset
Jackie Liu (3):
ARM: s3c: irq-s3c24xx: Fix return value check for s3c24xx_init_intc()
MIPS: loongson64: make CPU_LOONGSON64 depends on MIPS_FP_SUPPORT
ar7: fix kernel builds for compiler test
Jakob Hauser (1):
power: supply: rt5033_battery: Change voltage values to µV
Jakub Kicinski (1):
net: stream: don't purge sk_error_queue in sk_stream_kill_queues()
James Smart (1):
scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq()
Jan Kara (1):
ocfs2: fix data corruption on truncate
Jia-Ju Bai (1):
fs: orangefs: fix error return code of orangefs_revalidate_lookup()
Johan Hovold (12):
ALSA: ua101: fix division by zero at probe
ALSA: 6fire: fix control and bulk message timeouts
ALSA: line6: fix control and interrupt message timeouts
mwifiex: fix division by zero in fw download path
ath6kl: fix division by zero in send path
ath6kl: fix control-message timeout
ath10k: fix control-message timeout
ath10k: fix division by zero in send path
rtl8187: fix control-message timeouts
USB: iowarrior: fix control-message timeouts
USB: chipidea: fix interrupt deadlock drm/udl: fix control-message timeout
Johannes Berg (1):
iwlwifi: mvm: disable RX-diversity in powersave
Jonas Dreßler (4):
mwifiex: Read a PCI register after writing the TX ring write pointer
mwifiex: Run SET_BSS_MODE when changing from P2P to STATION vif-type
mwifiex: Properly initialize private structure on interface type changes
mwifiex: Send DELBA requests according to spec
Jonathan Davies (1):
net: virtio_net_hdr_to_skb: count transport header in UFO
Juergen Gross (1):
xen/balloon: add late_initcall_sync() for initial ballooning done
Junji Wei (1):
RDMA/rxe: Fix wrong port_cap_flags
Kalesh Singh (1):
tracing/cfi: Fix cmp_entries_* functions signature mismatch
Kees Cook (2):
leaking_addresses: Always print a trailing newline
media: si470x: Avoid card name truncation
Krzysztof Kozlowski (2):
regulator: s5m8767: do not use reset value as DVS voltage if GPIO DVS is disabled
regulator: dt-bindings: samsung,s5m8767: correct s5m8767,pmic-buck-default-dvs-idx property
Lars-Peter Clausen (1):
dmaengine: dmaengine_desc_callback_valid(): Check for callback_result
Lasse Collin (2):
lib/xz: Avoid overlapping memcpy() with invalid input with in-place decompression lib/xz: Validate the value before assigning it to an enum variable
Leon Romanovsky (2):
RDMA/mlx4: Return missed an error if device doesn't support steering RDMA/netlink: Add __maybe_unused to static inline in C file
Lin Ma (2):
NFC: reorganize the functions in nci_request
NFC: reorder the logic in nfc_{un,}register_device
Linus Lüssing (3):
ath9k: Fix potential interrupt storm on queue reset
batman-adv: mcast: fix duplicate mcast packets in BLA backbone from LAN
batman-adv: mcast: fix duplicate mcast packets from BLA backbone to mesh
Loic Poulain (1):
wcn36xx: Fix HT40 capability for 2Ghz band
Lorenz Bauer (1):
bpf: Prevent increasing bpf_jit_limit above max
Lu Wei (1):
maple: fix wrong return value of maple_bus_init().
Marek Behún (3):
PCI: aardvark: Fix return value of MSI domain .alloc() method
PCI: aardvark: Read all 16-bits from PCIE_MSI_PAYLOAD_REG
PCI: aardvark: Don't spam about PIO Response Status
Mark Rutland (1):
irq: mips: avoid nested irq_enter()
Markus Schneider-Pargmann (1):
hwrng: mtk - Force runtime pm ops for sleep ops
Masami Hiramatsu (1):
ARM: clang: Do not rely on lr register for stacktrace
Mathias Nyman (1):
xhci: Fix USB 3.1 enumeration issues by increasing roothub power-on-good delay
Maxim Kiselev (1):
net: davinci_emac: Fix interrupt pacing disable
Miaohe Lin (1):
mm/zsmalloc.c: close race window between zs_pool_dec_isolated() and zs_unregister_migration()
Michael Ellerman (1):
powerpc/dcr: Use cmplwi instead of 3-argument cmpli
Michal Hocko (1):
mm, oom: do not trigger out_of_memory from the #PF
Michal Maloszewski (1):
i40e: Fix NULL ptr dereference on VSI filter sync
Michal Simek (1):
arm64: zynqmp: Fix serial compatible string
Michał Mirosław (1):
ARM: 9155/1: fix early early_iounmap()
Mike Christie (2):
scsi: target: Fix ordered tag handling
scsi: target: Fix alua_tg_pt_gps_count tracking
Nadezda Lutovinova (1):
media: s5p-mfc: Add checking to s5p_mfc_probe().
Nathan Chancellor (2):
platform/x86: thinkpad_acpi: Fix bitwise vs. logical warning
hexagon: export raw I/O routines for modules
Naveen N. Rao (3):
powerpc/lib: Add helper to check if offset is within conditional branch range powerpc/bpf: Validate branch ranges
powerpc/bpf: Fix BPF_SUB when imm == 0x80000000
Nguyen Dinh Phi (1):
cfg80211: call cfg80211_stop_ap when switch from P2P_GO type
Nick Desaulniers (1):
sh: check return code of request_irq
Nicolas Dichtel (1):
tun: fix bonding active backup with arp monitoring
Nikolay Borisov (1):
btrfs: fix memory ordering between normal and ordered work functions
Pali Rohár (4):
serial: core: Fix initializing and restoring termios speed
PCI: aardvark: Do not clear status bits of masked interrupts
PCI: aardvark: Do not unmask unused interrupts
PCI: Add PCI_EXP_DEVCTL_PAYLOAD_* macros
Paul Burton (1):
tracing: Resize tgid_map to pid_max, not PID_MAX_DEFAULT
Pavel Skripkin (3):
ALSA: mixer: fix deadlock in snd_mixer_oss_set_volume
media: dvb-usb: fix ununit-value in az6027_rc_query
net: bnx2x: fix variable dereferenced before check
Pawan Gupta (1):
smackfs: Fix use-after-free in netlbl_catmap_walk()
Pekka Korpinen (1):
iio: dac: ad5446: Fix ad5622_write() return value
Peter Rosin (1):
ARM: dts: at91: tse850: the emac<->phy interface is rmii
Peter Zijlstra (2):
locking/lockdep: Avoid RCU-induced noinstr fail
x86: Increase exception stack sizes
Phoenix Huang (1):
Input: elantench - fix misreporting trackpoint coordinates
Quinn Tran (1):
scsi: qla2xxx: Turn off target reset during issue_lip
Rafael J. Wysocki (1):
ACPICA: Avoid evaluating methods too early during system resume
Rajat Asthana (1):
media: mceusb: return without resubmitting URB in case of -EPROTO error.
Randy Dunlap (8):
mmc: winbond: don't build on M68K
ia64: don't do IA64_CMPXCHG_DEBUG without CONFIG_PRINTK
m68k: set a default value for MEMORY_RESERVE
sh: fix kconfig unmet dependency warning for FRAME_POINTER
sh: define __BIG_ENDIAN for math-emu
mips: BCM63XX: ensure that CPU_SUPPORTS_32BIT_KERNEL is set
mips: bcm63xx: add support for clk_get_parent()
mips: lantiq: add support for clk_get_parent()
Reimar Döffinger (1):
libata: fix checking of DMA state
Ricardo Ribalda (1):
media: uvcvideo: Set capability in s_param
Richard Fitzgerald (2):
ASoC: cs42l42: Correct some register default values
ASoC: cs42l42: Defer probe if request_threaded_irq() returns EPROBE_DEFER
Roger Quadros (1):
ARM: dts: omap: fix gpmc,mux-add-data type
Russell King (Oracle) (1):
net: phylink: avoid mvneta warning when setting pause parameters
Rustam Kovhaev (1):
mm: kmemleak: slob: respect SLAB_NOLEAKTRACE flag
Sean Christopherson (1):
x86/irq: Ensure PI wakeup handler is unregistered before module unload
Sean Young (1):
media: ite-cir: IR receiver stop working after receive overflow
Sebastian Krzyszkowiak (1):
power: supply: max17042_battery: Prevent int underflow in set_soc_threshold
Shaoying Xu (1):
ext4: fix lazy initialization next schedule time computation in more granular unit
Shyam Sundar S K (1):
net: amd-xgbe: Toggle PLL settings during rate change
Stefan Agner (1):
phy: micrel: ksz8041nl: do not use power down mode
Stephen Suryaputra (1):
gre/sit: Don't generate link-local addr if addr_gen_mode is IN6_ADDR_GEN_MODE_NONE
Steven Rostedt (VMware) (1):
tracefs: Have tracefs directories not set OTH permission bits by default
Sukadev Bhattiprolu (1):
ibmvnic: Process crqs after enabling interrupts
Surabhi Boob (1):
iavf: Fix for the false positive ASQ/ARQ errors while issuing VF reset
Sven Eckelmann (4):
ath10k: fix max antenna gain unit
batman-adv: Consider fragmentation for needed_headroom
batman-adv: Reserve needed_*room for fragments
batman-adv: Don't always reallocate the fragmentation skb head
Sven Schnelle (4):
parisc: fix warning in flush_tlb_all
parisc/kgdb: add kgdb_roundup() to make kgdb work with idle polling parisc/entry: fix trace test in syscall exit path parisc/sticon: fix reverse colors
Takashi Iwai (6):
Input: i8042 - Add quirk for Fujitsu Lifebook T725
ALSA: timer: Unconditionally unlink slave instances, too
ALSA: mixer: oss: Fix racy access to slots
Bluetooth: sco: Fix lock_sock() blockage by memcpy_from_msg()
ALSA: hda: Reduce udelay() at SKL+ position reporting
ASoC: DAPM: Cover regression by kctl change notification fix
Tetsuo Handa (2):
smackfs: use __GFP_NOFAIL for smk_cipso_doi()
smackfs: use netlbl_cfg_cipsov4_del() for deleting cipso_v4_doi
Thomas Gleixner (1):
PCI/MSI: Destroy sysfs before freeing entries
Thomas Perrot (1):
spi: spl022: fix Microwire full duplex mode
Tiezhu Yang (1):
samples/kretprobes: Fix return value if register_kretprobe() failed
Todd Kjos (2):
binder: use euid from cred instead of using task
binder: use cred instead of task for selinux checks
Tom Rix (1):
apparmor: fix error check
Tong Zhang (1):
scsi: dc395: Fix error case unwinding
Trond Myklebust (1):
NFS: Fix deadlocks in nfs_scan_commit_list()
Tuo Li (2):
media: s5p-mfc: fix possible null-pointer dereference in s5p_mfc_probe()
ath: dfs_pattern_detector: Fix possible null-pointer dereference in channel_detector_create()
Uwe Kleine-König (1):
usb: max-3421: Use driver data instead of maintaining a list of bound devices
Vasily Averin (1):
mm, oom: pagefault_out_of_memory: don't force global OOM for dying tasks
Vincent Donnefort (1):
sched/core: Mitigate race cpus_share_cache()/update_top_cache_domain()
Vineeth Vijayan (1):
s390/cio: check the subchannel validity for dev_busid
Waiman Long (1):
cgroup: Make rebind_subsystems() disable v2 controllers all at once
Walter Stoll (1):
watchdog: Fix OMAP watchdog early handling
Wang Hai (3):
USB: serial: keyspan: fix memleak on probe errors
libertas_tf: Fix possible memory leak in probe and disconnect
libertas: Fix possible memory leak in probe and disconnect
Wang ShaoBo (1):
Bluetooth: fix use-after-free error in lock_sock_nested()
Wang Wensheng (1):
ALSA: timer: Fix use-after-free problem
Xiaoming Ni (1):
powerpc/85xx: Fix oops when mpc85xx_smp_guts_ids node cannot be found
Yang Yingliang (5):
pinctrl: core: fix possible memory leak in pinctrl_enable()
spi: bcm-qspi: Fix missing clk_disable_unprepare() on error in bcm_qspi_probe()
hwmon: Fix possible memleak in __hwmon_device_register()
usb: musb: tusb6010: check return value after calling platform_get_resource()
usb: host: ohci-tmio: check return value after calling platform_get_resource()
Ye Bin (1):
PM: hibernate: Get block device exclusively in swsusp_check()
YueHaibing (1):
xen-pciback: Fix return in pm_ctrl_init()
Zev Weiss (1):
hwmon: (pmbus/lm25066) Add offset coefficients
Zhang Yi (2):
quota: check block number when reading the block in quota file
quota: correct error number in free_dqentry()
Zheyu Ma (5):
cavium: Return negative value when pci_alloc_irq_vectors() fails
cavium: Fix return values of the probe function
media: netup_unidvb: handle interrupt properly according to the firmware
memstick: r592: Fix a UAF bug when removing the driver
mwl8k: Fix use-after-free in mwl8k_fw_state_machine()
hongao (1):
drm/amdgpu: fix set scaling mode Full/Full aspect/Center not works on vga and dvi connectors
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/kernel-parameters.txt +7 -0
@@ -5030,6 +5030,13 @@ Disables the PV optimizations forcing the HVM guest to run as generic HVM guest with no PV drivers. + xen.balloon_boot_timeout= [XEN] + The time (in seconds) to wait before giving up to boot + in case initial ballooning fails to free enough memory. + Applies only when running as HVM or PVH guest and + started with less memory configured than allowed at + max. Default is 180. + xen.event_eoi_delay= [XEN] How long to delay EOI handling in case of event storms (jiffies). Default is 10.
Documentation/devicetree/bindings/regulator/samsung,s5m8767.txt +9 -14
@@ -13,6 +13,14 @@ common regulator binding documented in: Required properties of the main device node (the parent!): + - s5m8767,pmic-buck-ds-gpios: GPIO specifiers for three host gpio's used + for selecting GPIO DVS lines. It is one-to-one mapped to dvs gpio lines. + + [1] If either of the 's5m8767,pmic-buck[2/3/4]-uses-gpio-dvs' optional + property is specified, then all the eight voltage values for the + 's5m8767,pmic-buck[2/3/4]-dvs-voltage' should be specified. + +Optional properties of the main device node (the parent!): - s5m8767,pmic-buck2-dvs-voltage: A set of 8 voltage values in micro-volt (uV) units for buck2 when changing voltage using gpio dvs. Refer to [1] below for additional information.
@@ -25,26 +33,13 @@ Required properties of the main device node (the parent!): units for buck4 when changing voltage using gpio dvs. Refer to [1] below for additional information. - - s5m8767,pmic-buck-ds-gpios: GPIO specifiers for three host gpio's used - for selecting GPIO DVS lines. It is one-to-one mapped to dvs gpio lines. - - [1] If none of the 's5m8767,pmic-buck[2/3/4]-uses-gpio-dvs' optional - property is specified, the 's5m8767,pmic-buck[2/3/4]-dvs-voltage' - property should specify atleast one voltage level (which would be a - safe operating voltage). - - If either of the 's5m8767,pmic-buck[2/3/4]-uses-gpio-dvs' optional - property is specified, then all the eight voltage values for the - 's5m8767,pmic-buck[2/3/4]-dvs-voltage' should be specified. - -Optional properties of the main device node (the parent!): - s5m8767,pmic-buck2-uses-gpio-dvs: 'buck2' can be controlled by gpio dvs. - s5m8767,pmic-buck3-uses-gpio-dvs: 'buck3' can be controlled by gpio dvs. - s5m8767,pmic-buck4-uses-gpio-dvs: 'buck4' can be controlled by gpio dvs. Additional properties required if either of the optional properties are used: - - s5m8767,pmic-buck234-default-dvs-idx: Default voltage setting selected from + - s5m8767,pmic-buck-default-dvs-idx: Default voltage setting selected from the possible 8 options selectable by the dvs gpios. The value of this property should be between 0 and 7. If not specified or if out of range, the default value of this property is set to 0.
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 14 -SUBLEVEL = 255 +SUBLEVEL = 256 EXTRAVERSION = NAME = Petit Gorille
arch/arm/Makefile +11 -11
@@ -66,15 +66,15 @@ KBUILD_CFLAGS += $(call cc-option,-fno-ipa-sra) # Note that GCC does not numerically define an architecture version # macro, but instead defines a whole series of macros which makes # testing for a specific architecture or later rather impossible. -arch-$(CONFIG_CPU_32v7M) =-D__LINUX_ARM_ARCH__=7 -march=armv7-m -Wa,-march=armv7-m -arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a) -arch-$(CONFIG_CPU_32v6) =-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6) +arch-$(CONFIG_CPU_32v7M) =-D__LINUX_ARM_ARCH__=7 -march=armv7-m +arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 -march=armv7-a +arch-$(CONFIG_CPU_32v6) =-D__LINUX_ARM_ARCH__=6 -march=armv6 # Only override the compiler option if ARMv6. The ARMv6K extensions are # always available in ARMv7 ifeq ($(CONFIG_CPU_32v6),y) -arch-$(CONFIG_CPU_32v6K) =-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6k,-march=armv5t -Wa$(comma)-march=armv6k) +arch-$(CONFIG_CPU_32v6K) =-D__LINUX_ARM_ARCH__=6 -march=armv6k endif -arch-$(CONFIG_CPU_32v5) =-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4t) +arch-$(CONFIG_CPU_32v5) =-D__LINUX_ARM_ARCH__=5 -march=armv5te arch-$(CONFIG_CPU_32v4T) =-D__LINUX_ARM_ARCH__=4 -march=armv4t arch-$(CONFIG_CPU_32v4) =-D__LINUX_ARM_ARCH__=4 -march=armv4 arch-$(CONFIG_CPU_32v3) =-D__LINUX_ARM_ARCH__=3 -march=armv3
@@ -88,7 +88,7 @@ tune-$(CONFIG_CPU_ARM720T) =-mtune=arm7tdmi tune-$(CONFIG_CPU_ARM740T) =-mtune=arm7tdmi tune-$(CONFIG_CPU_ARM9TDMI) =-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM940T) =-mtune=arm9tdmi -tune-$(CONFIG_CPU_ARM946E) =$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi) +tune-$(CONFIG_CPU_ARM946E) =-mtune=arm9e tune-$(CONFIG_CPU_ARM920T) =-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM922T) =-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM925T) =-mtune=arm9tdmi
@@ -96,11 +96,11 @@ tune-$(CONFIG_CPU_ARM926T) =-mtune=arm9tdmi tune-$(CONFIG_CPU_FA526) =-mtune=arm9tdmi tune-$(CONFIG_CPU_SA110) =-mtune=strongarm110 tune-$(CONFIG_CPU_SA1100) =-mtune=strongarm1100 -tune-$(CONFIG_CPU_XSCALE) =$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale -tune-$(CONFIG_CPU_XSC3) =$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale -tune-$(CONFIG_CPU_FEROCEON) =$(call cc-option,-mtune=marvell-f,-mtune=xscale) -tune-$(CONFIG_CPU_V6) =$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) -tune-$(CONFIG_CPU_V6K) =$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) +tune-$(CONFIG_CPU_XSCALE) =-mtune=xscale +tune-$(CONFIG_CPU_XSC3) =-mtune=xscale +tune-$(CONFIG_CPU_FEROCEON) =-mtune=xscale +tune-$(CONFIG_CPU_V6) =-mtune=arm1136j-s +tune-$(CONFIG_CPU_V6K) =-mtune=arm1136j-s # Evaluate tune cc-option calls now tune-y := $(tune-y)
arch/arm/boot/dts/at91-tse850-3.dts +1 -1
@@ -267,7 +267,7 @@ &macb1 { status = "okay"; - phy-mode = "rgmii"; + phy-mode = "rmii"; #address-cells = <1>; #size-cells = <0>;
arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi +1 -1
@@ -29,7 +29,7 @@ compatible = "smsc,lan9221","smsc,lan9115"; bank-width = <2>; - gpmc,mux-add-data; + gpmc,mux-add-data = <0>; gpmc,cs-on-ns = <0>; gpmc,cs-rd-off-ns = <42>; gpmc,cs-wr-off-ns = <36>;
arch/arm/boot/dts/omap3-gta04.dtsi +1 -1
@@ -353,7 +353,7 @@ compatible = "bosch,bma180"; reg = <0x41>; pinctrl-names = "default"; - pintcrl-0 = <&bma180_pins>; + pinctrl-0 = <&bma180_pins>; interrupt-parent = <&gpio4>; interrupts = <19 IRQ_TYPE_LEVEL_HIGH>; /* GPIO_115 */ };
arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi +1 -1
@@ -25,7 +25,7 @@ compatible = "smsc,lan9221","smsc,lan9115"; bank-width = <2>; - gpmc,mux-add-data; + gpmc,mux-add-data = <0>; gpmc,cs-on-ns = <0>; gpmc,cs-rd-off-ns = <42>; gpmc,cs-wr-off-ns = <36>;
arch/arm/kernel/stacktrace.c +1 -2
@@ -52,8 +52,7 @@ int notrace unwind_frame(struct stackframe *frame) frame->sp = frame->fp; frame->fp = *(unsigned long *)(fp); - frame->pc = frame->lr; - frame->lr = *(unsigned long *)(fp +4 ); + frame->pc = *(unsigned long *)(fp +4 );#else /* check current frame pointer is within bounds */ if (fp < low +12 || fp > high -4 )
arch/arm/mm/Kconfig +1 -1
@@ -757,7 +757,7 @@ config CPU_BIG_ENDIAN config CPU_ENDIAN_BE8 bool depends on CPU_BIG_ENDIAN - default CPU_V6 || CPU_V6K || CPU_V7 + default CPU_V6 || CPU_V6K || CPU_V7 || CPU_V7M help Support for the BE-8 (big-endian) mode on ARMv6 and ARMv7 processors.
arch/arm/mm/mmu.c +2 -2
@@ -416,9 +416,9 @@ void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t prot) FIXADDR_END);BUG_ON (idx >= __end_of_fixed_addresses); -/* we only support device mappings until pgprot_kernel has been set */ +/* We support only device mappings before pgprot_kernel is set. */ if (WARN_ON (pgprot_val (prot) !=pgprot_val (FIXMAP_PAGE_IO ) && -pgprot_val (pgprot_kernel) ==0 )) +pgprot_val (prot) &&pgprot_val (pgprot_kernel) ==0 ))return ;if (pgprot_val (prot))
arch/arm64/boot/dts/xilinx/zynqmp.dtsi +2 -2
@@ -573,7 +573,7 @@ }; uart0: serial@ff000000 { - compatible = "cdns,uart-r1p12", "xlnx,xuartps"; + compatible = "xlnx,zynqmp-uart", "cdns,uart-r1p12"; status = "disabled"; interrupt-parent = <&gic>; interrupts = <0 21 4>;
@@ -582,7 +582,7 @@ }; uart1: serial@ff010000 { - compatible = "cdns,uart-r1p12", "xlnx,xuartps"; + compatible = "xlnx,zynqmp-uart", "cdns,uart-r1p12"; status = "disabled"; interrupt-parent = <&gic>; interrupts = <0 22 4>;
arch/hexagon/lib/io.c +4 -0
@@ -40,6 +40,7 @@ void __raw_readsw(const void __iomem *addr, void *data, int len) *dst++ = *src; } +EXPORT_SYMBOL (__raw_readsw);/* * __raw_writesw - read words a short at a time
@@ -60,6 +61,7 @@ void __raw_writesw(void __iomem *addr, const void *data, int len) } +EXPORT_SYMBOL (__raw_writesw);/* Pretty sure len is pre-adjusted for the length of the access already */ void __raw_readsl (const void __iomem *addr,void *data,int len)
@@ -75,6 +77,7 @@ void __raw_readsl(const void __iomem *addr, void *data, int len) } +EXPORT_SYMBOL (__raw_readsl);void __raw_writesl (void __iomem *addr,const void *data,int len) {
@@ -89,3 +92,4 @@ void __raw_writesl(void __iomem *addr, const void *data, int len) } +EXPORT_SYMBOL (__raw_writesl);
arch/ia64/Kconfig.debug +1 -1
@@ -42,7 +42,7 @@ config DISABLE_VHPT config IA64_DEBUG_CMPXCHG bool "Turn on compare-and-exchange bug checking (slow!)" - depends on DEBUG_KERNEL + depends on DEBUG_KERNEL && PRINTK help Selecting this option turns on bug checking for the IA-64 compare-and-exchange instructions. This is slow! Itaniums
arch/m68k/Kconfig.machine +1 -0
@@ -185,6 +185,7 @@ config INIT_LCD config MEMORY_RESERVE int "Memory reservation (MiB)" depends on (UCSIMM || UCDIMM) + default 0 help Reserve certain memory regions on 68x328 based boards.
arch/mips/Kconfig +4 -0
@@ -273,6 +273,9 @@ config BCM63XX select SYS_SUPPORTS_32BIT_KERNEL select SYS_SUPPORTS_BIG_ENDIAN select SYS_HAS_EARLY_PRINTK + select SYS_HAS_CPU_BMIPS32_3300 + select SYS_HAS_CPU_BMIPS4350 + select SYS_HAS_CPU_BMIPS4380 select SWAP_IO_SPACE select GPIOLIB select HAVE_CLK
@@ -1383,6 +1386,7 @@ config CPU_LOONGSON3 select WEAK_REORDERING_BEYOND_LLSC select MIPS_PGD_C0_CONTEXT select MIPS_L1_CACHE_SHIFT_6 + select MIPS_FP_SUPPORT select GPIOLIB help The Loongson 3 processor implements the MIPS64R2 instruction
arch/mips/bcm63xx/clk.c +6 -0
@@ -337,6 +337,12 @@ void clk_disable(struct clk *clk)EXPORT_SYMBOL (clk_disable); +struct clk *clk_get_parent (struct clk *clk) +{ +return NULL ; +} +EXPORT_SYMBOL (clk_get_parent); +unsigned long clk_get_rate (struct clk *clk) {if (!clk)
arch/mips/generic/yamon-dt.c +1 -1
@@ -81,7 +81,7 @@ static unsigned int __init gen_fdt_mem_array(__init int yamon_dt_append_memory (void *fdt,const struct yamon_mem_region *regions) { -unsigned long phys_memsize, memsize; +unsigned long phys_memsize =0 , memsize;__be32 mem_array[2 *MAX_MEM_ARRAY_ENTRIES ];unsigned int mem_entries;int i, err, mem_off;
arch/mips/include/asm/mips-cm.h +6 -6
@@ -15,6 +15,7 @@#ifndef __MIPS_ASM_MIPS_CM_H__#define __MIPS_ASM_MIPS_CM_H__ +#include <linux/bitfield.h> #include <linux/bitops.h> #include <linux/errno.h>
@@ -157,8 +158,8 @@ GCR_ACCESSOR_RO(32, 0x030, rev)#define CM_GCR_REV_MINOR GENMASK(7, 0)#define CM_ENCODE_REV (major, minor) \ - (((major) << __ffs(CM_GCR_REV_MAJOR)) | \ - ((minor) << __ffs(CM_GCR_REV_MINOR))) + (FIELD_PREP(CM_GCR_REV_MAJOR, major) | \ + FIELD_PREP(CM_GCR_REV_MINOR, minor))#define CM_REV_CM2 CM_ENCODE_REV(6, 0)#define CM_REV_CM2_5 CM_ENCODE_REV(7, 0)
@@ -366,10 +367,10 @@ static inline int mips_cm_revision(void)static inline unsigned int mips_cm_max_vp_width (void ) {extern int smp_num_siblings; -uint32_t cfg;if (mips_cm_revision () >=CM_REV_CM3 ) -return read_gcr_sys_config2 () &CM_GCR_SYS_CONFIG2_MAXVPW ; +return FIELD_GET (CM_GCR_SYS_CONFIG2_MAXVPW , +read_gcr_sys_config2 ());if (mips_cm_present ()) {/*
@@ -377,8 +378,7 @@ static inline unsigned int mips_cm_max_vp_width(void)* number of VP(E)s, and if that ever changes then this will * need revisiting. */ - cfg =read_gcr_cl_config () & CM_GCR_Cx_CONFIG_PVPE; -return (cfg >>__ffs (CM_GCR_Cx_CONFIG_PVPE)) +1 ; +return FIELD_GET (CM_GCR_Cx_CONFIG_PVPE,read_gcr_cl_config ()) +1 ; }if (IS_ENABLED (CONFIG_SMP ))
arch/mips/kernel/mips-cm.c +10 -11
@@ -183,8 +183,7 @@ static void mips_cm_probe_l2sync(void)phys_addr_t addr;/* L2-only sync was introduced with CM major revision 6 */ - major_rev = (read_gcr_rev () &CM_GCR_REV_MAJOR ) >> -__ffs (CM_GCR_REV_MAJOR ); + major_rev =FIELD_GET (CM_GCR_REV_MAJOR ,read_gcr_rev ());if (major_rev <6 )return ;
@@ -267,13 +266,13 @@ void mips_cm_lock_other(unsigned int cluster, unsigned int core,preempt_disable ();if (cm_rev >=CM_REV_CM3 ) { - val = core <<__ffs (CM3_GCR_Cx_OTHER_CORE); - val |= vp <<__ffs (CM3_GCR_Cx_OTHER_VP); + val =FIELD_PREP (CM3_GCR_Cx_OTHER_CORE, core) | +FIELD_PREP (CM3_GCR_Cx_OTHER_VP, vp);if (cm_rev >=CM_REV_CM3_5 ) { val |= CM_GCR_Cx_OTHER_CLUSTER_EN; - val |= cluster <<__ffs (CM_GCR_Cx_OTHER_CLUSTER); - val |= block <<__ffs (CM_GCR_Cx_OTHER_BLOCK); + val |=FIELD_PREP (CM_GCR_Cx_OTHER_CLUSTER, cluster); + val |=FIELD_PREP (CM_GCR_Cx_OTHER_BLOCK, block); }else {WARN_ON (cluster !=0 );WARN_ON (block != CM_GCR_Cx_OTHER_BLOCK_LOCAL);
@@ -303,7 +302,7 @@ void mips_cm_lock_other(unsigned int cluster, unsigned int core,spin_lock_irqsave (&per_cpu (cm_core_lock, curr_core),per_cpu (cm_core_lock_flags, curr_core)); - val = core <<__ffs (CM_GCR_Cx_OTHER_CORENUM); + val =FIELD_PREP (CM_GCR_Cx_OTHER_CORENUM, core); }write_gcr_cl_other (val);
@@ -347,8 +346,8 @@ void mips_cm_error_report(void) cm_other =read_gcr_error_mult ();if (revision <CM_REV_CM3 ) {/* CM2 */ - cause = cm_error >>__ffs (CM_GCR_ERROR_CAUSE_ERRTYPE ); - ocause = cm_other >>__ffs (CM_GCR_ERROR_MULT_ERR2ND ); + cause =FIELD_GET (CM_GCR_ERROR_CAUSE_ERRTYPE , cm_error); + ocause =FIELD_GET (CM_GCR_ERROR_MULT_ERR2ND , cm_other);if (!cause)return ;
@@ -390,8 +389,8 @@ void mips_cm_error_report(void)ulong core_id_bits, vp_id_bits, cmd_bits, cmd_group_bits;ulong cm3_cca_bits, mcp_bits, cm3_tr_bits, sched_bit; - cause = cm_error >>__ffs64 (CM3_GCR_ERROR_CAUSE_ERRTYPE ); - ocause = cm_other >>__ffs (CM_GCR_ERROR_MULT_ERR2ND ); + cause =FIELD_GET (CM3_GCR_ERROR_CAUSE_ERRTYPE , cm_error); + ocause =FIELD_GET (CM_GCR_ERROR_MULT_ERR2ND , cm_other);if (!cause)return ;
arch/mips/kernel/r2300_fpu.S +2 -2
@@ -29,8 +29,8 @@ #define EX2(a,b) \ 9: a,##b; \ .section __ex_table,"a"; \ - PTR 9b,bad_stack; \ - PTR 9b+4,bad_stack; \ + PTR 9b,fault; \ + PTR 9b+4,fault; \ .previous .set mips1
arch/mips/kernel/syscall.c +0 -9
@@ -233,12 +233,3 @@ SYSCALL_DEFINE3(cachectl, char *, addr, int, nbytes, int, op) {return -ENOSYS ; } - -/* -* If we ever come here the user sp is bad. Zap the process right away. -* Due to the bad stack signaling wouldn't work. -*/ -asmlinkage void bad_stack(void) -{ -do_exit (SIGSEGV ); -}
arch/mips/lantiq/clk.c +6 -0
@@ -160,6 +160,12 @@ void clk_deactivate(struct clk *clk) }EXPORT_SYMBOL (clk_deactivate); +struct clk *clk_get_parent (struct clk *clk) +{ +return NULL ; +} +EXPORT_SYMBOL (clk_get_parent); +static inline u32 get_counter_resolution (void ) {u32 res;
arch/mips/lantiq/xway/dma.c +9 -5
@@ -22,6 +22,7 @@#include <linux/export.h> #include <linux/spinlock.h> #include <linux/clk.h> +#include <linux/delay.h> #include <linux/err.h> #include <lantiq_soc.h>
@@ -40,6 +41,7 @@#define LTQ_DMA_PCTRL 0x44#define LTQ_DMA_IRNEN 0xf4 +#define DMA_ID_CHNR GENMASK(26, 20)/* channel number */ #define DMA_DESCPT BIT(3)/* descriptor complete irq */ #define DMA_TX BIT(8)/* TX channel direction */ #define DMA_CHAN_ON BIT(0)/* channel on / off bit */
@@ -50,7 +52,6 @@#define DMA_POLL BIT(31)/* turn on channel polling */ #define DMA_CLK_DIV4 BIT(6)/* polling clock divider */ #define DMA_2W_BURST BIT(1)/* 2 word burst length */ -#define DMA_MAX_CHANNEL 20/* the soc has 20 channels */ #define DMA_ETOP_ENDIANNESS (0xf << 8)/* endianness swap etop channels */ #define DMA_WEIGHT (BIT(17) | BIT(16))/* default channel wheight */
@@ -218,7 +219,7 @@ ltq_dma_init(struct platform_device *pdev) {struct clk *clk;struct resource *res; -unsigned id; +unsigned int id, nchannels;int i; res =platform_get_resource (pdev,IORESOURCE_MEM ,0 );
@@ -234,21 +235,24 @@ ltq_dma_init(struct platform_device *pdev)clk_enable (clk);ltq_dma_w32_mask (0 ,DMA_RESET ,LTQ_DMA_CTRL ); +usleep_range (1 ,10 ); +/* disable all interrupts */ ltq_dma_w32 (0 ,LTQ_DMA_IRNEN );/* reset/configure each channel */ -for (i =0 ; i <DMA_MAX_CHANNEL ; i++) { + id =ltq_dma_r32 (LTQ_DMA_ID ); + nchannels = ((id &DMA_ID_CHNR ) >>20 ); +for (i =0 ; i < nchannels; i++) {ltq_dma_w32 (i,LTQ_DMA_CS );ltq_dma_w32 (DMA_CHAN_RST ,LTQ_DMA_CCTRL );ltq_dma_w32 (DMA_POLL |DMA_CLK_DIV4 ,LTQ_DMA_CPOLL );ltq_dma_w32_mask (DMA_CHAN_ON ,0 ,LTQ_DMA_CCTRL ); } - id =ltq_dma_r32 (LTQ_DMA_ID );dev_info (&pdev->dev,"Init done - hw rev: %X, ports: %d, channels: %d\n" , - id &0x1f , (id >>16 ) &0xf , id >>20 ); + id &0x1f , (id >>16 ) &0xf , nchannels);return 0 ; }
arch/mips/sni/time.c +2 -2
@@ -18,14 +18,14 @@ static int a20r_set_periodic(struct clock_event_device *evt) { *(volatile u8 *)(A20R_PT_CLOCK_BASE +12 ) =0x34 ;wmb (); - *(volatile u8 *)(A20R_PT_CLOCK_BASE +0 ) =SNI_COUNTER0_DIV ; + *(volatile u8 *)(A20R_PT_CLOCK_BASE +0 ) =SNI_COUNTER0_DIV &0xff ;wmb (); *(volatile u8 *)(A20R_PT_CLOCK_BASE +0 ) =SNI_COUNTER0_DIV >>8 ;wmb (); *(volatile u8 *)(A20R_PT_CLOCK_BASE +12 ) =0xb4 ;wmb (); - *(volatile u8 *)(A20R_PT_CLOCK_BASE +8 ) =SNI_COUNTER2_DIV ; + *(volatile u8 *)(A20R_PT_CLOCK_BASE +8 ) =SNI_COUNTER2_DIV &0xff ;wmb (); *(volatile u8 *)(A20R_PT_CLOCK_BASE +8 ) =SNI_COUNTER2_DIV >>8 ;wmb ();
arch/parisc/kernel/entry.S +2 -2
@@ -1849,8 +1849,8 @@ syscall_restore: LDREG TI_TASK-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1 /* Are we being ptraced? */ - ldw TASK_FLAGS(%r1),%r19 - ldi _TIF_SYSCALL_TRACE_MASK,%r2 + LDREG TI_FLAGS-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r19 + ldi _TIF_SINGLESTEP|_TIF_BLOCKSTEP,%r2 and,COND(=) %r19,%r2,%r0 b,n syscall_restore_rfi
arch/parisc/kernel/smp.c +17 -2
@@ -32,6 +32,7 @@#include <linux/bitops.h> #include <linux/ftrace.h> #include <linux/cpu.h> +#include <linux/kgdb.h> #include <linux/atomic.h> #include <asm/current.h>
@@ -74,7 +75,10 @@ enum ipi_message_type {IPI_CALL_FUNC ,IPI_CPU_START ,IPI_CPU_STOP , - IPI_CPU_TEST +IPI_CPU_TEST , +#ifdef CONFIG_KGDB + IPI_ENTER_KGDB, +#endif };
@@ -170,7 +174,12 @@ ipi_interrupt(int irq, void *dev_id)case IPI_CPU_TEST :smp_debug (100 ,KERN_DEBUG "CPU%d is alive!\n" , this_cpu);break ; - +#ifdef CONFIG_KGDB +case IPI_ENTER_KGDB : +smp_debug (100 ,KERN_DEBUG "CPU%d ENTER_KGDB\n" , this_cpu); +kgdb_nmicallback (raw_smp_processor_id (),get_irq_regs ()); +break ; +#endif default :printk (KERN_CRIT "Unknown IPI num on CPU%d: %lu\n" , this_cpu, which);
@@ -226,6 +235,12 @@ send_IPI_allbutself(enum ipi_message_type op) } } +#ifdef CONFIG_KGDB +void kgdb_roundup_cpus (void ) +{ +send_IPI_allbutself (IPI_ENTER_KGDB ); +} +#endif inline void smp_send_stop (void ) {send_IPI_allbutself (IPI_CPU_STOP ); }
arch/parisc/mm/init.c +2 -2
@@ -895,9 +895,9 @@ void flush_tlb_all(void) {int do_recycle; -__inc_irq_stat (irq_tlb_count); do_recycle =0 ;spin_lock (&sid_lock); +__inc_irq_stat (irq_tlb_count);if (dirty_space_ids >RECYCLE_THRESHOLD ) {BUG_ON (recycle_inuse);/* FIXME: Use a semaphore/wait queue here */ get_dirty_sids (&recycle_ndirty,recycle_dirty_array);
@@ -916,8 +916,8 @@ void flush_tlb_all(void)#else void flush_tlb_all (void ) { -__inc_irq_stat (irq_tlb_count);spin_lock (&sid_lock); +__inc_irq_stat (irq_tlb_count);flush_tlb_all_local (NULL );recycle_sids ();spin_unlock (&sid_lock);
arch/powerpc/boot/dts/charon.dts +1 -1
@@ -39,7 +39,7 @@ }; }; - memory { + memory@0 { device_type = "memory"; reg = <0x00000000 0x08000000>; // 128MB };
arch/powerpc/boot/dts/digsy_mtc.dts +1 -1
@@ -20,7 +20,7 @@ model = "intercontrol,digsy-mtc"; compatible = "intercontrol,digsy-mtc"; - memory { + memory@0 { reg = <0x00000000 0x02000000>; // 32MB };
arch/powerpc/boot/dts/lite5200.dts +1 -1
@@ -36,7 +36,7 @@ }; }; - memory { + memory@0 { device_type = "memory"; reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/boot/dts/lite5200b.dts +1 -1
@@ -35,7 +35,7 @@ led4 { gpios = <&gpio_simple 2 1>; }; }; - memory { + memory@0 { reg = <0x00000000 0x10000000>; // 256MB };
arch/powerpc/boot/dts/media5200.dts +1 -1
@@ -36,7 +36,7 @@ }; }; - memory { + memory@0 { reg = <0x00000000 0x08000000>; // 128MB RAM };
arch/powerpc/boot/dts/mpc5200b.dtsi +1 -1
@@ -37,7 +37,7 @@ }; }; - memory: memory { + memory: memory@0 { device_type = "memory"; reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/boot/dts/o2d.dts +1 -1
@@ -16,7 +16,7 @@ model = "ifm,o2d"; compatible = "ifm,o2d"; - memory { + memory@0 { reg = <0x00000000 0x08000000>; // 128MB };
arch/powerpc/boot/dts/o2d.dtsi +1 -1
@@ -23,7 +23,7 @@ model = "ifm,o2d"; compatible = "ifm,o2d"; - memory { + memory@0 { reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/boot/dts/o2dnt2.dts +1 -1
@@ -16,7 +16,7 @@ model = "ifm,o2dnt2"; compatible = "ifm,o2d"; - memory { + memory@0 { reg = <0x00000000 0x08000000>; // 128MB };
arch/powerpc/boot/dts/o3dnt.dts +1 -1
@@ -16,7 +16,7 @@ model = "ifm,o3dnt"; compatible = "ifm,o2d"; - memory { + memory@0 { reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/boot/dts/pcm032.dts +1 -1
@@ -26,7 +26,7 @@ model = "phytec,pcm032"; compatible = "phytec,pcm032"; - memory { + memory@0 { reg = <0x00000000 0x08000000>; // 128MB };
arch/powerpc/boot/dts/tqm5200.dts +1 -1
@@ -36,7 +36,7 @@ }; }; - memory { + memory@0 { device_type = "memory"; reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/include/asm/code-patching.h +1 -0
@@ -25,6 +25,7 @@#define BRANCH_ABSOLUTE 0x2bool is_offset_in_branch_range (long offset); +bool is_offset_in_cond_branch_range (long offset);unsigned int create_branch (const unsigned int *addr,unsigned long target,int flags); unsigned int create_cond_branch(const unsigned int *addr,
arch/powerpc/lib/code-patching.c +6 -1
@@ -244,6 +244,11 @@ bool is_offset_in_branch_range(long offset)return (offset >=-0x2000000 && offset <=0x1fffffc && !(offset &0x3 )); } +bool is_offset_in_cond_branch_range (long offset) +{ +return offset >=-0x8000 && offset <=0x7fff && !(offset &0x3 ); +} +/* * Helper to check if a given instruction is a conditional branch * Derived from the conditional checks in analyse_instr()
@@ -297,7 +302,7 @@ unsigned int create_cond_branch(const unsigned int *addr, offset = offset - (unsigned long )addr;/* Check we can represent the target in the instruction format */ -if (offset <-0x8000 || offset >0x7FFF || offset &0x3 ) +if (!is_offset_in_cond_branch_range (offset))return 0 ;/* Mask out the flags and target, so they don't step on each other. */
arch/powerpc/net/bpf_jit.h +21 -12
@@ -15,6 +15,7 @@#ifndef __ASSEMBLY__#include <asm/types.h> +#include <asm/code-patching.h> #ifdef PPC64_ELF_ABI_v1#define FUNCTION_DESCR_SIZE 24
@@ -176,13 +177,26 @@#define PPC_NEG (d, a) EMIT(PPC_INST_NEG | ___PPC_RT(d) | ___PPC_RA(a))/* Long jump; (unconditional 'branch') */ -#define PPC_JMP (dest) EMIT(PPC_INST_BRANCH | \ - (((dest) - (ctx->idx * 4)) & 0x03fffffc)) +#define PPC_JMP (dest) \ + do { \ + long offset = (long)(dest) - (ctx->idx * 4); \ + if (!is_offset_in_branch_range(offset)) { \ + pr_err_ratelimited("Branch offset 0x%lx (@%u) out of range\n", offset, ctx->idx); \ + return -ERANGE; \ + } \ + EMIT(PPC_INST_BRANCH | (offset & 0x03fffffc)); \ + } while (0)/* "cond" here covers BO:BI fields. */ -#define PPC_BCC_SHORT (cond, dest) EMIT(PPC_INST_BRANCH_COND | \ - (((cond) & 0x3ff) << 16) | \ - (((dest) - (ctx->idx * 4)) & \ - 0xfffc)) +#define PPC_BCC_SHORT (cond, dest) \ + do { \ + long offset = (long)(dest) - (ctx->idx * 4); \ + if (!is_offset_in_cond_branch_range(offset)) { \ + pr_err_ratelimited("Conditional branch offset 0x%lx (@%u) out of range\n", offset, ctx->idx); \ + return -ERANGE; \ + } \ + EMIT(PPC_INST_BRANCH_COND | (((cond) & 0x3ff) << 16) | (offset & 0xfffc)); \ + } while (0) +/* Sign-extended 32-bit immediate load */ #define PPC_LI32 (d, i) do { \ if ((int)(uintptr_t)(i) >= -32768 && \
@@ -221,11 +235,6 @@#define PPC_FUNC_ADDR (d,i) do { PPC_LI32(d, i); } while(0)#endif -static inline bool is_nearbranch (int offset) -{ -return (offset <32768 ) && (offset >=-32768 ); -} -/* * The fly in the ointment of code size changing from pass to pass is * avoided by padding the short branch case with a NOP. If code size differs
@@ -234,7 +243,7 @@ static inline bool is_nearbranch(int offset)* state. */ #define PPC_BCC (cond, dest) do { \ - if (is_nearbranch((dest) - (ctx->idx * 4))) { \ + if (is_offset_in_cond_branch_range((long)(dest) - (ctx->idx * 4))) { \ PPC_BCC_SHORT(cond, dest); \ PPC_NOP(); \ } else { \
arch/powerpc/net/bpf_jit_comp64.c +24 -13
@@ -235,7 +235,7 @@ static void bpf_jit_emit_func_call(u32 *image, struct codegen_context *ctx, u64PPC_BLRL (); } -static void bpf_jit_emit_tail_call (u32 *image,struct codegen_context *ctx,u32 out) +static int bpf_jit_emit_tail_call (u32 *image,struct codegen_context *ctx,u32 out) {/* * By now, the eBPF program has already setup parameters in r3, r4 and r5
@@ -296,7 +296,9 @@ static void bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32bpf_jit_emit_common_epilogue (image, ctx);PPC_BCTR (); +/* out: */ +return 0 ; }/* Assemble the body code between the prologue & epilogue */
@@ -306,7 +308,7 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, {const struct bpf_insn *insn = fp->insnsi;int flen = fp->len; -int i; +int i, ret;/* Start of epilogue code - will only be valid 2nd pass onwards */ u32 exit_addr = addrs[flen];
@@ -357,18 +359,25 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,PPC_SUB (dst_reg, dst_reg, src_reg); goto bpf_alu32_trunc;case BPF_ALU |BPF_ADD |BPF_K :/* (u32) dst += (u32) imm */ -case BPF_ALU |BPF_SUB |BPF_K :/* (u32) dst -= (u32) imm */ case BPF_ALU64 |BPF_ADD |BPF_K :/* dst += imm */ +if (!imm) { + goto bpf_alu32_trunc; + }else if (imm >=-32768 && imm <32768 ) { +PPC_ADDI (dst_reg, dst_reg,IMM_L (imm)); + }else { +PPC_LI32 (b2p[TMP_REG_1 ], imm); +PPC_ADD (dst_reg, dst_reg, b2p[TMP_REG_1 ]); + } + goto bpf_alu32_trunc; +case BPF_ALU |BPF_SUB |BPF_K :/* (u32) dst -= (u32) imm */ case BPF_ALU64 |BPF_SUB |BPF_K :/* dst -= imm */ -if (BPF_OP (code) ==BPF_SUB ) - imm = -imm; -if (imm) { -if (imm >=-32768 && imm <32768 ) -PPC_ADDI (dst_reg, dst_reg,IMM_L (imm)); -else { -PPC_LI32 (b2p[TMP_REG_1 ], imm); -PPC_ADD (dst_reg, dst_reg, b2p[TMP_REG_1 ]); - } +if (!imm) { + goto bpf_alu32_trunc; + }else if (imm >-32768 && imm <=32768 ) { +PPC_ADDI (dst_reg, dst_reg,IMM_L (-imm)); + }else { +PPC_LI32 (b2p[TMP_REG_1 ], imm); +PPC_SUB (dst_reg, dst_reg, b2p[TMP_REG_1 ]); } goto bpf_alu32_trunc;case BPF_ALU |BPF_MUL |BPF_X :/* (u32) dst *= (u32) src */
@@ -956,7 +965,9 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,*/ case BPF_JMP |BPF_TAIL_CALL : ctx->seen |=SEEN_TAILCALL ; -bpf_jit_emit_tail_call (image, ctx, addrs[i +1 ]); + ret =bpf_jit_emit_tail_call (image, ctx, addrs[i +1 ]); +if (ret <0 ) +return ret;break ;default :
arch/powerpc/platforms/85xx/mpc85xx_pm_ops.c +1 -2
@@ -98,9 +98,8 @@ int __init mpc85xx_setup_pmc(void)pr_err ("Could not map guts node address\n" );return -ENOMEM ; } + qoriq_pm_ops = &mpc85xx_pm_ops; } - qoriq_pm_ops = &mpc85xx_pm_ops; -return 0 ; }
arch/powerpc/sysdev/dcr-low.S +1 -1
@@ -15,7 +15,7 @@ #include <asm/export.h> #define DCR_ACCESS_PROLOG(table) \ - cmpli cr0,r3,1024; \ + cmplwi cr0,r3,1024; \ rlwinm r3,r3,4,18,27; \ lis r5,table@h; \ ori r5,r5,table@l; \
arch/s390/mm/gmap.c +3 -2
@@ -665,9 +665,10 @@ void __gmap_zap(struct gmap *gmap, unsigned long gaddr) vmaddr |= gaddr & ~PMD_MASK ;/* Get pointer to the page table entry */ ptep =get_locked_pte (gmap->mm, vmaddr, &ptl); -if (likely (ptep)) +if (likely (ptep)) {ptep_zap_unused (gmap->mm, vmaddr, ptep,0 ); -pte_unmap_unlock (ptep, ptl); +pte_unmap_unlock (ptep, ptl); + } } }EXPORT_SYMBOL_GPL (__gmap_zap);
arch/sh/Kconfig.debug +1 -0
@@ -61,6 +61,7 @@ config DUMP_CODE config DWARF_UNWINDER bool "Enable the DWARF unwinder for stacktraces" + depends on DEBUG_KERNEL select FRAME_POINTER depends on SUPERH32 default n
arch/sh/include/asm/sfp-machine.h +8 -0
@@ -25,6 +25,14 @@#ifndef _SFP_MACHINE_H#define _SFP_MACHINE_H +#ifdef __BIG_ENDIAN__ +#define __BYTE_ORDER __BIG_ENDIAN +#define __LITTLE_ENDIAN 0 +#else +#define __BYTE_ORDER __LITTLE_ENDIAN +#define __BIG_ENDIAN 0 +#endif +#define _FP_W_TYPE_SIZE 32#define _FP_W_TYPE unsigned long#define _FP_WS_TYPE signed long
arch/sh/kernel/cpu/sh4a/smp-shx3.c +3 -2
@@ -76,8 +76,9 @@ static void shx3_prepare_cpus(unsigned int max_cpus)BUILD_BUG_ON (SMP_MSG_NR >=8 );for (i =0 ; i <SMP_MSG_NR ; i++) -request_irq (104 + i, ipi_interrupt_handler, -IRQF_PERCPU ,"IPI" , (void *)(long )i); +if (request_irq (104 + i, ipi_interrupt_handler, +IRQF_PERCPU ,"IPI" , (void *)(long )i)) +pr_err ("Failed to request irq %d\n" , i);for (i =0 ; i < max_cpus; i++)set_cpu_present (i, true);
arch/x86/events/intel/uncore_snbep.c +4 -0
@@ -3383,6 +3383,9 @@ static int skx_cha_hw_config(struct intel_uncore_box *box, struct perf_event *evstruct hw_perf_event_extra *reg1 = &event->hw.extra_reg;struct extra_reg *er;int idx =0 ; +/* Any of the CHA events may be filtered by Thread/Core-ID.*/ +if (event->hw.config &SNBEP_CBO_PMON_CTL_TID_EN ) + idx =SKX_CHA_MSR_PMON_BOX_FILTER_TID ;for (er = skx_uncore_cha_extra_regs; er->msr; er++) {if (er->event != (event->hw.config & er->config_mask))
@@ -3450,6 +3453,7 @@ static struct event_constraint skx_uncore_iio_constraints[] = {UNCORE_EVENT_CONSTRAINT (0xc0 ,0xc ),UNCORE_EVENT_CONSTRAINT (0xc5 ,0xc ),UNCORE_EVENT_CONSTRAINT (0xd4 ,0xc ), +UNCORE_EVENT_CONSTRAINT (0xd5 ,0xc ), EVENT_CONSTRAINT_END };
arch/x86/include/asm/page_64_types.h +1 -1
@@ -20,7 +20,7 @@#define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER)#define CURRENT_MASK (~(THREAD_SIZE - 1)) -#define EXCEPTION_STACK_ORDER (0 + KASAN_STACK_ORDER) +#define EXCEPTION_STACK_ORDER (1 + KASAN_STACK_ORDER)#define EXCEPTION_STKSZ (PAGE_SIZE << EXCEPTION_STACK_ORDER)#define DEBUG_STACK_ORDER (EXCEPTION_STACK_ORDER + 1)
arch/x86/kernel/irq.c +3 -1
@@ -274,8 +274,10 @@ void kvm_set_posted_intr_wakeup_handler(void (*handler)(void)) {if (handler) kvm_posted_intr_wakeup_handler = handler; -else +else { kvm_posted_intr_wakeup_handler = dummy_handler; +synchronize_rcu (); + } }EXPORT_SYMBOL_GPL (kvm_set_posted_intr_wakeup_handler);
crypto/pcrypt.c +8 -4
@@ -138,12 +138,14 @@ static void pcrypt_aead_enc(struct padata_priv *padata) {struct pcrypt_request *preq =pcrypt_padata_request (padata);struct aead_request *req =pcrypt_request_ctx (preq); +int ret; - padata->info =crypto_aead_encrypt (req); + ret =crypto_aead_encrypt (req); -if (padata->info == -EINPROGRESS ) +if (ret == -EINPROGRESS )return ; + padata->info = ret;padata_do_serial (padata); }
@@ -180,12 +182,14 @@ static void pcrypt_aead_dec(struct padata_priv *padata) {struct pcrypt_request *preq =pcrypt_padata_request (padata);struct aead_request *req =pcrypt_request_ctx (preq); +int ret; - padata->info =crypto_aead_decrypt (req); + ret =crypto_aead_decrypt (req); -if (padata->info == -EINPROGRESS ) +if (ret == -EINPROGRESS )return ; + padata->info = ret;padata_do_serial (padata); }
drivers/acpi/acpica/acglobal.h +2 -0
@@ -255,6 +255,8 @@ extern struct acpi_bit_register_infoACPI_GLOBAL (u8, acpi_gbl_sleep_type_a);ACPI_GLOBAL (u8, acpi_gbl_sleep_type_b); +ACPI_GLOBAL (u8, acpi_gbl_sleep_type_a_s0); +ACPI_GLOBAL (u8, acpi_gbl_sleep_type_b_s0);/***************************************************************************** *
drivers/acpi/acpica/hwesleep.c +2 -6
@@ -181,17 +181,13 @@ acpi_status acpi_hw_extended_sleep(u8 sleep_state)acpi_status acpi_hw_extended_wake_prep (u8 sleep_state) { -acpi_status status;u8 sleep_type_value;ACPI_FUNCTION_TRACE (hw_extended_wake_prep); - status =acpi_get_sleep_type_data (ACPI_STATE_S0 , - &acpi_gbl_sleep_type_a, - &acpi_gbl_sleep_type_b); -if (ACPI_SUCCESS (status)) { +if (acpi_gbl_sleep_type_a_s0 !=ACPI_SLEEP_TYPE_INVALID ) { sleep_type_value = - ((acpi_gbl_sleep_type_a <<ACPI_X_SLEEP_TYPE_POSITION ) & + ((acpi_gbl_sleep_type_a_s0 <<ACPI_X_SLEEP_TYPE_POSITION ) &ACPI_X_SLEEP_TYPE_MASK ); (void)acpi_write((u64)(sleep_type_value | ACPI_X_SLEEP_ENABLE),
drivers/acpi/acpica/hwsleep.c +4 -7
@@ -218,7 +218,7 @@ acpi_status acpi_hw_legacy_sleep(u8 sleep_state)acpi_status acpi_hw_legacy_wake_prep (u8 sleep_state) { -acpi_status status; +acpi_status status =AE_OK ;struct acpi_bit_register_info *sleep_type_reg_info;struct acpi_bit_register_info *sleep_enable_reg_info;u32 pm1a_control;
@@ -231,10 +231,7 @@ acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state)* This is unclear from the ACPI Spec, but it is required * by some machines. */ - status =acpi_get_sleep_type_data (ACPI_STATE_S0 , - &acpi_gbl_sleep_type_a, - &acpi_gbl_sleep_type_b); -if (ACPI_SUCCESS (status)) { +if (acpi_gbl_sleep_type_a_s0 !=ACPI_SLEEP_TYPE_INVALID ) { sleep_type_reg_info =acpi_hw_get_bit_register_info (ACPI_BITREG_SLEEP_TYPE ); sleep_enable_reg_info =
@@ -255,9 +252,9 @@ acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state)/* Insert the SLP_TYP bits */ - pm1a_control |= (acpi_gbl_sleep_type_a << + pm1a_control |= (acpi_gbl_sleep_type_a_s0 << sleep_type_reg_info->bit_position); - pm1b_control |= (acpi_gbl_sleep_type_b << + pm1b_control |= (acpi_gbl_sleep_type_b_s0 << sleep_type_reg_info->bit_position);/* Write the control registers and ignore any errors */
drivers/acpi/acpica/hwxfsleep.c +7 -0
@@ -322,6 +322,13 @@ acpi_status acpi_enter_sleep_state_prep(u8 sleep_state)return_ACPI_STATUS (status); } + status =acpi_get_sleep_type_data (ACPI_STATE_S0 , + &acpi_gbl_sleep_type_a_s0, + &acpi_gbl_sleep_type_b_s0); +if (ACPI_FAILURE (status)) { + acpi_gbl_sleep_type_a_s0 =ACPI_SLEEP_TYPE_INVALID ; + } +/* Execute the _PTS method (Prepare To Sleep) */ arg_list.count =1 ;
drivers/acpi/battery.c +1 -1
@@ -193,7 +193,7 @@ static int acpi_battery_is_charged(struct acpi_battery *battery)return 1 ;/* fallback to using design values for broken batteries */ -if (battery->design_capacity == battery->capacity_now) +if (battery->design_capacity <= battery->capacity_now)return 1 ;/* we don't do any sort of metric based on percentages */
drivers/acpi/pmic/intel_pmic.c +28 -23
59 lines not on this page · raw message
drivers/android/binder.c +13 -7
@@ -484,6 +484,9 @@ enum binder_deferred_state {* @files files_struct for process * (protected by @files_lock) * @files_lock mutex to protect @files +* @cred struct cred associated with the `struct file` +* in binder_open() +* (invariant after initialized) * @deferred_work_node: element for binder_deferred_list * (protected by binder_deferred_lock) * @deferred_work: bitmap of deferred work to perform
@@ -532,6 +535,7 @@ struct binder_proc {struct task_struct *tsk;struct files_struct *files;struct mutex files_lock; +const struct cred *cred;struct hlist_node deferred_work_node;int deferred_work;bool is_dead;
@@ -2281,7 +2285,7 @@ static int binder_translate_binder(struct flat_binder_object *fp, ret = -EINVAL ; goto done; } -if (security_binder_transfer_binder (proc->tsk, target_proc->tsk)) { +if (security_binder_transfer_binder (proc->cred, target_proc->cred)) { ret = -EPERM ; goto done; }
@@ -2327,7 +2331,7 @@ static int binder_translate_handle(struct flat_binder_object *fp, proc->pid, thread->pid, fp->handle);return -EINVAL ; } -if (security_binder_transfer_binder (proc->tsk, target_proc->tsk)) { +if (security_binder_transfer_binder (proc->cred, target_proc->cred)) { ret = -EPERM ; goto done; }
@@ -2411,7 +2415,7 @@ static int binder_translate_fd(int fd, ret = -EBADF ; goto err_fget; } - ret =security_binder_transfer_file (proc->tsk, target_proc->tsk, file); + ret =security_binder_transfer_file (proc->cred, target_proc->cred, file);if (ret <0 ) { ret = -EPERM ; goto err_security;
@@ -2798,8 +2802,8 @@ static void binder_transaction(struct binder_proc *proc, return_error_line = __LINE__; goto err_invalid_target_handle; } -if (security_binder_transaction (proc->tsk, - target_proc->tsk) <0 ) { +if (security_binder_transaction (proc->cred, + target_proc->cred) <0 ) { return_error =BR_FAILED_REPLY ; return_error_param = -EPERM ; return_error_line = __LINE__;
@@ -2890,7 +2894,7 @@ static void binder_transaction(struct binder_proc *proc, t->from = thread; else t->from = NULL; - t->sender_euid =task_euid (proc->tsk); + t->sender_euid = proc->cred->euid; t->to_proc = target_proc; t->to_thread = target_thread; t->code = tr->code;
@@ -4261,6 +4265,7 @@ static void binder_free_proc(struct binder_proc *proc)BUG_ON (!list_empty (&proc->delivered_death));binder_alloc_deferred_release (&proc->alloc);put_task_struct (proc->tsk); +put_cred (proc->cred);binder_stats_deleted (BINDER_STAT_PROC );kfree (proc); }
@@ -4464,7 +4469,7 @@ static int binder_ioctl_set_ctx_mgr(struct file *filp) ret = -EBUSY ; goto out; } - ret =security_binder_set_context_mgr (proc->tsk); + ret =security_binder_set_context_mgr (proc->cred);if (ret <0 ) goto out;if (uid_valid (context->binder_context_mgr_uid)) {
@@ -4717,6 +4722,7 @@ static int binder_open(struct inode *nodp, struct file *filp)get_task_struct (current->group_leader); proc->tsk = current->group_leader;mutex_init (&proc->files_lock); + proc->cred =get_cred (filp->f_cred);INIT_LIST_HEAD (&proc->todo); proc->default_priority =task_nice (current); binder_dev = container_of(filp->private_data, struct binder_device,
drivers/ata/libata-core.c +1 -1
@@ -2081,7 +2081,7 @@ unsigned int ata_read_log_page(struct ata_device *dev, u8 log, retry:ata_tf_init (dev, &tf); -if (dev->dma_mode &&ata_id_has_read_log_dma_ext (dev->id) && +if (ata_dma_enabled (dev) &&ata_id_has_read_log_dma_ext (dev->id) && !(dev->horkage &ATA_HORKAGE_NO_DMA_LOG )) { tf.command =ATA_CMD_READ_LOG_DMA_EXT ; tf.protocol =ATA_PROT_DMA ;
drivers/ata/libata-eh.c +8 -0
@@ -114,6 +114,12 @@ static const unsigned long ata_eh_identify_timeouts[] = { ULONG_MAX, }; +static const unsigned long ata_eh_revalidate_timeouts[] = { +15000 ,/* Some drives are slow to read log pages when waking-up */ +15000 ,/* combined time till here is enough even for media access */ +ULONG_MAX , +}; +static const unsigned long ata_eh_flush_timeouts[] = {15000 ,/* be generous with flush */ 15000 ,/* ditto */
@@ -150,6 +156,8 @@ static const struct ata_eh_cmd_timeout_ent ata_eh_cmd_timeout_table[ATA_EH_CMD_TIMEOUT_TABLE_SIZE] = { { .commands = CMDS(ATA_CMD_ID_ATA, ATA_CMD_ID_ATAPI), .timeouts = ata_eh_identify_timeouts, }, + { .commands = CMDS(ATA_CMD_READ_LOG_EXT, ATA_CMD_READ_LOG_DMA_EXT), + .timeouts = ata_eh_revalidate_timeouts, }, { .commands = CMDS(ATA_CMD_READ_NATIVE_MAX, ATA_CMD_READ_NATIVE_MAX_EXT), .timeouts = ata_eh_other_timeouts, }, { .commands = CMDS(ATA_CMD_SET_MAX, ATA_CMD_SET_MAX_EXT),
drivers/auxdisplay/ht16k33.c +38 -28
96 lines not on this page · raw message
drivers/auxdisplay/img-ascii-lcd.c +10 -0
@@ -284,6 +284,16 @@ static int img_ascii_lcd_display(struct img_ascii_lcd_ctx *ctx,if (msg[count -1 ] =='\n' ) count--; +if (!count) { +/* clear the LCD */ +devm_kfree (&ctx->pdev->dev, ctx->message); + ctx->message =NULL ; + ctx->message_len =0 ; +memset (ctx->curr,' ' , ctx->cfg->num_chars); + ctx->cfg->update (ctx); +return 0 ; + } + new_msg =devm_kmalloc (&ctx->pdev->dev, count +1 ,GFP_KERNEL );if (!new_msg)return -ENOMEM ;
drivers/char/hw_random/mtk-rng.c +7 -2
@@ -181,8 +181,13 @@ static int mtk_rng_runtime_resume(struct device *dev)return mtk_rng_init (&priv->rng); } -static UNIVERSAL_DEV_PM_OPS(mtk_rng_pm_ops, mtk_rng_runtime_suspend, - mtk_rng_runtime_resume, NULL); +static const struct dev_pm_ops mtk_rng_pm_ops = { + SET_RUNTIME_PM_OPS(mtk_rng_runtime_suspend, + mtk_rng_runtime_resume, NULL) +SET_SYSTEM_SLEEP_PM_OPS (pm_runtime_force_suspend, + pm_runtime_force_resume) +}; +#define MTK_RNG_PM_OPS (&mtk_rng_pm_ops)#else /* CONFIG_PM */ #define MTK_RNG_PM_OPS NULL
drivers/char/tpm/tpm2-space.c +3 -0
@@ -422,6 +422,9 @@ static int tpm2_map_response_body(struct tpm_chip *chip, u32 cc, u8 *rsp,if (be32_to_cpu (data->capability) !=TPM2_CAP_HANDLES )return 0 ; +if (be32_to_cpu (data->count) > (UINT_MAX -TPM_HEADER_SIZE -9 ) /4 ) +return -EFAULT ; +if (len !=TPM_HEADER_SIZE +9 +4 *be32_to_cpu (data->count))return -EFAULT ;
drivers/cpuidle/sysfs.c +4 -1
@@ -415,6 +415,7 @@ static int cpuidle_add_state_sysfs(struct cpuidle_device *device) &kdev->kobj, "state%d", i);if (ret) {kobject_put (&kobj->kobj); +kfree (kobj); goto error_state; }kobject_uevent (&kobj->kobj,KOBJ_ADD );
@@ -545,6 +546,7 @@ static int cpuidle_add_driver_sysfs(struct cpuidle_device *dev) &kdev->kobj, "driver");if (ret) {kobject_put (&kdrv->kobj); +kfree (kdrv);return ret; }
@@ -631,7 +633,6 @@ int cpuidle_add_sysfs(struct cpuidle_device *dev)if (!kdev)return -ENOMEM ; kdev->dev = dev; - dev->kobj_dev = kdev;init_completion (&kdev->kobj_unregister);
@@ -639,9 +640,11 @@ int cpuidle_add_sysfs(struct cpuidle_device *dev) "cpuidle");if (error) {kobject_put (&kdev->kobj); +kfree (kdev);return error; } + dev->kobj_dev = kdev;kobject_uevent (&kdev->kobj,KOBJ_ADD );return 0 ;
drivers/crypto/qat/qat_common/adf_pf2vf_msg.c +13 -0
@@ -195,6 +195,13 @@ static int __adf_iov_putmsg(struct adf_accel_dev *accel_dev, u32 msg, u8 vf_nr) val =ADF_CSR_RD (pmisc_bar_addr, pf2vf_offset); }while ((val & int_bit) && (count++ <ADF_IOV_MSG_ACK_MAX_RETRY )); +if (val != msg) { +dev_dbg (&GET_DEV (accel_dev), +"Collision - PFVF CSR overwritten by remote function\n" ); + ret = -EIO ; + goto out; + } +if (val & int_bit) {dev_dbg (&GET_DEV (accel_dev),"ACK not received from remote\n" ); val &= ~int_bit;
@@ -243,6 +250,11 @@ void adf_vf2pf_req_hndl(struct adf_accel_vf_info *vf_info)/* Read message from the VF */ msg =ADF_CSR_RD (pmisc_addr, hw_data->get_pf2vf_offset (vf_nr)); +if (!(msg &ADF_VF2PF_INT )) { +dev_info (&GET_DEV (accel_dev), +"Spurious VF2PF interrupt, msg %X. Ignored\n" , msg); + goto out; + }/* To ACK, clear the VF2PFINT bit */ msg &= ~ADF_VF2PF_INT ;
@@ -326,6 +338,7 @@ void adf_vf2pf_req_hndl(struct adf_accel_vf_info *vf_info)if (resp &&adf_iov_putmsg (accel_dev, resp, vf_nr))dev_err (&GET_DEV (accel_dev),"Failed to send response to VF\n" ); +out:/* re-enable interrupt on PF from this VF */ adf_enable_vf2pf_interrupts (accel_dev, (1 << vf_nr));return ;
drivers/crypto/qat/qat_common/adf_vf_isr.c +6 -0
@@ -123,6 +123,11 @@ static void adf_pf2vf_bh_handler(void *data)/* Read the message from PF */ msg =ADF_CSR_RD (pmisc_bar_addr, hw_data->get_pf2vf_offset (0 )); +if (!(msg &ADF_PF2VF_INT )) { +dev_info (&GET_DEV (accel_dev), +"Spurious PF2VF interrupt, msg %X. Ignored\n" , msg); + goto out; + }if (!(msg &ADF_PF2VF_MSGORIGIN_SYSTEM ))/* Ignore legacy non-system (non-kernel) PF2VF messages */
@@ -171,6 +176,7 @@ static void adf_pf2vf_bh_handler(void *data) msg &= ~ADF_PF2VF_INT ;ADF_CSR_WR (pmisc_bar_addr, hw_data->get_pf2vf_offset (0 ), msg); +out:/* Re-enable PF2VF interrupts */ adf_enable_pf2vf_interrupts (accel_dev);return ;
drivers/dma/at_xdmac.c +1 -1
@@ -156,7 +156,7 @@#define AT_XDMAC_CC_WRIP (0x1 << 23)/* Write in Progress (read only) */ #define AT_XDMAC_CC_WRIP_DONE (0x0 << 23)#define AT_XDMAC_CC_WRIP_IN_PROGRESS (0x1 << 23) -#define AT_XDMAC_CC_PERID (i) (0x7f & (i) << 24)/* Channel Peripheral Identifier */ +#define AT_XDMAC_CC_PERID (i) ((0x7f & (i)) << 24)/* Channel Peripheral Identifier */ #define AT_XDMAC_CDS_MSP 0x2C/* Channel Data Stride Memory Set Pattern */ #define AT_XDMAC_CSUS 0x30/* Channel Source Microblock Stride */ #define AT_XDMAC_CDUS 0x34/* Channel Destination Microblock Stride */
drivers/dma/dmaengine.h +1 -1
@@ -168,7 +168,7 @@ dmaengine_desc_get_callback_invoke(struct dma_async_tx_descriptor *tx,static inline bool dmaengine_desc_callback_valid (struct dmaengine_desc_callback *cb) { -return (cb->callback) ? true : false; +return cb->callback || cb->callback_result; }#endif
drivers/edac/sb_edac.c +1 -1
@@ -1014,7 +1014,7 @@ static u64 haswell_get_tohm(struct sbridge_pvt *pvt)pci_read_config_dword (pvt->info.pci_vtd,HASWELL_TOHM_1 , ®); rc = ((reg <<6 ) | rc) <<26 ; -return rc |0x1ffffff ; +return rc |0x3ffffff ; }static u64 knl_get_tolm (struct sbridge_pvt *pvt)
drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +1 -0
@@ -844,6 +844,7 @@ static int amdgpu_connector_vga_get_modes(struct drm_connector *connector)amdgpu_connector_get_edid (connector); ret =amdgpu_connector_ddc_get_modes (connector); +amdgpu_get_native_mode (connector);return ret; }
drivers/gpu/drm/drm_plane_helper.c +0 -1
@@ -243,7 +243,6 @@ int drm_plane_helper_check_update(struct drm_plane *plane, .crtc_w = drm_rect_width(dst), .crtc_h = drm_rect_height(dst), .rotation = rotation, - .visible = *visible, };int ret;
drivers/gpu/drm/msm/msm_gem.c +2 -2
@@ -959,7 +959,7 @@ static struct drm_gem_object *_msm_gem_new(struct drm_device *dev, ret =msm_gem_new_impl (dev, size, flags,NULL , &obj, struct_mutex_locked);if (ret) - goto fail; +return ERR_PTR (ret);if (use_vram) {struct msm_gem_vma *vma;
@@ -1029,7 +1029,7 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev, ret =msm_gem_new_impl (dev, size,MSM_BO_WC , dmabuf->resv, &obj, false);if (ret) - goto fail; +return ERR_PTR (ret);drm_gem_private_object_init (dev, obj, size);
drivers/gpu/drm/udl/udl_connector.c +1 -1
@@ -37,7 +37,7 @@ static u8 *udl_get_edid(struct udl_device *udl) ret =usb_control_msg (udl->udev,usb_rcvctrlpipe (udl->udev,0 ), (0x02 ), (0x80 | (0x02 <<5 )), i <<8 ,0xA1 , rbuf,2 , -HZ ); +1000 );if (ret <1 ) {DRM_ERROR ("Read EDID byte %d failed err %x\n" , i, ret); goto error;
drivers/hv/hyperv_vmbus.h +1 -0
@@ -26,6 +26,7 @@#define _HYPERV_VMBUS_H#include <linux/list.h> +#include <linux/bitops.h> #include <asm/sync_bitops.h> #include <linux/atomic.h> #include <linux/hyperv.h>
drivers/hwmon/hwmon.c +4 -2
@@ -627,8 +627,10 @@ __hwmon_device_register(struct device *dev, const char *name, void *drvdata,dev_set_drvdata (hdev, drvdata);dev_set_name (hdev,HWMON_ID_FORMAT , id); err =device_register (hdev); -if (err) - goto free_hwmon; +if (err) { +put_device (hdev); + goto ida_remove; + } if (dev && dev->of_node && chip && chip->ops->read && chip->info[0]->type == hwmon_chip &&
drivers/hwmon/pmbus/lm25066.c +23 -0
@@ -69,22 +69,27 @@ static struct __coeff lm25066_coeff[6][PSC_NUM_CLASSES + 2] = { [lm25056] = { [PSC_VOLTAGE_IN] = { .m = 16296, + .b = 1343, .R = -2, }, [PSC_CURRENT_IN] = { .m = 13797, + .b = -1833, .R = -2, }, [PSC_CURRENT_IN_L] = { .m = 6726, + .b = -537, .R = -2, }, [PSC_POWER] = { .m = 5501, + .b = -2908, .R = -3, }, [PSC_POWER_L] = { .m = 26882, + .b = -5646, .R = -4, }, [PSC_TEMPERATURE] = {
@@ -96,26 +101,32 @@ static struct __coeff lm25066_coeff[6][PSC_NUM_CLASSES + 2] = { [lm25066] = { [PSC_VOLTAGE_IN] = { .m = 22070, + .b = -1800, .R = -2, }, [PSC_VOLTAGE_OUT] = { .m = 22070, + .b = -1800, .R = -2, }, [PSC_CURRENT_IN] = { .m = 13661, + .b = -5200, .R = -2, }, [PSC_CURRENT_IN_L] = { .m = 6852, + .b = -3100, .R = -2, }, [PSC_POWER] = { .m = 736, + .b = -3300, .R = -2, }, [PSC_POWER_L] = { .m = 369, + .b = -1900, .R = -2, }, [PSC_TEMPERATURE] = {
@@ -155,26 +166,32 @@ static struct __coeff lm25066_coeff[6][PSC_NUM_CLASSES + 2] = { [lm5064] = { [PSC_VOLTAGE_IN] = { .m = 4611, + .b = -642, .R = -2, }, [PSC_VOLTAGE_OUT] = { .m = 4621, + .b = 423, .R = -2, }, [PSC_CURRENT_IN] = { .m = 10742, + .b = 1552, .R = -2, }, [PSC_CURRENT_IN_L] = { .m = 5456, + .b = 2118, .R = -2, }, [PSC_POWER] = { .m = 1204, + .b = 8524, .R = -3, }, [PSC_POWER_L] = { .m = 612, + .b = 11202, .R = -3, }, [PSC_TEMPERATURE] = {
@@ -184,26 +201,32 @@ static struct __coeff lm25066_coeff[6][PSC_NUM_CLASSES + 2] = { [lm5066] = { [PSC_VOLTAGE_IN] = { .m = 4587, + .b = -1200, .R = -2, }, [PSC_VOLTAGE_OUT] = { .m = 4587, + .b = -2400, .R = -2, }, [PSC_CURRENT_IN] = { .m = 10753, + .b = -1200, .R = -2, }, [PSC_CURRENT_IN_L] = { .m = 5405, + .b = -600, .R = -2, }, [PSC_POWER] = { .m = 1204, + .b = -6000, .R = -3, }, [PSC_POWER_L] = { .m = 605, + .b = -8000, .R = -3, }, [PSC_TEMPERATURE] = {
drivers/i2c/busses/i2c-xlr.c +5 -1
@@ -434,11 +434,15 @@ static int xlr_i2c_probe(struct platform_device *pdev)i2c_set_adapdata (&priv->adap, priv); ret =i2c_add_numbered_adapter (&priv->adap);if (ret <0 ) -return ret; + goto err_unprepare_clk;platform_set_drvdata (pdev, priv);dev_info (&priv->adap.dev,"Added I2C Bus.\n" );return 0 ; + +err_unprepare_clk: +clk_unprepare (clk); +return ret; }static int xlr_i2c_remove (struct platform_device *pdev)
drivers/iio/dac/ad5446.c +8 -1
@@ -510,8 +510,15 @@ static int ad5622_write(struct ad5446_state *st, unsigned val) {struct i2c_client *client =to_i2c_client (st->dev);__be16 data =cpu_to_be16 (val); +int ret; + + ret =i2c_master_send (client, (char *)&data,sizeof (data)); +if (ret <0 ) +return ret; +if (ret !=sizeof (data)) +return -EIO ; -return i2c_master_send (client, (char *)&data,sizeof (data)); +return 0 ; }/**
drivers/infiniband/hw/mlx4/qp.c +3 -1
@@ -1144,8 +1144,10 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,if (dev->steering_support ==MLX4_STEERING_MODE_DEVICE_MANAGED ) qp->flags |=MLX4_IB_QP_NETIF ; -else +else { + err = -EINVAL ; goto err; + } }memcpy (&backup_cap, &init_attr->cap,sizeof (backup_cap));
drivers/infiniband/hw/qedr/verbs.c +9 -6
@@ -2045,15 +2045,18 @@ int qedr_query_qp(struct ib_qp *ibqp,int rc =0 ;memset (¶ms,0 ,sizeof (params)); - - rc = dev->ops->rdma_query_qp (dev->rdma_ctx, qp->qed_qp, ¶ms); -if (rc) - goto err; -memset (qp_attr,0 ,sizeof (*qp_attr));memset (qp_init_attr,0 ,sizeof (*qp_init_attr)); - qp_attr->qp_state =qedr_get_ibqp_state (params.state); +if (qp->qp_type !=IB_QPT_GSI ) { + rc = dev->ops->rdma_query_qp (dev->rdma_ctx, qp->qed_qp, ¶ms); +if (rc) + goto err; + qp_attr->qp_state =qedr_get_ibqp_state (params.state); + }else { + qp_attr->qp_state =qedr_get_ibqp_state (QED_ROCE_QP_STATE_RTS ); + } + qp_attr->cur_qp_state =qedr_get_ibqp_state (params.state); qp_attr->path_mtu =ib_mtu_int_to_enum (params.mtu); qp_attr->path_mig_state =IB_MIG_MIGRATED ;
drivers/infiniband/sw/rxe/rxe_param.h +1 -1
@@ -143,7 +143,7 @@ enum rxe_port_param {RXE_PORT_MAX_MTU =IB_MTU_4096 ,RXE_PORT_ACTIVE_MTU =IB_MTU_256 ,RXE_PORT_GID_TBL_LEN =1024 , -RXE_PORT_PORT_CAP_FLAGS =RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP , +RXE_PORT_PORT_CAP_FLAGS =IB_PORT_CM_SUP ,RXE_PORT_MAX_MSG_SZ =0x800000 ,RXE_PORT_BAD_PKEY_CNTR =0 , RXE_PORT_QKEY_VIOL_CNTR = 0,
drivers/input/mouse/elantech.c +13 -0
@@ -431,6 +431,19 @@ static void elantech_report_trackpoint(struct psmouse *psmouse,case 0x16008020U :case 0x26800010U :case 0x36808000U : + +/* +* This firmware misreport coordinates for trackpoint +* occasionally. Discard packets outside of [-127, 127] range +* to prevent cursor jumps. +*/ +if (packet[4 ] ==0x80 || packet[5 ] ==0x80 || + packet[1 ] >>7 == packet[4 ] >>7 || + packet[2 ] >>7 == packet[5 ] >>7 ) { +elantech_debug ("discarding packet [%6ph]\n" , packet); +break ; + + } x = packet[4 ] - (int )((packet[1 ]^0x80 ) <<1 ); y = (int )((packet[2 ]^0x80 ) <<1 ) - packet[5 ];
drivers/input/serio/i8042-x86ia64io.h +14 -0
@@ -276,6 +276,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S6230"), }, }, + { +/* Fujitsu Lifebook T725 laptop */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"FUJITSU" ), + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T725"), + }, + }, {/* Fujitsu Lifebook U745 */ .matches = {
@@ -844,6 +851,13 @@ static const struct dmi_system_id __initconst i8042_dmi_notimeout_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK AH544"), }, }, + { +/* Fujitsu Lifebook T725 laptop */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"FUJITSU" ), + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T725"), + }, + }, {/* Fujitsu U574 laptop */ /* https://bugzilla.kernel.org/show_bug.cgi?id=69731 */
drivers/irqchip/irq-bcm6345-l1.c +1 -1
@@ -143,7 +143,7 @@ static void bcm6345_l1_irq_handle(struct irq_desc *desc)for_each_set_bit (hwirq, &pending,IRQS_PER_WORD ) { irq =irq_linear_revmap (intc->domain, base + hwirq);if (irq) -do_IRQ (irq); +generic_handle_irq (irq);else spurious_interrupt (); }
drivers/irqchip/irq-s3c24xx.c +18 -4
@@ -368,11 +368,25 @@ static inline int s3c24xx_handle_intc(struct s3c_irq_intc *intc, asmlinkage void __exception_irq_entry s3c24xx_handle_irq(struct pt_regs *regs) { do { - if (likely(s3c_intc[0])) - if (s3c24xx_handle_intc(s3c_intc[0], regs, 0)) - continue; + /* + * For platform based machines, neither ERR nor NULL can happen here. + * The s3c24xx_handle_irq() will be set as IRQ handler iff this succeeds: + * + * s3c_intc[0] = s3c24xx_init_intc() + * + * If this fails, the next calls to s3c24xx_init_intc() won't be executed. + * + * For DT machine, s3c_init_intc_of() could set the IRQ handler without + * setting s3c_intc[0] only if it was called with num_ctrl=0. There is no + * such code path, so again the s3c_intc[0] will have a valid pointer if + * set_handle_irq() is called. + * + * Therefore in s3c24xx_handle_irq(), the s3c_intc[0] is always something. + */ + if (s3c24xx_handle_intc(s3c_intc[0], regs, 0)) + continue; - if (s3c_intc[2]) + if (!IS_ERR_OR_NULL(s3c_intc[2])) if (s3c24xx_handle_intc(s3c_intc[2], regs, 64)) continue;
drivers/media/i2c/mt9p031.c +27 -1
@@ -81,7 +81,9 @@#define MT9P031_PIXEL_CLOCK_INVERT (1 << 15)#define MT9P031_PIXEL_CLOCK_SHIFT (n) ((n) << 8)#define MT9P031_PIXEL_CLOCK_DIVIDE (n) ((n) << 0) -#define MT9P031_FRAME_RESTART 0x0b +#define MT9P031_RESTART 0x0b +#define MT9P031_FRAME_PAUSE_RESTART (1 << 1) +#define MT9P031_FRAME_RESTART (1 << 0)#define MT9P031_SHUTTER_DELAY 0x0c#define MT9P031_RST 0x0d#define MT9P031_RST_ENABLE 1
@@ -448,9 +450,23 @@ static int mt9p031_set_params(struct mt9p031 *mt9p031)static int mt9p031_s_stream (struct v4l2_subdev *subdev,int enable) {struct mt9p031 *mt9p031 =to_mt9p031 (subdev); +struct i2c_client *client =v4l2_get_subdevdata (subdev); +int val;int ret;if (!enable) { +/* enable pause restart */ + val =MT9P031_FRAME_PAUSE_RESTART ; + ret =mt9p031_write (client,MT9P031_RESTART , val); +if (ret <0 ) +return ret; + +/* enable restart + keep pause restart set */ + val |=MT9P031_FRAME_RESTART ; + ret =mt9p031_write (client,MT9P031_RESTART , val); +if (ret <0 ) +return ret; +/* Stop sensor readout */ ret =mt9p031_set_output_control (mt9p031,MT9P031_OUTPUT_CONTROL_CEN ,0 );
@@ -470,6 +486,16 @@ static int mt9p031_s_stream(struct v4l2_subdev *subdev, int enable)if (ret <0 )return ret; +/* +* - clear pause restart +* - don't clear restart as clearing restart manually can cause +* undefined behavior +*/ + val =MT9P031_FRAME_RESTART ; + ret =mt9p031_write (client,MT9P031_RESTART , val); +if (ret <0 ) +return ret; +return mt9p031_pll_enable (mt9p031); }
drivers/media/pci/cx23885/cx23885-alsa.c +2 -1
@@ -560,7 +560,7 @@ struct cx23885_audio_dev *cx23885_audio_register(struct cx23885_dev *dev)SNDRV_DEFAULT_IDX1 ,SNDRV_DEFAULT_STR1 , THIS_MODULE, sizeof(struct cx23885_audio_dev), &card);if (err <0 ) - goto error; + goto error_msg; chip = (struct cx23885_audio_dev *) card->private_data; chip->dev = dev;
@@ -586,6 +586,7 @@ struct cx23885_audio_dev *cx23885_audio_register(struct cx23885_dev *dev) error:snd_card_free (card); +error_msg:pr_err ("%s(): Failed to register analog audio adapter\n" , __func__);
drivers/media/pci/netup_unidvb/netup_unidvb_core.c +16 -11
@@ -267,19 +267,24 @@ static irqreturn_t netup_unidvb_isr(int irq, void *dev_id)if ((reg40 &AVL_IRQ_ASSERTED ) !=0 ) {/* IRQ is being signaled */ reg_isr =readw (ndev->bmmio0 +REG_ISR ); -if (reg_isr &NETUP_UNIDVB_IRQ_I2C0 ) { - iret =netup_i2c_interrupt (&ndev->i2c[0 ]); - }else if (reg_isr &NETUP_UNIDVB_IRQ_I2C1 ) { - iret =netup_i2c_interrupt (&ndev->i2c[1 ]); - }else if (reg_isr &NETUP_UNIDVB_IRQ_SPI ) { +if (reg_isr &NETUP_UNIDVB_IRQ_SPI ) iret =netup_spi_interrupt (ndev->spi); - }else if (reg_isr &NETUP_UNIDVB_IRQ_DMA1 ) { - iret =netup_dma_interrupt (&ndev->dma[0 ]); - }else if (reg_isr &NETUP_UNIDVB_IRQ_DMA2 ) { - iret =netup_dma_interrupt (&ndev->dma[1 ]); - }else if (reg_isr &NETUP_UNIDVB_IRQ_CI ) { - iret =netup_ci_interrupt (ndev); +else if (!ndev->old_fw) { +if (reg_isr &NETUP_UNIDVB_IRQ_I2C0 ) { + iret =netup_i2c_interrupt (&ndev->i2c[0 ]); + }else if (reg_isr &NETUP_UNIDVB_IRQ_I2C1 ) { + iret =netup_i2c_interrupt (&ndev->i2c[1 ]); + }else if (reg_isr &NETUP_UNIDVB_IRQ_DMA1 ) { + iret =netup_dma_interrupt (&ndev->dma[0 ]); + }else if (reg_isr &NETUP_UNIDVB_IRQ_DMA2 ) { + iret =netup_dma_interrupt (&ndev->dma[1 ]); + }else if (reg_isr &NETUP_UNIDVB_IRQ_CI ) { + iret =netup_ci_interrupt (ndev); + }else { + goto err; + } }else { +err:dev_err (&pci_dev->dev,"%s(): unknown interrupt 0x%x\n" , __func__, reg_isr);
drivers/media/platform/mtk-vpu/mtk_vpu.c +4 -1
@@ -817,7 +817,8 @@ static int mtk_vpu_probe(struct platform_device *pdev) vpu->wdt.wq =create_singlethread_workqueue ("vpu_wdt" );if (!vpu->wdt.wq) {dev_err (dev,"initialize wdt workqueue failed\n" ); -return -ENOMEM ; + ret = -ENOMEM ; + goto clk_unprepare; }INIT_WORK (&vpu->wdt.ws, vpu_wdt_reset_func);mutex_init (&vpu->vpu_mutex);
@@ -916,6 +917,8 @@ static int mtk_vpu_probe(struct platform_device *pdev)vpu_clock_disable (vpu); workqueue_destroy:destroy_workqueue (vpu->wdt.wq); +clk_unprepare: +clk_unprepare (vpu->clk);return ret; }
drivers/media/platform/s5p-mfc/s5p_mfc.c +5 -1
@@ -1280,11 +1280,15 @@ static int s5p_mfc_probe(struct platform_device *pdev)spin_lock_init (&dev->condlock); dev->plat_dev = pdev;if (!dev->plat_dev) { -dev_err (&pdev->dev,"No platform data specified\n" ); +mfc_err ("No platform data specified\n" );return -ENODEV ; } dev->variant =of_device_get_match_data (&pdev->dev); +if (!dev->variant) { +dev_err (&pdev->dev,"Failed to get device MFC hardware variant information\n" ); +return -ENOENT ; + } res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); dev->regs_base =devm_ioremap_resource (&pdev->dev, res);
drivers/media/radio/si470x/radio-si470x-i2c.c +1 -1
@@ -20,7 +20,7 @@/* driver definitions */ #define DRIVER_AUTHOR "Joonyoung Shim <[email protected]>"; -#define DRIVER_CARD "Silicon Labs Si470x FM Radio Receiver" +#define DRIVER_CARD "Silicon Labs Si470x FM Radio"#define DRIVER_DESC "I2C radio driver for Si470x FM Radio Receivers"#define DRIVER_VERSION "1.0.2"
drivers/media/radio/si470x/radio-si470x-usb.c +1 -1
@@ -25,7 +25,7 @@/* driver definitions */ #define DRIVER_AUTHOR "Tobias Lorenz <[email protected]>" -#define DRIVER_CARD "Silicon Labs Si470x FM Radio Receiver" +#define DRIVER_CARD "Silicon Labs Si470x FM Radio"#define DRIVER_DESC "USB radio driver for Si470x FM Radio Receivers"#define DRIVER_VERSION "1.0.10"
drivers/media/rc/ite-cir.c +1 -1
@@ -292,7 +292,7 @@ static irqreturn_t ite_cir_isr(int irq, void *data) }/* check for the receive interrupt */ -if (iflags &ITE_IRQ_RX_FIFO ) { +if (iflags & (ITE_IRQ_RX_FIFO |ITE_IRQ_RX_FIFO_OVERRUN )) {/* read the FIFO bytes */ rx_bytes = dev->params.get_rx_bytes(dev, rx_buf,
drivers/media/rc/mceusb.c +1 -0
@@ -1080,6 +1080,7 @@ static void mceusb_dev_recv(struct urb *urb)case -ECONNRESET :case -ENOENT :case -EILSEQ : +case -EPROTO :case -ESHUTDOWN :usb_unlink_urb (urb);return ;
drivers/media/usb/dvb-usb/az6027.c +1 -0
@@ -394,6 +394,7 @@ static struct rc_map_table rc_map_az6027_table[] = {/* remote control stuff (does not work with my box) */ static int az6027_rc_query (struct dvb_usb_device *d,u32 *event,int *state) { + *state =REMOTE_NO_KEY_PRESSED ;return 0 ; }
drivers/media/usb/dvb-usb/dibusb-common.c +1 -1
@@ -226,7 +226,7 @@ int dibusb_read_eeprom_byte(struct dvb_usb_device *d, u8 offs, u8 *val)u8 *buf;int rc; - buf =kmalloc (2 ,GFP_KERNEL ); + buf =kzalloc (2 ,GFP_KERNEL );if (!buf)return -ENOMEM ;
drivers/media/usb/uvc/uvc_v4l2.c +5 -2
@@ -446,10 +446,13 @@ static int uvc_v4l2_set_streamparm(struct uvc_streaming *stream,uvc_simplify_fraction (&timeperframe.numerator, &timeperframe.denominator,8 ,333 ); -if (parm->type ==V4L2_BUF_TYPE_VIDEO_CAPTURE ) +if (parm->type ==V4L2_BUF_TYPE_VIDEO_CAPTURE ) { parm->parm.capture.timeperframe = timeperframe; -else + parm->parm.capture.capability =V4L2_CAP_TIMEPERFRAME ; + }else { parm->parm.output.timeperframe = timeperframe; + parm->parm.output.capability =V4L2_CAP_TIMEPERFRAME ; + }return 0 ; }
drivers/memory/fsl_ifc.c +6 -7
@@ -276,7 +276,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev) ret =fsl_ifc_ctrl_init (fsl_ifc_ctrl_dev);if (ret <0 ) - goto err; + goto err_unmap_nandirq;init_waitqueue_head (&fsl_ifc_ctrl_dev->nand_wait);
@@ -285,7 +285,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev)if (ret !=0 ) {dev_err (&dev->dev,"failed to install irq (%d)\n" , fsl_ifc_ctrl_dev->irq); - goto err_irq; + goto err_unmap_nandirq; }if (fsl_ifc_ctrl_dev->nand_irq) {
@@ -294,17 +294,16 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev)if (ret !=0 ) {dev_err (&dev->dev,"failed to install irq (%d)\n" , fsl_ifc_ctrl_dev->nand_irq); - goto err_nandirq; + goto err_free_irq; } }return 0 ; -err_nandirq: -free_irq (fsl_ifc_ctrl_dev->nand_irq, fsl_ifc_ctrl_dev); -irq_dispose_mapping (fsl_ifc_ctrl_dev->nand_irq); -err_irq: +err_free_irq:free_irq (fsl_ifc_ctrl_dev->irq, fsl_ifc_ctrl_dev); +err_unmap_nandirq: +irq_dispose_mapping (fsl_ifc_ctrl_dev->nand_irq);irq_dispose_mapping (fsl_ifc_ctrl_dev->irq); err:iounmap (fsl_ifc_ctrl_dev->gregs);
drivers/memstick/core/ms_block.c +1 -1
@@ -1730,7 +1730,7 @@ static int msb_init_card(struct memstick_dev *card) msb->pages_in_block = boot_block->attr.block_size *2 ; msb->block_size = msb->page_size * msb->pages_in_block; -if (msb->page_size >PAGE_SIZE ) { +if ((size_t )msb->page_size >PAGE_SIZE ) {/* this isn't supported by linux at all, anyway*/ dbg ("device page %d size isn't supported" , msb->page_size);return -EINVAL ;
drivers/memstick/host/jmb38x_ms.c +1 -1
@@ -905,7 +905,7 @@ static struct memstick_host *jmb38x_ms_alloc_host(struct jmb38x_ms *jm, int cnt)iounmap (host->addr); err_out_free: -kfree (msh); +memstick_free_host (msh);return NULL ; }
drivers/memstick/host/r592.c +4 -4
@@ -841,15 +841,15 @@ static void r592_remove(struct pci_dev *pdev) }memstick_remove_host (dev->host); +if (dev->dummy_dma_page) +dma_free_coherent (&pdev->dev,PAGE_SIZE , dev->dummy_dma_page, + dev->dummy_dma_page_physical_address); +free_irq (dev->irq, dev);iounmap (dev->mmio);pci_release_regions (pdev);pci_disable_device (pdev);memstick_free_host (dev->host); - -if (dev->dummy_dma_page) -dma_free_coherent (&pdev->dev,PAGE_SIZE , dev->dummy_dma_page, - dev->dummy_dma_page_physical_address); }#ifdef CONFIG_PM_SLEEP
drivers/mmc/host/Kconfig +1 -1
@@ -397,7 +397,7 @@ config MMC_OMAP_HS config MMC_WBSD tristate "Winbond W83L51xD SD/MMC Card Interface support" - depends on ISA_DMA_API + depends on ISA_DMA_API && !M68K help This selects the Winbond(R) W83L51xD Secure digital and Multimedia card Interface.
drivers/mmc/host/dw_mmc.c +2 -1
@@ -2047,7 +2047,8 @@ static void dw_mci_tasklet_func(unsigned long priv)* delayed. Allowing the transfer to take place * avoids races and keeps things simple. */ -if (err != -ETIMEDOUT ) { +if (err != -ETIMEDOUT && + host->dir_status ==DW_MCI_RECV_STATUS ) { state =STATE_SENDING_DATA ;continue ; }
drivers/mmc/host/mxs-mmc.c +10 -0
@@ -579,6 +579,11 @@ static const struct of_device_id mxs_mmc_dt_ids[] = { };MODULE_DEVICE_TABLE (of, mxs_mmc_dt_ids); +static void mxs_mmc_regulator_disable (void *regulator) +{ +regulator_disable (regulator); +} +static int mxs_mmc_probe (struct platform_device *pdev) { const struct of_device_id *of_id =
@@ -622,6 +627,11 @@ static int mxs_mmc_probe(struct platform_device *pdev) "Failed to enable vmmc regulator: %d\n", ret); goto out_mmc_free; } + + ret =devm_add_action_or_reset (&pdev->dev, mxs_mmc_regulator_disable, + reg_vmmc); +if (ret) + goto out_mmc_free; } ssp->clk =devm_clk_get (&pdev->dev,NULL );
drivers/mtd/spi-nor/hisi-sfc.c +0 -1
@@ -485,7 +485,6 @@ static int hisi_spi_nor_remove(struct platform_device *pdev)hisi_spi_nor_unregister_all (host);mutex_destroy (&host->lock); -clk_disable_unprepare (host->clk);return 0 ; }
drivers/net/bonding/bond_sysfs_slave.c +11 -25
@@ -112,15 +112,15 @@ static ssize_t ad_partner_oper_port_state_show(struct slave *slave, char *buf) }static SLAVE_ATTR_RO (ad_partner_oper_port_state); -static const struct slave_attribute *slave_attrs[] = { - &slave_attr_state, - &slave_attr_mii_status, - &slave_attr_link_failure_count, - &slave_attr_perm_hwaddr, - &slave_attr_queue_id, - &slave_attr_ad_aggregator_id, - &slave_attr_ad_actor_oper_port_state, - &slave_attr_ad_partner_oper_port_state, +static const struct attribute *slave_attrs[] = { + &slave_attr_state.attr, + &slave_attr_mii_status.attr, + &slave_attr_link_failure_count.attr, + &slave_attr_perm_hwaddr.attr, + &slave_attr_queue_id.attr, + &slave_attr_ad_aggregator_id.attr, + &slave_attr_ad_actor_oper_port_state.attr, + &slave_attr_ad_partner_oper_port_state.attr,NULL };
@@ -141,24 +141,10 @@ const struct sysfs_ops slave_sysfs_ops = {int bond_sysfs_slave_add (struct slave *slave) { -const struct slave_attribute **a; -int err; - -for (a = slave_attrs; *a; ++a) { - err =sysfs_create_file (&slave->kobj, &((*a)->attr)); -if (err) { -kobject_put (&slave->kobj); -return err; - } - } - -return 0 ; +return sysfs_create_files (&slave->kobj, slave_attrs); }void bond_sysfs_slave_del (struct slave *slave) { -const struct slave_attribute **a; - -for (a = slave_attrs; *a; ++a) -sysfs_remove_file (&slave->kobj, &((*a)->attr)); +sysfs_remove_files (&slave->kobj, slave_attrs); }
drivers/net/ethernet/amd/xgbe/xgbe-common.h +8 -0
@@ -1331,6 +1331,10 @@#define MDIO_VEND2_PMA_CDR_CONTROL 0x8056#endif +#ifndef MDIO_VEND2_PMA_MISC_CTRL0 +#define MDIO_VEND2_PMA_MISC_CTRL0 0x8090 +#endif +#ifndef MDIO_CTRL1_SPEED1G #define MDIO_CTRL1_SPEED1G (MDIO_CTRL1_SPEED10G & ~BMCR_SPEED100)#endif
@@ -1389,6 +1393,10 @@#define XGBE_PMA_RX_RST_0_RESET_ON 0x10#define XGBE_PMA_RX_RST_0_RESET_OFF 0x00 +#define XGBE_PMA_PLL_CTRL_MASK BIT(15) +#define XGBE_PMA_PLL_CTRL_ENABLE BIT(15) +#define XGBE_PMA_PLL_CTRL_DISABLE 0x0000 +/* Bit setting and getting macros * The get macro will extract the current bit field value from within * the variable
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +19 -1
@@ -1803,12 +1803,26 @@ static void xgbe_phy_rx_reset(struct xgbe_prv_data *pdata) } } +static void xgbe_phy_pll_ctrl (struct xgbe_prv_data *pdata,bool enable) +{ +XMDIO_WRITE_BITS (pdata,MDIO_MMD_PMAPMD ,MDIO_VEND2_PMA_MISC_CTRL0 , +XGBE_PMA_PLL_CTRL_MASK , + enable ?XGBE_PMA_PLL_CTRL_ENABLE + :XGBE_PMA_PLL_CTRL_DISABLE ); + +/* Wait for command to complete */ +usleep_range (100 ,200 ); +} +static void xgbe_phy_perform_ratechange (struct xgbe_prv_data *pdata,unsigned int cmd,unsigned int sub_cmd) {unsigned int s0 =0 ;unsigned int wait; +/* Disable PLL re-initialization during FW command processing */ +xgbe_phy_pll_ctrl (pdata, false); +/* Log if a previous command did not complete */ if (XP_IOREAD_BITS (pdata,XP_DRIVER_INT_RO ,STATUS )) { netif_dbg(pdata, link, pdata->netdev,
@@ -1829,7 +1843,7 @@ static void xgbe_phy_perform_ratechange(struct xgbe_prv_data *pdata, wait =XGBE_RATECHANGE_COUNT ;while (wait--) {if (!XP_IOREAD_BITS (pdata,XP_DRIVER_INT_RO ,STATUS )) -return ; + goto reenable_pll;usleep_range (1000 ,2000 ); }
@@ -1839,6 +1853,10 @@ static void xgbe_phy_perform_ratechange(struct xgbe_prv_data *pdata,/* Reset on error */ xgbe_phy_rx_reset (pdata); + +reenable_pll: +/* Enable PLL re-initialization */ +xgbe_phy_pll_ctrl (pdata, true); }static void xgbe_phy_rrc (struct xgbe_prv_data *pdata)
drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h +3 -1
@@ -635,11 +635,13 @@ static int bnx2x_ilt_client_mem_op(struct bnx2x *bp, int cli_num, {int i, rc;struct bnx2x_ilt *ilt =BP_ILT (bp); -struct ilt_client_info *ilt_cli = &ilt->clients[cli_num]; +struct ilt_client_info *ilt_cli;if (!ilt || !ilt->lines)return -1 ; + ilt_cli = &ilt->clients[cli_num]; +if (ilt_cli->flags & (ILT_CLIENT_SKIP_INIT |ILT_CLIENT_SKIP_MEM ))return 0 ;
drivers/net/ethernet/cavium/thunder/nic_main.c +1 -1
@@ -1128,7 +1128,7 @@ static int nic_register_interrupts(struct nicpf *nic)dev_err (&nic->pdev->dev,"Request for #%d msix vectors failed, returned %d\n" , nic->num_vec, ret); -return 1 ; +return ret; }/* Register mailbox interrupt handler */
drivers/net/ethernet/cavium/thunder/nicvf_main.c +2 -2
@@ -1152,7 +1152,7 @@ static int nicvf_register_misc_interrupt(struct nicvf *nic)if (ret <0 ) {netdev_err (nic->netdev,"Req for #%d msix vectors failed\n" , nic->num_vec); -return 1 ; +return ret; }sprintf (nic->irq_name[irq],"%s Mbox" ,"NICVF" );
@@ -1171,7 +1171,7 @@ static int nicvf_register_misc_interrupt(struct nicvf *nic)if (!nicvf_check_pf_ready (nic)) {nicvf_disable_intr (nic,NICVF_INTR_MBOX ,0 );nicvf_unregister_interrupts (nic); -return 1 ; +return -EIO ; }return 0 ;
drivers/net/ethernet/ibm/ibmvnic.c +3 -0
@@ -3835,6 +3835,9 @@ static int init_crq_queue(struct ibmvnic_adapter *adapter) crq->cur =0 ;spin_lock_init (&crq->lock); +/* process any CRQs that were queued before we enabled interrupts */ +tasklet_schedule (&adapter->tasklet); +return retrc; req_irq_failed:
drivers/net/ethernet/intel/i40e/i40e.h +1 -0
@@ -163,6 +163,7 @@ enum i40e_vsi_state_t { __I40E_VSI_OVERFLOW_PROMISC, __I40E_VSI_REINIT_REQUESTED, __I40E_VSI_DOWN_REQUESTED, + __I40E_VSI_RELEASING,/* This must be last as it determines the size of the BITMAP */ __I40E_VSI_STATE_SIZE__, };
drivers/net/ethernet/intel/i40e/i40e_main.c +3 -2
@@ -2415,7 +2415,8 @@ static void i40e_sync_filters_subtask(struct i40e_pf *pf)for (v =0 ; v < pf->num_alloc_vsi; v++) {if (pf->vsi[v] && - (pf->vsi[v]->flags &I40E_VSI_FLAG_FILTER_CHANGED )) { + (pf->vsi[v]->flags &I40E_VSI_FLAG_FILTER_CHANGED ) && + !test_bit (__I40E_VSI_RELEASING, pf->vsi[v]->state)) {int ret =i40e_sync_vsi_filters (pf->vsi[v]);if (ret) {
@@ -10098,7 +10099,7 @@ int i40e_vsi_release(struct i40e_vsi *vsi)dev_info (&pf->pdev->dev,"Can't remove PF VSI\n" );return -ENODEV ; } - +set_bit (__I40E_VSI_RELEASING, vsi->state); uplink_seid = vsi->uplink_seid;if (vsi->type !=I40E_VSI_SRIOV ) {if (vsi->netdev_registered) {
drivers/net/ethernet/intel/i40evf/i40evf_main.c +1 -1
@@ -2027,7 +2027,7 @@ static void i40evf_adminq_task(struct work_struct *work)/* check for error indications */ val =rd32 (hw, hw->aq.arq.len); -if (val ==0xdeadbeef )/* indicates device in reset */ +if (val ==0xdeadbeef || val ==0xffffffff )/* device in reset */ goto freedom; oldval = val;if (val &I40E_VF_ARQLEN1_ARQVFE_MASK ) {
drivers/net/ethernet/sfc/ptp.c +2 -2
@@ -494,7 +494,7 @@ static int efx_ptp_get_attributes(struct efx_nic *efx) }else if (rc == -EINVAL ) { fmt =MC_CMD_PTP_OUT_GET_ATTRIBUTES_SECONDS_NANOSECONDS ; }else if (rc == -EPERM ) { -netif_info (efx, probe, efx->net_dev,"no PTP support\n" ); +pci_info (efx->pci_dev,"no PTP support\n" );return rc; }else { efx_mcdi_display_error(efx, MC_CMD_PTP, sizeof(inbuf),
@@ -613,7 +613,7 @@ static int efx_ptp_disable(struct efx_nic *efx)* should only have been called during probe. */ if (rc == -ENOSYS || rc == -EPERM ) -netif_info (efx, probe, efx->net_dev,"no PTP support\n" ); +pci_info (efx->pci_dev,"no PTP support\n" );else if (rc) efx_mcdi_display_error(efx, MC_CMD_PTP, MC_CMD_PTP_IN_DISABLE_LEN,
drivers/net/ethernet/sfc/siena_sriov.c +1 -1
@@ -1059,7 +1059,7 @@ void efx_siena_sriov_probe(struct efx_nic *efx)return ;if (efx_siena_sriov_cmd (efx, false, &efx->vi_scale, &count)) { -netif_info (efx, probe, efx->net_dev,"no SR-IOV VFs probed\n" ); +pci_info (efx->pci_dev,"no SR-IOV VFs probed\n" );return ; }if (count >0 && count > max_vfs)
drivers/net/ethernet/ti/davinci_emac.c +14 -2
@@ -426,8 +426,20 @@ static int emac_set_coalesce(struct net_device *ndev,u32 int_ctrl, num_interrupts =0 ;u32 prescale =0 , addnl_dvdr =1 , coal_intvl =0 ; -if (!coal->rx_coalesce_usecs) -return -EINVAL ; +if (!coal->rx_coalesce_usecs) { + priv->coal_intvl =0 ; + +switch (priv->version) { +case EMAC_VERSION_2 : +emac_ctrl_write (EMAC_DM646X_CMINTCTRL ,0 ); +break ; +default : +emac_ctrl_write (EMAC_CTRL_EWINTTCNT ,0 ); +break ; + } + +return 0 ; + } coal_intvl = coal->rx_coalesce_usecs;
drivers/net/phy/micrel.c +3 -2
@@ -876,8 +876,9 @@ static struct phy_driver ksphy_driver[] = { .get_sset_count = kszphy_get_sset_count, .get_strings = kszphy_get_strings, .get_stats = kszphy_get_stats, - .suspend = genphy_suspend, - .resume = genphy_resume, +/* No suspend/resume callbacks because of errata DS80000700A, +* receiver error following software power down. +*/ }, { .phy_id = PHY_ID_KSZ8041RNLI, .phy_id_mask = MICREL_PHY_ID_MASK,
drivers/net/phy/phylink.c +1 -1
@@ -1022,7 +1022,7 @@ int phylink_ethtool_set_pauseparam(struct phylink *pl,return -EOPNOTSUPP ;if (!phylink_test (pl->supported, Asym_Pause) && - !pause->autoneg && pause->rx_pause != pause->tx_pause) + pause->rx_pause != pause->tx_pause)return -EINVAL ; config->pause &= ~(MLO_PAUSE_AN |MLO_PAUSE_TXRX_MASK );
drivers/net/tun.c +5 -0
@@ -858,6 +858,7 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev) {struct tun_struct *tun =netdev_priv (dev);int txq = skb->queue_mapping; +struct netdev_queue *queue;struct tun_file *tfile;u32 numqueues =0 ;
@@ -916,6 +917,10 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev)if (skb_array_produce (&tfile->tx_array, skb)) goto drop; +/* NETIF_F_LLTX requires to do our own update of trans_start */ + queue =netdev_get_tx_queue (dev, txq); + queue->trans_start = jiffies; +/* Notify and wake up reader process */ if (tfile->flags &TUN_FASYNC )kill_fasync (&tfile->fasync,SIGIO ,POLL_IN );
drivers/net/vmxnet3/vmxnet3_drv.c +0 -1
@@ -3623,7 +3623,6 @@ vmxnet3_suspend(struct device *device)vmxnet3_free_intr_resources (adapter);netif_device_detach (netdev); -netif_tx_stop_all_queues (netdev);/* Create wake-up filters. */ pmConf = adapter->pm_conf;
drivers/net/wireless/ath/ath10k/mac.c +3 -3
@@ -990,7 +990,7 @@ static int ath10k_monitor_vdev_start(struct ath10k *ar, int vdev_id) arg.channel.min_power =0 ; arg.channel.max_power = channel->max_power *2 ; arg.channel.max_reg_power = channel->max_reg_power *2 ; - arg.channel.max_antenna_gain = channel->max_antenna_gain *2 ; + arg.channel.max_antenna_gain = channel->max_antenna_gain;reinit_completion (&ar->vdev_setup_done);
@@ -1432,7 +1432,7 @@ static int ath10k_vdev_start_restart(struct ath10k_vif *arvif, arg.channel.min_power =0 ; arg.channel.max_power = chandef->chan->max_power *2 ; arg.channel.max_reg_power = chandef->chan->max_reg_power *2 ; - arg.channel.max_antenna_gain = chandef->chan->max_antenna_gain *2 ; + arg.channel.max_antenna_gain = chandef->chan->max_antenna_gain;if (arvif->vdev_type ==WMI_VDEV_TYPE_AP ) { arg.ssid = arvif->u.ap.ssid;
@@ -3091,7 +3091,7 @@ static int ath10k_update_channel_list(struct ath10k *ar) ch->min_power =0 ; ch->max_power = channel->max_power *2 ; ch->max_reg_power = channel->max_reg_power *2 ; - ch->max_antenna_gain = channel->max_antenna_gain *2 ; + ch->max_antenna_gain = channel->max_antenna_gain; ch->reg_class_id =0 ;/* FIXME */ /* FIXME: why use only legacy modes, why not any
drivers/net/wireless/ath/ath10k/usb.c +6 -1
@@ -536,7 +536,7 @@ static int ath10k_usb_submit_ctrl_in(struct ath10k *ar, req,USB_DIR_IN |USB_TYPE_VENDOR |USB_RECIP_DEVICE , value, index, buf, - size, 2 * HZ); + size, 2000);if (ret <0 ) { ath10k_warn(ar, "Failed to read usb control message: %d\n",
@@ -875,6 +875,11 @@ static int ath10k_usb_setup_pipe_resources(struct ath10k *ar,le16_to_cpu (endpoint->wMaxPacketSize), endpoint->bInterval); } + +/* Ignore broken descriptors. */ +if (usb_endpoint_maxp (endpoint) ==0 ) +continue ; + urbcount =0 ; pipe_num =
drivers/net/wireless/ath/ath10k/wmi.h +3 -0
@@ -1945,7 +1945,9 @@ struct wmi_channel {union {__le32 reginfo1;struct { +/* note: power unit is 1 dBm */ u8 antenna_max; +/* note: power unit is 0.5 dBm */ u8 max_tx_power; } __packed; } __packed;
@@ -1965,6 +1967,7 @@ struct wmi_channel_arg {u32 min_power;u32 max_power;u32 max_reg_power; +/* note: power unit is 1 dBm */ u32 max_antenna_gain;u32 reg_class_id;enum wmi_phy_mode mode;
drivers/net/wireless/ath/ath6kl/usb.c +6 -1
@@ -340,6 +340,11 @@ static int ath6kl_usb_setup_pipe_resources(struct ath6kl_usb *ar_usb)le16_to_cpu (endpoint->wMaxPacketSize), endpoint->bInterval); } + +/* Ignore broken descriptors. */ +if (usb_endpoint_maxp (endpoint) ==0 ) +continue ; + urbcount =0 ; pipe_num =
@@ -907,7 +912,7 @@ static int ath6kl_usb_submit_ctrl_in(struct ath6kl_usb *ar_usb, req,USB_DIR_IN |USB_TYPE_VENDOR |USB_RECIP_DEVICE , value, index, buf, - size, 2 * HZ); + size, 2000);if (ret <0 ) {ath6kl_warn ("Failed to read usb control message: %d\n" , ret);
drivers/net/wireless/ath/ath9k/main.c +3 -1
@@ -529,8 +529,10 @@ irqreturn_t ath_isr(int irq, void *dev)ath9k_debug_sync_cause (sc, sync_cause); status &= ah->imask;/* discard unasked-for bits */ -if (test_bit (ATH_OP_HW_RESET , &common->op_flags)) +if (test_bit (ATH_OP_HW_RESET , &common->op_flags)) { +ath9k_hw_kill_interrupts (sc->sc_ah);return IRQ_HANDLED ; + }/* * If there are no status bits set, then this interrupt was not
drivers/net/wireless/ath/dfs_pattern_detector.c +6 -4
@@ -182,10 +182,12 @@ static void channel_detector_exit(struct dfs_pattern_detector *dpd,if (cd ==NULL )return ;list_del (&cd->head); -for (i =0 ; i < dpd->num_radar_types; i++) { -struct pri_detector *de = cd->detectors[i]; -if (de !=NULL ) - de->exit (de); +if (cd->detectors) { +for (i =0 ; i < dpd->num_radar_types; i++) { +struct pri_detector *de = cd->detectors[i]; +if (de !=NULL ) + de->exit (de); + } }kfree (cd->detectors);kfree (cd);
drivers/net/wireless/ath/wcn36xx/main.c +3 -1
@@ -133,7 +133,9 @@ static struct ieee80211_supported_band wcn_band_2ghz = { .cap = IEEE80211_HT_CAP_GRN_FLD |IEEE80211_HT_CAP_SGI_20 |IEEE80211_HT_CAP_DSSSCCK40 | - IEEE80211_HT_CAP_LSIG_TXOP_PROT, +IEEE80211_HT_CAP_LSIG_TXOP_PROT | +IEEE80211_HT_CAP_SGI_40 | + IEEE80211_HT_CAP_SUP_WIDTH_20_40, .ht_supported = true, .ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K, .ampdu_density = IEEE80211_HT_MPDU_DENSITY_16,
drivers/net/wireless/ath/wcn36xx/smd.c +33 -11
63 lines not on this page · raw message
drivers/net/wireless/broadcom/b43/phy_g.c +1 -1
@@ -2310,7 +2310,7 @@ static u8 b43_gphy_aci_scan(struct b43_wldev *dev)b43_phy_mask (dev,B43_PHY_G_CRS ,0x7FFF );b43_set_all_gains (dev,3 ,8 ,1 ); - start = (channel -5 >0 ) ? channel -5 :1 ; + start = (channel >5 ) ? channel -5 :1 ; end = (channel +5 <14 ) ? channel +5 :13 ;for (i = start; i <= end; i++) {
drivers/net/wireless/broadcom/b43legacy/radio.c +1 -1
@@ -299,7 +299,7 @@ u8 b43legacy_radio_aci_scan(struct b43legacy_wldev *dev) & 0x7FFF);b43legacy_set_all_gains (dev,3 ,8 ,1 ); - start = (channel -5 >0 ) ? channel -5 :1 ; + start = (channel >5 ) ? channel -5 :1 ; end = (channel +5 <14 ) ? channel +5 :13 ;for (i = start; i <= end; i++) {
drivers/net/wireless/intel/iwlwifi/mvm/utils.c +3 -0
@@ -1029,6 +1029,9 @@ bool iwl_mvm_rx_diversity_allowed(struct iwl_mvm *mvm)lockdep_assert_held (&mvm->mutex); +if (iwlmvm_mod_params.power_scheme !=IWL_POWER_SCHEME_CAM ) +return false; +if (num_of_ant (iwl_mvm_get_valid_rx_ant (mvm)) ==1 )return false;
drivers/net/wireless/marvell/libertas/if_usb.c +2 -0
@@ -288,6 +288,7 @@ static int if_usb_probe(struct usb_interface *intf,if_usb_reset_device (cardp); dealloc:if_usb_free (cardp); +kfree (cardp); error:return r;
@@ -312,6 +313,7 @@ static void if_usb_disconnect(struct usb_interface *intf)/* Unlink and free urb */ if_usb_free (cardp); +kfree (cardp);usb_set_intfdata (intf,NULL );usb_put_dev (interface_to_usbdev (intf));
drivers/net/wireless/marvell/libertas_tf/if_usb.c +2 -0
@@ -234,6 +234,7 @@ static int if_usb_probe(struct usb_interface *intf, dealloc:if_usb_free (cardp); +kfree (cardp); error:lbtf_deb_leave (LBTF_DEB_MAIN );return -ENOMEM ;
@@ -258,6 +259,7 @@ static void if_usb_disconnect(struct usb_interface *intf)/* Unlink and free urb */ if_usb_free (cardp); +kfree (cardp);usb_set_intfdata (intf,NULL );usb_put_dev (interface_to_usbdev (intf));
drivers/net/wireless/marvell/mwifiex/11n.c +3 -2
@@ -632,14 +632,15 @@ int mwifiex_send_delba(struct mwifiex_private *priv, int tid, u8 *peer_mac,uint16_t del_ba_param_set;memset (&delba,0 ,sizeof (delba)); - delba.del_ba_param_set =cpu_to_le16 (tid <<DELBA_TID_POS ); - del_ba_param_set =le16_to_cpu (delba.del_ba_param_set); + del_ba_param_set = tid <<DELBA_TID_POS ; +if (initiator) del_ba_param_set |=IEEE80211_DELBA_PARAM_INITIATOR_MASK ;else del_ba_param_set &= ~IEEE80211_DELBA_PARAM_INITIATOR_MASK ; + delba.del_ba_param_set =cpu_to_le16 (del_ba_param_set);memcpy (&delba.peer_mac_addr, peer_mac,ETH_ALEN );/* We don't wait for the response of this command */
drivers/net/wireless/marvell/mwifiex/cfg80211.c +11 -21
@@ -898,16 +898,20 @@ mwifiex_init_new_priv_params(struct mwifiex_private *priv,switch (type) {case NL80211_IFTYPE_STATION :case NL80211_IFTYPE_ADHOC : - priv->bss_role =MWIFIEX_BSS_ROLE_STA ; + priv->bss_role =MWIFIEX_BSS_ROLE_STA ; + priv->bss_type =MWIFIEX_BSS_TYPE_STA ;break ;case NL80211_IFTYPE_P2P_CLIENT : - priv->bss_role =MWIFIEX_BSS_ROLE_STA ; + priv->bss_role =MWIFIEX_BSS_ROLE_STA ; + priv->bss_type =MWIFIEX_BSS_TYPE_P2P ;break ;case NL80211_IFTYPE_P2P_GO : - priv->bss_role =MWIFIEX_BSS_ROLE_UAP ; + priv->bss_role =MWIFIEX_BSS_ROLE_UAP ; + priv->bss_type =MWIFIEX_BSS_TYPE_P2P ;break ;case NL80211_IFTYPE_AP : priv->bss_role =MWIFIEX_BSS_ROLE_UAP ; + priv->bss_type =MWIFIEX_BSS_TYPE_UAP ;break ;default : mwifiex_dbg(adapter, ERROR,
@@ -1217,29 +1221,15 @@ mwifiex_cfg80211_change_virtual_intf(struct wiphy *wiphy,break ;case NL80211_IFTYPE_P2P_CLIENT :case NL80211_IFTYPE_P2P_GO : +if (mwifiex_cfg80211_deinit_p2p (priv)) +return -EFAULT ; +switch (type) { -case NL80211_IFTYPE_STATION : -if (mwifiex_cfg80211_deinit_p2p (priv)) -return -EFAULT ; - priv->adapter->curr_iface_comb.p2p_intf--; - priv->adapter->curr_iface_comb.sta_intf++; - dev->ieee80211_ptr->iftype = type; -if (mwifiex_deinit_priv_params (priv)) -return -1 ; -if (mwifiex_init_new_priv_params (priv, dev, type)) -return -1 ; -if (mwifiex_sta_init_cmd (priv, false, false)) -return -1 ; -break ;case NL80211_IFTYPE_ADHOC : -if (mwifiex_cfg80211_deinit_p2p (priv)) -return -EFAULT ; +case NL80211_IFTYPE_STATION :return mwifiex_change_vif_to_sta_adhoc (dev, curr_iftype, type, params); -break ;case NL80211_IFTYPE_AP : -if (mwifiex_cfg80211_deinit_p2p (priv)) -return -EFAULT ;return mwifiex_change_vif_to_ap (dev, curr_iftype, type, params);case NL80211_IFTYPE_UNSPECIFIED :
drivers/net/wireless/marvell/mwifiex/pcie.c +8 -0
@@ -1316,6 +1316,14 @@ mwifiex_pcie_send_data(struct mwifiex_adapter *adapter, struct sk_buff *skb, ret =-1 ; goto done_unmap; } + +/* The firmware (latest version 15.68.19.p21) of the 88W8897 PCIe+USB card +* seems to crash randomly after setting the TX ring write pointer when +* ASPM powersaving is enabled. A workaround seems to be keeping the bus +* busy by reading a random register afterwards. +*/ +mwifiex_read_reg (adapter,PCI_VENDOR_ID , &rx_val); +if ((mwifiex_pcie_txbd_not_full (card)) && tx_param->next_pkt_len) {/* have more packets and TxBD still can hold more */
drivers/net/wireless/marvell/mwifiex/usb.c +16 -0
@@ -491,6 +491,22 @@ static int mwifiex_usb_probe(struct usb_interface *intf, } } +switch (card->usb_boot_state) { +case USB8XXX_FW_DNLD : +/* Reject broken descriptors. */ +if (!card->rx_cmd_ep || !card->tx_cmd_ep) +return -ENODEV ; +if (card->bulk_out_maxpktsize ==0 ) +return -ENODEV ; +break ; +case USB8XXX_FW_READY : +/* Assume the driver can handle missing endpoints for now. */ +break ; +default : +WARN_ON (1 ); +return -ENODEV ; + } +usb_set_intfdata (intf, card); ret = mwifiex_add_card(card, &card->fw_done, &usb_ops,
drivers/net/wireless/marvell/mwl8k.c +1 -1
@@ -5788,8 +5788,8 @@ static void mwl8k_fw_state_machine(const struct firmware *fw, void *context) fail: priv->fw_state =FW_STATE_ERROR ;complete (&priv->firmware_loading_complete); -device_release_driver (&priv->pdev->dev);mwl8k_release_firmware (priv); +device_release_driver (&priv->pdev->dev); }#define MAX_RESTART_ATTEMPTS 1
drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8225.c +7 -7
@@ -31,7 +31,7 @@ u8 rtl818x_ioread8_idx(struct rtl8187_priv *priv,usb_control_msg (priv->udev,usb_rcvctrlpipe (priv->udev,0 ),RTL8187_REQ_GET_REG ,RTL8187_REQT_READ , (unsigned long )addr, idx &0x03 , - &priv->io_dmabuf->bits8,sizeof (val),HZ /2 ); + &priv->io_dmabuf->bits8,sizeof (val),500 ); val = priv->io_dmabuf->bits8;mutex_unlock (&priv->io_mutex);
@@ -48,7 +48,7 @@ u16 rtl818x_ioread16_idx(struct rtl8187_priv *priv,usb_control_msg (priv->udev,usb_rcvctrlpipe (priv->udev,0 ),RTL8187_REQ_GET_REG ,RTL8187_REQT_READ , (unsigned long )addr, idx &0x03 , - &priv->io_dmabuf->bits16,sizeof (val),HZ /2 ); + &priv->io_dmabuf->bits16,sizeof (val),500 ); val = priv->io_dmabuf->bits16;mutex_unlock (&priv->io_mutex);
@@ -65,7 +65,7 @@ u32 rtl818x_ioread32_idx(struct rtl8187_priv *priv,usb_control_msg (priv->udev,usb_rcvctrlpipe (priv->udev,0 ),RTL8187_REQ_GET_REG ,RTL8187_REQT_READ , (unsigned long )addr, idx &0x03 , - &priv->io_dmabuf->bits32,sizeof (val),HZ /2 ); + &priv->io_dmabuf->bits32,sizeof (val),500 ); val = priv->io_dmabuf->bits32;mutex_unlock (&priv->io_mutex);
@@ -82,7 +82,7 @@ void rtl818x_iowrite8_idx(struct rtl8187_priv *priv,usb_control_msg (priv->udev,usb_sndctrlpipe (priv->udev,0 ),RTL8187_REQ_SET_REG ,RTL8187_REQT_WRITE , (unsigned long )addr, idx &0x03 , - &priv->io_dmabuf->bits8,sizeof (val),HZ /2 ); + &priv->io_dmabuf->bits8,sizeof (val),500 );mutex_unlock (&priv->io_mutex); }
@@ -96,7 +96,7 @@ void rtl818x_iowrite16_idx(struct rtl8187_priv *priv,usb_control_msg (priv->udev,usb_sndctrlpipe (priv->udev,0 ),RTL8187_REQ_SET_REG ,RTL8187_REQT_WRITE , (unsigned long )addr, idx &0x03 , - &priv->io_dmabuf->bits16,sizeof (val),HZ /2 ); + &priv->io_dmabuf->bits16,sizeof (val),500 );mutex_unlock (&priv->io_mutex); }
@@ -110,7 +110,7 @@ void rtl818x_iowrite32_idx(struct rtl8187_priv *priv,usb_control_msg (priv->udev,usb_sndctrlpipe (priv->udev,0 ),RTL8187_REQ_SET_REG ,RTL8187_REQT_WRITE , (unsigned long )addr, idx &0x03 , - &priv->io_dmabuf->bits32,sizeof (val),HZ /2 ); + &priv->io_dmabuf->bits32,sizeof (val),500 );mutex_unlock (&priv->io_mutex); }
@@ -186,7 +186,7 @@ static void rtl8225_write_8051(struct ieee80211_hw *dev, u8 addr, __le16 data)usb_control_msg (priv->udev,usb_sndctrlpipe (priv->udev,0 ),RTL8187_REQ_SET_REG ,RTL8187_REQT_WRITE , addr,0x8225 , &priv->io_dmabuf->bits16,sizeof (data), -HZ /2 ); +500 );mutex_unlock (&priv->io_mutex);
drivers/net/xen-netfront.c +8 -0
@@ -1441,6 +1441,10 @@ static int netfront_resume(struct xenbus_device *dev)dev_dbg (&dev->dev,"%s\n" , dev->nodename); +netif_tx_lock_bh (info->netdev); +netif_device_detach (info->netdev); +netif_tx_unlock_bh (info->netdev); +xennet_disconnect_backend (info);return 0 ; }
@@ -1990,6 +1994,10 @@ static int xennet_connect(struct net_device *dev)* domain a kick because we've probably just requeued some * packets. */ +netif_tx_lock_bh (np->netdev); +netif_device_attach (np->netdev); +netif_tx_unlock_bh (np->netdev); +netif_carrier_on (np->netdev);for (j =0 ; j < num_queues; ++j) { queue = &np->queues[j];
drivers/nfc/pn533/pn533.c +3 -3
@@ -2084,7 +2084,7 @@ static int pn533_fill_fragment_skbs(struct pn533 *dev, struct sk_buff *skb) frag =pn533_alloc_skb (dev, frag_size);if (!frag) {skb_queue_purge (&dev->fragment_skb); -break ; +return -ENOMEM ; }if (!dev->tgt_mode) {
@@ -2154,7 +2154,7 @@ static int pn533_transceive(struct nfc_dev *nfc_dev,/* jumbo frame ? */ if (skb->len >PN533_CMD_DATAEXCH_DATA_MAXLEN ) { rc =pn533_fill_fragment_skbs (dev, skb); -if (rc <=0 ) +if (rc <0 ) goto error; skb =skb_dequeue (&dev->fragment_skb);
@@ -2226,7 +2226,7 @@ static int pn533_tm_send(struct nfc_dev *nfc_dev, struct sk_buff *skb)/* let's split in multiple chunks if size's too big */ if (skb->len >PN533_CMD_DATAEXCH_DATA_MAXLEN ) { rc =pn533_fill_fragment_skbs (dev, skb); -if (rc <=0 ) +if (rc <0 ) goto error;/* get the first skb */
drivers/pci/host/pci-aardvark.c +11 -12
@@ -100,18 +100,19 @@#define PCIE_ISR0_MSI_INT_PENDING BIT(24)#define PCIE_ISR0_INTX_ASSERT (val) BIT(16 + (val))#define PCIE_ISR0_INTX_DEASSERT (val) BIT(20 + (val)) -#define PCIE_ISR0_ALL_MASK GENMASK(26, 0) +#define PCIE_ISR0_ALL_MASK GENMASK(31, 0)#define PCIE_ISR1_REG (CONTROL_BASE_ADDR + 0x48)#define PCIE_ISR1_MASK_REG (CONTROL_BASE_ADDR + 0x4C)#define PCIE_ISR1_POWER_STATE_CHANGE BIT(4)#define PCIE_ISR1_FLUSH BIT(5)#define PCIE_ISR1_INTX_ASSERT (val) BIT(8 + (val)) -#define PCIE_ISR1_ALL_MASK GENMASK(11, 4) +#define PCIE_ISR1_ALL_MASK GENMASK(31, 0)#define PCIE_MSI_ADDR_LOW_REG (CONTROL_BASE_ADDR + 0x50)#define PCIE_MSI_ADDR_HIGH_REG (CONTROL_BASE_ADDR + 0x54)#define PCIE_MSI_STATUS_REG (CONTROL_BASE_ADDR + 0x58)#define PCIE_MSI_MASK_REG (CONTROL_BASE_ADDR + 0x5C)#define PCIE_MSI_PAYLOAD_REG (CONTROL_BASE_ADDR + 0x9C) +#define PCIE_MSI_DATA_MASK GENMASK(15, 0)/* PCIe window configuration */ #define OB_WIN_BASE_ADDR 0x4c00
@@ -169,7 +170,7 @@#define PCIE_IRQ_MSI_INT2_DET BIT(21)#define PCIE_IRQ_RC_DBELL_DET BIT(22)#define PCIE_IRQ_EP_STATUS BIT(23) -#define PCIE_IRQ_ALL_MASK 0xfff0fb +#define PCIE_IRQ_ALL_MASK GENMASK(31, 0)#define PCIE_IRQ_ENABLE_INTS_MASK PCIE_IRQ_CORE_INT/* Transaction types */
@@ -447,7 +448,7 @@ static int advk_pcie_check_pio_status(struct advk_pcie *pcie, u32 *val)else str_posted ="Posted" ; -dev_err (dev,"%s PIO Response Status: %s, %#x @ %#x\n" , +dev_dbg (dev,"%s PIO Response Status: %s, %#x @ %#x\n" , str_posted, strcomp_status, reg,advk_readl (pcie,PIO_ADDR_LS ));return -EFAULT ;
@@ -662,7 +663,7 @@ static int advk_msi_irq_domain_alloc(struct irq_domain *domain, domain->host_data, handle_simple_irq, NULL, NULL); -return hwirq; +return 0 ; } static void advk_msi_irq_domain_free(struct irq_domain *domain,
@@ -840,8 +841,12 @@ static void advk_pcie_handle_msi(struct advk_pcie *pcie)if (!(BIT (msi_idx) & msi_status))continue ; +/* +* msi_idx contains bits [4:0] of the msi_data and msi_data +* contains 16bit MSI interrupt number +*/ advk_writel (pcie,BIT (msi_idx),PCIE_MSI_STATUS_REG ); - msi_data =advk_readl (pcie,PCIE_MSI_PAYLOAD_REG ) &0xFF ; + msi_data =advk_readl (pcie,PCIE_MSI_PAYLOAD_REG ) &PCIE_MSI_DATA_MASK ;generic_handle_irq (msi_data); }
@@ -863,12 +868,6 @@ static void advk_pcie_handle_int(struct advk_pcie *pcie) isr1_mask =advk_readl (pcie,PCIE_ISR1_MASK_REG ); isr1_status = isr1_val & ((~isr1_mask) &PCIE_ISR1_ALL_MASK ); -if (!isr0_status && !isr1_status) { -advk_writel (pcie, isr0_val,PCIE_ISR0_REG ); -advk_writel (pcie, isr1_val,PCIE_ISR1_REG ); -return ; - } -/* Process MSI interrupts */ if (isr0_status &PCIE_ISR0_MSI_INT_PENDING )advk_pcie_handle_msi (pcie);
drivers/pci/msi.c +12 -12
@@ -372,18 +372,6 @@ static void free_msi_irqs(struct pci_dev *dev)for (i =0 ; i < entry->nvec_used; i++)BUG_ON (irq_has_action (entry->irq + i)); -pci_msi_teardown_msi_irqs (dev); - -list_for_each_entry_safe (entry, tmp, msi_list, list) { -if (entry->msi_attrib.is_msix) { -if (list_is_last (&entry->list, msi_list)) -iounmap (entry->mask_base); - } - -list_del (&entry->list); -free_msi_entry (entry); - } -if (dev->msi_irq_groups) {sysfs_remove_groups (&dev->dev.kobj, dev->msi_irq_groups); msi_attrs = dev->msi_irq_groups[0 ]->attrs;
@@ -399,6 +387,18 @@ static void free_msi_irqs(struct pci_dev *dev)kfree (dev->msi_irq_groups); dev->msi_irq_groups =NULL ; } + +pci_msi_teardown_msi_irqs (dev); + +list_for_each_entry_safe (entry, tmp, msi_list, list) { +if (entry->msi_attrib.is_msix) { +if (list_is_last (&entry->list, msi_list)) +iounmap (entry->mask_base); + } + +list_del (&entry->list); +free_msi_entry (entry); + } }static void pci_intx_for_msi (struct pci_dev *dev,int enable)
drivers/pci/quirks.c +1 -0
@@ -3414,6 +3414,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0032, quirk_no_bus_reset);DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_ATHEROS ,0x003c , quirk_no_bus_reset);DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_ATHEROS ,0x0033 , quirk_no_bus_reset);DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_ATHEROS ,0x0034 , quirk_no_bus_reset); +DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_ATHEROS ,0x003e , quirk_no_bus_reset);/* * Some TI KeyStone C667X devices do not support bus/hot reset. The PCIESS
drivers/pinctrl/core.c +2 -0
@@ -2061,6 +2061,8 @@ int pinctrl_enable(struct pinctrl_dev *pctldev)if (error) {dev_err (pctldev->dev,"could not claim hogs: %i\n" , error); +pinctrl_free_pindescs (pctldev, pctldev->desc->pins, + pctldev->desc->npins);mutex_destroy (&pctldev->mutex);kfree (pctldev);
drivers/platform/x86/hp_accel.c +2 -0
@@ -383,9 +383,11 @@ static int lis3lv02d_add(struct acpi_device *device)INIT_WORK (&hpled_led.work, delayed_set_status_worker); ret =led_classdev_register (NULL , &hpled_led.led_classdev);if (ret) { +i8042_remove_filter (hp_accel_i8042_filter);lis3lv02d_joystick_disable (&lis3_dev);lis3lv02d_poweroff (&lis3_dev);flush_work (&hpled_led.work); +lis3lv02d_remove_fs (&lis3_dev);return ret; }
drivers/platform/x86/thinkpad_acpi.c +1 -1
@@ -8978,7 +8978,7 @@ static int fan_write_cmd_level(const char *cmd, int *rc)if (strlencmp (cmd,"level auto" ) ==0 ) level =TP_EC_FAN_AUTO ; -else if ((strlencmp (cmd,"level disengaged" ) ==0 ) | +else if ((strlencmp (cmd,"level disengaged" ) ==0 ) || (strlencmp (cmd,"level full-speed" ) ==0 )) level =TP_EC_FAN_FULLSPEED ;else if (sscanf (cmd,"level %d" , &level) !=1 )
drivers/platform/x86/wmi.c +8 -1
@@ -307,7 +307,14 @@ static acpi_status __query_block(struct wmi_block *wblock, u8 instance,* the WQxx method failed - we should disable collection anyway. */ if ((block->flags &ACPI_WMI_EXPENSIVE ) &&ACPI_SUCCESS (wc_status)) { - status =acpi_execute_simple_method (handle, wc_method,0 ); +/* +* Ignore whether this WCxx call succeeds or not since +* the previously executed WQxx method call might have +* succeeded, and returning the failing status code +* of this call would throw away the result of the WQxx +* call, potentially leaking memory. +*/ +acpi_execute_simple_method (handle, wc_method,0 ); }return status;
drivers/power/supply/bq27xxx_battery_i2c.c +2 -1
@@ -195,7 +195,8 @@ static int bq27xxx_battery_i2c_probe(struct i2c_client *client,dev_err (&client->dev,"Unable to register IRQ %d error %d\n" , client->irq, ret); -return ret; +bq27xxx_battery_teardown (di); + goto err_failed; } }
drivers/power/supply/max17042_battery.c +6 -2
@@ -303,7 +303,10 @@ static int max17042_get_property(struct power_supply *psy, val->intval = data *625 /8 ;break ;case POWER_SUPPLY_PROP_CAPACITY : - ret =regmap_read (map, MAX17042_RepSOC, &data); +if (chip->pdata->enable_current_sense) + ret =regmap_read (map, MAX17042_RepSOC, &data); +else + ret =regmap_read (map,MAX17042_VFSOC , &data);if (ret <0 )return ret;
@@ -825,7 +828,8 @@ static void max17042_set_soc_threshold(struct max17042_chip *chip, u16 off)regmap_read (map, MAX17042_RepSOC, &soc); soc >>=8 ; soc_tr = (soc + off) <<8 ; - soc_tr |= (soc - off); +if (off < soc) + soc_tr |= soc - off;regmap_write (map, MAX17042_SALRT_Th, soc_tr); }
drivers/power/supply/rt5033_battery.c +1 -1
@@ -63,7 +63,7 @@ static int rt5033_battery_get_watt_prop(struct i2c_client *client,regmap_read (battery->regmap, regh, &msb);regmap_read (battery->regmap, regl, &lsb); - ret = ((msb <<4 ) + (lsb >>4 )) *1250 /1000 ; + ret = ((msb <<4 ) + (lsb >>4 )) *1250 ;return ret; }
drivers/regulator/s5m8767.c +9 -12
@@ -845,18 +845,15 @@ static int s5m8767_pmic_probe(struct platform_device *pdev)/* DS4 GPIO */ gpio_direction_output (pdata->buck_ds[2 ],0x0 ); -if (pdata->buck2_gpiodvs || pdata->buck3_gpiodvs || - pdata->buck4_gpiodvs) { -regmap_update_bits (s5m8767->iodev->regmap_pmic, -S5M8767_REG_BUCK2CTRL ,1 <<1 , - (pdata->buck2_gpiodvs) ? (1 <<1 ) : (0 <<1 )); -regmap_update_bits (s5m8767->iodev->regmap_pmic, -S5M8767_REG_BUCK3CTRL ,1 <<1 , - (pdata->buck3_gpiodvs) ? (1 <<1 ) : (0 <<1 )); -regmap_update_bits (s5m8767->iodev->regmap_pmic, -S5M8767_REG_BUCK4CTRL ,1 <<1 , - (pdata->buck4_gpiodvs) ? (1 <<1 ) : (0 <<1 )); - } +regmap_update_bits (s5m8767->iodev->regmap_pmic, +S5M8767_REG_BUCK2CTRL ,1 <<1 , + (pdata->buck2_gpiodvs) ? (1 <<1 ) : (0 <<1 )); +regmap_update_bits (s5m8767->iodev->regmap_pmic, +S5M8767_REG_BUCK3CTRL ,1 <<1 , + (pdata->buck3_gpiodvs) ? (1 <<1 ) : (0 <<1 )); +regmap_update_bits (s5m8767->iodev->regmap_pmic, +S5M8767_REG_BUCK4CTRL ,1 <<1 , + (pdata->buck4_gpiodvs) ? (1 <<1 ) : (0 <<1 ));/* Initialize GPIO DVS registers */ for (i =0 ; i <8 ; i++) {
drivers/s390/cio/css.c +2 -2
@@ -337,8 +337,8 @@ static ssize_t dev_busid_show(struct device *dev,struct subchannel *sch =to_subchannel (dev);struct pmcw *pmcw = &sch->schib.pmcw; -if ((pmcw->st ==SUBCHANNEL_TYPE_IO || - pmcw->st ==SUBCHANNEL_TYPE_MSG ) && pmcw->dnv) +if ((pmcw->st ==SUBCHANNEL_TYPE_IO && pmcw->dnv) || + (pmcw->st ==SUBCHANNEL_TYPE_MSG && pmcw->w))return sysfs_emit (buf,"0.%x.%04x\n" , sch->schid.ssid, pmcw->dev);
Lines of this file are not shown. View the raw message.
drivers/target/target_core_transport.c +54 -22
76 lines not on this page · raw message
drivers/xen/balloon.c +63 -23
86 lines not on this page · raw message
drivers/xen/xen-pciback/conf_space_capability.c +1 -1
Lines of this file are not shown. View the raw message.
fs/jfs/jfs_mount.c +22 -29
51 lines not on this page · raw message
fs/nfs/flexfilelayout/flexfilelayoutdev.c +2 -2
Lines of this file are not shown. View the raw message.
kernel/trace/trace.c +47 -15
62 lines not on this page · raw message
net/batman-adv/bridge_loop_avoidance.c +87 -16
103 lines not on this page · raw message
sound/core/oss/mixer_oss.c +33 -10
43 lines not on this page · 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.