Linux 4.14.194
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.194 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/ABI/testing/sysfs-bus-iio | 3 Documentation/devicetree/bindings/iio/multiplexer/io-channel-mux.txt | 2 Makefile | 2 arch/arm/kernel/stacktrace.c | 24 + arch/arm/mach-at91/pm.c | 11 arch/arm/mach-socfpga/pm.c | 8 arch/arm64/boot/dts/exynos/exynos7-espresso.dts | 1 arch/arm64/boot/dts/hisilicon/hi3660-hikey960.dts | 11 arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts | 2 arch/arm64/boot/dts/qcom/msm8916-pins.dtsi | 10 arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi | 4 arch/m68k/mac/iop.c | 21 - arch/mips/cavium-octeon/octeon-usb.c | 5 arch/mips/kernel/topology.c | 2 arch/parisc/include/asm/barrier.h | 61 +++ arch/powerpc/include/asm/percpu.h | 4 arch/powerpc/kernel/vdso.c | 2 arch/powerpc/platforms/pseries/hotplug-memory.c | 2 arch/sh/boards/mach-landisk/setup.c | 3 arch/x86/crypto/aes_ctrby8_avx-x86_64.S | 14 arch/x86/kernel/apic/io_apic.c | 5 arch/x86/kernel/apic/vector.c | 4 arch/x86/kernel/cpu/mcheck/mce-inject.c | 2 arch/x86/kernel/ptrace.c | 2 arch/xtensa/kernel/perf_event.c | 2 drivers/acpi/acpica/exprep.c | 4 drivers/acpi/acpica/utdelete.c | 6 drivers/android/binder.c | 15 drivers/atm/atmtcp.c | 10 drivers/bluetooth/hci_serdev.c | 3 drivers/char/agp/intel-gtt.c | 4 drivers/clk/sirf/clk-atlas6.c | 2 drivers/crypto/cavium/cpt/cptvf_algs.c | 1 drivers/crypto/cavium/cpt/cptvf_reqmanager.c | 12 drivers/crypto/cavium/cpt/request_manager.h | 2 drivers/crypto/ccp/ccp-dev.h | 1 drivers/crypto/ccp/ccp-ops.c | 37 +- drivers/crypto/qat/qat_common/qat_uclo.c | 9 drivers/edac/edac_device_sysfs.c | 1 drivers/edac/edac_pci_sysfs.c | 2 drivers/gpu/drm/arm/malidp_planes.c | 2 drivers/gpu/drm/bridge/sil-sii8620.c | 2 drivers/gpu/drm/drm_debugfs.c | 8 drivers/gpu/drm/drm_mipi_dsi.c | 6 drivers/gpu/drm/imx/imx-ldb.c | 7 drivers/gpu/drm/imx/imx-tve.c | 20 - drivers/gpu/drm/nouveau/nouveau_drm.c | 8 drivers/gpu/drm/nouveau/nouveau_fbcon.c | 3 drivers/gpu/drm/nouveau/nouveau_gem.c | 4 drivers/gpu/drm/panel/panel-simple.c | 2 drivers/gpu/drm/radeon/ci_dpm.c | 2 drivers/gpu/drm/radeon/radeon_display.c | 4 drivers/gpu/drm/radeon/radeon_drv.c | 4 drivers/gpu/drm/radeon/radeon_kms.c | 4 drivers/gpu/drm/tilcdc/tilcdc_panel.c | 6 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 8 drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | 5 drivers/gpu/host1x/debug.c | 4 drivers/gpu/ipu-v3/ipu-image-convert.c | 58 +-- drivers/hid/hid-input.c | 6 drivers/hv/channel_mgmt.c | 21 - drivers/hv/vmbus_drv.c | 4 drivers/hwtracing/coresight/coresight-tmc-etf.c | 13 drivers/i2c/busses/i2c-rcar.c | 15 drivers/i2c/i2c-core-slave.c | 7 drivers/iio/dac/ad5592r-base.c | 4 drivers/infiniband/ulp/ipoib/ipoib.h | 2 drivers/infiniband/ulp/ipoib/ipoib_ib.c | 4 drivers/input/mouse/sentelic.c | 2 drivers/iommu/intel_irq_remapping.c | 8 drivers/iommu/omap-iommu-debug.c | 3 drivers/irqchip/irq-gic-v3-its.c | 5 drivers/irqchip/irq-mtk-sysirq.c | 8 drivers/leds/led-class.c | 1 drivers/leds/leds-88pm860x.c | 14 drivers/leds/leds-da903x.c | 14 drivers/leds/leds-lm3533.c | 12 drivers/leds/leds-lm355x.c | 7 drivers/leds/leds-wm831x-status.c | 14 drivers/md/bcache/bset.c | 2 drivers/md/bcache/btree.c | 2 drivers/md/bcache/journal.c | 4 drivers/md/bcache/super.c | 11 drivers/md/dm-cache-target.c | 166 +++------- drivers/md/dm-rq.c | 3 drivers/md/md-cluster.c | 1 drivers/md/raid5.c | 3 drivers/media/firewire/firedtv-fw.c | 2 drivers/media/platform/exynos4-is/media-dev.c | 3 drivers/media/platform/omap3isp/isppreview.c | 4 drivers/mfd/arizona-core.c | 18 + drivers/mfd/dln2.c | 4 drivers/misc/cxl/sysfs.c | 2 drivers/mtd/mtdchar.c | 56 ++- drivers/mtd/nand/qcom_nandc.c | 7 drivers/net/dsa/mv88e6xxx/chip.c | 1 drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c | 2 drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c | 2 drivers/net/ethernet/freescale/fman/fman.c | 3 drivers/net/ethernet/freescale/fman/fman_dtsec.c | 4 drivers/net/ethernet/freescale/fman/fman_mac.h | 2 drivers/net/ethernet/freescale/fman/fman_memac.c | 3 drivers/net/ethernet/freescale/fman/fman_port.c | 9 drivers/net/ethernet/freescale/fman/fman_tgec.c | 2 drivers/net/ethernet/intel/igb/igb_main.c | 9 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 2 drivers/net/ethernet/qualcomm/emac/emac.c | 17 - drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c | 1 drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c | 3 drivers/net/ethernet/toshiba/spider_net.c | 4 drivers/net/hyperv/netvsc_drv.c | 7 drivers/net/usb/hso.c | 5 drivers/net/usb/lan78xx.c | 117 +------ drivers/net/vxlan.c | 10 drivers/net/wan/lapbether.c | 10 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h | 2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c | 4 drivers/net/wireless/intel/iwlegacy/common.c | 4 drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c | 22 - drivers/net/wireless/ti/wl1251/event.c | 2 drivers/parisc/sba_iommu.c | 2 drivers/pci/access.c | 8 drivers/pci/host/vmd.c | 3 drivers/pci/hotplug/acpiphp_glue.c | 14 drivers/pci/pcie/aspm.c | 1 drivers/pci/quirks.c | 2 drivers/pinctrl/pinctrl-single.c | 11 drivers/platform/x86/intel-hid.c | 2 drivers/platform/x86/intel-vbtn.c | 2 drivers/power/supply/88pm860x_battery.c | 6 drivers/pwm/pwm-bcm-iproc.c | 9 drivers/s390/net/qeth_l2_main.c | 4 drivers/scsi/arm/cumana_2.c | 2 drivers/scsi/arm/eesox.c | 2 drivers/scsi/arm/powertec.c | 2 drivers/scsi/mesh.c | 8 drivers/scsi/scsi_debug.c | 6 drivers/spi/spi-lantiq-ssc.c | 10 drivers/spi/spidev.c | 21 - drivers/staging/android/ashmem.c | 12 drivers/staging/rtl8192u/r8192U_core.c | 2 drivers/thermal/ti-soc-thermal/ti-thermal-common.c | 2 drivers/usb/dwc2/platform.c | 4 drivers/usb/gadget/udc/bdc/bdc_core.c | 13 drivers/usb/gadget/udc/bdc/bdc_ep.c | 16 drivers/usb/gadget/udc/net2280.c | 4 drivers/usb/host/xhci-pci.c | 10 drivers/usb/misc/iowarrior.c | 35 +- drivers/usb/serial/cp210x.c | 19 + drivers/usb/serial/ftdi_sio.c | 37 +- drivers/usb/serial/iuu_phoenix.c | 14 drivers/usb/serial/qcserial.c | 1 drivers/video/console/newport_con.c | 12 drivers/video/console/vgacon.c | 4 drivers/video/fbdev/neofb.c | 1 drivers/video/fbdev/omap2/omapfb/dss/dss.c | 2 drivers/video/fbdev/pxafb.c | 4 drivers/video/fbdev/sm712fb.c | 2 drivers/watchdog/f71808e_wdt.c | 13 drivers/xen/balloon.c | 12 fs/9p/v9fs.c | 5 fs/btrfs/disk-io.c | 13 fs/btrfs/extent_io.c | 2 fs/btrfs/free-space-cache.c | 4 fs/btrfs/tree-log.c | 8 fs/cifs/smb2pdu.c | 2 fs/dlm/lockspace.c | 6 fs/ext2/ialloc.c | 3 fs/minix/inode.c | 36 ++ fs/minix/itree_common.c | 8 fs/nfs/nfs4proc.c | 2 fs/nfs/nfs4xdr.c | 6 fs/ocfs2/ocfs2.h | 4 fs/ocfs2/suballoc.c | 4 fs/ocfs2/super.c | 4 fs/ufs/super.c | 2 fs/xattr.c | 84 ++++- fs/xfs/xfs_reflink.c | 21 - include/linux/bitfield.h | 2 include/linux/hyperv.h | 2 include/linux/intel-iommu.h | 4 include/linux/irq.h | 12 include/linux/tracepoint.h | 2 include/linux/xattr.h | 2 include/net/addrconf.h | 1 include/net/inet_connection_sock.h | 4 include/net/ip_vs.h | 10 include/net/sock.h | 4 kernel/cgroup/cgroup.c | 2 kernel/irq/manage.c | 41 ++ kernel/kprobes.c | 7 kernel/sched/topology.c | 2 kernel/trace/ftrace.c | 15 kernel/trace/trace_events.c | 4 kernel/trace/trace_hwlat.c | 5 lib/dynamic_debug.c | 23 - lib/test_kmod.c | 2 mm/khugepaged.c | 22 - mm/mmap.c | 1 net/9p/trans_fd.c | 24 - net/bluetooth/6lowpan.c | 5 net/bluetooth/hci_event.c | 11 net/compat.c | 1 net/core/sock.c | 21 + net/ipv4/fib_trie.c | 2 net/ipv4/gre_offload.c | 13 net/ipv4/inet_connection_sock.c | 93 +++-- net/ipv4/inet_hashtables.c | 1 net/ipv6/anycast.c | 17 - net/ipv6/ipv6_sockglue.c | 1 net/mac80211/sta_info.c | 2 net/netfilter/ipvs/ip_vs_core.c | 12 net/nfc/rawsock.c | 7 net/openvswitch/conntrack.c | 38 +- net/packet/af_packet.c | 9 net/rxrpc/call_object.c | 27 + net/rxrpc/conn_object.c | 8 net/rxrpc/recvmsg.c | 2 net/rxrpc/sendmsg.c | 3 net/socket.c | 2 net/wireless/nl80211.c | 6 security/smack/smackfs.c | 19 - sound/core/seq/oss/seq_oss.c | 8 sound/pci/echoaudio/echoaudio.c | 2 sound/soc/intel/boards/bxt_rt298.c | 2 sound/usb/card.h | 1 sound/usb/mixer_quirks.c | 1 sound/usb/pcm.c | 6 sound/usb/quirks-table.h | 64 +++ sound/usb/quirks.c | 3 sound/usb/stream.c | 1 tools/build/Build.include | 3 tools/build/Makefile.feature | 2 tools/build/feature/Makefile | 2 tools/lib/traceevent/event-parse.c | 1 tools/perf/bench/mem-functions.c | 21 - tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 21 - tools/testing/selftests/net/msg_zerocopy.c | 5 tools/testing/selftests/powerpc/benchmarks/context_switch.c | 21 - tools/testing/selftests/powerpc/utils.c | 37 +- 241 files changed, 1596 insertions(+), 818 deletions(-)
Adam Ford (1):
omapfb: dss: Fix max fclk divider for omap36xx
Aditya Pakki (2):
drm/radeon: Fix reference count leaks caused by pm_runtime_get_sync drm/nouveau: fix multiple instances of reference count leaks
Adrian Hunter (1):
perf intel-pt: Fix FUP packet state
Ahmad Fatoum (3):
watchdog: f71808e_wdt: indicate WDIOF_CARDRESET support in watchdog_info.options
watchdog: f71808e_wdt: remove use of wrong watchdog_info option
watchdog: f71808e_wdt: clear watchdog timeout occurred flag
Alexandru Ardelean (1):
iio: dac: ad5592r: fix unbalanced mutex unlocks in ad5592r_read_raw()
Alim Akhtar (1):
arm64: dts: exynos: Fix silent hang after boot on Espresso
Andrii Nakryiko (1):
tools, build: Propagate build failures from tools/build/Makefile.build
Andy Shevchenko (1):
mfd: dln2: Run event handler loop under spinlock
Anton Blanchard (1):
pseries: Fix 64 bit logical memory block panic
Arnd Bergmann (1):
leds: lm355x: avoid enum conversion warning
Bartosz Golaszewski (1):
irqchip/irq-mtk-sysirq: Replace spinlock with raw_spinlock
Ben Skeggs (2):
drm/nouveau/fbcon: fix module unload when fbcon init has failed for some reason drm/nouveau/fbcon: zero-initialise the mode_cmd2 structure
Bjorn Helgaas (1):
PCI: Fix pci_cfg_wait queue locking problem
Bolarinwa Olayemi Saheed (1):
iwlegacy: Check the return value of pcie_capability_read_*()
Brant Merryman (2):
USB: serial: cp210x: re-enable auto-RTS on open
USB: serial: cp210x: enable usb generic throttle/unthrottleChangSyun Peng (1):
md/raid5: Fix Force reconstruct-write io stuck in degraded raid5
Charles Keepax (1):
mfd: arizona: Ensure 32k clock is put on driver unbind and error
Chengming Zhou (1):
ftrace: Setup correct FTRACE_FL_REGS flags for module
Chris Packham (1):
net: dsa: mv88e6xxx: MV88E6097 does not support jumbo configuration
Christian Eggers (2):
spi: spidev: Align buffers for DMA
dt-bindings: iio: io-channel-mux: Fix compatible string in example code
Christoph Hellwig (1):
net/9p: validate fds in p9_fd_open
Christophe JAILLET (5):
video: pxafb: Fix the function used to balance a 'dma_alloc_coherent()' call
scsi: cumana_2: Fix different dev_id between request_irq() and free_irq()
scsi: powertec: Fix different dev_id between request_irq() and free_irq()
scsi: eesox: Fix different dev_id between request_irq() and free_irq()
net: spider_net: Fix the size used in a 'dma_free_coherent()' call
Chuhong Yuan (2):
media: omap3isp: Add missed v4l2_ctrl_handler_free() for preview_init_entities()
media: exynos4-is: Add missed check for pinctrl_lookup_state()
Colin Ian King (6):
drm/arm: fix unintentional integer overflow on left shift drm/radeon: fix array out-of-bounds read and write issues
staging: rtl8192u: fix a dubious looking mask before a shift iommu/omap: Check for failure of a call to omap_iommu_dump_ctx
Input: sentelic - fix error return when fsp_reg_write fails fs/ufs: avoid potential u32 multiplication overflow
Coly Li (2):
bcache: fix super block seq numbers comparision in register_cache_set()
bcache: allocate meta data pages as compound pages
Cong Wang (1):
ipv6: fix memory leaks on IPV6_ADDRFORM path
Dan Carpenter (7):
media: firewire: Using uninitialized values in node_probe()
mwifiex: Prevent memory corruption handling keys
thermal: ti-soc-thermal: Fix reversed condition in ti_thermal_expose_sensor()
Smack: fix another vsscanf out of bounds
Smack: prevent underflow in smk_set_cipso()
drm/vmwgfx: Use correct vmw_legacy_display_unit pointer drm/vmwgfx: Fix two list_for_each loop exit tests
Danesh Petigara (1):
usb: bdc: Halt controller on suspend
Daniel Díaz (1):
tools build feature: Quote CC and CXX for their arguments
Darrick J. Wong (1):
xfs: fix reflink quota reservation accounting error
David Howells (1):
rxrpc: Fix race between recvmsg and sendmsg on immediate call failure
Dejin Zheng (2):
video: fbdev: sm712fb: fix an issue about iounmap for a wrong address
console: newport_con: fix an issue about leak related system resources
Dexuan Cui (1):
Drivers: hv: vmbus: Ignore CHANNELMSG_TL_CONNECT_RESULT(23)
Dilip Kota (1):
spi: lantiq: fix: Rx overflow error in full duplex mode
Dinghao Liu (1):
ALSA: echoaudio: Fix potential Oops in snd_echo_resume()
Dmitry Osipenko (1):
gpu: host1x: debug: Fix multiple channels emitting messages simultaneously
Drew Fustini (1):
pinctrl-single: fix pcs_parse_pinconf() return value
Emil Velikov (1):
drm/mipi: use dcs write for mipi_dsi_dcs_set_tear_scanline
Eric Biggers (4):
Smack: fix use-after-free in smk_write_relabel_self() fs/minix: check return value of sb_getblk() fs/minix: don't allow getting deleted inodes fs/minix: reject too-large maximum file size
Eric Dumazet (1):
x86/fsgsbase/64: Fix NULL deref in 86_fsgsbase_read_task
Erik Ekman (1):
USB: serial: qcserial: add EM7305 QDL product ID
Erik Kaneda (1):
ACPICA: Do not increment operation_region reference counts for field units
Evgeny Novikov (2):
video: fbdev: neofb: fix memory leak in neo_scan_monitor()
usb: gadget: net2280: fix memory leak on probe error handling paths
Filipe Manana (1):
btrfs: fix memory leaks after failure to lookup checksums during inode logging
Finn Thain (3):
m68k: mac: Don't send IOP message until channel is idle
m68k: mac: Fix IOP status/control register writes
scsi: mesh: Fix panic after host or bus reset
Florinel Iordache (5):
fsl/fman: use 32-bit unsigned integer
fsl/fman: fix dereference null return value
fsl/fman: fix unreachable code
fsl/fman: check dereferencing null pointer
fsl/fman: fix eth hash table allocation
Forest Crossman (2):
usb: xhci: define IDs for various ASMedia host controllers
usb: xhci: Fix ASMedia ASM1142 DMA addressing
Francesco Ruggeri (1):
igb: reinit_locked() should be called with rtnl_lock
Frank van der Linden (1):
xattr: break delegations in {set,remove}xattr
Geert Uytterhoeven (1):
sh: landisk: Add missing initialization of sh_io_port_base
Grant Likely (1):
HID: input: Fix devices that return multiple bytes in battery report
Greg Kroah-Hartman (3):
USB: iowarrior: fix up report size handling for some devices
mtd: properly check all write ioctls for permissions Linux 4.14.194
Hangbin Liu (1):
Revert "vxlan: fix tos value before xmit"
Hanjun Guo (1):
PCI: Release IVRS table in AMD ACS quirk
Harish (1):
selftests/powerpc: Fix CPU affinity for child process
Hector Martin (3):
ALSA: usb-audio: fix overeager device match for MacroSilicon MS2109
ALSA: usb-audio: add quirk for Pioneer DDJ-RB
ALSA: usb-audio: work around streaming quirk for MacroSilicon MS2109
Heiko Stuebner (2):
arm64: dts: rockchip: fix rk3399-puma vcc5v0-host gpio
arm64: dts: rockchip: fix rk3399-puma gmac reset gpio
Huacai Chen (1):
MIPS: CPU#0 is not hotpluggable
Hugh Dickins (1):
khugepaged: retract_page_tables() remember to test exit
Ido Schimmel (2):
ipv4: Silence suspicious RCU usage warning
vxlan: Ensure FDB dump is performed under RCU
Jakub Kicinski (1):
bitfield.h: don't compile-time validate _val in FIELD_FIT
Jann Horn (1):
binder: Prevent context manager from incrementing ref 0
Jeffrey Mitchell (1):
nfs: Fix getxattr kernel panic and memory overflow
Jian Cai (1):
crypto: aesni - add compatibility with IAS
Jim Cromie (1):
dyndbg: fix a BUG_ON in ddebug_describe_flags
Johan Hovold (8):
leds: wm831x-status: fix use-after-free on unbind
leds: da903x: fix use-after-free on unbind
leds: lm3533: fix use-after-free on unbind
leds: 88pm860x: fix use-after-free on unbind
net: lan78xx: replace bogus endpoint lookup
USB: serial: iuu_phoenix: fix led-activity helpers
USB: serial: ftdi_sio: make process-packet buffer unsigned
USB: serial: ftdi_sio: clean up receive processing
Johannes Berg (1):
mac80211: fix misplaced while instead of if
John Allen (1):
crypto: ccp - Fix use of merged scatterlists
John David Anglin (1):
parisc: Implement __smp_store_release and __smp_load_acquire barriers
John Garry (1):
scsi: scsi_debug: Add check for sdebug_max_queue during module init
John Ogness (1):
af_packet: TPACKET_V3: fix fill status rwlock imbalance
Jon Derrick (1):
irqdomain/treewide: Free firmware node after domain removal
Jonathan McDowell (2):
net: ethernet: stmmac: Disable hardware multicast filter
net: stmmac: dwmac1000: provide multicast filter fallback
Josef Bacik (1):
btrfs: only search for left_info if there is no right_info in try_merge_free_space
Julian Anastasov (1):
ipvs: allow connection reuse for unconfirmed conntrack
Julian Squires (1):
cfg80211: check vendor command doit pointer before use
Julian Wiedmann (1):
s390/qeth: don't process empty bridge port events
Junxiao Bi (1):
ocfs2: change slot number type s16 to u16
Kai-Heng Feng (1):
leds: core: Flush scheduled work for system suspend
Kamal Heib (1):
RDMA/ipoib: Return void from ipoib_ib_dev_stop()
Kees Cook (1):
net/compat: Add missing sock updates for SCM_RIGHTS
Kevin Hao (1):
tracing/hwlat: Honor the tracing_cpumask
Landen Chao (1):
net: ethernet: mtk_eth_soc: fix MTU warnings
Laurent Pinchart (1):
drm: panel: simple: Fix bpc for LG LB070WV8 panel
Lihong Kou (1):
Bluetooth: add a mutex lock to avoid UAF in do_enale_set
Liu Yi L (1):
iommu/vt-d: Enforce PASID devTLB field mask
Liu Ying (1):
drm/imx: imx-ldb: Disable both channels for split mode in enc->disable()
Lorenzo Bianconi (1):
net: gre: recompute gre csum for sctp over gre tunnels
Lu Wei (2):
platform/x86: intel-hid: Fix return value check in check_acpi_dev() platform/x86: intel-vbtn: Fix return value check in check_acpi_dev()
Marco Felsch (1):
drm/imx: tve: fix regulator_disable error path
Marek Szyprowski (1):
usb: dwc2: Fix error path in gadget registration
Max Filippov (1):
xtensa: fix xtensa_pmu_setup prototype
Miaohe Lin (1):
net: Set fput_needed iff FDPUT_FPUT is set
Michael Ellerman (1):
powerpc: Fix circular dependency between percpu.h and mmu.h
Michael Tretter (1):
drm/debugfs: fix plain echo to connector "force" attribute
Mike Snitzer (3):
dm cache: pass cache structure to mode functions
dm cache: submit writethrough writes in parallel to origin and cache dm cache: remove all obsolete writethrough-specific code
Mikulas Patocka (2):
crypto: cpt - don't sleep of CRYPTO_TFM_REQ_MAY_SLEEP was not specified
ext2: fix missing percpu_counter_inc
Milton Miller (1):
powerpc/vdso: Fix vdso cpu truncation
Ming Lei (1):
dm rq: don't call blk_mq_queue_stopped() in dm_stop_queue()
Mirko Dietrich (1):
ALSA: usb-audio: Creative USB X-Fi Pro SB1095 volume knob support
Muchun Song (1):
kprobes: Fix NULL pointer dereference at kprobe_ftrace_handler
Nathan Huckleberry (1):
ARM: 8992/1: Fix unwind_frame for clang-built kernels
Nick Desaulniers (1):
tracepoint: Mark __tracepoint_string's __used
Nicolas Boichat (1):
Bluetooth: hci_serdev: Only unregister device if it was registered
Paul E. McKenney (2):
fs/btrfs: Add cond_resched() for try_release_extent_mapping() stalls mm/mmap.c: Add cond_resched() for exit_mmap() CPU stalls
Peilin Ye (4):
Bluetooth: Fix slab-out-of-bounds read in hci_extended_inquiry_result_evt()
Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_evt()
Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_with_rssi_evt()
openvswitch: Prevent kernel-infoleak in ovs_ct_put_key()
Peng Liu (1):
sched: correct SD_flags returned by tl->sd_flags()
Philippe Duplessis-Guindon (1):
tools lib traceevent: Fix memory leak in process_dynamic_array_len
Pierre-Louis Bossart (1):
ASoC: Intel: bxt_rt298: add missing .owner field
Prasanna Kerekoppa (1):
brcmfmac: To fix Bss Info flag definition Bug
Qingyu Li (1):
net/nfc/rawsock.c: add CAP_NET_RAW check.
Qiushi Wu (2):
EDAC: Fix reference count leaks
agp/intel: Fix a memory leak on module initialisation failure
Qu Wenruo (1):
btrfs: don't allocate anonymous block device for user invisible roots
Rafael J. Wysocki (1):
PCI: hotplug: ACPI: Fix context refcounting in acpiphp_grab_context()
Rayagonda Kokatanur (1):
pwm: bcm-iproc: handle clk_get_rate() return
Ricardo Cañuelo (1):
arm64: dts: hisilicon: hikey: fixes to comply with adi, adv7533 DT binding
Roger Pau Monne (2):
xen/balloon: fix accounting in alloc_xenballooned_pages error path xen/balloon: make the balloon wait interruptible
Roi Dayan (1):
net/mlx5e: Don't support phys switch id if not in switchdev mode
Rustam Kovhaev (1):
usb: hso: check for return value in hso_serial_common_create()
Sai Prakash Ranjan (1):
coresight: tmc: Fix TMC mode read in tmc_read_unprepare_etb()
Sandipan Das (1):
selftests/powerpc: Fix online CPU selection
Sasi Kumar (1):
bdc: Fix bug causing crash after multiple disconnects
Sivaprakash Murugesan (1):
mtd: rawnand: qcom: avoid write to unavailable register
Stephan Gerhold (1):
arm64: dts: qcom: msm8916: Replace invalid bias-pull-none property
Stephen Hemminger (1):
hv_netvsc: do not use VF device if link is down
Steve French (1):
smb3: warn on confusing error scenario with sec=krb5
Steve Longerbeam (1):
gpu: ipu-v3: image-convert: Combine rotate/no-rotate irq handlers
Steven Rostedt (VMware) (1):
tracing: Use trace_sched_process_free() instead of exit() for pid tracing
Suren Baghdasaryan (1):
staging: android: ashmem: Fix lockdep warning for write operation
Sven Schnelle (1):
parisc: mask out enable and reserved bits from sba imask
Takashi Iwai (1):
ALSA: seq: oss: Serialize ioctls
Thomas Gleixner (2):
genirq/affinity: Handle affinity setting on inactive interrupts correctly genirq/affinity: Make affinity setting if activated opt-in
Thomas Hebb (1):
tools build feature: Use CC and CXX from parent
Tianjia Zhang (2):
net: ethernet: aquantia: Fix wrong return value
liquidio: Fix wrong return value in cn23xx_get_pf_num()
Tiezhu Yang (1):
test_kmod: avoid potential double free in trigger_config_run_type()
Tim Froidcoeur (2):
net: refactor bind_bucket fastreuse into helper
net: initialize fastreuse on inet_inherit_port
Tom Rix (3):
drm/bridge: sil_sii8620: initialize return of sii8620_readb
power: supply: check if calc_soc succeeded in pm860x_init_battery
crypto: qat - fix double free in qat_uclo_create_batch_init_list
Tomasz Duszynski (1):
iio: improve IIO_CONCENTRATION channel type description
Tomi Valkeinen (1):
drm/tilcdc: fix leak & null ref in panel_connector_get_modes
Vincent Whitchurch (1):
perf bench mem: Always memset source before memcpy
Wang Hai (4):
cxl: Fix kobject memleak
wl1251: fix always return 0 error
dlm: Fix kobject memleak
net: qcom/emac: add missed clk_disable_unprepare in error path of emac_clks_phase1_init
Willem de Bruijn (1):
selftests/net: relax cpu affinity requirement in msg_zerocopy test
Wolfram Sang (4):
i2c: slave: improve sanity check when registering
i2c: slave: add sanity check when unregistering
i2c: rcar: slave: only send STOP event when we have been addressed
i2c: rcar: avoid race when unregistering slave
Wright Feng (1):
brcmfmac: set state of hanger slot to FREE when flushing PSQ
Xie He (1):
drivers/net/wan/lapbether: Added needed_headroom and a skb->len check
Xin Xiong (1):
atm: fix atm_dev refcnt leaks in atmtcp_remove_persistent
Xiongfeng Wang (1):
PCI/ASPM: Add missing newline in sysfs 'policy'
Xu Wang (1):
clk: clk-atlas6: fix return value check in atlas6_clk_init()
Yang Yingliang (1):
cgroup: add missing skcd->no_refcnt check in cgroup_sk_clone()
Yu Kuai (2):
ARM: socfpga: PM: add missing put_device() call in socfpga_setup_ocram_self_refresh()
MIPS: OCTEON: add missing put_device() call in dwc3_octeon_device_init()
Yunhai Zhang (1):
vgacon: Fix for missing check in scrollback handling
Zhao Heming (1):
md-cluster: fix wild pointer of unlock_all_bitmaps()
Zheng Bin (1):
9p: Fix memory leak in v9fs_mount
Zhenzhong Duan (1):
x86/mce/inject: Fix a wrong assignment of i_mce.status
yu kuai (1):
ARM: at91: pm: add missing put_device() call in at91_pm_sram_init()
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-bus-iio +2 -1
@@ -1524,7 +1524,8 @@ What: /sys/bus/iio/devices/iio:deviceX/in_concentrationX_voc_raw KernelVersion: 4.3 Contact: [email protected] Description: - Raw (unscaled no offset etc.) percentage reading of a substance. + Raw (unscaled no offset etc.) reading of a substance. Units + after application of scale and offset are percents. What: /sys/bus/iio/devices/iio:deviceX/in_resistance_raw What: /sys/bus/iio/devices/iio:deviceX/in_resistanceX_raw
Documentation/devicetree/bindings/iio/multiplexer/io-channel-mux.txt +1 -1
@@ -21,7 +21,7 @@ controller state. The mux controller state is described in Example: mux: mux-controller { - compatible = "mux-gpio"; + compatible = "gpio-mux"; #mux-control-cells = <0>; mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>,
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 14 -SUBLEVEL = 193 +SUBLEVEL = 194 EXTRAVERSION = NAME = Petit Gorille
arch/arm/kernel/stacktrace.c +24 -0
@@ -20,6 +20,19 @@* A simple function epilogue looks like this: * ldm sp, {fp, sp, pc} * +* When compiled with clang, pc and sp are not pushed. A simple function +* prologue looks like this when built with clang: +* +* stmdb {..., fp, lr} +* add fp, sp, #x +* sub sp, sp, #y +* +* A simple function epilogue looks like this when built with clang: +* +* sub sp, fp, #x +* ldm {..., fp, pc} +* +* * Note that with framepointer enabled, even the leaf functions have the same * prologue and epilogue, therefore we can ignore the LR value in this case. */
@@ -32,6 +45,16 @@ int notrace unwind_frame(struct stackframe *frame) low = frame->sp; high =ALIGN (low,THREAD_SIZE ); +#ifdef CONFIG_CC_IS_CLANG +/* check current frame pointer is within bounds */ +if (fp < low +4 || fp > high -4 ) +return -EINVAL ; + + frame->sp = frame->fp; + frame->fp = *(unsigned long *)(fp); + frame->pc = frame->lr; + frame->lr = *(unsigned long *)(fp +4 ); +#else /* check current frame pointer is within bounds */ if (fp < low +12 || fp > high -4 )return -EINVAL ;
@@ -40,6 +63,7 @@ int notrace unwind_frame(struct stackframe *frame) frame->fp = *(unsigned long *)(fp -12 ); frame->sp = *(unsigned long *)(fp -8 ); frame->pc = *(unsigned long *)(fp -4 ); +#endif return 0 ; }
arch/arm/mach-at91/pm.c +8 -3
@@ -456,13 +456,13 @@ static void __init at91_pm_sram_init(void) sram_pool =gen_pool_get (&pdev->dev,NULL );if (!sram_pool) {pr_warn ("%s: sram pool unavailable!\n" , __func__); -return ; + goto out_put_device; } sram_base =gen_pool_alloc (sram_pool, at91_pm_suspend_in_sram_sz);if (!sram_base) {pr_warn ("%s: unable to alloc sram!\n" , __func__); -return ; + goto out_put_device; } sram_pbase =gen_pool_virt_to_phys (sram_pool, sram_base);
@@ -470,12 +470,17 @@ static void __init at91_pm_sram_init(void) at91_pm_suspend_in_sram_sz, false);if (!at91_suspend_sram_fn) {pr_warn ("SRAM: Could not map\n" ); -return ; + goto out_put_device; }/* Copy the pm suspend handler to SRAM */ at91_suspend_sram_fn =fncpy (at91_suspend_sram_fn, &at91_pm_suspend_in_sram, at91_pm_suspend_in_sram_sz); +return ; + +out_put_device: +put_device (&pdev->dev); +return ; }static void __init at91_pm_backup_init (void )
arch/arm/mach-socfpga/pm.c +5 -3
@@ -60,14 +60,14 @@ static int socfpga_setup_ocram_self_refresh(void)if (!ocram_pool) {pr_warn ("%s: ocram pool unavailable!\n" , __func__); ret = -ENODEV ; - goto put_node; + goto put_device; } ocram_base =gen_pool_alloc (ocram_pool, socfpga_sdram_self_refresh_sz);if (!ocram_base) {pr_warn ("%s: unable to alloc ocram!\n" , __func__); ret = -ENOMEM ; - goto put_node; + goto put_device; } ocram_pbase =gen_pool_virt_to_phys (ocram_pool, ocram_base);
@@ -78,7 +78,7 @@ static int socfpga_setup_ocram_self_refresh(void)if (!suspend_ocram_base) {pr_warn ("%s: __arm_ioremap_exec failed!\n" , __func__); ret = -ENOMEM ; - goto put_node; + goto put_device; }/* Copy the code that puts DDR in self refresh to ocram */
@@ -92,6 +92,8 @@ static int socfpga_setup_ocram_self_refresh(void)if (!socfpga_sdram_self_refresh_in_ocram) ret = -EFAULT ; +put_device: +put_device (&pdev->dev); put_node:of_node_put (np);
arch/arm64/boot/dts/exynos/exynos7-espresso.dts +1 -0
@@ -155,6 +155,7 @@ regulator-min-microvolt = <700000>; regulator-max-microvolt = <1150000>; regulator-enable-ramp-delay = <125>; + regulator-always-on; }; ldo8_reg: LDO8 {
arch/arm64/boot/dts/hisilicon/hi3660-hikey960.dts +11 -0
@@ -210,6 +210,17 @@ status = "ok"; compatible = "adi,adv7533"; reg = <0x39>; + adi,dsi-lanes = <4>; + ports { + #address-cells = <1>; + #size-cells = <0>; + port@0 { + reg = <0>; + }; + port@1 { + reg = <1>; + }; + }; }; };
arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts +1 -1
@@ -513,7 +513,7 @@ reg = <0x39>; interrupt-parent = <&gpio1>; interrupts = <1 2>; - pd-gpio = <&gpio0 4 0>; + pd-gpios = <&gpio0 4 0>; adi,dsi-lanes = <4>; #sound-dai-cells = <0>;
arch/arm64/boot/dts/qcom/msm8916-pins.dtsi +5 -5
@@ -542,7 +542,7 @@ pins = "gpio63", "gpio64", "gpio65", "gpio66", "gpio67", "gpio68"; drive-strength = <8>; - bias-pull-none; + bias-disable; }; }; cdc_pdm_lines_sus: pdm_lines_off {
@@ -571,7 +571,7 @@ pins = "gpio113", "gpio114", "gpio115", "gpio116"; drive-strength = <8>; - bias-pull-none; + bias-disable; }; };
@@ -599,7 +599,7 @@ pinconf { pins = "gpio110"; drive-strength = <8>; - bias-pull-none; + bias-disable; }; };
@@ -625,7 +625,7 @@ pinconf { pins = "gpio116"; drive-strength = <8>; - bias-pull-none; + bias-disable; }; }; ext_mclk_tlmm_lines_sus: mclk_lines_off {
@@ -653,7 +653,7 @@ pins = "gpio112", "gpio117", "gpio118", "gpio119"; drive-strength = <8>; - bias-pull-none; + bias-disable; }; }; ext_sec_tlmm_lines_sus: tlmm_lines_off {
arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi +2 -2
@@ -138,7 +138,7 @@ vcc5v0_host: vcc5v0-host-regulator { compatible = "regulator-fixed"; - gpio = <&gpio4 RK_PA3 GPIO_ACTIVE_HIGH>; + gpio = <&gpio4 RK_PA3 GPIO_ACTIVE_LOW>; enable-active-low; pinctrl-names = "default"; pinctrl-0 = <&vcc5v0_host_en>;
@@ -193,7 +193,7 @@ phy-mode = "rgmii"; pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>; - snps,reset-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>; + snps,reset-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>; snps,reset-active-low; snps,reset-delays-us = <0 10000 50000>; tx_delay = <0x10>;
arch/m68k/mac/iop.c +6 -15
@@ -183,7 +183,7 @@ static __inline__ void iop_writeb(volatile struct mac_iop *iop, __u16 addr, __u8static __inline__void iop_stop (volatile struct mac_iop *iop) { - iop->status_ctrl &= ~IOP_RUN ; + iop->status_ctrl =IOP_AUTOINC ; }static __inline__void iop_start (volatile struct mac_iop *iop)
@@ -191,14 +191,9 @@ static __inline__ void iop_start(volatile struct mac_iop *iop) iop->status_ctrl =IOP_RUN |IOP_AUTOINC ; } -static __inline__void iop_bypass (volatile struct mac_iop *iop) -{ - iop->status_ctrl |=IOP_BYPASS ; -} -static __inline__void iop_interrupt (volatile struct mac_iop *iop) { - iop->status_ctrl |=IOP_IRQ ; + iop->status_ctrl =IOP_IRQ |IOP_RUN |IOP_AUTOINC ; }static int iop_alive (volatile struct mac_iop *iop)
@@ -244,7 +239,6 @@ void __init iop_preinit(void) }else { iop_base[IOP_NUM_SCC ] = (struct mac_iop *)SCC_IOP_BASE_QUADRA ; } - iop_base[IOP_NUM_SCC ]->status_ctrl =0x87 ; iop_scc_present =1 ; }else { iop_base[IOP_NUM_SCC ] =NULL ;
@@ -256,7 +250,7 @@ void __init iop_preinit(void) }else { iop_base[IOP_NUM_ISM ] = (struct mac_iop *)ISM_IOP_BASE_QUADRA ; } - iop_base[IOP_NUM_ISM ]->status_ctrl =0 ; +iop_stop (iop_base[IOP_NUM_ISM ]); iop_ism_present =1 ; }else { iop_base[IOP_NUM_ISM ] =NULL ;
@@ -416,7 +410,8 @@ static void iop_handle_send(uint iop_num, uint chan) msg->status =IOP_MSGSTATUS_UNUSED ; msg = msg->next; iop_send_queue[iop_num][chan] = msg; -if (msg)iop_do_send (msg); +if (msg &&iop_readb (iop,IOP_ADDR_SEND_STATE + chan) ==IOP_MSG_IDLE ) +iop_do_send (msg); }/*
@@ -490,16 +485,12 @@ int iop_send_message(uint iop_num, uint chan, void *privdata,if (!(q = iop_send_queue[iop_num][chan])) { iop_send_queue[iop_num][chan] = msg; +iop_do_send (msg); }else {while (q->next) q = q->next; q->next = msg; } -if (iop_readb (iop_base[iop_num], -IOP_ADDR_SEND_STATE + chan) ==IOP_MSG_IDLE ) { -iop_do_send (msg); - } -return 0 ; }
arch/mips/cavium-octeon/octeon-usb.c +4 -1
@@ -517,6 +517,7 @@ static int __init dwc3_octeon_device_init(void) res =platform_get_resource (pdev,IORESOURCE_MEM ,0 );if (res ==NULL ) { +put_device (&pdev->dev);dev_err (&pdev->dev,"No memory resources\n" );return -ENXIO ; }
@@ -528,8 +529,10 @@ static int __init dwc3_octeon_device_init(void)* know the difference. */ base =devm_ioremap_resource (&pdev->dev, res); -if (IS_ERR (base)) +if (IS_ERR (base)) { +put_device (&pdev->dev);return PTR_ERR (base); + }mutex_lock (&dwc3_octeon_clocks_mutex);dwc3_octeon_clocks_start (&pdev->dev, (u64 )base);
arch/mips/kernel/topology.c +1 -1
@@ -20,7 +20,7 @@ static int __init topology_init(void)for_each_present_cpu (i) {struct cpu *c = &per_cpu (cpu_devices, i); - c->hotpluggable =1 ; + c->hotpluggable = !!i; ret =register_cpu (c, i);if (ret) printk(KERN_WARNING "topology_init: register_cpu %d "
arch/parisc/include/asm/barrier.h +61 -0
67 lines not on this page · raw message
arch/powerpc/include/asm/percpu.h +2 -2
@@ -10,8 +10,6 @@#ifdef CONFIG_SMP -#include <asm/paca.h> -#define __my_cpu_offset local_paca->data_offset#endif /* CONFIG_SMP */
@@ -19,4 +17,6 @@#include <asm-generic/percpu.h> +#include <asm/paca.h> +#endif /* _ASM_POWERPC_PERCPU_H_ */
arch/powerpc/kernel/vdso.c +1 -1
@@ -704,7 +704,7 @@ int vdso_getcpu_init(void) node =cpu_to_node (cpu);WARN_ON_ONCE (node >0xffff ); - val = (cpu &0xfff ) | ((node &0xffff ) <<16 ); + val = (cpu &0xffff ) | ((node &0xffff ) <<16 );mtspr (SPRN_SPRG_VDSO_WRITE , val);get_paca ()->sprg_vdso = val;
arch/powerpc/platforms/pseries/hotplug-memory.c +1 -1
@@ -30,7 +30,7 @@ static bool rtas_hp_event;unsigned long pseries_memory_block_size (void ) {struct device_node *np; -unsigned int memblock_size =MIN_MEMORY_BLOCK_SIZE ; +u64 memblock_size =MIN_MEMORY_BLOCK_SIZE ;struct resource r; np =of_find_node_by_path ("/ibm,dynamic-reconfiguration-memory" );
arch/sh/boards/mach-landisk/setup.c +3 -0
@@ -85,6 +85,9 @@ device_initcall(landisk_devices_setup);static void __init landisk_setup (char **cmdline_p) { +/* I/O port identity mapping */ +__set_io_port_base (0 ); +/* LED ON */ __raw_writeb (__raw_readb (PA_LED ) |0x03 ,PA_LED );
arch/x86/crypto/aes_ctrby8_avx-x86_64.S +3 -11
@@ -127,10 +127,6 @@ ddq_add_8: /* generate a unique variable for ddq_add_x */ -.macro setddq n - var_ddq_add = ddq_add_\n -.endm - /* generate a unique variable for xmm register */ .macro setxdata n var_xdata = %xmm\n
@@ -140,9 +136,7 @@ ddq_add_8: .macro club name, id .altmacro - .if \name == DDQ_DATA - setddq %\id - .elseif \name == XDATA + .if \name == XDATA setxdata %\id .endif .noaltmacro
@@ -165,9 +159,8 @@ ddq_add_8: .set i, 1 .rept (by - 1) - club DDQ_DATA, i club XDATA, i - vpaddq var_ddq_add(%rip), xcounter, var_xdata + vpaddq (ddq_add_1 + 16 * (i - 1))(%rip), xcounter, var_xdata vptest ddq_low_msk(%rip), var_xdata jnz 1f vpaddq ddq_high_add_1(%rip), var_xdata, var_xdata
@@ -180,8 +173,7 @@ ddq_add_8: vmovdqa 1*16(p_keys), xkeyA vpxor xkey0, xdata0, xdata0 - club DDQ_DATA, by - vpaddq var_ddq_add(%rip), xcounter, xcounter + vpaddq (ddq_add_1 + 16 * (by - 1))(%rip), xcounter, xcounter vptest ddq_low_msk(%rip), xcounter jnz 1f vpaddq ddq_high_add_1(%rip), xcounter, xcounter
arch/x86/kernel/apic/io_apic.c +5 -0
@@ -2252,8 +2252,13 @@ static int mp_irqdomain_create(int ioapic)static void ioapic_destroy_irqdomain (int idx) { +struct ioapic_domain_cfg *cfg = &ioapics[idx].irqdomain_cfg; +struct fwnode_handle *fn = ioapics[idx].irqdomain->fwnode; +if (ioapics[idx].irqdomain) {irq_domain_remove (ioapics[idx].irqdomain); +if (!cfg->dev) +irq_domain_free_fwnode (fn); ioapics[idx].irqdomain =NULL ; } }
arch/x86/kernel/apic/vector.c +4 -0
@@ -368,6 +368,10 @@ static int x86_vector_alloc_irqs(struct irq_domain *domain, unsigned int virq, irq_data->chip = &lapic_controller; irq_data->chip_data = data; irq_data->hwirq = virq + i; + +/* Don't invoke affinity setter on deactivated interrupts */ +irqd_set_affinity_on_activate (irq_data); + err =assign_irq_vector_policy (virq + i, node, data, info, irq_data);if (err) {
arch/x86/kernel/cpu/mcheck/mce-inject.c +1 -1
@@ -518,7 +518,7 @@ static void do_inject(void)*/ if (inj_type ==DFR_INT_INJ ) { i_mce.status |=MCI_STATUS_DEFERRED ; - i_mce.status |= (i_mce.status & ~MCI_STATUS_UC ); + i_mce.status &= ~MCI_STATUS_UC ; }/*
arch/x86/kernel/ptrace.c +1 -1
@@ -374,7 +374,7 @@ static unsigned long task_seg_base(struct task_struct *task,*/ mutex_lock (&task->mm->context.lock); ldt = task->mm->context.ldt; -if (unlikely (idx >= ldt->nr_entries)) +if (unlikely (!ldt || idx >= ldt->nr_entries)) base =0 ;else base =get_desc_base (ldt->entries + idx);
arch/xtensa/kernel/perf_event.c +1 -1
@@ -404,7 +404,7 @@ static struct pmu xtensa_pmu = { .read = xtensa_pmu_read, }; -static int xtensa_pmu_setup (int cpu) +static int xtensa_pmu_setup (unsigned int cpu) {unsigned i;
drivers/acpi/acpica/exprep.c +0 -4
@@ -507,10 +507,6 @@ acpi_status acpi_ex_prep_field_value(struct acpi_create_field_info *info) (u8 )access_byte_width; } } -/* An additional reference for the container */ - -acpi_ut_add_reference (obj_desc->field.region_obj); - ACPI_DEBUG_PRINT((ACPI_DB_BFIELD, "RegionField: BitOff %X, Off %X, Gran %X, Region %p\n", obj_desc->field.start_field_bit_offset,
drivers/acpi/acpica/utdelete.c +1 -5
@@ -593,11 +593,6 @@ acpi_ut_update_object_reference(union acpi_operand_object *object, u16 action) next_object = object->buffer_field.buffer_obj;break ; -case ACPI_TYPE_LOCAL_REGION_FIELD : - - next_object = object->field.region_obj; -break ; -case ACPI_TYPE_LOCAL_BANK_FIELD : next_object = object->bank_field.bank_obj;
@@ -638,6 +633,7 @@ acpi_ut_update_object_reference(union acpi_operand_object *object, u16 action) }break ; +case ACPI_TYPE_LOCAL_REGION_FIELD :case ACPI_TYPE_REGION :default :
drivers/android/binder.c +14 -1
@@ -2813,6 +2813,12 @@ static void binder_transaction(struct binder_proc *proc, goto err_dead_binder; } e->to_node = target_node->debug_id; +if (WARN_ON (proc == target_proc)) { + return_error =BR_FAILED_REPLY ; + return_error_param = -EINVAL ; + return_error_line = __LINE__; + goto err_invalid_target_handle; + }if (security_binder_transaction (proc->tsk, target_proc->tsk) <0 ) { return_error =BR_FAILED_REPLY ;
@@ -3288,10 +3294,17 @@ static int binder_thread_write(struct binder_proc *proc,struct binder_node *ctx_mgr_node;mutex_lock (&context->context_mgr_node_lock); ctx_mgr_node = context->binder_context_mgr_node; -if (ctx_mgr_node) +if (ctx_mgr_node) { +if (ctx_mgr_node->proc == proc) { +binder_user_error ("%d:%d context manager tried to acquire desc 0\n" , + proc->pid, thread->pid); +mutex_unlock (&context->context_mgr_node_lock); +return -EINVAL ; + } ret =binder_inc_ref_for_node ( proc, ctx_mgr_node, strong,NULL , &rdata); + }mutex_unlock (&context->context_mgr_node_lock); }if (ret)
drivers/atm/atmtcp.c +8 -2
@@ -432,9 +432,15 @@ static int atmtcp_remove_persistent(int itf)return -EMEDIUMTYPE ; } dev_data =PRIV (dev); -if (!dev_data->persist)return 0 ; +if (!dev_data->persist) { +atm_dev_put (dev); +return 0 ; + } dev_data->persist =0 ; -if (PRIV (dev)->vcc)return 0 ; +if (PRIV (dev)->vcc) { +atm_dev_put (dev); +return 0 ; + }kfree (dev_data);atm_dev_put (dev);atm_dev_deregister (dev);
drivers/bluetooth/hci_serdev.c +2 -1
@@ -361,7 +361,8 @@ void hci_uart_unregister_device(struct hci_uart *hu)struct hci_dev *hdev = hu->hdev;clear_bit (HCI_UART_PROTO_READY , &hu->flags); -hci_unregister_dev (hdev); +if (test_bit (HCI_UART_REGISTERED , &hu->flags)) +hci_unregister_dev (hdev);hci_free_dev (hdev);cancel_work_sync (&hu->write_work);
drivers/char/agp/intel-gtt.c +3 -1
@@ -304,8 +304,10 @@ static int intel_gtt_setup_scratch_page(void)if (intel_private.needs_dmar) { dma_addr =pci_map_page (intel_private.pcidev, page,0 ,PAGE_SIZE ,PCI_DMA_BIDIRECTIONAL ); -if (pci_dma_mapping_error (intel_private.pcidev, dma_addr)) +if (pci_dma_mapping_error (intel_private.pcidev, dma_addr)) { +__free_page (page);return -EINVAL ; + } intel_private.scratch_page_dma = dma_addr; }else
drivers/clk/sirf/clk-atlas6.c +1 -1
@@ -136,7 +136,7 @@ static void __init atlas6_clk_init(struct device_node *np)for (i = pll1; i < maxclk; i++) { atlas6_clks[i] =clk_register (NULL , atlas6_clk_hw_array[i]); -BUG_ON (!atlas6_clks[i]); +BUG_ON (IS_ERR (atlas6_clks[i])); }clk_register_clkdev (atlas6_clks[cpu],NULL ,"cpu" );clk_register_clkdev (atlas6_clks[io],NULL ,"io" );
drivers/crypto/cavium/cpt/cptvf_algs.c +1 -0
@@ -205,6 +205,7 @@ static inline int cvm_enc_dec(struct ablkcipher_request *req, u32 enc)int status;memset (req_info,0 ,sizeof (struct cpt_request_info )); + req_info->may_sleep = (req->base.flags &CRYPTO_TFM_REQ_MAY_SLEEP ) !=0 ;memset (fctx,0 ,sizeof (struct fc_context ));create_input_list (req, enc, enc_iv_len);create_output_list (req, enc_iv_len);
drivers/crypto/cavium/cpt/cptvf_reqmanager.c +6 -6
@@ -136,7 +136,7 @@ static inline int setup_sgio_list(struct cpt_vf *cptvf,/* Setup gather (input) components */ g_sz_bytes = ((req->incnt +3 ) /4 ) *sizeof (struct sglist_component ); - info->gather_components =kzalloc (g_sz_bytes,GFP_KERNEL ); + info->gather_components =kzalloc (g_sz_bytes, req->may_sleep ?GFP_KERNEL :GFP_ATOMIC );if (!info->gather_components) { ret = -ENOMEM ; goto scatter_gather_clean;
@@ -153,7 +153,7 @@ static inline int setup_sgio_list(struct cpt_vf *cptvf,/* Setup scatter (output) components */ s_sz_bytes = ((req->outcnt +3 ) /4 ) *sizeof (struct sglist_component ); - info->scatter_components =kzalloc (s_sz_bytes,GFP_KERNEL ); + info->scatter_components =kzalloc (s_sz_bytes, req->may_sleep ?GFP_KERNEL :GFP_ATOMIC );if (!info->scatter_components) { ret = -ENOMEM ; goto scatter_gather_clean;
@@ -170,7 +170,7 @@ static inline int setup_sgio_list(struct cpt_vf *cptvf,/* Create and initialize DPTR */ info->dlen = g_sz_bytes + s_sz_bytes +SG_LIST_HDR_SIZE ; - info->in_buffer =kzalloc (info->dlen,GFP_KERNEL ); + info->in_buffer =kzalloc (info->dlen, req->may_sleep ?GFP_KERNEL :GFP_ATOMIC );if (!info->in_buffer) { ret = -ENOMEM ; goto scatter_gather_clean;
@@ -198,7 +198,7 @@ static inline int setup_sgio_list(struct cpt_vf *cptvf, }/* Create and initialize RPTR */ - info->out_buffer =kzalloc (COMPLETION_CODE_SIZE ,GFP_KERNEL ); + info->out_buffer =kzalloc (COMPLETION_CODE_SIZE , req->may_sleep ?GFP_KERNEL :GFP_ATOMIC );if (!info->out_buffer) { ret = -ENOMEM ; goto scatter_gather_clean;
@@ -434,7 +434,7 @@ int process_request(struct cpt_vf *cptvf, struct cpt_request_info *req)struct cpt_vq_command vq_cmd;union cpt_inst_s cptinst; - info =kzalloc (sizeof (*info),GFP_KERNEL ); + info =kzalloc (sizeof (*info), req->may_sleep ?GFP_KERNEL :GFP_ATOMIC );if (unlikely (!info)) {dev_err (&pdev->dev,"Unable to allocate memory for info_buffer\n" );return -ENOMEM ;
@@ -456,7 +456,7 @@ int process_request(struct cpt_vf *cptvf, struct cpt_request_info *req)* Get buffer for union cpt_res_s response * structure and its physical address */ - info->completion_addr =kzalloc (sizeof (union cpt_res_s ),GFP_KERNEL ); + info->completion_addr =kzalloc (sizeof (union cpt_res_s ), req->may_sleep ?GFP_KERNEL :GFP_ATOMIC );if (unlikely (!info->completion_addr)) {dev_err (&pdev->dev,"Unable to allocate memory for completion_addr\n" ); ret = -ENOMEM ;
drivers/crypto/cavium/cpt/request_manager.h +2 -0
@@ -65,6 +65,8 @@ struct cpt_request_info {union ctrl_info ctrl;/* User control information */ struct cptvf_request req;/* Request Information (Core specific) */ +bool may_sleep; +struct buf_ptr in[MAX_BUF_CNT ];struct buf_ptr out[MAX_BUF_CNT ];
drivers/crypto/ccp/ccp-dev.h +1 -0
@@ -471,6 +471,7 @@ struct ccp_sg_workarea {unsigned int sg_used;struct scatterlist *dma_sg; +struct scatterlist *dma_sg_head;struct device *dma_dev;unsigned int dma_count;enum dma_data_direction dma_dir;
drivers/crypto/ccp/ccp-ops.c +26 -11
@@ -67,7 +67,7 @@ static u32 ccp_gen_jobid(struct ccp_device *ccp)static void ccp_sg_free (struct ccp_sg_workarea *wa) {if (wa->dma_count) -dma_unmap_sg (wa->dma_dev, wa->dma_sg, wa->nents, wa->dma_dir); +dma_unmap_sg (wa->dma_dev, wa->dma_sg_head, wa->nents, wa->dma_dir); wa->dma_count =0 ; }
@@ -96,6 +96,7 @@ static int ccp_init_sg_workarea(struct ccp_sg_workarea *wa, struct device *dev,return 0 ; wa->dma_sg = sg; + wa->dma_sg_head = sg; wa->dma_dev = dev; wa->dma_dir = dma_dir; wa->dma_count =dma_map_sg (dev, sg, wa->nents, dma_dir);
@@ -108,14 +109,28 @@ static int ccp_init_sg_workarea(struct ccp_sg_workarea *wa, struct device *dev,static void ccp_update_sg_workarea (struct ccp_sg_workarea *wa,unsigned int len) {unsigned int nbytes =min_t (u64, len, wa->bytes_left); +unsigned int sg_combined_len =0 ;if (!wa->sg)return ; wa->sg_used += nbytes; wa->bytes_left -= nbytes; -if (wa->sg_used == wa->sg->length) { - wa->sg =sg_next (wa->sg); +if (wa->sg_used ==sg_dma_len (wa->dma_sg)) { +/* Advance to the next DMA scatterlist entry */ + wa->dma_sg =sg_next (wa->dma_sg); + +/* In the case that the DMA mapped scatterlist has entries +* that have been merged, the non-DMA mapped scatterlist +* must be advanced multiple times for each merged entry. +* This ensures that the current non-DMA mapped entry +* corresponds to the current DMA mapped entry. +*/ +do { + sg_combined_len += wa->sg->length; + wa->sg =sg_next (wa->sg); + }while (wa->sg_used > sg_combined_len); + wa->sg_used =0 ; } }
@@ -304,7 +319,7 @@ static unsigned int ccp_queue_buf(struct ccp_data *data, unsigned int from)/* Update the structures and generate the count */ buf_count =0 ;while (sg_wa->bytes_left && (buf_count < dm_wa->length)) { - nbytes =min (sg_wa->sg->length - sg_wa->sg_used, + nbytes =min (sg_dma_len (sg_wa->dma_sg) - sg_wa->sg_used, dm_wa->length - buf_count); nbytes =min_t (u64, sg_wa->bytes_left, nbytes);
@@ -336,11 +351,11 @@ static void ccp_prepare_data(struct ccp_data *src, struct ccp_data *dst,* and destination. The resulting len values will always be <= UINT_MAX * because the dma length is an unsigned int. */ - sg_src_len =sg_dma_len (src->sg_wa.sg) - src->sg_wa.sg_used; + sg_src_len =sg_dma_len (src->sg_wa.dma_sg) - src->sg_wa.sg_used; sg_src_len =min_t (u64, src->sg_wa.bytes_left, sg_src_len);if (dst) { - sg_dst_len =sg_dma_len (dst->sg_wa.sg) - dst->sg_wa.sg_used; + sg_dst_len =sg_dma_len (dst->sg_wa.dma_sg) - dst->sg_wa.sg_used; sg_dst_len =min_t (u64, src->sg_wa.bytes_left, sg_dst_len); op_len =min (sg_src_len, sg_dst_len); }else {
@@ -370,7 +385,7 @@ static void ccp_prepare_data(struct ccp_data *src, struct ccp_data *dst,/* Enough data in the sg element, but we need to * adjust for any previously copied data */ - op->src.u.dma.address =sg_dma_address (src->sg_wa.sg); + op->src.u.dma.address =sg_dma_address (src->sg_wa.dma_sg); op->src.u.dma.offset = src->sg_wa.sg_used; op->src.u.dma.length = op_len & ~(block_size -1 );
@@ -391,7 +406,7 @@ static void ccp_prepare_data(struct ccp_data *src, struct ccp_data *dst,/* Enough room in the sg element, but we need to * adjust for any previously used area */ - op->dst.u.dma.address =sg_dma_address (dst->sg_wa.sg); + op->dst.u.dma.address =sg_dma_address (dst->sg_wa.dma_sg); op->dst.u.dma.offset = dst->sg_wa.sg_used; op->dst.u.dma.length = op->src.u.dma.length; }
@@ -2034,7 +2049,7 @@ ccp_run_passthru_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) dst.sg_wa.sg_used =0 ;for (i =1 ; i <= src.sg_wa.dma_count; i++) {if (!dst.sg_wa.sg || - (dst.sg_wa.sg->length < src.sg_wa.sg->length)) { + (sg_dma_len (dst.sg_wa.sg) <sg_dma_len (src.sg_wa.sg))) { ret = -EINVAL ; goto e_dst; }
@@ -2060,8 +2075,8 @@ ccp_run_passthru_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) goto e_dst; } - dst.sg_wa.sg_used += src.sg_wa.sg->length; -if (dst.sg_wa.sg_used == dst.sg_wa.sg->length) { + dst.sg_wa.sg_used +=sg_dma_len (src.sg_wa.sg); +if (dst.sg_wa.sg_used ==sg_dma_len (dst.sg_wa.sg)) { dst.sg_wa.sg =sg_next (dst.sg_wa.sg); dst.sg_wa.sg_used =0 ; }
drivers/crypto/qat/qat_common/qat_uclo.c +7 -2
@@ -332,13 +332,18 @@ static int qat_uclo_create_batch_init_list(struct icp_qat_fw_loader_handle }return 0 ; out_err: +/* Do not free the list head unless we allocated it. */ + tail_old = tail_old->next; +if (flag) { +kfree (*init_tab_base); + *init_tab_base =NULL ; + } +while (tail_old) { mem_init = tail_old->next;kfree (tail_old); tail_old = mem_init; } -if (flag) -kfree (*init_tab_base);return -ENOMEM ; }
drivers/edac/edac_device_sysfs.c +1 -0
@@ -275,6 +275,7 @@ int edac_device_register_sysfs_main_kobj(struct edac_device_ctl_info *edac_dev)/* Error exit stack */ err_kobj_reg: +kobject_put (&edac_dev->kobj);module_put (edac_dev->owner); err_out:
drivers/edac/edac_pci_sysfs.c +1 -1
@@ -386,7 +386,7 @@ static int edac_pci_main_kobj_setup(void)/* Error unwind statck */ kobject_init_and_add_fail: -kfree (edac_pci_top_main_kobj); +kobject_put (edac_pci_top_main_kobj); kzalloc_fail:module_put (THIS_MODULE );
drivers/gpu/drm/arm/malidp_planes.c +1 -1
@@ -369,7 +369,7 @@ int malidp_de_planes_init(struct drm_device *drm)const struct malidp_hw_regmap *map = &malidp->dev->map;struct malidp_plane *plane =NULL ;enum drm_plane_type plane_type; -unsigned long crtcs =1 << drm->mode_config.num_crtc; +unsigned long crtcs =BIT (drm->mode_config.num_crtc);unsigned long flags =DRM_MODE_ROTATE_0 |DRM_MODE_ROTATE_90 |DRM_MODE_ROTATE_180 |DRM_MODE_ROTATE_270 |DRM_MODE_REFLECT_X |DRM_MODE_REFLECT_Y ;u32 *formats;
drivers/gpu/drm/bridge/sil-sii8620.c +1 -1
@@ -167,7 +167,7 @@ static void sii8620_read_buf(struct sii8620 *ctx, u16 addr, u8 *buf, int len)static u8 sii8620_readb (struct sii8620 *ctx,u16 addr) { -u8 ret; +u8 ret =0 ;sii8620_read_buf (ctx, addr, &ret,1 );return ret;
drivers/gpu/drm/drm_debugfs.c +4 -4
@@ -250,13 +250,13 @@ static ssize_t connector_write(struct file *file, const char __user *ubuf, buf[len] ='\0' ; -if (!strcmp (buf,"on" )) +if (sysfs_streq (buf,"on" )) connector->force =DRM_FORCE_ON ; -else if (!strcmp (buf,"digital" )) +else if (sysfs_streq (buf,"digital" )) connector->force =DRM_FORCE_ON_DIGITAL ; -else if (!strcmp (buf,"off" )) +else if (sysfs_streq (buf,"off" )) connector->force =DRM_FORCE_OFF ; -else if (!strcmp (buf,"unspecified" )) +else if (sysfs_streq (buf,"unspecified" )) connector->force =DRM_FORCE_UNSPECIFIED ;else return -EINVAL ;
drivers/gpu/drm/drm_mipi_dsi.c +3 -3
@@ -1029,11 +1029,11 @@ EXPORT_SYMBOL(mipi_dsi_dcs_set_pixel_format);*/ int mipi_dsi_dcs_set_tear_scanline (struct mipi_dsi_device *dsi,u16 scanline) { -u8 payload[3 ] = {MIPI_DCS_SET_TEAR_SCANLINE , scanline >>8 , - scanline &0xff }; +u8 payload[2 ] = { scanline >>8 , scanline &0xff };ssize_t err; - err =mipi_dsi_generic_write (dsi, payload,sizeof (payload)); + err =mipi_dsi_dcs_write (dsi,MIPI_DCS_SET_TEAR_SCANLINE , payload, +sizeof (payload));if (err <0 )return err;
drivers/gpu/drm/imx/imx-ldb.c +4 -3
@@ -311,18 +311,19 @@ static void imx_ldb_encoder_disable(struct drm_encoder *encoder) {struct imx_ldb_channel *imx_ldb_ch =enc_to_imx_ldb_ch (encoder);struct imx_ldb *ldb = imx_ldb_ch->ldb; +int dual = ldb->ldb_ctrl &LDB_SPLIT_MODE_EN ;int mux, ret;drm_panel_disable (imx_ldb_ch->panel); -if (imx_ldb_ch == &ldb->channel[0 ]) +if (imx_ldb_ch == &ldb->channel[0 ] || dual) ldb->ldb_ctrl &= ~LDB_CH0_MODE_EN_MASK ; -else if (imx_ldb_ch == &ldb->channel[1 ]) +if (imx_ldb_ch == &ldb->channel[1 ] || dual) ldb->ldb_ctrl &= ~LDB_CH1_MODE_EN_MASK ;regmap_write (ldb->regmap,IOMUXC_GPR2 , ldb->ldb_ctrl); -if (ldb->ldb_ctrl &LDB_SPLIT_MODE_EN ) { +if (dual) {clk_disable_unprepare (ldb->clk[0 ]);clk_disable_unprepare (ldb->clk[1 ]); }
drivers/gpu/drm/imx/imx-tve.c +10 -10
@@ -498,6 +498,13 @@ static int imx_tve_register(struct drm_device *drm, struct imx_tve *tve)return 0 ; } +static void imx_tve_disable_regulator (void *data) +{ +struct imx_tve *tve = data; + +regulator_disable (tve->dac_reg); +} +static bool imx_tve_readable_reg (struct device *dev,unsigned int reg) {return (reg %4 ==0 ) && (reg <=0xdc );
@@ -622,6 +629,9 @@ static int imx_tve_bind(struct device *dev, struct device *master, void *data) ret =regulator_enable (tve->dac_reg);if (ret)return ret; + ret =devm_add_action_or_reset (dev, imx_tve_disable_regulator, tve); +if (ret) +return ret; } tve->clk =devm_clk_get (dev,"tve" );
@@ -668,18 +678,8 @@ static int imx_tve_bind(struct device *dev, struct device *master, void *data)return 0 ; } -static void imx_tve_unbind (struct device *dev,struct device *master, -void *data) -{ -struct imx_tve *tve =dev_get_drvdata (dev); - -if (!IS_ERR (tve->dac_reg)) -regulator_disable (tve->dac_reg); -} -static const struct component_ops imx_tve_ops = { .bind = imx_tve_bind, - .unbind = imx_tve_unbind, };static int imx_tve_probe (struct platform_device *pdev)
drivers/gpu/drm/nouveau/nouveau_drm.c +6 -2
@@ -840,8 +840,10 @@ nouveau_drm_open(struct drm_device *dev, struct drm_file *fpriv)/* need to bring up power immediately if opening device */ ret =pm_runtime_get_sync (dev->dev); -if (ret <0 && ret != -EACCES ) +if (ret <0 && ret != -EACCES ) { +pm_runtime_put_autosuspend (dev->dev);return ret; + }get_task_comm (tmpname, current);snprintf (name,sizeof (name),"%s[%d]" , tmpname,pid_nr (fpriv->pid));
@@ -930,8 +932,10 @@ nouveau_drm_ioctl(struct file *file, unsigned int cmd, unsigned long arg)long ret; ret =pm_runtime_get_sync (dev->dev); -if (ret <0 && ret != -EACCES ) +if (ret <0 && ret != -EACCES ) { +pm_runtime_put_autosuspend (dev->dev);return ret; + }switch (_IOC_NR (cmd) -DRM_COMMAND_BASE ) {case DRM_NOUVEAU_NVIF :
drivers/gpu/drm/nouveau/nouveau_fbcon.c +2 -1
@@ -310,7 +310,7 @@ nouveau_fbcon_create(struct drm_fb_helper *helper,struct nouveau_framebuffer *fb;struct nouveau_channel *chan;struct nouveau_bo *nvbo; -struct drm_mode_fb_cmd2 mode_cmd; +struct drm_mode_fb_cmd2 mode_cmd = {};int ret; mode_cmd.width = sizes->surface_width;
@@ -543,6 +543,7 @@ nouveau_fbcon_init(struct drm_device *dev)drm_fb_helper_fini (&fbcon->helper); free:kfree (fbcon); + drm->fbcon =NULL ;return ret; }
drivers/gpu/drm/nouveau/nouveau_gem.c +3 -1
@@ -42,8 +42,10 @@ nouveau_gem_object_del(struct drm_gem_object *gem)int ret; ret =pm_runtime_get_sync (dev); -if (WARN_ON (ret <0 && ret != -EACCES )) +if (WARN_ON (ret <0 && ret != -EACCES )) { +pm_runtime_put_autosuspend (dev);return ; + }if (gem->import_attach)drm_prime_gem_destroy (gem, nvbo->bo.sg);
drivers/gpu/drm/panel/panel-simple.c +1 -1
@@ -1253,7 +1253,7 @@ static const struct drm_display_mode lg_lb070wv8_mode = {static const struct panel_desc lg_lb070wv8 = { .modes = &lg_lb070wv8_mode, .num_modes =1 , - .bpc =16 , + .bpc =8 , .size = { .width =151 , .height =91 ,
drivers/gpu/drm/radeon/ci_dpm.c +1 -1
@@ -4342,7 +4342,7 @@ static int ci_set_mc_special_registers(struct radeon_device *rdev, table->mc_reg_table_entry[k].mc_data[j] |=0x100 ; } j++; -if (j >SMU7_DISCRETE_MC_REGISTER_ARRAY_SIZE ) +if (j >=SMU7_DISCRETE_MC_REGISTER_ARRAY_SIZE )return -EINVAL ;if (!pi->mem_gddr5) {
drivers/gpu/drm/radeon/radeon_display.c +3 -1
@@ -627,8 +627,10 @@ radeon_crtc_set_config(struct drm_mode_set *set, dev = set->crtc->dev; ret =pm_runtime_get_sync (dev->dev); -if (ret <0 ) +if (ret <0 ) { +pm_runtime_put_autosuspend (dev->dev);return ret; + } ret =drm_crtc_helper_set_config (set, ctx);
drivers/gpu/drm/radeon/radeon_drv.c +3 -1
@@ -496,8 +496,10 @@ long radeon_drm_ioctl(struct file *filp,long ret; dev = file_priv->minor->dev; ret =pm_runtime_get_sync (dev->dev); -if (ret <0 ) +if (ret <0 ) { +pm_runtime_put_autosuspend (dev->dev);return ret; + } ret =drm_ioctl (filp, cmd, arg);
drivers/gpu/drm/radeon/radeon_kms.c +3 -1
@@ -659,8 +659,10 @@ int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv) file_priv->driver_priv =NULL ; r =pm_runtime_get_sync (dev->dev); -if (r <0 ) +if (r <0 ) { +pm_runtime_put_autosuspend (dev->dev);return r; + }/* new gpu have virtual address space support */ if (rdev->family >=CHIP_CAYMAN ) {
drivers/gpu/drm/tilcdc/tilcdc_panel.c +5 -1
@@ -152,12 +152,16 @@ static int panel_connector_get_modes(struct drm_connector *connector)int i;for (i =0 ; i < timings->num_timings; i++) { -struct drm_display_mode *mode =drm_mode_create (dev); +struct drm_display_mode *mode;struct videomode vm;if (videomode_from_timings (timings, &vm, i))break ; + mode =drm_mode_create (dev); +if (!mode) +break ; +drm_display_mode_from_videomode (&vm, mode); mode->type =DRM_MODE_TYPE_DRIVER ;
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +4 -4
@@ -2707,7 +2707,7 @@ int vmw_kms_fbdev_init_data(struct vmw_private *dev_priv, ++i; } -if (i != unit) { +if (&con->head == &dev_priv->dev->mode_config.connector_list) {DRM_ERROR ("Could not find initial display unit.\n" );return -EINVAL ; }
@@ -2729,13 +2729,13 @@ int vmw_kms_fbdev_init_data(struct vmw_private *dev_priv,break ; } -if (mode->type &DRM_MODE_TYPE_PREFERRED ) - *p_mode = mode; -else { +if (&mode->head == &con->modes) {WARN_ONCE (true,"Could not find initial preferred mode.\n" ); *p_mode =list_first_entry (&con->modes, struct drm_display_mode, head); + }else { + *p_mode = mode; }return 0 ;
drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c +2 -3
@@ -79,7 +79,7 @@ static int vmw_ldu_commit_list(struct vmw_private *dev_priv)struct vmw_legacy_display_unit *entry;struct drm_framebuffer *fb =NULL ;struct drm_crtc *crtc =NULL ; -int i =0 ; +int i;/* If there is no display topology the host just assumes * that the guest will set the same layout as the host.
@@ -90,12 +90,11 @@ static int vmw_ldu_commit_list(struct vmw_private *dev_priv) crtc = &entry->base.crtc; w =max (w, crtc->x + crtc->mode.hdisplay); h =max (h, crtc->y + crtc->mode.vdisplay); - i++; }if (crtc ==NULL )return 0 ; - fb = entry->base.crtc.primary->state->fb; + fb = crtc->primary->state->fb; return vmw_kms_write_svga(dev_priv, w, h, fb->pitches[0], fb->format->cpp[0] * 8,
drivers/gpu/host1x/debug.c +4 -0
@@ -25,6 +25,8 @@#include "debug.h" #include "channel.h" +static DEFINE_MUTEX (debug_lock); +unsigned int host1x_debug_trace_cmdbuf;static pid_t host1x_debug_force_timeout_pid;
@@ -49,12 +51,14 @@ static int show_channel(struct host1x_channel *ch, void *data, bool show_fifo)struct output *o = data;mutex_lock (&ch->cdma.lock); +mutex_lock (&debug_lock);if (show_fifo)host1x_hw_show_channel_fifo (m, ch, o);host1x_hw_show_channel_cdma (m, ch, o); +mutex_unlock (&debug_lock);mutex_unlock (&ch->cdma.lock);return 0 ;
drivers/gpu/ipu-v3/ipu-image-convert.c +20 -38
88 lines not on this page · raw message
drivers/hid/hid-input.c +3 -3
@@ -362,13 +362,13 @@ static int hidinput_query_battery_capacity(struct hid_device *dev)u8 *buf;int ret; - buf =kmalloc (2 ,GFP_KERNEL ); + buf =kmalloc (4 ,GFP_KERNEL );if (!buf)return -ENOMEM ; - ret =hid_hw_raw_request (dev, dev->battery_report_id, buf,2 , + ret =hid_hw_raw_request (dev, dev->battery_report_id, buf,4 , dev->battery_report_type,HID_REQ_GET_REPORT ); -if (ret !=2 ) { +if (ret <2 ) {kfree (buf);return -ENODATA ; }
drivers/hv/channel_mgmt.c +7 -14
@@ -1228,6 +1228,8 @@ channel_message_table[CHANNELMSG_COUNT] = { { CHANNELMSG_19, 0, NULL }, { CHANNELMSG_20, 0, NULL }, { CHANNELMSG_TL_CONNECT_REQUEST, 0, NULL }, + { CHANNELMSG_22, 0, NULL }, + { CHANNELMSG_TL_CONNECT_RESULT, 0, NULL }, };/*
@@ -1239,23 +1241,14 @@ void vmbus_onmessage(void *context) {struct hv_message *msg = context;struct vmbus_channel_message_header *hdr; -int size; hdr = (struct vmbus_channel_message_header *)msg->u.payload; - size = msg->header.payload_size; -if (hdr->msgtype >=CHANNELMSG_COUNT ) { -pr_err ("Received invalid channel message type %d size %d\n" , - hdr->msgtype, size); -print_hex_dump_bytes ("" ,DUMP_PREFIX_NONE , - (unsigned char *)msg->u.payload, size); -return ; - } - -if (channel_message_table[hdr->msgtype].message_handler) - channel_message_table[hdr->msgtype].message_handler (hdr); -else -pr_err ("Unhandled channel message type %d\n" , hdr->msgtype); +/* +* vmbus_on_msg_dpc() makes sure the hdr->msgtype here can not go +* out of bound and the message_handler pointer can not be NULL. +*/ + channel_message_table[hdr->msgtype].message_handler (hdr); }/*
drivers/hv/vmbus_drv.c +4 -0
@@ -890,6 +890,10 @@ void vmbus_on_msg_dpc(unsigned long data) } entry = &channel_message_table[hdr->msgtype]; + +if (!entry->message_handler) + goto msg_handled; +if (entry->handler_type ==VMHT_BLOCKING ) { ctx =kmalloc (sizeof (*ctx),GFP_ATOMIC );if (ctx ==NULL )
drivers/hwtracing/coresight/coresight-tmc-etf.c +6 -7
@@ -587,15 +587,14 @@ int tmc_read_unprepare_etb(struct tmc_drvdata *drvdata)spin_lock_irqsave (&drvdata->spinlock, flags); -/* There is no point in reading a TMC in HW FIFO mode */ - mode =readl_relaxed (drvdata->base +TMC_MODE ); -if (mode !=TMC_MODE_CIRCULAR_BUFFER ) { -spin_unlock_irqrestore (&drvdata->spinlock, flags); -return -EINVAL ; - } -/* Re-enable the TMC if need be */ if (drvdata->mode ==CS_MODE_SYSFS ) { +/* There is no point in reading a TMC in HW FIFO mode */ + mode =readl_relaxed (drvdata->base +TMC_MODE ); +if (mode !=TMC_MODE_CIRCULAR_BUFFER ) { +spin_unlock_irqrestore (&drvdata->spinlock, flags); +return -EINVAL ; + }/* * The trace run will continue with the same allocated trace * buffer. As such zero-out the buffer so that we don't end
drivers/i2c/busses/i2c-rcar.c +9 -6
@@ -538,13 +538,14 @@ static bool rcar_i2c_slave_irq(struct rcar_i2c_priv *priv)rcar_i2c_write (priv,ICSIER ,SDR |SSR |SAR ); } -rcar_i2c_write (priv,ICSSR , ~SAR &0xff ); +/* Clear SSR, too, because of old STOPs to other clients than us */ +rcar_i2c_write (priv,ICSSR , ~(SAR |SSR ) &0xff ); }/* master sent stop */ if (ssr_filtered &SSR ) {i2c_slave_event (priv->slave,I2C_SLAVE_STOP , &value); -rcar_i2c_write (priv,ICSIER ,SAR |SSR ); +rcar_i2c_write (priv,ICSIER ,SAR );rcar_i2c_write (priv,ICSSR , ~SSR &0xff ); }
@@ -802,7 +803,7 @@ static int rcar_reg_slave(struct i2c_client *slave) priv->slave = slave;rcar_i2c_write (priv,ICSAR , slave->addr);rcar_i2c_write (priv,ICSSR ,0 ); -rcar_i2c_write (priv,ICSIER ,SAR |SSR ); +rcar_i2c_write (priv,ICSIER ,SAR );rcar_i2c_write (priv,ICSCR ,SIE |SDBS );return 0 ;
@@ -814,12 +815,14 @@ static int rcar_unreg_slave(struct i2c_client *slave)WARN_ON (!priv->slave); -/* disable irqs and ensure none is running before clearing ptr */ +/* ensure no irq is running before clearing ptr */ +disable_irq (priv->irq);rcar_i2c_write (priv,ICSIER ,0 ); -rcar_i2c_write (priv,ICSCR ,0 ); +rcar_i2c_write (priv,ICSSR ,0 ); +enable_irq (priv->irq); +rcar_i2c_write (priv,ICSCR ,SDBS );rcar_i2c_write (priv,ICSAR ,0 );/* Gen2: must be 0 if not using slave */ -synchronize_irq (priv->irq); priv->slave =NULL ;pm_runtime_put (rcar_i2c_priv_to_dev (priv));
drivers/i2c/i2c-core-slave.c +4 -3
@@ -22,10 +22,8 @@ int i2c_slave_register(struct i2c_client *client, i2c_slave_cb_t slave_cb) {int ret; -if (!client || !slave_cb) { -WARN (1 ,"insufficient data\n" ); +if (WARN (IS_ERR_OR_NULL (client) || !slave_cb,"insufficient data\n" ))return -EINVAL ; - }if (!(client->flags &I2C_CLIENT_SLAVE )) dev_warn(&client->dev, "%s: client slave flag not set. You might see address collisions\n",
@@ -64,6 +62,9 @@ int i2c_slave_unregister(struct i2c_client *client) {int ret; +if (IS_ERR_OR_NULL (client)) +return -EINVAL ; +if (!client->adapter->algo->unreg_slave) {dev_err (&client->dev,"%s: not supported by adapter\n" , __func__);return -EOPNOTSUPP ;
drivers/iio/dac/ad5592r-base.c +2 -2
@@ -417,7 +417,7 @@ static int ad5592r_read_raw(struct iio_dev *iio_dev,s64 tmp = *val * (3767897513LL /25LL ); *val =div_s64_rem (tmp,1000000000LL , val2); - ret =IIO_VAL_INT_PLUS_MICRO ; +return IIO_VAL_INT_PLUS_MICRO ; }else {int mult;
@@ -448,7 +448,7 @@ static int ad5592r_read_raw(struct iio_dev *iio_dev, ret =IIO_VAL_INT ;break ;default : - ret = -EINVAL ; +return -EINVAL ; } unlock:
drivers/infiniband/ulp/ipoib/ipoib.h +1 -1
@@ -509,7 +509,7 @@ void ipoib_ib_dev_cleanup(struct net_device *dev);int ipoib_ib_dev_open_default (struct net_device *dev);int ipoib_ib_dev_open (struct net_device *dev); -int ipoib_ib_dev_stop (struct net_device *dev); +void ipoib_ib_dev_stop (struct net_device *dev);void ipoib_ib_dev_up (struct net_device *dev);void ipoib_ib_dev_down (struct net_device *dev);int ipoib_ib_dev_stop_default (struct net_device *dev);
drivers/infiniband/ulp/ipoib/ipoib_ib.c +1 -3
@@ -809,7 +809,7 @@ int ipoib_ib_dev_stop_default(struct net_device *dev)return 0 ; } -int ipoib_ib_dev_stop (struct net_device *dev) +void ipoib_ib_dev_stop (struct net_device *dev) {struct ipoib_dev_priv *priv =ipoib_priv (dev);
@@ -817,8 +817,6 @@ int ipoib_ib_dev_stop(struct net_device *dev)clear_bit (IPOIB_FLAG_INITIALIZED , &priv->flags);ipoib_flush_ah (dev); - -return 0 ; }void ipoib_ib_tx_timer_func (unsigned long ctx)
drivers/input/mouse/sentelic.c +1 -1
@@ -454,7 +454,7 @@ static ssize_t fsp_attr_set_setreg(struct psmouse *psmouse, void *data,fsp_reg_write_enable (psmouse, false); -return count; +return retval; }PSMOUSE_DEFINE_WO_ATTR (setreg,S_IWUSR ,NULL , fsp_attr_set_setreg);
drivers/iommu/intel_irq_remapping.c +8 -0
@@ -601,13 +601,21 @@ static int intel_setup_irq_remapping(struct intel_iommu *iommu)static void intel_teardown_irq_remapping (struct intel_iommu *iommu) { +struct fwnode_handle *fn; +if (iommu && iommu->ir_table) {if (iommu->ir_msi_domain) { + fn = iommu->ir_msi_domain->fwnode; +irq_domain_remove (iommu->ir_msi_domain); +irq_domain_free_fwnode (fn); iommu->ir_msi_domain =NULL ; }if (iommu->ir_domain) { + fn = iommu->ir_domain->fwnode; +irq_domain_remove (iommu->ir_domain); +irq_domain_free_fwnode (fn); iommu->ir_domain =NULL ; } free_pages((unsigned long)iommu->ir_table->base,
drivers/iommu/omap-iommu-debug.c +3 -0
@@ -101,8 +101,11 @@ static ssize_t debug_read_regs(struct file *file, char __user *userbuf,mutex_lock (&iommu_debug_lock); bytes =omap_iommu_dump_ctx (obj, p, count); +if (bytes <0 ) + goto err; bytes =simple_read_from_buffer (userbuf, count, ppos, buf, bytes); +err:mutex_unlock (&iommu_debug_lock);kfree (buf);
drivers/irqchip/irq-gic-v3-its.c +4 -1
@@ -2199,6 +2199,7 @@ static int its_irq_domain_alloc(struct irq_domain *domain, unsigned int virq, {msi_alloc_info_t *info = args;struct its_device *its_dev = info->scratchpad[0 ].ptr; +struct irq_data *irqd;irq_hw_number_t hwirq;int err;int i;
@@ -2214,7 +2215,9 @@ static int its_irq_domain_alloc(struct irq_domain *domain, unsigned int virq,irq_domain_set_hwirq_and_chip (domain, virq + i, hwirq + i, &its_irq_chip, its_dev); -irqd_set_single_target (irq_desc_get_irq_data (irq_to_desc (virq + i))); + irqd =irq_get_irq_data (virq + i); +irqd_set_single_target (irqd); +irqd_set_affinity_on_activate (irqd);pr_debug ("ID:%d pID:%d vID:%d\n" , (int )(hwirq + i - its_dev->event_map.lpi_base), (int )(hwirq + i), virq + i);
drivers/irqchip/irq-mtk-sysirq.c +4 -4
@@ -23,7 +23,7 @@#include <linux/spinlock.h> struct mtk_sysirq_chip_data { -spinlock_t lock; +raw_spinlock_t lock;u32 nr_intpol_bases;void __iomem **intpol_bases;u32 *intpol_words;
@@ -45,7 +45,7 @@ static int mtk_sysirq_set_type(struct irq_data *data, unsigned int type) reg_index = chip_data->which_word[hwirq]; offset = hwirq &0x1f ; -spin_lock_irqsave (&chip_data->lock, flags); +raw_spin_lock_irqsave (&chip_data->lock, flags); value =readl_relaxed (base + reg_index *4 );if (type ==IRQ_TYPE_LEVEL_LOW || type ==IRQ_TYPE_EDGE_FALLING ) {if (type ==IRQ_TYPE_LEVEL_LOW )
@@ -61,7 +61,7 @@ static int mtk_sysirq_set_type(struct irq_data *data, unsigned int type) data = data->parent_data; ret = data->chip->irq_set_type (data, type); -spin_unlock_irqrestore (&chip_data->lock, flags); +raw_spin_unlock_irqrestore (&chip_data->lock, flags);return ret; }
@@ -220,7 +220,7 @@ static int __init mtk_sysirq_of_init(struct device_node *node, ret = -ENOMEM ; goto out_free_which_word; } -spin_lock_init (&chip_data->lock); +raw_spin_lock_init (&chip_data->lock);return 0 ;
drivers/leds/led-class.c +1 -0
@@ -173,6 +173,7 @@ void led_classdev_suspend(struct led_classdev *led_cdev) { led_cdev->flags |=LED_SUSPENDED ;led_set_brightness_nopm (led_cdev,0 ); +flush_work (&led_cdev->set_brightness_work); }EXPORT_SYMBOL_GPL (led_classdev_suspend);
drivers/leds/leds-88pm860x.c +13 -1
@@ -207,21 +207,33 @@ static int pm860x_led_probe(struct platform_device *pdev) data->cdev.brightness_set_blocking = pm860x_led_set;mutex_init (&data->lock); - ret =devm_led_classdev_register (chip->dev, &data->cdev); + ret =led_classdev_register (chip->dev, &data->cdev);if (ret <0 ) {dev_err (&pdev->dev,"Failed to register LED: %d\n" , ret);return ret; }pm860x_led_set (&data->cdev,0 ); + +platform_set_drvdata (pdev, data); +return 0 ; } +static int pm860x_led_remove (struct platform_device *pdev) +{ +struct pm860x_led *data =platform_get_drvdata (pdev); + +led_classdev_unregister (&data->cdev); + +return 0 ; +}static struct platform_driver pm860x_led_driver = { .driver = { .name ="88pm860x-led" , }, .probe = pm860x_led_probe, + .remove = pm860x_led_remove, };module_platform_driver (pm860x_led_driver);
drivers/leds/leds-da903x.c +13 -1
@@ -113,12 +113,23 @@ static int da903x_led_probe(struct platform_device *pdev) led->flags = pdata->flags; led->master = pdev->dev.parent; - ret =devm_led_classdev_register (led->master, &led->cdev); + ret =led_classdev_register (led->master, &led->cdev);if (ret) {dev_err (&pdev->dev,"failed to register LED %d\n" , id);return ret; } +platform_set_drvdata (pdev, led); + +return 0 ; +} + +static int da903x_led_remove (struct platform_device *pdev) +{ +struct da903x_led *led =platform_get_drvdata (pdev); + +led_classdev_unregister (&led->cdev); +return 0 ; }
@@ -127,6 +138,7 @@ static struct platform_driver da903x_led_driver = { .name = "da903x-led", }, .probe = da903x_led_probe, + .remove = da903x_led_remove, };module_platform_driver (da903x_led_driver);
drivers/leds/leds-lm3533.c +9 -3
@@ -698,7 +698,7 @@ static int lm3533_led_probe(struct platform_device *pdev)platform_set_drvdata (pdev, led); - ret =devm_led_classdev_register (pdev->dev.parent, &led->cdev); + ret =led_classdev_register (pdev->dev.parent, &led->cdev);if (ret) {dev_err (&pdev->dev,"failed to register LED %d\n" , pdev->id);return ret;
@@ -708,13 +708,18 @@ static int lm3533_led_probe(struct platform_device *pdev) ret =lm3533_led_setup (led, pdata);if (ret) -return ret; + goto err_deregister; ret =lm3533_ctrlbank_enable (&led->cb);if (ret) -return ret; + goto err_deregister;return 0 ; + +err_deregister: +led_classdev_unregister (&led->cdev); + +return ret; }static int lm3533_led_remove (struct platform_device *pdev)
@@ -724,6 +729,7 @@ static int lm3533_led_remove(struct platform_device *pdev)dev_dbg (&pdev->dev,"%s\n" , __func__);lm3533_ctrlbank_disable (&led->cb); +led_classdev_unregister (&led->cdev);return 0 ; }
drivers/leds/leds-lm355x.c +4 -3
@@ -168,18 +168,19 @@ static int lm355x_chip_init(struct lm355x_chip_data *chip)/* input and output pins configuration */ switch (chip->type) {case CHIP_LM3554 : - reg_val = pdata->pin_tx2 | pdata->ntc_pin; + reg_val = (u32 )pdata->pin_tx2 | (u32 )pdata->ntc_pin; ret =regmap_update_bits (chip->regmap,0xE0 ,0x28 , reg_val);if (ret <0 ) goto out; - reg_val = pdata->pass_mode; + reg_val = (u32 )pdata->pass_mode; ret =regmap_update_bits (chip->regmap,0xA0 ,0x04 , reg_val);if (ret <0 ) goto out;break ;case CHIP_LM3556 : - reg_val = pdata->pin_tx2 | pdata->ntc_pin | pdata->pass_mode; + reg_val = (u32 )pdata->pin_tx2 | (u32 )pdata->ntc_pin | + (u32 )pdata->pass_mode; ret =regmap_update_bits (chip->regmap,0x0A ,0xC4 , reg_val);if (ret <0 ) goto out;
drivers/leds/leds-wm831x-status.c +13 -1
@@ -283,12 +283,23 @@ static int wm831x_status_probe(struct platform_device *pdev) drvdata->cdev.blink_set = wm831x_status_blink_set; drvdata->cdev.groups = wm831x_status_groups; - ret =devm_led_classdev_register (wm831x->dev, &drvdata->cdev); + ret =led_classdev_register (wm831x->dev, &drvdata->cdev);if (ret <0 ) {dev_err (&pdev->dev,"Failed to register LED: %d\n" , ret);return ret; } +platform_set_drvdata (pdev, drvdata); + +return 0 ; +} + +static int wm831x_status_remove (struct platform_device *pdev) +{ +struct wm831x_status *drvdata =platform_get_drvdata (pdev); + +led_classdev_unregister (&drvdata->cdev); +return 0 ; }
@@ -297,6 +308,7 @@ static struct platform_driver wm831x_status_driver = { .name = "wm831x-status", }, .probe = wm831x_status_probe, + .remove = wm831x_status_remove, };module_platform_driver (wm831x_status_driver);
drivers/md/bcache/bset.c +1 -1
@@ -319,7 +319,7 @@ int bch_btree_keys_alloc(struct btree_keys *b, unsigned page_order, gfp_t gfp) b->page_order = page_order; - t->data = (void *)__get_free_pages (gfp, b->page_order); + t->data = (void *)__get_free_pages (__GFP_COMP|gfp, b->page_order);if (!t->data) goto err;
drivers/md/bcache/btree.c +1 -1
@@ -794,7 +794,7 @@ int bch_btree_cache_alloc(struct cache_set *c)mutex_init (&c->verify_lock); c->verify_ondisk = (void *) -__get_free_pages (GFP_KERNEL ,ilog2 (bucket_pages (c))); +__get_free_pages (GFP_KERNEL |__GFP_COMP,ilog2 (bucket_pages (c))); c->verify_data =mca_bucket_alloc (c, &ZERO_KEY ,GFP_KERNEL );
drivers/md/bcache/journal.c +2 -2
@@ -838,8 +838,8 @@ int bch_journal_alloc(struct cache_set *c) j->w[1 ].c = c;if (!(init_fifo (&j->pin,JOURNAL_PIN ,GFP_KERNEL )) || - !(j->w[0 ].data = (void *)__get_free_pages (GFP_KERNEL ,JSET_BITS )) || - !(j->w[1 ].data = (void *)__get_free_pages (GFP_KERNEL ,JSET_BITS ))) + !(j->w[0 ].data = (void *)__get_free_pages (GFP_KERNEL |__GFP_COMP,JSET_BITS )) || + !(j->w[1 ].data = (void *)__get_free_pages (GFP_KERNEL |__GFP_COMP,JSET_BITS )))return -ENOMEM ;return 0 ;
drivers/md/bcache/super.c +9 -2
@@ -1468,7 +1468,7 @@ void bch_cache_set_unregister(struct cache_set *c) }#define alloc_bucket_pages (gfp, c) \ - ((void *) __get_free_pages(__GFP_ZERO|gfp, ilog2(bucket_pages(c)))) + ((void *) __get_free_pages(__GFP_ZERO|__GFP_COMP|gfp, ilog2(bucket_pages(c))))struct cache_set *bch_cache_set_alloc (struct cache_sb *sb) {
@@ -1780,7 +1780,14 @@ static const char *register_cache_set(struct cache *ca) sysfs_create_link(&c->kobj, &ca->kobj, buf)) goto err; -if (ca->sb.seq > c->sb.seq) { +/* +* A special case is both ca->sb.seq and c->sb.seq are 0, +* such condition happens on a new created cache device whose +* super block is never flushed yet. In this case c->sb.version +* and other members should be updated too, otherwise we will +* have a mistaken super block version in cache set. +*/ +if (ca->sb.seq > c->sb.seq || c->sb.seq ==0 ) { c->sb.version = ca->sb.version;memcpy (c->sb.set_uuid, ca->sb.set_uuid,16 ); c->sb.flags = ca->sb.flags;
drivers/md/dm-cache-target.c +53 -113
311 lines not on this page · raw message
drivers/md/dm-rq.c +0 -3
@@ -95,9 +95,6 @@ static void dm_old_stop_queue(struct request_queue *q)static void dm_mq_stop_queue (struct request_queue *q) { -if (blk_mq_queue_stopped (q)) -return ; -blk_mq_quiesce_queue (q); }
drivers/md/md-cluster.c +1 -0
@@ -1423,6 +1423,7 @@ static void unlock_all_bitmaps(struct mddev *mddev) } }kfree (cinfo->other_bitmap_lockres); + cinfo->other_bitmap_lockres =NULL ; } }
drivers/md/raid5.c +2 -1
@@ -3593,6 +3593,7 @@ static int need_this_block(struct stripe_head *sh, struct stripe_head_state *s,* is missing/faulty, then we need to read everything we can. */ if (sh->raid_conf->level !=6 && + sh->raid_conf->rmw_level !=PARITY_DISABLE_RMW && sh->sector < sh->raid_conf->mddev->recovery_cp)/* reconstruct-write isn't being forced */ return 0 ;
@@ -4829,7 +4830,7 @@ static void handle_stripe(struct stripe_head *sh)* or to load a block that is being partially written. */ if (s.to_read || s.non_overwrite - || (conf->level ==6 && s.to_write && s.failed) + || (s.to_write && s.failed) || (s.syncing && (s.uptodate + s.compute < disks)) || s.replacing || s.expanding)
drivers/media/firewire/firedtv-fw.c +2 -0
@@ -271,6 +271,8 @@ static int node_probe(struct fw_unit *unit, const struct ieee1394_device_id *id) name_len =fw_csr_string (unit->directory,CSR_MODEL , name,sizeof (name)); +if (name_len <0 ) +return name_len;for (i =ARRAY_SIZE (model_names); --i; )if (strlen (model_names[i]) <= name_len &&strncmp (name, model_names[i], name_len) ==0 )
drivers/media/platform/exynos4-is/media-dev.c +3 -0
@@ -1258,6 +1258,9 @@ static int fimc_md_get_pinctrl(struct fimc_md *fmd) pctl->state_idle =pinctrl_lookup_state (pctl->pinctrl,PINCTRL_STATE_IDLE ); +if (IS_ERR (pctl->state_idle)) +return PTR_ERR (pctl->state_idle); +return 0 ; }
drivers/media/platform/omap3isp/isppreview.c +3 -1
@@ -2290,7 +2290,7 @@ static int preview_init_entities(struct isp_prev_device *prev) me->ops = &preview_media_ops; ret =media_entity_pads_init (me,PREV_PADS_NUM , pads);if (ret <0 ) -return ret; + goto error_handler_free;preview_init_formats (sd,NULL );
@@ -2323,6 +2323,8 @@ static int preview_init_entities(struct isp_prev_device *prev)omap3isp_video_cleanup (&prev->video_in); error_video_in:media_entity_cleanup (&prev->subdev.entity); +error_handler_free: +v4l2_ctrl_handler_free (&prev->ctrls);return ret; }
drivers/mfd/arizona-core.c +18 -0
@@ -1528,6 +1528,15 @@ int arizona_dev_init(struct arizona *arizona)arizona_irq_exit (arizona); err_pm:pm_runtime_disable (arizona->dev); + +switch (arizona->pdata.clk32k_src) { +case ARIZONA_32KZ_MCLK1 : +case ARIZONA_32KZ_MCLK2 : +arizona_clk32k_disable (arizona); +break ; +default : +break ; + } err_reset:arizona_enable_reset (arizona);regulator_disable (arizona->dcvdd);
@@ -1550,6 +1559,15 @@ int arizona_dev_exit(struct arizona *arizona)regulator_disable (arizona->dcvdd);regulator_put (arizona->dcvdd); +switch (arizona->pdata.clk32k_src) { +case ARIZONA_32KZ_MCLK1 : +case ARIZONA_32KZ_MCLK2 : +arizona_clk32k_disable (arizona); +break ; +default : +break ; + } +mfd_remove_devices (arizona->dev);arizona_free_irq (arizona,ARIZONA_IRQ_UNDERCLOCKED , arizona);arizona_free_irq (arizona,ARIZONA_IRQ_OVERCLOCKED , arizona);
drivers/mfd/dln2.c +4 -0
@@ -294,7 +294,11 @@ static void dln2_rx(struct urb *urb) len = urb->actual_length -sizeof (struct dln2_header );if (handle ==DLN2_HANDLE_EVENT ) { +unsigned long flags; + +spin_lock_irqsave (&dln2->event_cb_lock, flags);dln2_run_event_callbacks (dln2, id, echo, data, len); +spin_unlock_irqrestore (&dln2->event_cb_lock, flags); }else {/* URB will be re-submitted in _dln2_transfer (free_rx_slot) */ if (dln2_transfer_complete (dln2, urb, handle, echo))
drivers/misc/cxl/sysfs.c +1 -1
@@ -606,7 +606,7 @@ static struct afu_config_record *cxl_sysfs_afu_new_cr(struct cxl_afu *afu, int c rc =kobject_init_and_add (&cr->kobj, &afu_config_record_type, &afu->dev.kobj,"cr%i" , cr->cr);if (rc) - goto err; + goto err1; rc =sysfs_create_bin_file (&cr->kobj, &cr->config_attr);if (rc)
drivers/mtd/mtdchar.c +47 -9
86 lines not on this page · raw message
drivers/mtd/nand/qcom_nandc.c +6 -1
@@ -435,11 +435,13 @@ struct qcom_nand_host {* among different NAND controllers. * @ecc_modes - ecc mode for NAND * @is_bam - whether NAND controller is using BAM +* @is_qpic - whether NAND CTRL is part of qpic IP * @dev_cmd_reg_start - NAND_DEV_CMD_* registers starting offset */ struct qcom_nandc_props {u32 ecc_modes;bool is_bam; +bool is_qpic;u32 dev_cmd_reg_start; };
@@ -2508,7 +2510,8 @@ static int qcom_nandc_setup(struct qcom_nand_controller *nandc)u32 nand_ctrl;/* kill onenand */ -nandc_write (nandc,SFLASHC_BURST_CFG ,0 ); +if (!nandc->props->is_qpic) +nandc_write (nandc,SFLASHC_BURST_CFG ,0 );nandc_write (nandc,dev_cmd_reg_addr (nandc,NAND_DEV_CMD_VLD ),NAND_DEV_CMD_VLD_VAL );
@@ -2779,12 +2782,14 @@ static const struct qcom_nandc_props ipq806x_nandc_props = {static const struct qcom_nandc_props ipq4019_nandc_props = { .ecc_modes = (ECC_BCH_4BIT |ECC_BCH_8BIT ), .is_bam = true, + .is_qpic = true, .dev_cmd_reg_start =0x0 , };static const struct qcom_nandc_props ipq8074_nandc_props = { .ecc_modes = (ECC_BCH_4BIT |ECC_BCH_8BIT ), .is_bam = true, + .is_qpic = true, .dev_cmd_reg_start =0x7000 , };
drivers/net/dsa/mv88e6xxx/chip.c +0 -1
@@ -2450,7 +2450,6 @@ static const struct mv88e6xxx_ops mv88e6097_ops = { .port_set_frame_mode = mv88e6351_port_set_frame_mode, .port_set_egress_floods = mv88e6352_port_set_egress_floods, .port_set_ether_type = mv88e6351_port_set_ether_type, - .port_set_jumbo_size = mv88e6165_port_set_jumbo_size, .port_egress_rate_limiting = mv88e6095_port_egress_rate_limiting, .port_pause_limit = mv88e6097_port_pause_limit, .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c +1 -1
@@ -746,7 +746,7 @@ static int hw_atl_a0_hw_multicast_list_set(struct aq_hw_s *self,int err =0 ;if (count > (HW_ATL_A0_MAC_MAX -HW_ATL_A0_MAC_MIN )) { - err =EBADRQC ; + err = -EBADRQC ; goto err_exit; } for (self->aq_nic_cfg->mc_list_count = 0U;
drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c +1 -1
@@ -1167,7 +1167,7 @@ static int cn23xx_get_pf_num(struct octeon_device *oct) oct->pf_num = ((fdl_bit >>CN23XX_PCIE_SRIOV_FDL_BIT_POS ) &CN23XX_PCIE_SRIOV_FDL_MASK ); }else { - ret =EINVAL ; + ret = -EINVAL ;/* Under some virtual environments, extended PCI regs are * inaccessible, in which case the above read will have failed.
drivers/net/ethernet/freescale/fman/fman.c +1 -2
@@ -1396,8 +1396,7 @@ static void enable_time_stamp(struct fman *fman) {struct fman_fpm_regs __iomem *fpm_rg = fman->fpm_regs;u16 fm_clk_freq = fman->state->fm_clk_freq; -u32 tmp, intgr, ts_freq; -u64 frac; +u32 tmp, intgr, ts_freq, frac; ts_freq = (u32)(1 << fman->state->count1_micro_bit);/* configure timestamp so that bit 8 will count 1 microsecond
drivers/net/ethernet/freescale/fman/fman_dtsec.c +2 -2
@@ -1159,7 +1159,7 @@ int dtsec_del_hash_mac_address(struct fman_mac *dtsec, enet_addr_t *eth_addr)list_for_each (pos, &dtsec->multicast_addr_hash->lsts[bucket]) { hash_entry =ETH_HASH_ENTRY_OBJ (pos); -if (hash_entry->addr == addr) { +if (hash_entry && hash_entry->addr == addr) {list_del_init (&hash_entry->node);kfree (hash_entry);break ;
@@ -1172,7 +1172,7 @@ int dtsec_del_hash_mac_address(struct fman_mac *dtsec, enet_addr_t *eth_addr)list_for_each (pos, &dtsec->unicast_addr_hash->lsts[bucket]) { hash_entry =ETH_HASH_ENTRY_OBJ (pos); -if (hash_entry->addr == addr) { +if (hash_entry && hash_entry->addr == addr) {list_del_init (&hash_entry->node);kfree (hash_entry);break ;
drivers/net/ethernet/freescale/fman/fman_mac.h +1 -1
@@ -252,7 +252,7 @@ static inline struct eth_hash_t *alloc_hash_table(u16 size)struct eth_hash_t *hash;/* Allocate address hash table */ - hash =kmalloc_array (size,sizeof (struct eth_hash_t *),GFP_KERNEL ); + hash =kmalloc (sizeof (*hash),GFP_KERNEL );if (!hash)return NULL ;
drivers/net/ethernet/freescale/fman/fman_memac.c +1 -2
@@ -855,7 +855,6 @@ int memac_set_tx_pause_frames(struct fman_mac *memac, u8 priority, tmp =ioread32be (®s->command_config); tmp &= ~CMD_CFG_PFC_MODE ; - priority =0 ;iowrite32be (tmp, ®s->command_config);
@@ -957,7 +956,7 @@ int memac_del_hash_mac_address(struct fman_mac *memac, enet_addr_t *eth_addr)list_for_each (pos, &memac->multicast_addr_hash->lsts[hash]) { hash_entry =ETH_HASH_ENTRY_OBJ (pos); -if (hash_entry->addr == addr) { +if (hash_entry && hash_entry->addr == addr) {list_del_init (&hash_entry->node);kfree (hash_entry);break ;
drivers/net/ethernet/freescale/fman/fman_port.c +8 -1
@@ -1744,6 +1744,7 @@ static int fman_port_probe(struct platform_device *of_dev)struct fman_port *port;struct fman *fman;struct device_node *fm_node, *port_node; +struct platform_device *fm_pdev;struct resource res;struct resource *dev_res;u32 val;
@@ -1768,8 +1769,14 @@ static int fman_port_probe(struct platform_device *of_dev) goto return_err; } - fman =dev_get_drvdata (&of_find_device_by_node (fm_node)->dev); + fm_pdev =of_find_device_by_node (fm_node);of_node_put (fm_node); +if (!fm_pdev) { + err = -EINVAL ; + goto return_err; + } + + fman =dev_get_drvdata (&fm_pdev->dev);if (!fman) { err = -EINVAL ; goto return_err;
drivers/net/ethernet/freescale/fman/fman_tgec.c +1 -1
@@ -585,7 +585,7 @@ int tgec_del_hash_mac_address(struct fman_mac *tgec, enet_addr_t *eth_addr)list_for_each (pos, &tgec->multicast_addr_hash->lsts[hash]) { hash_entry =ETH_HASH_ENTRY_OBJ (pos); -if (hash_entry->addr == addr) { +if (hash_entry && hash_entry->addr == addr) {list_del_init (&hash_entry->node);kfree (hash_entry);break ;
drivers/net/ethernet/intel/igb/igb_main.c +9 -0
@@ -5487,9 +5487,18 @@ static void igb_reset_task(struct work_struct *work)struct igb_adapter *adapter; adapter = container_of(work, struct igb_adapter, reset_task); +rtnl_lock (); +/* If we're already down or resetting, just bail */ +if (test_bit (__IGB_DOWN, &adapter->state) || +test_bit (__IGB_RESETTING, &adapter->state)) { +rtnl_unlock (); +return ; + } +igb_dump (adapter);netdev_err (adapter->netdev,"Reset adapter\n" );igb_reinit_locked (adapter); +rtnl_unlock (); }/**
drivers/net/ethernet/mediatek/mtk_eth_soc.c +2 -0
@@ -2452,6 +2452,8 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) eth->netdev[id]->irq = eth->irq[0 ]; eth->netdev[id]->dev.of_node = np; + eth->netdev[id]->max_mtu =MTK_MAX_RX_LENGTH -MTK_RX_ETH_HLEN ; +return 0 ; free_netdev:
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +1 -1
@@ -180,7 +180,7 @@ int mlx5e_attr_get(struct net_device *dev, struct switchdev_attr *attr)struct mlx5_eswitch_rep *rep = rpriv->rep;struct mlx5_eswitch *esw = priv->mdev->priv.eswitch; -if (esw->mode ==SRIOV_NONE ) +if (esw->mode !=SRIOV_OFFLOADS )return -EOPNOTSUPP ;switch (attr->id) {
drivers/net/ethernet/qualcomm/emac/emac.c +14 -3
@@ -493,13 +493,24 @@ static int emac_clks_phase1_init(struct platform_device *pdev, ret =clk_prepare_enable (adpt->clk[EMAC_CLK_CFG_AHB ]);if (ret) -return ret; + goto disable_clk_axi; ret =clk_set_rate (adpt->clk[EMAC_CLK_HIGH_SPEED ],19200000 );if (ret) -return ret; + goto disable_clk_cfg_ahb; + + ret =clk_prepare_enable (adpt->clk[EMAC_CLK_HIGH_SPEED ]); +if (ret) + goto disable_clk_cfg_ahb; -return clk_prepare_enable (adpt->clk[EMAC_CLK_HIGH_SPEED ]); +return 0 ; + +disable_clk_cfg_ahb: +clk_disable_unprepare (adpt->clk[EMAC_CLK_CFG_AHB ]); +disable_clk_axi: +clk_disable_unprepare (adpt->clk[EMAC_CLK_AXI ]); + +return ret; }/* Enable clocks; needs emac_clks_phase1_init to be called before */
drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c +1 -0
@@ -362,6 +362,7 @@ static int ipq806x_gmac_probe(struct platform_device *pdev) plat_dat->has_gmac = true; plat_dat->bsp_priv = gmac; plat_dat->fix_mac_speed = ipq806x_gmac_fix_mac_speed; + plat_dat->multicast_filter_bins =0 ; err =stmmac_dvr_probe (&pdev->dev, plat_dat, &stmmac_res);if (err)
drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c +3 -0
@@ -176,6 +176,9 @@ static void dwmac1000_set_filter(struct mac_device_info *hw, value =GMAC_FRAME_FILTER_PR ; }else if (dev->flags &IFF_ALLMULTI ) { value =GMAC_FRAME_FILTER_PM ;/* pass all multi */ + }else if (!netdev_mc_empty (dev) && (mcbitslog2 ==0 )) { +/* Fall back to all multicast if we've no filter */ + value =GMAC_FRAME_FILTER_PM ; }else if (!netdev_mc_empty (dev)) {struct netdev_hw_addr *ha;
drivers/net/ethernet/toshiba/spider_net.c +2 -2
@@ -296,8 +296,8 @@ spider_net_free_chain(struct spider_net_card *card, descr = descr->next; }while (descr != chain->ring); -dma_free_coherent (&card->pdev->dev, chain->num_desc, - chain->hwring, chain->dma_addr); +dma_free_coherent (&card->pdev->dev, chain->num_desc *sizeof (struct spider_net_hw_descr ), + chain->hwring, chain->dma_addr); }/**
drivers/net/hyperv/netvsc_drv.c +4 -3
@@ -532,12 +532,13 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)u32 hash;struct hv_page_buffer pb[MAX_PAGE_BUFFER_COUNT ]; -/* if VF is present and up then redirect packets -* already called with rcu_read_lock_bh +/* If VF is present and up then redirect packets to it. +* Skip the VF if it is marked down or has no carrier. +* If netpoll is in uses, then VF can not be used either. */ vf_netdev =rcu_dereference_bh (net_device_ctx->vf_netdev);if (vf_netdev &&netif_running (vf_netdev) && - !netpoll_tx_running (net)) +netif_carrier_ok (vf_netdev) && !netpoll_tx_running (net))return netvsc_vf_xmit (net, vf_netdev, skb);/* We will atmost need two pages to describe the rndis
drivers/net/usb/hso.c +4 -1
@@ -2272,12 +2272,14 @@ static int hso_serial_common_create(struct hso_serial *serial, int num_urbs, minor =get_free_serial_index ();if (minor <0 ) - goto exit; + goto exit2;/* register our minor number */ serial->parent->dev =tty_port_register_device_attr (&serial->port, tty_drv, minor, &serial->parent->interface->dev, serial->parent, hso_serial_dev_groups); +if (IS_ERR (serial->parent->dev)) + goto exit2; dev = serial->parent->dev;/* fill in specific data for later use */
@@ -2323,6 +2325,7 @@ static int hso_serial_common_create(struct hso_serial *serial, int num_urbs,return 0 ; exit:hso_serial_tty_unregister (serial); +exit2:hso_serial_common_free (serial);return -1 ; }
drivers/net/usb/lan78xx.c +30 -87
153 lines not on this page · raw message
drivers/net/vxlan.c +7 -3
@@ -974,6 +974,7 @@ static int vxlan_fdb_dump(struct sk_buff *skb, struct netlink_callback *cb,for (h =0 ; h <FDB_HASH_SIZE ; ++h) {struct vxlan_fdb *f; +rcu_read_lock ();hlist_for_each_entry_rcu (f, &vxlan->fdb_head[h], hlist) {struct vxlan_rdst *rd;
@@ -986,12 +987,15 @@ static int vxlan_fdb_dump(struct sk_buff *skb, struct netlink_callback *cb, cb->nlh->nlmsg_seq,RTM_NEWNEIGH , NLM_F_MULTI, rd); -if (err <0 ) +if (err <0 ) { +rcu_read_unlock (); goto out; + } skip: *idx +=1 ; } } +rcu_read_unlock (); } out:return err;
@@ -2218,7 +2222,7 @@ static void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,skb_dst_update_pmtu (skb, mtu); } - tos =ip_tunnel_ecn_encap (RT_TOS (tos), old_iph, skb); + tos =ip_tunnel_ecn_encap (tos, old_iph, skb); ttl = ttl ? :ip4_dst_hoplimit (&rt->dst); err =vxlan_build_skb (skb, ndst,sizeof (struct iphdr ), vni, md, flags, udp_sum);
@@ -2259,7 +2263,7 @@ static void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,skb_dst_update_pmtu (skb, mtu); } - tos =ip_tunnel_ecn_encap (RT_TOS (tos), old_iph, skb); + tos =ip_tunnel_ecn_encap (tos, old_iph, skb); ttl = ttl ? :ip6_dst_hoplimit (ndst);skb_scrub_packet (skb, xnet); err = vxlan_build_skb(skb, ndst, sizeof(struct ipv6hdr),
drivers/net/wan/lapbether.c +9 -1
@@ -160,6 +160,12 @@ static netdev_tx_t lapbeth_xmit(struct sk_buff *skb,if (!netif_running (dev)) goto drop; +/* There should be a pseudo header of 1 byte added by upper layers. +* Check to make sure it is there before reading it. +*/ +if (skb->len <1 ) + goto drop; +switch (skb->data[0 ]) {case X25_IFACE_DATA :break ;
@@ -308,6 +314,7 @@ static void lapbeth_setup(struct net_device *dev) dev->netdev_ops = &lapbeth_netdev_ops; dev->needs_free_netdev = true; dev->type =ARPHRD_X25 ; + dev->hard_header_len =0 ; dev->mtu =1000 ; dev->addr_len =0 ; }
@@ -334,7 +341,8 @@ static int lapbeth_new_device(struct net_device *dev)* then this driver prepends a length field of 2 bytes, * then the underlying Ethernet device prepends its own header. */ - ndev->hard_header_len =-1 +3 +2 + dev->hard_header_len; + ndev->needed_headroom =-1 +3 +2 + dev->hard_header_len + + dev->needed_headroom; lapbeth =netdev_priv (ndev); lapbeth->axdev = ndev;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h +1 -1
@@ -30,7 +30,7 @@#define BRCMF_ARP_OL_PEER_AUTO_REPLY 0x00000008#define BRCMF_BSS_INFO_VERSION 109/* curr ver of brcmf_bss_info_le struct */ -#define BRCMF_BSS_RSSI_ON_CHANNEL 0x0002 +#define BRCMF_BSS_RSSI_ON_CHANNEL 0x0004#define BRCMF_STA_WME 0x00000002/* WMM association */ #define BRCMF_STA_AUTHE 0x00000008/* Authenticated */
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c +4 -0
@@ -653,6 +653,7 @@ static inline int brcmf_fws_hanger_poppkt(struct brcmf_fws_hanger *h,static void brcmf_fws_psq_flush (struct brcmf_fws_info *fws,struct pktq *q,int ifidx) { +struct brcmf_fws_hanger_item *hi;bool (*matchfn)(struct sk_buff *,void *) =NULL ;struct sk_buff *skb;int prec;
@@ -664,6 +665,9 @@ static void brcmf_fws_psq_flush(struct brcmf_fws_info *fws, struct pktq *q, skb =brcmu_pktq_pdeq_match (q, prec, matchfn, &ifidx);while (skb) { hslot =brcmf_skb_htod_tag_get_field (skb,HSLOT ); + hi = &fws->hanger.items[hslot]; +WARN_ON (skb != hi->pkt); + hi->state =BRCMF_FWS_HANGER_ITEM_STATE_FREE ;brcmf_fws_hanger_poppkt (&fws->hanger, hslot, &skb, true);brcmu_pkt_buf_free_skb (skb);
drivers/net/wireless/intel/iwlegacy/common.c +2 -2
@@ -4302,8 +4302,8 @@ il_apm_init(struct il_priv *il)* power savings, even without L1. */ if (il->cfg->set_l0s) { -pcie_capability_read_word (il->pci_dev,PCI_EXP_LNKCTL , &lctl); -if (lctl &PCI_EXP_LNKCTL_ASPM_L1 ) { + ret =pcie_capability_read_word (il->pci_dev,PCI_EXP_LNKCTL , &lctl); +if (!ret && (lctl &PCI_EXP_LNKCTL_ASPM_L1 )) {/* L1-ASPM enabled; disable(!) L0S */ il_set_bit (il,CSR_GIO_REG ,CSR_GIO_REG_VAL_L0S_ENABLED );
drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c +15 -7
@@ -585,6 +585,11 @@ static int mwifiex_ret_802_11_key_material_v1(struct mwifiex_private *priv, {struct host_cmd_ds_802_11_key_material *key = &resp->params.key_material; +int len; + + len =le16_to_cpu (key->key_param_set.key_len); +if (len >sizeof (key->key_param_set.key)) +return -EINVAL ;if (le16_to_cpu (key->action) == HostCmd_ACT_GEN_SET) {if ((le16_to_cpu (key->key_param_set.key_info) &KEY_MCAST )) {
@@ -598,9 +603,8 @@ static int mwifiex_ret_802_11_key_material_v1(struct mwifiex_private *priv,memset (priv->aes_key.key_param_set.key,0 ,sizeof (key->key_param_set.key)); - priv->aes_key.key_param_set.key_len = key->key_param_set.key_len; -memcpy (priv->aes_key.key_param_set.key, key->key_param_set.key, -le16_to_cpu (priv->aes_key.key_param_set.key_len)); + priv->aes_key.key_param_set.key_len =cpu_to_le16 (len); +memcpy (priv->aes_key.key_param_set.key, key->key_param_set.key, len);return 0 ; }
@@ -615,9 +619,14 @@ static int mwifiex_ret_802_11_key_material_v2(struct mwifiex_private *priv, struct host_cmd_ds_command *resp) {struct host_cmd_ds_802_11_key_material_v2 *key_v2; -__le16 len; +int len; key_v2 = &resp->params.key_material_v2; + + len =le16_to_cpu (key_v2->key_param_set.key_params.aes.key_len); +if (len >WLAN_KEY_LEN_CCMP ) +return -EINVAL ; +if (le16_to_cpu (key_v2->action) == HostCmd_ACT_GEN_SET) {if ((le16_to_cpu (key_v2->key_param_set.key_info) &KEY_MCAST )) {mwifiex_dbg (priv->adapter,INFO ,"info: key: GTK is set\n" );
@@ -633,10 +642,9 @@ static int mwifiex_ret_802_11_key_material_v2(struct mwifiex_private *priv,memset (priv->aes_key_v2.key_param_set.key_params.aes.key,0 ,WLAN_KEY_LEN_CCMP ); priv->aes_key_v2.key_param_set.key_params.aes.key_len = - key_v2->key_param_set.key_params.aes.key_len; - len = priv->aes_key_v2.key_param_set.key_params.aes.key_len; +cpu_to_le16 (len);memcpy (priv->aes_key_v2.key_param_set.key_params.aes.key, - key_v2->key_param_set.key_params.aes.key,le16_to_cpu (len)); + key_v2->key_param_set.key_params.aes.key, len);return 0 ; }
drivers/net/wireless/ti/wl1251/event.c +1 -1
@@ -84,7 +84,7 @@ static int wl1251_event_ps_report(struct wl1251 *wl,break ; } -return 0 ; +return ret; }static void wl1251_event_mbox_dump (struct event_mailbox *mbox)
drivers/parisc/sba_iommu.c +1 -1
@@ -1291,7 +1291,7 @@ sba_ioc_init_pluto(struct parisc_device *sba, struct ioc *ioc, int ioc_num)** (one that doesn't overlap memory or LMMIO space) in the ** IBASE and IMASK registers. */ - ioc->ibase =READ_REG (ioc->ioc_hpa +IOC_IBASE ); + ioc->ibase =READ_REG (ioc->ioc_hpa +IOC_IBASE ) & ~0x1fffffULL ; iova_space_size = ~(READ_REG (ioc->ioc_hpa +IOC_IMASK ) &0xFFFFFFFFUL ) +1 ;if ((ioc->ibase <0xfed00000UL ) && ((ioc->ibase + iova_space_size) >0xfee00000UL )) {
drivers/pci/access.c +2 -6
@@ -205,17 +205,13 @@ EXPORT_SYMBOL(pci_bus_set_ops);static DECLARE_WAIT_QUEUE_HEAD (pci_cfg_wait); static noinline void pci_wait_cfg(struct pci_dev *dev) + __must_hold(&pci_lock) { -DECLARE_WAITQUEUE (wait, current); - -__add_wait_queue (&pci_cfg_wait, &wait);do { -set_current_state (TASK_UNINTERRUPTIBLE );raw_spin_unlock_irq (&pci_lock); -schedule (); +wait_event (pci_cfg_wait, !dev->block_cfg_access);raw_spin_lock_irq (&pci_lock); }while (dev->block_cfg_access); -__remove_wait_queue (&pci_cfg_wait, &wait); }/* Returns 0 on success, negative values indicate error. */
drivers/pci/host/vmd.c +3 -0
@@ -651,6 +651,7 @@ static int vmd_enable_domain(struct vmd_dev *vmd)if (!vmd->bus) {pci_free_resource_list (&resources);irq_domain_remove (vmd->irq_domain); +irq_domain_free_fwnode (fn);return -ENODEV ; }
@@ -753,6 +754,7 @@ static void vmd_cleanup_srcu(struct vmd_dev *vmd)static void vmd_remove (struct pci_dev *dev) {struct vmd_dev *vmd =pci_get_drvdata (dev); +struct fwnode_handle *fn = vmd->irq_domain->fwnode;sysfs_remove_link (&vmd->dev->dev.kobj,"domain" );pci_stop_root_bus (vmd->bus);
@@ -761,6 +763,7 @@ static void vmd_remove(struct pci_dev *dev)vmd_teardown_dma_ops (vmd);vmd_detach_resources (vmd);irq_domain_remove (vmd->irq_domain); +irq_domain_free_fwnode (fn); }#ifdef CONFIG_PM_SLEEP
drivers/pci/hotplug/acpiphp_glue.c +11 -3
@@ -136,13 +136,21 @@ static struct acpiphp_context *acpiphp_grab_context(struct acpi_device *adev)struct acpiphp_context *context;acpi_lock_hp_context (); + context =acpiphp_get_context (adev); -if (!context || context->func.parent->is_going_away) { -acpi_unlock_hp_context (); -return NULL ; +if (!context) + goto unlock; + +if (context->func.parent->is_going_away) { +acpiphp_put_context (context); + context =NULL ; + goto unlock; } +get_bridge (context->func.parent);acpiphp_put_context (context); + +unlock:acpi_unlock_hp_context ();return context; }
drivers/pci/pcie/aspm.c +1 -0
@@ -1111,6 +1111,7 @@ static int pcie_aspm_get_policy(char *buffer, struct kernel_param *kp) cnt +=sprintf (buffer + cnt,"[%s] " , policy_str[i]); else cnt += sprintf(buffer + cnt, "%s ", policy_str[i]); + cnt +=sprintf (buffer + cnt,"\n" );return cnt; }
drivers/pci/quirks.c +2 -0
@@ -4307,6 +4307,8 @@ static int pci_quirk_amd_sb_acs(struct pci_dev *dev, u16 acs_flags)if (ACPI_FAILURE (status))return -ENODEV ; +acpi_put_table (header); +/* Filter out flags not applicable to multifunction */ acs_flags &= (PCI_ACS_RR |PCI_ACS_CR |PCI_ACS_EC |PCI_ACS_DT );
drivers/pinctrl/pinctrl-single.c +7 -4
@@ -888,7 +888,7 @@ static int pcs_parse_pinconf(struct pcs_device *pcs, struct device_node *np,/* If pinconf isn't supported, don't parse properties in below. */ if (!PCS_HAS_PINCONF ) -return 0 ; +return -ENOTSUPP ;/* cacluate how much properties are supported in current node */ for (i =0 ; i <ARRAY_SIZE (prop2); i++) {
@@ -900,7 +900,7 @@ static int pcs_parse_pinconf(struct pcs_device *pcs, struct device_node *np, nconfs++; }if (!nconfs) -return 0 ; +return -ENOTSUPP ; func->conf = devm_kzalloc(pcs->dev, sizeof(struct pcs_conf_vals) * nconfs,
@@ -1024,9 +1024,12 @@ static int pcs_parse_one_pinctrl_entry(struct pcs_device *pcs,if (PCS_HAS_PINCONF ) { res =pcs_parse_pinconf (pcs, np, function, map); -if (res) +if (res ==0 ) + *num_maps =2 ; +else if (res == -ENOTSUPP ) + *num_maps =1 ; +else goto free_pingroups; - *num_maps =2 ; }else { *num_maps =1 ; }
drivers/platform/x86/intel-hid.c +1 -1
@@ -366,7 +366,7 @@ check_acpi_dev(acpi_handle handle, u32 lvl, void *context, void **rv)return AE_OK ;if (acpi_match_device_ids (dev, ids) ==0 ) -if (acpi_create_platform_device (dev,NULL )) +if (!IS_ERR_OR_NULL (acpi_create_platform_device (dev,NULL )))dev_info (&dev->dev,"intel-hid: created platform device\n" );
drivers/platform/x86/intel-vbtn.c +1 -1
@@ -178,7 +178,7 @@ check_acpi_dev(acpi_handle handle, u32 lvl, void *context, void **rv)return AE_OK ;if (acpi_match_device_ids (dev, ids) ==0 ) -if (acpi_create_platform_device (dev,NULL )) +if (!IS_ERR_OR_NULL (acpi_create_platform_device (dev,NULL )))dev_info (&dev->dev,"intel-vbtn: created platform device\n" );
drivers/power/supply/88pm860x_battery.c +4 -2
@@ -436,7 +436,7 @@ static void pm860x_init_battery(struct pm860x_battery_info *info)int ret;int data;int bat_remove; -int soc; +int soc =0 ;/* measure enable on GPADC1 */ data =MEAS1_GP1 ;
@@ -499,7 +499,9 @@ static void pm860x_init_battery(struct pm860x_battery_info *info) }mutex_unlock (&info->lock); -calc_soc (info,OCV_MODE_ACTIVE , &soc); + ret =calc_soc (info,OCV_MODE_ACTIVE , &soc); +if (ret <0 ) + goto out; data =pm860x_reg_read (info->i2c,PM8607_POWER_UP_LOG ); bat_remove = data &BAT_WU_LOG ;
drivers/pwm/pwm-bcm-iproc.c +7 -2
@@ -85,8 +85,6 @@ static void iproc_pwmc_get_state(struct pwm_chip *chip, struct pwm_device *pwm,u64 tmp, multi, rate;u32 value, prescale; - rate =clk_get_rate (ip->clk); - value =readl (ip->base +IPROC_PWM_CTRL_OFFSET );if (value &BIT (IPROC_PWM_CTRL_EN_SHIFT (pwm->hwpwm)))
@@ -99,6 +97,13 @@ static void iproc_pwmc_get_state(struct pwm_chip *chip, struct pwm_device *pwm,else state->polarity =PWM_POLARITY_INVERSED ; + rate =clk_get_rate (ip->clk); +if (rate ==0 ) { + state->period =0 ; + state->duty_cycle =0 ; +return ; + } + value =readl (ip->base +IPROC_PWM_PRESCALE_OFFSET ); prescale = value >>IPROC_PWM_PRESCALE_SHIFT (pwm->hwpwm); prescale &=IPROC_PWM_PRESCALE_MAX ;
drivers/s390/net/qeth_l2_main.c +4 -0
@@ -1559,6 +1559,10 @@ static void qeth_bridge_state_change(struct qeth_card *card,int extrasize;QETH_CARD_TEXT (card,2 ,"brstchng" ); +if (qports->num_entries ==0 ) { +QETH_CARD_TEXT (card,2 ,"BPempty" ); +return ; + }if (qports->entry_length !=sizeof (struct qeth_sbp_port_entry )) {QETH_CARD_TEXT_ (card,2 ,"BPsz%04x" , qports->entry_length);return ;
drivers/scsi/arm/cumana_2.c +1 -1
@@ -454,7 +454,7 @@ static int cumanascsi2_probe(struct expansion_card *ec,if (info->info.scsi.dma !=NO_DMA )free_dma (info->info.scsi.dma); -free_irq (ec->irq, host); +free_irq (ec->irq, info); out_release:fas216_release (host);
drivers/scsi/arm/eesox.c +1 -1
@@ -575,7 +575,7 @@ static int eesoxscsi_probe(struct expansion_card *ec, const struct ecard_id *id)if (info->info.scsi.dma !=NO_DMA )free_dma (info->info.scsi.dma); -free_irq (ec->irq, host); +free_irq (ec->irq, info); out_remove:fas216_remove (host);
drivers/scsi/arm/powertec.c +1 -1
@@ -382,7 +382,7 @@ static int powertecscsi_probe(struct expansion_card *ec,if (info->info.scsi.dma !=NO_DMA )free_dma (info->info.scsi.dma); -free_irq (ec->irq, host); +free_irq (ec->irq, info); out_release:fas216_release (host);
drivers/scsi/mesh.c +7 -1
@@ -1044,6 +1044,8 @@ static void handle_error(struct mesh_state *ms)while ((in_8 (&mr->bus_status1) &BS1_RST ) !=0 )udelay (1 );printk ("done\n" ); +if (ms->dma_started) +halt_dma (ms);handle_reset (ms);/* request_q is empty, no point in mesh_start() */ return ;
@@ -1356,7 +1358,8 @@ static void halt_dma(struct mesh_state *ms) ms->conn_tgt, ms->data_ptr,scsi_bufflen (cmd), ms->tgts[ms->conn_tgt].data_goes_out); } -scsi_dma_unmap (cmd); +if (cmd) +scsi_dma_unmap (cmd); ms->dma_started =0 ; }
@@ -1711,6 +1714,9 @@ static int mesh_host_reset(struct scsi_cmnd *cmd)spin_lock_irqsave (ms->host->host_lock, flags); +if (ms->dma_started) +halt_dma (ms); +/* Reset the controller & dbdma channel */ out_le32 (&md->control, (RUN |PAUSE |FLUSH |WAKE ) <<16 );/* stop dma */ out_8 (&mr->exception,0xff );/* clear all exception bits */
drivers/scsi/scsi_debug.c +6 -0
@@ -4993,6 +4993,12 @@ static int __init scsi_debug_init(void)pr_err ("submit_queues must be 1 or more\n" );return -EINVAL ; } + +if ((sdebug_max_queue >SDEBUG_CANQUEUE ) || (sdebug_max_queue <1 )) { +pr_err ("max_queue must be in range [1, %d]\n" ,SDEBUG_CANQUEUE ); +return -EINVAL ; + } + sdebug_q_arr =kcalloc (submit_queues,sizeof (struct sdebug_queue ),GFP_KERNEL );if (sdebug_q_arr ==NULL )
drivers/spi/spi-lantiq-ssc.c +10 -0
@@ -187,6 +187,7 @@ struct lantiq_ssc_spi {unsigned int tx_fifo_size;unsigned int rx_fifo_size;unsigned int base_cs;
Lines of this file are not shown. View the raw message.
drivers/thermal/ti-soc-thermal/ti-thermal-common.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/video/fbdev/omap2/omapfb/dss/dss.c +1 -1
Lines of this file are not shown. View the raw message.
fs/xattr.c +77 -7
84 lines not on this page · raw message
kernel/irq/manage.c +39 -2
41 lines not on this page · raw message
net/ipv4/inet_connection_sock.c +51 -42
93 lines not on this page · raw message
sound/usb/quirks-table.h +63 -1
64 lines not on this page · raw message
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +7 -14
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/msg_zerocopy.c +2 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/powerpc/benchmarks/context_switch.c +16 -5
Lines of this file are not shown. View the raw message.
tools/testing/selftests/powerpc/utils.c +25 -12
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.