Linux 4.9.311
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.9.311 kernel.
All users of the 4.9 kernel series must upgrade.
The updated 4.9.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.9.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arm/boot/dts/exynos5250-pinctrl.dtsi | 2 arch/arm/boot/dts/exynos5250-smdk5250.dts | 3 arch/arm/boot/dts/exynos5420-smdk5420.dts | 3 arch/arm/boot/dts/qcom-ipq4019.dtsi | 3 arch/arm/boot/dts/qcom-msm8960.dtsi | 8 arch/arm/boot/dts/spear1340.dtsi | 6 arch/arm/boot/dts/spear13xx.dtsi | 6 arch/arm/boot/dts/tegra20-tamonten.dtsi | 6 arch/arm/mach-davinci/board-da850-evm.c | 4 arch/arm/mach-mmp/sram.c | 22 - arch/arm/mach-s3c24xx/mach-jive.c | 6 arch/arm64/boot/dts/broadcom/bcm2837.dtsi | 49 +++ arch/arm64/boot/dts/broadcom/ns2-svk.dts | 8 arch/arm64/boot/dts/broadcom/ns2.dtsi | 2 arch/arm64/kernel/insn.c | 4 arch/arm64/kernel/module.lds | 2 arch/mips/dec/prom/Makefile | 2 arch/mips/include/asm/dec/prom.h | 15 arch/mips/include/asm/setup.h | 2 arch/mips/kernel/traps.c | 22 - arch/mips/rb532/devices.c | 6 arch/powerpc/boot/dts/fsl/t104xrdb.dtsi | 4 arch/powerpc/sysdev/fsl_gtm.c | 4 arch/x86/events/intel/pt.c | 2 arch/x86/kvm/emulate.c | 14 arch/x86/kvm/hyperv.c | 15 arch/x86/kvm/lapic.c | 5 arch/x86/kvm/pmu_amd.c | 8 arch/x86/power/cpu.c | 21 + arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi | 8 arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi | 8 arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi | 4 crypto/authenc.c | 2 drivers/acpi/acpica/nswalk.c | 3 drivers/acpi/apei/bert.c | 8 drivers/acpi/cppc_acpi.c | 5 drivers/base/power/main.c | 6 drivers/block/drbd/drbd_int.h | 8 drivers/block/drbd/drbd_nl.c | 41 +- drivers/block/drbd/drbd_state.c | 18 - drivers/block/drbd/drbd_state_change.h | 8 drivers/block/loop.c | 10 drivers/block/virtio_blk.c | 12 drivers/char/virtio_console.c | 15 drivers/clk/clk-clps711x.c | 2 drivers/clk/loongson1/clk-loongson1c.c | 1 drivers/clk/qcom/clk-rcg2.c | 1 drivers/clk/tegra/clk-emc.c | 1 drivers/clk/uniphier/clk-uniphier-fixed-rate.c | 1 drivers/clocksource/acpi_pm.c | 6 drivers/crypto/ccp/ccp-dmaengine.c | 16 + drivers/crypto/mxs-dcp.c | 2 drivers/crypto/vmx/Kconfig | 4 drivers/dma/sh/shdma-base.c | 4 drivers/gpu/drm/amd/amdkfd/kfd_events.c | 2 drivers/gpu/drm/drm_edid.c | 8 drivers/gpu/drm/imx/parallel-display.c | 4 drivers/gpu/drm/tegra/dsi.c | 4 drivers/gpu/ipu-v3/ipu-di.c | 5 drivers/hid/i2c-hid/i2c-hid-core.c | 32 +- drivers/hwmon/pmbus/pmbus.h | 1 drivers/hwmon/pmbus/pmbus_core.c | 18 - drivers/hwmon/sch56xx-common.c | 2 drivers/hwtracing/coresight/coresight-etm4x-sysfs.c | 8 drivers/i2c/busses/i2c-pasemi.c | 6 drivers/i2c/busses/i2c-xiic.c | 3 drivers/i2c/muxes/i2c-demux-pinctrl.c | 5 drivers/iio/adc/twl6030-gpadc.c | 2 drivers/iio/inkern.c | 34 +- drivers/input/input.c | 6 drivers/iommu/arm-smmu-v3.c | 1 drivers/irqchip/irq-nvic.c | 2 drivers/md/dm-ioctl.c | 2 drivers/media/pci/cx88/cx88-mpeg.c | 3 drivers/media/platform/davinci/vpif.c | 1 drivers/media/usb/go7007/s2250-board.c | 10 drivers/media/usb/hdpvr/hdpvr-video.c | 4 drivers/memory/emif.c | 8 drivers/mfd/asic3.c | 10 drivers/mfd/mc13xxx-core.c | 4 drivers/misc/kgdbts.c | 4 drivers/mmc/core/host.c | 15 drivers/mtd/onenand/generic.c | 7 drivers/mtd/ubi/fastmap.c | 28 + drivers/net/can/usb/ems_usb.c | 1 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 4 drivers/net/ethernet/micrel/Kconfig | 1 drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h | 10 drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.c | 8 drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.h | 4 drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c | 13 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 3 drivers/net/ethernet/sun/sunhme.c | 6 drivers/net/hamradio/6pack.c | 4 drivers/net/phy/broadcom.c | 21 + drivers/net/slip/slip.c | 2 drivers/net/veth.c | 2 drivers/net/wireless/ath/ath5k/eeprom.c | 3 drivers/net/wireless/ath/ath9k/htc_hst.c | 5 drivers/net/wireless/ath/carl9170/main.c | 2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c | 2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 48 --- drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c | 2 drivers/net/wireless/ray_cs.c | 6 drivers/pci/hotplug/pciehp_hpc.c | 2 drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 2 drivers/pinctrl/nomadik/pinctrl-nomadik.c | 4 drivers/pinctrl/pinconf-generic.c | 6 drivers/pinctrl/pinctrl-rockchip.c | 2 drivers/power/supply/ab8500_fg.c | 4 drivers/power/supply/wm8350_power.c | 97 +++++- drivers/ptp/ptp_sysfs.c | 4 drivers/pwm/pwm-lpc18xx-sct.c | 20 - drivers/remoteproc/qcom_wcnss.c | 1 drivers/rtc/rtc-wm8350.c | 11 drivers/scsi/aha152x.c | 6 drivers/scsi/bfa/bfad_attr.c | 26 - drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c | 2 drivers/scsi/libfc/fc_exch.c | 1 drivers/scsi/libsas/sas_ata.c | 2 drivers/scsi/mvsas/mv_init.c | 5 drivers/scsi/pm8001/pm8001_hwi.c | 13 drivers/scsi/pm8001/pm80xx_hwi.c | 11 drivers/scsi/qla2xxx/qla_isr.c | 1 drivers/scsi/zorro7xx.c | 2 drivers/soc/ti/wkup_m3_ipc.c | 4 drivers/spi/spi-tegra114.c | 4 drivers/spi/spi-tegra20-slink.c | 8 drivers/thermal/int340x_thermal/int3400_thermal.c | 2 drivers/tty/hvc/hvc_iucv.c | 4 drivers/tty/mxser.c | 15 drivers/tty/serial/kgdboc.c | 6 drivers/tty/serial/samsung.c | 5 drivers/usb/dwc3/dwc3-omap.c | 2 drivers/usb/serial/Kconfig | 1 drivers/usb/serial/pl2303.c | 1 drivers/usb/serial/pl2303.h | 3 drivers/usb/serial/usb-serial-simple.c | 7 drivers/usb/storage/ene_ub6250.c | 155 ++++------ drivers/usb/storage/realtek_cr.c | 2 drivers/video/fbdev/atafb.c | 12 drivers/video/fbdev/cirrusfb.c | 16 - drivers/video/fbdev/core/fbcvt.c | 53 +-- drivers/video/fbdev/nvidia/nv_i2c.c | 2 drivers/video/fbdev/omap2/omapfb/displays/connector-dvi.c | 1 drivers/video/fbdev/omap2/omapfb/displays/panel-dsi-cm.c | 8 drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c | 2 drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c | 4 drivers/video/fbdev/sm712fb.c | 46 -- drivers/video/fbdev/smscufx.c | 3 drivers/video/fbdev/w100fb.c | 15 drivers/w1/slaves/w1_therm.c | 8 fs/cifs/link.c | 3 fs/ext2/super.c | 6 fs/ext4/inode.c | 25 + fs/gfs2/rgrp.c | 3 fs/jffs2/build.c | 4 fs/jffs2/fs.c | 2 fs/jffs2/scan.c | 6 fs/jfs/inode.c | 3 fs/jfs/jfs_dmap.c | 7 fs/nfs/callback_xdr.c | 4 fs/nfsd/nfsproc.c | 2 fs/nfsd/xdr.h | 2 fs/ntfs/inode.c | 4 fs/ubifs/dir.c | 2 fs/ubifs/ioctl.c | 2 include/linux/blkdev.h | 8 include/linux/netdevice.h | 6 include/net/xfrm.h | 9 init/main.c | 6 kernel/events/core.c | 3 kernel/power/hibernate.c | 2 kernel/power/suspend_test.c | 8 kernel/printk/printk.c | 6 kernel/ptrace.c | 47 ++- kernel/sched/debug.c | 10 kernel/smp.c | 2 lib/raid6/test/test.c | 1 mm/kmemleak.c | 8 mm/memcontrol.c | 2 mm/memory.c | 24 + mm/mempolicy.c | 9 mm/mmap.c | 2 mm/mremap.c | 3 mm/page_alloc.c | 11 mm/rmap.c | 35 +- net/bluetooth/hci_event.c | 3 net/key/af_key.c | 6 net/netfilter/nf_conntrack_proto_tcp.c | 17 - net/netlink/af_netlink.c | 2 net/nfc/nci/core.c | 4 net/openvswitch/flow_netlink.c | 4 net/sunrpc/sched.c | 4 net/sunrpc/xprt.c | 7 net/sunrpc/xprtrdma/transport.c | 4 net/x25/af_x25.c | 11 net/xfrm/xfrm_policy.c | 24 - net/xfrm/xfrm_user.c | 14 scripts/gcc-plugins/latent_entropy_plugin.c | 44 +- security/selinux/xfrm.c | 2 security/smack/smack_lsm.c | 2 security/tomoyo/load_policy.c | 4 sound/core/pcm_misc.c | 2 sound/firewire/fcp.c | 4 sound/isa/cs423x/cs4236.c | 8 sound/soc/atmel/atmel_ssc_dai.c | 5 sound/soc/atmel/sam9g20_wm8731.c | 1 sound/soc/codecs/wm8350.c | 28 + sound/soc/davinci/davinci-i2s.c | 5 sound/soc/fsl/imx-es8328.c | 1 sound/soc/mxs/mxs-saif.c | 5 sound/soc/mxs/mxs-sgtl5000.c | 3 sound/soc/sh/fsi.c | 19 + sound/soc/soc-core.c | 2 sound/soc/soc-generic-dmaengine-pcm.c | 6 sound/soc/soc-topology.c | 3 sound/spi/at73c213.c | 27 + tools/build/feature/Makefile | 2 tools/testing/selftests/x86/check_cc.sh | 2 virt/kvm/kvm_main.c | 13 222 files changed, 1284 insertions(+), 728 deletions(-)
Adrian Hunter (2):
perf/core: Fix address filter parser for multiple filters perf/x86/intel/pt: Fix address filter config for 32-bit kernel
Alan Stern (1):
USB: usb-storage: Fix use of bitfields for hardware data in ene_ub6250.c
Alexander Lobakin (1):
MIPS: fix fortify panic when copying asm exception handlers
Alexey Galakhov (1):
scsi: mvsas: Add PCI ID of RocketRaid 2640
Alexey Khoroshilov (1):
NFS: remove unneeded check in decode_devicenotify_args()
Alistair Popple (1):
mm/pages_alloc.c: don't create ZONE_MOVABLE beyond the end of a node
Amadeusz Sławiński (1):
ASoC: topology: Allow TLV control to be either read or write
Andrew Price (1):
gfs2: Make sure FITRIM minlen is rounded up to fs block size
Armin Wolf (1):
hwmon: (sch56xx-common) Replace WDOG_ACTIVE with WDOG_HW_RUNNING
Arnaldo Carvalho de Melo (1):
tools build: Use $(shell ) instead of `` to get embedded libperl's ccopts
Baokun Li (3):
jffs2: fix use-after-free in jffs2_clear_xattr_subsystem
jffs2: fix memory leak in jffs2_do_mount_fs
jffs2: fix memory leak in jffs2_scan_medium
Bharata B Rao (1):
sched/debug: Remove mpol_get/put and task_lock/unlock from sched_show_numa
Brandon Wyman (1):
hwmon: (pmbus) Add Vin unit off handling
Casey Schaufler (1):
Fix incorrect type in assignment of ipv6 port for audit
Chaitanya Kulkarni (1):
loop: use sysfs_emit() in the sysfs xxx show()
Chen-Yu Tsai (2):
pinctrl: pinconf-generic: Print arguments for bias-pull-*
net: stmmac: Fix unset max_speed difference between DT and non-DT platforms
Christian Göttsche (1):
selinux: use correct type for context length
Christophe JAILLET (1):
scsi: zorro7xx: Fix a resource leak in zorro7xx_remove_one()
Codrin Ciubotariu (1):
ASoC: dmaengine: do not use a NULL prepare_slave_config() callback
Colin Ian King (2):
carl9170: fix missing bit-wise or operator for tx_params
iwlwifi: Fix -EIO error code that is never returned
Damien Le Moal (6):
scsi: libsas: Fix sas_ata_qc_issue() handling of NCQ NON DATA commands
scsi: pm8001: Fix command initialization in pm80XX_send_read_log()
scsi: pm8001: Fix command initialization in pm8001_chip_ssp_tm_req()
scsi: pm8001: Fix payload initialization in pm80xx_set_thermal_config()
scsi: pm8001: Fix abort all task initialization
scsi: pm8001: Fix pm8001_mpi_task_abort_resp()
Dan Carpenter (4):
NFSD: prevent underflow in nfssvc_decode_writeargs()
video: fbdev: fbcvt.c: fix printing in fb_cvt_print_name()
media: usb: go7007: s2250-board: fix leak in probe()
USB: storage: ums-realtek: fix error code in rts51x_read_mem()
Daniel González Cabanelas (1):
media: cx88-mpeg: clear interrupt status register before streaming video
Darren Hart (1):
ACPI/APEI: Limit printable size of BERT table data
David Heidelberg (1):
ARM: dts: qcom: fix gic_irq_domain_translate warnings for msm8960
David Matlack (1):
KVM: Prevent module exit until all VMs are freed
Dinh Nguyen (1):
net: ethernet: stmmac: fix altr_tse_pcs function when using a fixed-link
Dirk Müller (1):
lib/raid6/test: fix multiple definition linking error
Dmitry Baryshkov (1):
PM: core: keep irq flags in device_pm_check_callbacks()
Dmitry Torokhov (1):
HID: i2c-hid: fix GET/SET_REPORT for unnumbered reports
Dongliang Mu (2):
ntfs: add sanity check on allocation size
media: hdpvr: initialize dev->worker at hdpvr_register_videodev
Duoming Zhou (3):
drivers: hamradio: 6pack: fix UAF bug caused by mod_timer() net/x25: Fix null-ptr-deref caused by x25_disconnect
drivers: net: slip: fix NPD bug in sl_tx_timeout()
Dāvis Mosāns (1):
crypto: ccp - ccp_dmaengine_unregister release dma channels
Eddie James (1):
USB: serial: pl2303: add IBM device IDs
Evgeny Novikov (1):
video: fbdev: w100fb: Reset global state
Fabio M. De Francesco (1):
ALSA: pcm: Test for "silence" field in struct "pcm_format_data"
Fangrui Song (1):
arm64: module: remove (NOLOAD) from linker script
Florian Fainelli (1):
net: phy: broadcom: Fix brcm_fet_config_init()
Frank Wunderlich (1):
arm64: dts: broadcom: Fix sata nodename
George Kennedy (1):
video: fbdev: cirrusfb: check pixclock to avoid divide by zero
Greg Kroah-Hartman (1):
Linux 4.9.311
Guillaume Nault (1):
veth: Ensure eth header is in skb's linear part
Guo Ren (1):
arm64: patch_text: Fixup last cpu should be master
H. Nikolaus Schaller (1):
usb: dwc3: omap: fix "unbalanced disables for smps10_out1" on omap5evm
Haimin Zhang (2):
af_key: add __GFP_ZERO flag for compose_sadb_supported in function pfkey_register
jfs: prevent NULL deref in diFree
Hangyu Hua (1):
can: ems_usb: ems_usb_start_xmit(): fix double dev_kfree_skb() in error path
Harshit Mogalapalli (1):
cifs: potential buffer overflow in handling symlinks
Hector Martin (2):
brcmfmac: firmware: Allocate space for default boardrev in nvram
brcmfmac: pcie: Replace brcmf_pcie_copy_mem_todev with memcpy_toio
Helge Deller (1):
video: fbdev: sm712fb: Fix crash in smtcfb_read()
Herbert Xu (1):
crypto: authenc - Fix sleep in atomic context in decrypt_tail
Hou Wenlong (1):
KVM: x86/emulator: Defer not-present segment check in __load_segment_descriptor()
Hugh Dickins (1):
mempolicy: mbind_range() set_policy() after vma_merge()
Jakob Koschel (1):
powerpc/sysdev: fix incorrect use to determine if list is empty
James Clark (1):
coresight: Fix TRCCONFIGR.QE sysfs interface
Jann Horn (1):
ptrace: Check PTRACE_O_SUSPEND_SECCOMP permission on PTRACE_SEIZE
Jason A. Donenfeld (1):
gcc-plugins: latent_entropy: use /dev/urandom
Jia-Ju Bai (1):
memory: emif: check the pointer temp in get_device_details()
Jianglei Nie (1):
scsi: libfc: Fix use after free in fc_exch_abts_resp()
Jiasheng Jiang (14):
ASoC: ti: davinci-i2s: Add check for clk_enable()
ALSA: spi: Add check for clk_enable()
ASoC: mxs-saif: Handle errors for clk_enable
ASoC: atmel_ssc_dai: Handle errors for clk_enable
memory: emif: Add check for setup_interrupts
ASoC: wm8350: Handle error for wm8350_register_irq
ASoC: fsi: Add check for clk_enable
mtd: onenand: Check for error irq
ray_cs: Check ioremap return value
power: supply: wm8350-power: Handle error for wm8350_register_irq
power: supply: wm8350-power: Add missing free in free_charger_irq
mfd: mc13xxx: Add check for mc13xxx_irq_request
iio: adc: Add check for devm_request_threaded_irq
rtc: wm8350: Handle error for wm8350_register_irq
Jim Mattson (1):
KVM: x86/svm: Clear reserved bits written to PerfEvtSeln MSRs
Jing Yao (2):
video: fbdev: omapfb: panel-dsi-cm: Use sysfs_emit() instead of snprintf()
video: fbdev: omapfb: panel-tpo-td043mtea1: Use sysfs_emit() instead of snprintf()
Jiri Slaby (2):
mxser: fix xmit_buf leak in activate when LSR == 0xff
serial: samsung_tty: do not unlock port->lock for uart_write_wakeup()Johan Hovold (2):
USB: serial: simple: add Nokia phone driver
media: davinci: vpif: fix unbalanced runtime PM get
Jonathan Neuschäfer (2):
clk: loongson1: Terminate clk_div_table with sentinel element
clk: clps711x: Terminate clk_div_table with sentinel element
Jordy Zomer (1):
dm ioctl: prevent potential spectre v1 gadget
José Expósito (2):
Revert "Input: clear BTN_RIGHT/MIDDLE on buttonpads" drm/imx: Fix memory leak in imx_pd_connector_get_modes
Juergen Gross (1):
mm, page_alloc: fix build_zonerefs_node()
Krzysztof Kozlowski (3):
ARM: dts: exynos: fix UART3 pins configuration in Exynos5250
ARM: dts: exynos: add missing HDMI supplies on SMDK5250
ARM: dts: exynos: add missing HDMI supplies on SMDK5420
Kuldeep Singh (3):
arm64: dts: ns2: Fix spi-cpol and spi-cpha property
ARM: dts: spear1340: Update serial node properties
ARM: dts: spear13xx: Update SPI dma properties
Kunihiko Hayashi (1):
clk: uniphier: Fix fixed-rate initialization
Leo Ruan (1):
gpu: ipu-v3: Fix dev_dbg frequency output
Liam Beguin (2):
iio: inkern: apply consumer scale on IIO_VAL_INT cases
iio: inkern: make a best effort on offset calculation
Liguang Zhang (1):
PCI: pciehp: Clear cmd_busy bit in polling mode
Lin Ma (1):
nfc: nci: add flush_workqueue to prevent uaf
Lucas Denefle (1):
w1: w1_therm: fixes w1_seq for ds28ea00 sensors
Luiz Augusto von Dentz (1):
Bluetooth: Fix use after free in hci_send_acl
Lv Yunlong (1):
drbd: Fix five use after free bugs in get_initial_state
Maciej W. Rozycki (1):
DEC: Limit PMAX memory probing to R3k systems
Martin Povišer (1):
i2c: pasemi: Wait for write xfers to finish
Martin Varghese (1):
openvswitch: Fixed nd target mask field in the flow dump.
Mauricio Faria de Oliveira (1):
mm: fix race between MADV_FREE reclaim and blkdev direct IO read
Max Filippov (1):
xtensa: fix DTC warning unit_address_format
Maxim Kiselev (1):
powerpc: dts: t104xrdb: fix phy type for FMAN 4/5
Maxime Ripard (1):
drm/edid: Don't clear formats if using deep color
Miaohe Lin (1):
mm/mempolicy: fix mpol_new leak in shared_policy_replace
Miaoqian Lin (13):
spi: tegra114: Add missing IRQ check in tegra_spi_probe
soc: ti: wkup_m3_ipc: Fix IRQ check in wkup_m3_ipc_probe
ASoC: atmel: Add missing of_node_put() in at91sam9g20ek_audio_probe
video: fbdev: omapfb: Add missing of_node_put() in dvic_probe_of
ASoC: mxs: Fix error handling in mxs_sgtl5000_probe
power: supply: ab8500: Fix memory leak in ab8500_fg_sysfs_init drm/tegra: Fix reference leak in tegra_dsi_ganged_probe
mfd: asic3: Add missing iounmap() on error asic3_mfd_probe
remoteproc: qcom_wcnss: Add missing of_node_put() in wcnss_alloc_memory_region
clk: tegra: tegra124-emc: Fix missing put_device() call in emc_ensure_emc_driver
pinctrl: mediatek: Fix missing of_node_put() in mtk_pctrl_init
pinctrl: nomadik: Add missing of_node_put() in nmk_pinctrl_probe pinctrl/rockchip: Add missing of_node_put() in rockchip_pinctrl_probe
Michael Chan (1):
bnxt_en: Eliminate unintended link toggle during FW reset
Michael S. Tsirkin (1):
virtio_console: break out of buf poll on remove
Michael Schmitz (1):
video: fbdev: atari: Atari 2 bpp (STe) palette bugfix
Minghao Chi (1):
spi: tegra20: Use of_device_get_match_data()
Muhammad Usama Anjum (1):
selftests/x86: Add validity check and allow field splitting
Nadav Amit (1):
smp: Fix offline cpu check in flush_smp_call_function_queue()
Nathan Chancellor (1):
ARM: davinci: da850-evm: Avoid NULL pointer dereference
NeilBrown (2):
SUNRPC: avoid race between mod_timer() and del_timer_sync() SUNRPC/call_alloc: async tasks mustn't block waiting for memory
Pablo Neira Ayuso (1):
netfilter: nf_conntrack_tcp: preserve liberal flag in tcp options
Paolo Bonzini (1):
mmmremap.c: avoid pointless invalidate_range_start/end on mremap(old_size=0)
Patrick Rudolph (1):
hwmon: (pmbus) Add mutex to regulator ops
Patrick Wang (1):
mm: kmemleak: take a full lowmem check in kmemleak_*_phys()
Pavel Kubelun (1):
ARM: dts: qcom: ipq4019: fix sleep clock
Pavel Skripkin (2):
ath9k_htc: fix uninit value bugs
jfs: fix divide error in dbNextAG
Pawan Gupta (2):
x86/pm: Save the MSR validity status at context setup x86/speculation: Restore speculation related MSRs during S3 resume
Peter Rosin (1):
i2c: mux: demux-pinctrl: do not deactivate a master that is not active
Peter Xu (1):
mm: don't skip swap entry even if zap_details specified
Petr Machata (1):
af_netlink: Fix shift out of bounds in group mask calculation
Petr Vorel (1):
crypto: vmx - add missing dependencies
QintaoShen (1):
drm/amdkfd: Check for potential null return of kmalloc_array()
Quinn Tran (1):
scsi: qla2xxx: Fix incorrect reporting of task management failure
Rafael J. Wysocki (2):
ACPICA: Avoid walking the ACPI Namespace if it is not there
ACPI: CPPC: Avoid out of bounds access when parsing _CPC data
Randy Dunlap (16):
PM: hibernate: fix __setup handler error handling
PM: suspend: fix return value of __setup handler
clocksource: acpi_pm: fix return value of __setup handler
printk: fix return value of printk.devkmsg __setup handler
TOMOYO: fix __setup handlers return values
MIPS: RB532: fix return value of __setup handler
tty: hvc: fix return value of __setup handler
kgdboc: fix return value of __setup handler
kgdbts: fix return value of __setup handler
mm/mmap: return 1 from stack_guard_gap __setup() handler mm/memcontrol: return 1 from cgroup.memory __setup() handler
ARM: 9187/1: JIVE: fix return value of __setup handler
scsi: aha152x: Fix aha152x_setup() __setup handler return value init/main.c: return 1 from handled __setup() functions
virtio_console: eliminate anonymous module_init & module_exit
net: micrel: fix KS8851_MLL Kconfig
Richard Leitner (1):
ARM: tegra: tamonten: Fix I2C3 pad setting
Richard Schleich (1):
ARM: dts: bcm2837: Add the missing L1/L2 cache information
Robert Hancock (1):
i2c: xiic: Make bus names unique
Shengjiu Wang (1):
ASoC: soc-core: skip zero num_dai component in searching dai name
Souptick Joarder (HPE) (1):
irqchip/nvic: Release nvic_base upon failure
Srinivas Pandruvada (1):
thermal: int340x: Increase bitmap size
Takashi Sakamoto (1):
ALSA: firewire-lib: fix uninitialized flag for AV/C deferred transaction
Taniya Das (1):
clk: qcom: clk-rcg2: Update the frac table for pixel clock
Theodore Ts'o (1):
ext4: don't BUG if someone dirty pages without asking ext4 first
Tim Gardner (1):
video: fbdev: nvidiafb: Use strscpy() to prevent buffer overflow
Tom Rix (1):
qlcnic: dcb: default to returning -EOPNOTSUPP
Tomas Paukrt (1):
crypto: mxs-dcp - Fix scatterlist processing
Tyrel Datwyler (1):
scsi: ibmvscsis: Increase INITIAL_SRP_LIMIT to 1024
Ulf Hansson (1):
mmc: host: Return an error when ->enable_sdio_irq() ops is missing
Uwe Kleine-König (2):
pwm: lpc18xx-sct: Initialize driver data and hardware before pwmchip_add()
ARM: mmp: Fix failure to remove sram device
Vinod Koul (1):
dmaengine: Revert "dmaengine: shdma: Fix runtime PM imbalance on error"
Vitaly Kuznetsov (1):
KVM: x86: Forbid VMM to set SYNIC/STIMER MSRs when SynIC wasn't activated
Wang Hai (1):
video: fbdev: smscufx: Fix null-ptr-deref in ufx_usb_probe()
Wang Wensheng (1):
ASoC: imx-es8328: Fix error return code in imx_es8328_probe()
Xiaomeng Tong (1):
ALSA: cs4236: fix an incorrect NULL check on list iterator
Xie Yongji (2):
block: Add a helper to validate the block size
virtio-blk: Use blk_validate_block_size() to validate block size
Xin Long (1):
xfrm: policy: match with both mark and mask on user interfaces
Yajun Deng (1):
netdevice: add the case if dev is NULL
Yang Guang (4):
video: fbdev: omapfb: acx565akm: replace snprintf with sysfs_emit
ptp: replace snprintf with sysfs_emit
scsi: mvsas: Replace snprintf() with sysfs_emit()
scsi: bfa: Replace snprintf() with sysfs_emit()
Zekun Shen (1):
ath5k: fix OOB in ath5k_eeprom_read_pcal_info_5111
Zhang Yi (1):
ext2: correct max file size computing
Zhenzhong Duan (1):
KVM: x86: Fix emulation in writing cr8
Zheyu Ma (2):
ethernet: sun: Free the coherent when failing in probing
video: fbdev: sm712fb: Fix crash in smtcfb_write()
Zhihao Cheng (3):
ubifs: Add missing iput if do_tmpfile() failed in rename whiteout
ubifs: setflags: Make dirtied_ino_d 8 bytes aligned
ubi: fastmap: Return error code if memory allocation fails in add_aeb()
Zhou Guanghui (1):
iommu/arm-smmu-v3: fix event handling soft lockup
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 9 -SUBLEVEL = 310 +SUBLEVEL = 311 EXTRAVERSION = NAME = Roaring Lionus
arch/arm/boot/dts/exynos5250-pinctrl.dtsi +1 -1
@@ -257,7 +257,7 @@ }; uart3_data: uart3-data { - samsung,pins = "gpa1-4", "gpa1-4"; + samsung,pins = "gpa1-4", "gpa1-5"; samsung,pin-function = <EXYNOS_PIN_FUNC_2>; samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
arch/arm/boot/dts/exynos5250-smdk5250.dts +3 -0
@@ -118,6 +118,9 @@ &hdmi { hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>; + vdd-supply = <&ldo8_reg>; + vdd_osc-supply = <&ldo10_reg>; + vdd_pll-supply = <&ldo8_reg>; }; &i2c_0 {
arch/arm/boot/dts/exynos5420-smdk5420.dts +3 -0
@@ -134,6 +134,9 @@ hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&hdmi_hpd_irq>; + vdd-supply = <&ldo6_reg>; + vdd_osc-supply = <&ldo7_reg>; + vdd_pll-supply = <&ldo6_reg>; }; &hsi2c_4 {
arch/arm/boot/dts/qcom-ipq4019.dtsi +2 -1
@@ -93,7 +93,8 @@ clocks { sleep_clk: sleep_clk { compatible = "fixed-clock"; - clock-frequency = <32768>; + clock-frequency = <32000>; + clock-output-names = "gcc_sleep_clk_src"; #clock-cells = <0>; }; };
arch/arm/boot/dts/qcom-msm8960.dtsi +5 -3
@@ -139,7 +139,9 @@ reg = <0x108000 0x1000>; qcom,ipc = <&l2cc 0x8 2>; - interrupts = <0 19 0>, <0 21 0>, <0 22 0>; + interrupts = <GIC_SPI 19 IRQ_TYPE_EDGE_RISING>, + <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>, + <GIC_SPI 22 IRQ_TYPE_EDGE_RISING>; interrupt-names = "ack", "err", "wakeup"; regulators {
@@ -185,7 +187,7 @@ compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm"; reg = <0x16440000 0x1000>, <0x16400000 0x1000>; - interrupts = <0 154 0x0>; + interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>; clocks = <&gcc GSBI5_UART_CLK>, <&gcc GSBI5_H_CLK>; clock-names = "core", "iface"; status = "disabled";
@@ -311,7 +313,7 @@ #address-cells = <1>; #size-cells = <0>; reg = <0x16080000 0x1000>; - interrupts = <0 147 0>; + interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>; spi-max-frequency = <24000000>; cs-gpios = <&msmgpio 8 0>;
arch/arm/boot/dts/spear1340.dtsi +3 -3
@@ -141,9 +141,9 @@ reg = <0xb4100000 0x1000>; interrupts = <0 105 0x4>; status = "disabled"; - dmas = <&dwdma0 12 0 1>, - <&dwdma0 13 1 0>; - dma-names = "tx", "rx"; + dmas = <&dwdma0 13 0 1>, + <&dwdma0 12 1 0>; + dma-names = "rx", "tx"; }; thermal@e07008c4 {
arch/arm/boot/dts/spear13xx.dtsi +3 -3
@@ -288,9 +288,9 @@ #size-cells = <0>; interrupts = <0 31 0x4>; status = "disabled"; - dmas = <&dwdma0 4 0 0>, - <&dwdma0 5 0 0>; - dma-names = "tx", "rx"; + dmas = <&dwdma0 5 0 0>, + <&dwdma0 4 0 0>; + dma-names = "rx", "tx"; }; rtc@e0580000 {
arch/arm/boot/dts/tegra20-tamonten.dtsi +3 -3
@@ -182,8 +182,8 @@ }; conf_ata { nvidia,pins = "ata", "atb", "atc", "atd", "ate", - "cdev1", "cdev2", "dap1", "dtb", "gma", - "gmb", "gmc", "gmd", "gme", "gpu7", + "cdev1", "cdev2", "dap1", "dtb", "dtf", + "gma", "gmb", "gmc", "gmd", "gme", "gpu7", "gpv", "i2cp", "irrx", "irtx", "pta", "rm", "slxa", "slxk", "spia", "spib", "uac";
@@ -202,7 +202,7 @@ }; conf_crtp { nvidia,pins = "crtp", "dap2", "dap3", "dap4", - "dtc", "dte", "dtf", "gpu", "sdio1", + "dtc", "dte", "gpu", "sdio1", "slxc", "slxd", "spdi", "spdo", "spig", "uda"; nvidia,pull = <TEGRA_PIN_PULL_NONE>;
arch/arm/mach-davinci/board-da850-evm.c +3 -1
@@ -1043,11 +1043,13 @@ static int __init da850_evm_config_emac(void)int ret;u32 val;struct davinci_soc_info *soc_info = &davinci_soc_info; -u8 rmii_en = soc_info->emac_pdata->rmii_en; +u8 rmii_en;if (!machine_is_davinci_da850_evm ())return 0 ; + rmii_en = soc_info->emac_pdata->rmii_en; + cfg_chip3_base =DA8XX_SYSCFG0_VIRT (DA8XX_CFGCHIP3_REG ); val =__raw_readl (cfg_chip3_base);
arch/arm/mach-mmp/sram.c +12 -10
@@ -75,6 +75,8 @@ static int sram_probe(struct platform_device *pdev)if (!info)return -ENOMEM ; +platform_set_drvdata (pdev, info); + res =platform_get_resource (pdev,IORESOURCE_MEM ,0 );if (res ==NULL ) {dev_err (&pdev->dev,"no memory resource defined\n" );
@@ -110,8 +112,6 @@ static int sram_probe(struct platform_device *pdev)list_add (&info->node, &sram_bank_list);mutex_unlock (&sram_lock); -platform_set_drvdata (pdev, info); -dev_info (&pdev->dev,"initialized\n" );return 0 ;
@@ -130,17 +130,19 @@ static int sram_remove(struct platform_device *pdev)struct sram_bank_info *info; info =platform_get_drvdata (pdev); -if (info ==NULL ) -return -ENODEV ; -mutex_lock (&sram_lock); -list_del (&info->node); -mutex_unlock (&sram_lock); +if (info->sram_size) { +mutex_lock (&sram_lock); +list_del (&info->node); +mutex_unlock (&sram_lock); + +gen_pool_destroy (info->gpool); +iounmap (info->sram_virt); +kfree (info->pool_name); + } -gen_pool_destroy (info->gpool); -iounmap (info->sram_virt); -kfree (info->pool_name);kfree (info); +return 0 ; }
arch/arm/mach-s3c24xx/mach-jive.c +3 -3
@@ -240,11 +240,11 @@ static int __init jive_mtdset(char *options)unsigned long set;if (options ==NULL || options[0 ] =='\0' ) -return 0 ; +return 1 ;if (kstrtoul (options,10 , &set)) {printk (KERN_ERR "failed to parse mtdset=%s\n" , options); -return 0 ; +return 1 ; }switch (set) {
@@ -259,7 +259,7 @@ static int __init jive_mtdset(char *options) "using default.", set); } -return 0 ; +return 1 ; }/* parse the mtdset= option given to the kernel command line */
arch/arm64/boot/dts/broadcom/bcm2837.dtsi +49 -0
79 lines not on this page · raw message
arch/arm64/boot/dts/broadcom/ns2-svk.dts +4 -4
@@ -103,8 +103,8 @@ compatible = "silabs,si3226x"; reg = <0>; spi-max-frequency = <5000000>; - spi-cpha = <1>; - spi-cpol = <1>; + spi-cpha; + spi-cpol; pl022,hierarchy = <0>; pl022,interface = <0>; pl022,slave-tx-disable = <0>;
@@ -127,8 +127,8 @@ at25,byte-len = <0x8000>; at25,addr-mode = <2>; at25,page-size = <64>; - spi-cpha = <1>; - spi-cpol = <1>; + spi-cpha; + spi-cpol; pl022,hierarchy = <0>; pl022,interface = <0>; pl022,slave-tx-disable = <0>;
arch/arm64/boot/dts/broadcom/ns2.dtsi +1 -1
@@ -514,7 +514,7 @@ }; }; - sata: ahci@663f2000 { + sata: sata@663f2000 { compatible = "brcm,iproc-ahci", "generic-ahci"; reg = <0x663f2000 0x1000>; reg-names = "ahci";
arch/arm64/kernel/insn.c +2 -2
@@ -234,8 +234,8 @@ static int __kprobes aarch64_insn_patch_text_cb(void *arg)int i, ret =0 ;struct aarch64_insn_patch *pp = arg; -/* The first CPU becomes master */ -if (atomic_inc_return (&pp->cpu_count) ==1 ) { +/* The last CPU becomes master */ +if (atomic_inc_return (&pp->cpu_count) ==num_online_cpus ()) {for (i =0 ; ret ==0 && i < pp->insn_cnt; i++) ret =aarch64_insn_patch_text_nosync (pp->text_addrs[i], pp->new_insns[i]);
arch/arm64/kernel/module.lds +1 -1
@@ -1,3 +1,3 @@ SECTIONS { - .plt (NOLOAD) : { BYTE(0) } + .plt : { BYTE(0) } }
arch/mips/dec/prom/Makefile +1 -1
@@ -5,4 +5,4 @@ lib-y += init.o memory.o cmdline.o identify.o console.o -lib-$(CONFIG_32BIT) += locore.o +lib-$(CONFIG_CPU_R3000) += locore.o
arch/mips/include/asm/dec/prom.h +5 -10
@@ -47,16 +47,11 @@*/ #define REX_PROM_MAGIC 0x30464354 -#ifdef CONFIG_64BIT - -#define prom_is_rex (magic) 1/* KN04 and KN05 are REX PROMs. */ - -#else /* !CONFIG_64BIT */ - -#define prom_is_rex (magic) ((magic) == REX_PROM_MAGIC) - -#endif /* !CONFIG_64BIT */ - +/* KN04 and KN05 are REX PROMs, so only do the check for R3k systems. */ +static inline bool prom_is_rex (u32 magic) +{ +return !IS_ENABLED (CONFIG_CPU_R3000 ) || magic ==REX_PROM_MAGIC ; +}/* * 3MIN/MAXINE PROM entry points for DS5000/1xx's, DS5000/xx's and
arch/mips/include/asm/setup.h +1 -1
@@ -13,7 +13,7 @@ static inline void setup_8250_early_printk_port(unsigned long base, unsigned int reg_shift, unsigned int timeout) {}#endif -extern void set_handler (unsigned long offset,void *addr,unsigned long len); +void set_handler (unsigned long offset,const void *addr,unsigned long len);extern void set_uncached_handler (unsigned long offset,void *addr,unsigned long len);typedef void (*vi_handler_t )(void );
arch/mips/kernel/traps.c +11 -11
@@ -2019,19 +2019,19 @@ static void *set_vi_srs_handler(int n, vi_handler_t addr, int srs)* If no shadow set is selected then use the default handler * that does normal register saving and standard interrupt exit */ -extern char except_vec_vi, except_vec_vi_lui; -extern char except_vec_vi_ori, except_vec_vi_end; -extern char rollback_except_vec_vi; -char *vec_start =using_rollback_handler () ? - &rollback_except_vec_vi : &except_vec_vi; +extern const u8 except_vec_vi[], except_vec_vi_lui[]; +extern const u8 except_vec_vi_ori[], except_vec_vi_end[]; +extern const u8 rollback_except_vec_vi[]; +const u8 *vec_start =using_rollback_handler () ? + rollback_except_vec_vi : except_vec_vi;#if defined(CONFIG_CPU_MICROMIPS ) || defined(CONFIG_CPU_BIG_ENDIAN ) -const int lui_offset = &except_vec_vi_lui - vec_start +2 ; -const int ori_offset = &except_vec_vi_ori - vec_start +2 ; +const int lui_offset = except_vec_vi_lui - vec_start +2 ; +const int ori_offset = except_vec_vi_ori - vec_start +2 ;#else -const int lui_offset = &except_vec_vi_lui - vec_start; -const int ori_offset = &except_vec_vi_ori - vec_start; +const int lui_offset = except_vec_vi_lui - vec_start; +const int ori_offset = except_vec_vi_ori - vec_start;#endif -const int handler_len = &except_vec_vi_end - vec_start; +const int handler_len = except_vec_vi_end - vec_start;if (handler_len >VECTORSPACING ) {/*
@@ -2251,7 +2251,7 @@ void per_cpu_trap_init(bool is_boot_cpu) }/* Install CPU exception handler */ -void set_handler (unsigned long offset,void *addr,unsigned long size) +void set_handler (unsigned long offset,const void *addr,unsigned long size) {#ifdef CONFIG_CPU_MICROMIPS memcpy ((void *)(ebase + offset), ((unsigned char *)addr -1 ), size);
arch/mips/rb532/devices.c +2 -4
@@ -313,11 +313,9 @@ static int __init plat_setup_devices(void)static int __init setup_kmac (char *s) {printk (KERN_INFO "korina mac = %s\n" , s); -if (!mac_pton (s, korina_dev0_data.mac)) { +if (!mac_pton (s, korina_dev0_data.mac))printk (KERN_ERR "Invalid mac\n" ); -return -EINVAL ; - } -return 0 ; +return 1 ; }__setup ("kmac=" , setup_kmac);
arch/powerpc/boot/dts/fsl/t104xrdb.dtsi +2 -2
@@ -139,12 +139,12 @@ fman@400000 { ethernet@e6000 { phy-handle = <&phy_rgmii_0>; - phy-connection-type = "rgmii"; + phy-connection-type = "rgmii-id"; }; ethernet@e8000 { phy-handle = <&phy_rgmii_1>; - phy-connection-type = "rgmii"; + phy-connection-type = "rgmii-id"; }; mdio0: mdio@fc000 {
arch/powerpc/sysdev/fsl_gtm.c +2 -2
@@ -90,7 +90,7 @@ static LIST_HEAD(gtms);*/ struct gtm_timer *gtm_get_timer16 (void ) { -struct gtm *gtm =NULL ; +struct gtm *gtm;int i;list_for_each_entry (gtm, >ms, list_node) {
@@ -107,7 +107,7 @@ struct gtm_timer *gtm_get_timer16(void)spin_unlock_irq (>m->lock); } -if (gtm) +if (!list_empty (>ms))return ERR_PTR (-EBUSY );return ERR_PTR (-ENODEV ); }
arch/x86/events/intel/pt.c +1 -1
@@ -410,7 +410,7 @@ static u64 pt_config_filters(struct perf_event *event) pt->filters.filter[range].msr_b = filter->msr_b; } - rtit_ctl |= filter->config << pt_address_ranges[range].reg_off; + rtit_ctl |= (u64 )filter->config << pt_address_ranges[range].reg_off; }return rtit_ctl;
arch/x86/kvm/emulate.c +9 -5
@@ -1674,11 +1674,6 @@ static int __load_segment_descriptor(struct x86_emulate_ctxt *ctxt, goto exception; } -if (!seg_desc.p) { - err_vec = (seg ==VCPU_SREG_SS ) ?SS_VECTOR :NP_VECTOR ; - goto exception; - } - dpl = seg_desc.dpl;switch (seg) {
@@ -1718,6 +1713,10 @@ static int __load_segment_descriptor(struct x86_emulate_ctxt *ctxt,case VCPU_SREG_TR :if (seg_desc.s || (seg_desc.type !=1 && seg_desc.type !=9 )) goto exception; +if (!seg_desc.p) { + err_vec =NP_VECTOR ; + goto exception; + } old_desc = seg_desc; seg_desc.type |=2 ;/* busy */ ret = ctxt->ops->cmpxchg_emulated(ctxt, desc_addr, &old_desc, &seg_desc,
@@ -1742,6 +1741,11 @@ static int __load_segment_descriptor(struct x86_emulate_ctxt *ctxt,break ; } +if (!seg_desc.p) { + err_vec = (seg ==VCPU_SREG_SS ) ?SS_VECTOR :NP_VECTOR ; + goto exception; + } +if (seg_desc.s) {/* mark segment as accessed */ if (!(seg_desc.type &1 )) {
arch/x86/kvm/hyperv.c +15 -0
@@ -244,6 +244,9 @@ static int synic_set_msr(struct kvm_vcpu_hv_synic *synic,case HV_X64_MSR_EOM : {int i; +if (!synic->active) +break ; +for (i =0 ; i <ARRAY_SIZE (synic->sint); i++)kvm_hv_notify_acked_sint (vcpu, i);break ;
@@ -504,6 +507,12 @@ static int stimer_start(struct kvm_vcpu_hv_stimer *stimer)static int stimer_set_config (struct kvm_vcpu_hv_stimer *stimer,u64 config,bool host) { +struct kvm_vcpu *vcpu =stimer_to_vcpu (stimer); +struct kvm_vcpu_hv_synic *synic =vcpu_to_synic (vcpu); + +if (!synic->active && (!host || config)) +return 1 ; +trace_kvm_hv_stimer_set_config (stimer_to_vcpu (stimer)->vcpu_id, stimer->index, config, host);
@@ -518,6 +527,12 @@ static int stimer_set_config(struct kvm_vcpu_hv_stimer *stimer, u64 config,static int stimer_set_count (struct kvm_vcpu_hv_stimer *stimer,u64 count,bool host) { +struct kvm_vcpu *vcpu =stimer_to_vcpu (stimer); +struct kvm_vcpu_hv_synic *synic =vcpu_to_synic (vcpu); + +if (!synic->active && (!host || count)) +return 1 ; +trace_kvm_hv_stimer_set_count (stimer_to_vcpu (stimer)->vcpu_id, stimer->index, count, host);
arch/x86/kvm/lapic.c +1 -4
@@ -1767,10 +1767,7 @@ void kvm_set_lapic_tscdeadline_msr(struct kvm_vcpu *vcpu, u64 data)void kvm_lapic_set_tpr (struct kvm_vcpu *vcpu,unsigned long cr8) { -struct kvm_lapic *apic = vcpu->arch.apic; - -apic_set_tpr (apic, ((cr8 &0x0f ) <<4 ) - | (kvm_lapic_get_reg (apic,APIC_TASKPRI ) &4 )); +apic_set_tpr (vcpu->arch.apic, (cr8 &0x0f ) <<4 ); }u64 kvm_lapic_get_cr8 (struct kvm_vcpu *vcpu)
arch/x86/kvm/pmu_amd.c +3 -5
@@ -139,12 +139,10 @@ static int amd_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)/* MSR_K7_EVNTSELn */ pmc =get_gp_pmc (pmu, msr,MSR_K7_EVNTSEL0 );if (pmc) { -if (data == pmc->eventsel) -return 0 ; -if (!(data & pmu->reserved_bits)) { + data &= ~pmu->reserved_bits; +if (data != pmc->eventsel)reprogram_gp_counter (pmc, data); -return 0 ; - } +return 0 ; }return 1 ;
arch/x86/power/cpu.c +19 -2
@@ -41,7 +41,8 @@ static void msr_save_context(struct saved_context *ctxt)struct saved_msr *end = msr + ctxt->saved_msrs.num;while (msr < end) { - msr->valid = !rdmsrl_safe (msr->info.msr_no, &msr->info.reg.q); +if (msr->valid) +rdmsrl (msr->info.msr_no, msr->info.reg.q); msr++; } }
@@ -419,8 +420,10 @@ static int msr_build_context(const u32 *msr_id, const int num) }for (i = saved_msrs->num, j =0 ; i < total_num; i++, j++) { +u64 dummy; + msr_array[i].info.msr_no = msr_id[j]; - msr_array[i].valid = false; + msr_array[i].valid = !rdmsrl_safe (msr_id[j], &dummy); msr_array[i].info.reg.q =0 ; } saved_msrs->num = total_num;
@@ -507,10 +510,24 @@ static int pm_cpu_check(const struct x86_cpu_id *c)return ret; } +static void pm_save_spec_msr (void ) +{ +u32 spec_msr_id[] = { +MSR_IA32_SPEC_CTRL , +MSR_IA32_TSX_CTRL , +MSR_TSX_FORCE_ABORT , +MSR_IA32_MCU_OPT_CTRL , +MSR_AMD64_LS_CFG , + }; + +msr_build_context (spec_msr_id,ARRAY_SIZE (spec_msr_id)); +} +static int pm_check_save_msr (void ) {dmi_check_system (msr_save_dmi_table);pm_cpu_check (msr_save_cpu_table); +pm_save_spec_msr ();return 0 ; }
arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi +4 -4
@@ -7,19 +7,19 @@ reg = <0x00000000 0x08000000>; bank-width = <2>; device-width = <2>; - partition@0x0 { + partition@0 { label = "data"; reg = <0x00000000 0x06000000>; }; - partition@0x6000000 { + partition@6000000 { label = "boot loader area"; reg = <0x06000000 0x00800000>; }; - partition@0x6800000 { + partition@6800000 { label = "kernel image"; reg = <0x06800000 0x017e0000>; }; - partition@0x7fe0000 { + partition@7fe0000 { label = "boot environment"; reg = <0x07fe0000 0x00020000>; };
arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi +4 -4
@@ -7,19 +7,19 @@ reg = <0x08000000 0x01000000>; bank-width = <2>; device-width = <2>; - partition@0x0 { + partition@0 { label = "boot loader area"; reg = <0x00000000 0x00400000>; }; - partition@0x400000 { + partition@400000 { label = "kernel image"; reg = <0x00400000 0x00600000>; }; - partition@0xa00000 { + partition@a00000 { label = "data"; reg = <0x00a00000 0x005e0000>; }; - partition@0xfe0000 { + partition@fe0000 { label = "boot environment"; reg = <0x00fe0000 0x00020000>; };
arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi +2 -2
@@ -7,11 +7,11 @@ reg = <0x08000000 0x00400000>; bank-width = <2>; device-width = <2>; - partition@0x0 { + partition@0 { label = "boot loader area"; reg = <0x00000000 0x003f0000>; }; - partition@0x3f0000 { + partition@3f0000 { label = "boot environment"; reg = <0x003f0000 0x00010000>; };
crypto/authenc.c +1 -1
@@ -268,7 +268,7 @@ static int crypto_authenc_decrypt_tail(struct aead_request *req, dst =scatterwalk_ffwd (areq_ctx->dst, req->dst, req->assoclen);skcipher_request_set_tfm (skreq, ctx->enc); -skcipher_request_set_callback (skreq,aead_request_flags (req), +skcipher_request_set_callback (skreq, flags, req->base.complete, req->base.data);skcipher_request_set_crypt (skreq, src, dst, req->cryptlen - authsize, req->iv);
drivers/acpi/acpica/nswalk.c +3 -0
@@ -203,6 +203,9 @@ acpi_ns_walk_namespace(acpi_object_type type,if (start_node ==ACPI_ROOT_OBJECT ) { start_node = acpi_gbl_root_node; +if (!start_node) { +return_ACPI_STATUS (AE_NO_NAMESPACE ); + } }/* Null child means "get first node" */
drivers/acpi/apei/bert.c +6 -2
@@ -31,6 +31,7 @@#undef pr_fmt#define pr_fmt (fmt) "BERT: " fmt +#define ACPI_BERT_PRINT_MAX_LEN 1024static int bert_disable;
@@ -59,8 +60,11 @@ static void __init bert_print_all(struct acpi_bert_region *region, }pr_info_once ("Error records from previous boot:\n" ); - - cper_estatus_print(KERN_INFO HW_ERR, estatus); +if (region_len <ACPI_BERT_PRINT_MAX_LEN ) + cper_estatus_print(KERN_INFO HW_ERR, estatus); +else +pr_info_once ("Max print length exceeded, table data is available at:\n" +"/sys/firmware/acpi/tables/data/BERT" );/* * Because the boot error source is "one-time polled" type,
drivers/acpi/cppc_acpi.c +5 -0
@@ -681,6 +681,11 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr) cpc_obj = &out_obj->package.elements[0 ];if (cpc_obj->type ==ACPI_TYPE_INTEGER ) { num_ent = cpc_obj->integer.value; +if (num_ent <=1 ) { +pr_debug ("Unexpected _CPC NumEntries value (%d) for CPU:%d\n" , + num_ent, pr->id); + goto out_free; + } }else {pr_debug ("Unexpected entry type(%d) for NumEntries\n" , cpc_obj->type);
drivers/base/power/main.c +4 -2
@@ -1766,7 +1766,9 @@ static bool pm_ops_is_empty(const struct dev_pm_ops *ops)void device_pm_check_callbacks (struct device *dev) { -spin_lock_irq (&dev->power.lock); +unsigned long flags; + +spin_lock_irqsave (&dev->power.lock, flags); dev->power.no_pm_callbacks = (!dev->bus || (pm_ops_is_empty (dev->bus->pm) && !dev->bus->suspend && !dev->bus->resume)) &&
@@ -1776,5 +1778,5 @@ void device_pm_check_callbacks(struct device *dev) (!dev->pm_domain ||pm_ops_is_empty (&dev->pm_domain->ops)) && (!dev->driver || (pm_ops_is_empty (dev->driver->pm) && !dev->driver->suspend && !dev->driver->resume)); -spin_unlock_irq (&dev->power.lock); +spin_unlock_irqrestore (&dev->power.lock, flags); }
drivers/block/drbd/drbd_int.h +4 -4
@@ -1696,22 +1696,22 @@ struct sib_info { };void drbd_bcast_event (struct drbd_device *device,const struct sib_info *sib); -extern void notify_resource_state (struct sk_buff *, +extern int notify_resource_state (struct sk_buff *,unsigned int ,struct drbd_resource *,struct resource_info *,enum drbd_notification_type ); -extern void notify_device_state (struct sk_buff *, +extern int notify_device_state (struct sk_buff *,unsigned int ,struct drbd_device *,struct device_info *,enum drbd_notification_type ); -extern void notify_connection_state (struct sk_buff *, +extern int notify_connection_state (struct sk_buff *,unsigned int ,struct drbd_connection *,struct connection_info *,enum drbd_notification_type ); -extern void notify_peer_device_state(struct sk_buff *, +extern int notify_peer_device_state(struct sk_buff *, unsigned int, struct drbd_peer_device *, struct peer_device_info *,
drivers/block/drbd/drbd_nl.c +25 -16
156 lines not on this page · raw message
drivers/block/drbd/drbd_state.c +9 -9
@@ -1505,7 +1505,7 @@ int drbd_bitmap_io_from_worker(struct drbd_device *device,return rv; } -void notify_resource_state_change (struct sk_buff *skb, +int notify_resource_state_change (struct sk_buff *skb,unsigned int seq,struct drbd_resource_state_change *resource_state_change,enum drbd_notification_type type)
@@ -1518,10 +1518,10 @@ void notify_resource_state_change(struct sk_buff *skb, .res_susp_fen = resource_state_change->susp_fen[NEW], }; -notify_resource_state (skb, seq, resource, &resource_info, type); +return notify_resource_state (skb, seq, resource, &resource_info, type); } -void notify_connection_state_change (struct sk_buff *skb, +int notify_connection_state_change (struct sk_buff *skb,unsigned int seq,struct drbd_connection_state_change *connection_state_change,enum drbd_notification_type type)
@@ -1532,10 +1532,10 @@ void notify_connection_state_change(struct sk_buff *skb, .conn_role = connection_state_change->peer_role[NEW], }; -notify_connection_state (skb, seq, connection, &connection_info, type); +return notify_connection_state (skb, seq, connection, &connection_info, type); } -void notify_device_state_change (struct sk_buff *skb, +int notify_device_state_change (struct sk_buff *skb,unsigned int seq,struct drbd_device_state_change *device_state_change,enum drbd_notification_type type)
@@ -1545,10 +1545,10 @@ void notify_device_state_change(struct sk_buff *skb, .dev_disk_state = device_state_change->disk_state[NEW], }; -notify_device_state (skb, seq, device, &device_info, type); +return notify_device_state (skb, seq, device, &device_info, type); } -void notify_peer_device_state_change (struct sk_buff *skb, +int notify_peer_device_state_change (struct sk_buff *skb,unsigned int seq,struct drbd_peer_device_state_change *p,enum drbd_notification_type type)
@@ -1562,7 +1562,7 @@ void notify_peer_device_state_change(struct sk_buff *skb, .peer_resync_susp_dependency = p->resync_susp_dependency[NEW], }; -notify_peer_device_state (skb, seq, peer_device, &peer_device_info, type); +return notify_peer_device_state (skb, seq, peer_device, &peer_device_info, type); }static void broadcast_state_change (struct drbd_state_change *state_change)
@@ -1570,7 +1570,7 @@ static void broadcast_state_change(struct drbd_state_change *state_change)struct drbd_resource_state_change *resource_state_change = &state_change->resource[0 ];bool resource_state_has_changed;unsigned int n_device, n_connection, n_peer_device, n_peer_devices; -void (*last_func)(struct sk_buff *,unsigned int ,void *, +int (*last_func)(struct sk_buff *,unsigned int ,void *,enum drbd_notification_type ) =NULL ;void *uninitialized_var (last_arg );
drivers/block/drbd/drbd_state_change.h +4 -4
@@ -43,19 +43,19 @@ extern struct drbd_state_change *remember_old_state(struct drbd_resource *, gfp_extern void copy_old_to_new_state_change (struct drbd_state_change *);extern void forget_state_change (struct drbd_state_change *); -extern void notify_resource_state_change (struct sk_buff *, +extern int notify_resource_state_change (struct sk_buff *,unsigned int ,struct drbd_resource_state_change *,enum drbd_notification_type type); -extern void notify_connection_state_change (struct sk_buff *, +extern int notify_connection_state_change (struct sk_buff *,unsigned int ,struct drbd_connection_state_change *,enum drbd_notification_type type); -extern void notify_device_state_change (struct sk_buff *, +extern int notify_device_state_change (struct sk_buff *,unsigned int ,struct drbd_device_state_change *,enum drbd_notification_type type); -extern void notify_peer_device_state_change (struct sk_buff *, +extern int notify_peer_device_state_change (struct sk_buff *,unsigned int ,struct drbd_peer_device_state_change *,enum drbd_notification_type type);
drivers/block/loop.c +5 -5
@@ -773,33 +773,33 @@ static ssize_t loop_attr_backing_file_show(struct loop_device *lo, char *buf)static ssize_t loop_attr_offset_show (struct loop_device *lo,char *buf) { -return sprintf (buf,"%llu\n" , (unsigned long long )lo->lo_offset); +return sysfs_emit (buf,"%llu\n" , (unsigned long long )lo->lo_offset); }static ssize_t loop_attr_sizelimit_show (struct loop_device *lo,char *buf) { -return sprintf (buf,"%llu\n" , (unsigned long long )lo->lo_sizelimit); +return sysfs_emit (buf,"%llu\n" , (unsigned long long )lo->lo_sizelimit); }static ssize_t loop_attr_autoclear_show (struct loop_device *lo,char *buf) {int autoclear = (lo->lo_flags &LO_FLAGS_AUTOCLEAR ); -return sprintf (buf,"%s\n" , autoclear ?"1" :"0" ); +return sysfs_emit (buf,"%s\n" , autoclear ?"1" :"0" ); }static ssize_t loop_attr_partscan_show (struct loop_device *lo,char *buf) {int partscan = (lo->lo_flags &LO_FLAGS_PARTSCAN ); -return sprintf (buf,"%s\n" , partscan ?"1" :"0" ); +return sysfs_emit (buf,"%s\n" , partscan ?"1" :"0" ); }static ssize_t loop_attr_dio_show (struct loop_device *lo,char *buf) {int dio = (lo->lo_flags &LO_FLAGS_DIRECT_IO ); -return sprintf (buf,"%s\n" , dio ?"1" :"0" ); +return sysfs_emit (buf,"%s\n" , dio ?"1" :"0" ); }LOOP_ATTR_RO (backing_file);
drivers/block/virtio_blk.c +10 -2
@@ -692,9 +692,17 @@ static int virtblk_probe(struct virtio_device *vdev) err =virtio_cread_feature (vdev,VIRTIO_BLK_F_BLK_SIZE , struct virtio_blk_config, blk_size, &blk_size); -if (!err) +if (!err) { + err =blk_validate_block_size (blk_size); +if (err) { +dev_err (&vdev->dev, +"virtio_blk: invalid block size: 0x%x\n" , + blk_size); + goto out_free_tags; + } +blk_queue_logical_block_size (q, blk_size); -else + }else blk_size =queue_logical_block_size (q);/* Use topology information if available */
drivers/char/virtio_console.c +11 -4
@@ -2004,6 +2004,13 @@ static void virtcons_remove(struct virtio_device *vdev)list_del (&portdev->list);spin_unlock_irq (&pdrvdata_lock); +/* Device is going away, exit any polling for buffers */ +virtio_break_device (vdev); +if (use_multiport (portdev)) +flush_work (&portdev->control_work); +else +flush_work (&portdev->config_work); +/* Disable interrupts for vqs */ vdev->config->reset (vdev);/* Finish up work that's lined up */
@@ -2277,7 +2284,7 @@ static struct virtio_driver virtio_rproc_serial = { .remove = virtcons_remove, }; -static int __init init (void ) +static int __init virtio_console_init (void ) {int err;
@@ -2314,7 +2321,7 @@ static int __init init(void)return err; } -static void __exit fini(void) +static void __exit virtio_console_fini(void) {reclaim_dma_bufs ();
@@ -2324,8 +2331,8 @@ static void __exit fini(void)class_destroy (pdrvdata.class);debugfs_remove_recursive (pdrvdata.debugfs_dir); } -module_init (init); -module_exit (fini); +module_init (virtio_console_init); +module_exit (virtio_console_fini);MODULE_DESCRIPTION ("Virtio console driver" );MODULE_LICENSE ("GPL" );
drivers/clk/clk-clps711x.c +2 -0
@@ -32,11 +32,13 @@ static const struct clk_div_table spi_div_table[] = { { .val = 1, .div = 8, }, { .val = 2, .div = 2, }, { .val = 3, .div = 1, }, + {/* sentinel */ } };static const struct clk_div_table timer_div_table[] = { { .val =0 , .div =256 , }, { .val =1 , .div =1 , }, + {/* sentinel */ } }; struct clps711x_clk {
drivers/clk/loongson1/clk-loongson1c.c +1 -0
@@ -40,6 +40,7 @@ static const struct clk_div_table ahb_div_table[] = { [1] = { .val = 1, .div = 4 }, [2] = { .val = 2, .div = 3 }, [3] = { .val = 3, .div = 3 }, + [4] = { /* sentinel */ } };void __init ls1x_clk_init (void )
drivers/clk/qcom/clk-rcg2.c +1 -0
@@ -644,6 +644,7 @@ static const struct frac_entry frac_table_pixel[] = { { 2, 9 }, { 4, 9 }, { 1, 1 }, + { 2, 3 }, { } };
drivers/clk/tegra/clk-emc.c +1 -0
@@ -190,6 +190,7 @@ static struct tegra_emc *emc_ensure_emc_driver(struct tegra_clk_emc *tegra) tegra->emc =platform_get_drvdata (pdev);if (!tegra->emc) { +put_device (&pdev->dev);pr_err ("%s: cannot find EMC driver\n" , __func__);return NULL ; }
drivers/clk/uniphier/clk-uniphier-fixed-rate.c +1 -0
@@ -33,6 +33,7 @@ struct clk_hw *uniphier_clk_register_fixed_rate(struct device *dev, init.name = name; init.ops = &clk_fixed_rate_ops; + init.flags =0 ; init.parent_names =NULL ; init.num_parents =0 ;
drivers/clocksource/acpi_pm.c +4 -2
@@ -230,8 +230,10 @@ static int __init parse_pmtmr(char *arg)int ret; ret =kstrtouint (arg,16 , &base); -if (ret) -return ret; +if (ret) { +pr_warn ("PMTMR: invalid 'pmtmr=' value: '%s'\n" , arg); +return 1 ; + }pr_info ("PMTMR IOPort override: 0x%04x -> 0x%04x\n" , pmtmr_ioport, base);
drivers/crypto/ccp/ccp-dmaengine.c +16 -0
@@ -621,6 +621,20 @@ static int ccp_terminate_all(struct dma_chan *dma_chan)return 0 ; } +static void ccp_dma_release (struct ccp_device *ccp) +{ +struct ccp_dma_chan *chan; +struct dma_chan *dma_chan; +unsigned int i; + +for (i =0 ; i < ccp->cmd_q_count; i++) { + chan = ccp->ccp_dma_chan + i; + dma_chan = &chan->dma_chan; +tasklet_kill (&chan->cleanup_tasklet); +list_del_rcu (&dma_chan->device_node); + } +} +int ccp_dmaengine_register (struct ccp_device *ccp) {struct ccp_dma_chan *chan;
@@ -715,6 +729,7 @@ int ccp_dmaengine_register(struct ccp_device *ccp)return 0 ; err_reg: +ccp_dma_release (ccp);kmem_cache_destroy (ccp->dma_desc_cache); err_cache:
@@ -728,6 +743,7 @@ void ccp_dmaengine_unregister(struct ccp_device *ccp)struct dma_device *dma_dev = &ccp->dma_dev;dma_async_device_unregister (dma_dev); +ccp_dma_release (ccp);kmem_cache_destroy (ccp->dma_desc_cache);kmem_cache_destroy (ccp->dma_cmd_cache);
drivers/crypto/mxs-dcp.c +1 -1
@@ -328,7 +328,7 @@ static int mxs_dcp_aes_block_crypt(struct crypto_async_request *arq)memset (key +AES_KEYSIZE_128 ,0 ,AES_KEYSIZE_128 ); } -for_each_sg (req->src, src,sg_nents (src), i) { +for_each_sg (req->src, src,sg_nents (req->src), i) { src_buf =sg_virt (src); len =sg_dma_len (src); tlen += len;
drivers/crypto/vmx/Kconfig +4 -0
@@ -1,7 +1,11 @@ config CRYPTO_DEV_VMX_ENCRYPT tristate "Encryption acceleration support on P8 CPU" depends on CRYPTO_DEV_VMX + select CRYPTO_AES + select CRYPTO_CBC + select CRYPTO_CTR select CRYPTO_GHASH + select CRYPTO_XTS default m help Support for VMX cryptographic acceleration instructions on Power8 CPU.
drivers/dma/sh/shdma-base.c +1 -3
@@ -118,10 +118,8 @@ static dma_cookie_t shdma_tx_submit(struct dma_async_tx_descriptor *tx) ret =pm_runtime_get (schan->dev);spin_unlock_irq (&schan->chan_lock); -if (ret <0 ) { +if (ret <0 )dev_err (schan->dev,"%s(): GET = %d\n" , __func__, ret); -pm_runtime_put (schan->dev); - }pm_runtime_barrier (schan->dev);
drivers/gpu/drm/amd/amdkfd/kfd_events.c +2 -0
@@ -607,6 +607,8 @@ static struct kfd_event_waiter *alloc_event_waiters(uint32_t num_events) event_waiters =kmalloc_array (num_events,sizeof (struct kfd_event_waiter ),GFP_KERNEL ); +if (!event_waiters) +return NULL ;for (i =0 ; (event_waiters) && (i < num_events) ; i++) {INIT_LIST_HEAD (&event_waiters[i].waiters);
drivers/gpu/drm/drm_edid.c +0 -8
@@ -3791,16 +3791,8 @@ static void drm_parse_hdmi_deep_color_info(struct drm_connector *connector, connector->name, dc_bpc); info->bpc = dc_bpc; -/* -* Deep color support mandates RGB444 support for all video -* modes and forbids YCRCB422 support for all video modes per -* HDMI 1.3 spec. -*/ - info->color_formats =DRM_COLOR_FORMAT_RGB444 ; -/* YCRCB444 is optional according to spec. */ if (hdmi[6 ] &DRM_EDID_HDMI_DC_Y444 ) { - info->color_formats |=DRM_COLOR_FORMAT_YCRCB444 ;DRM_DEBUG ("%s: HDMI sink does YCRCB444 in deep color.\n" , connector->name); }
drivers/gpu/drm/imx/parallel-display.c +3 -1
@@ -83,8 +83,10 @@ static int imx_pd_connector_get_modes(struct drm_connector *connector) ret =of_get_drm_display_mode (np, &imxpd->mode, &imxpd->bus_flags,OF_USE_NATIVE_MODE ); -if (ret) +if (ret) { +drm_mode_destroy (connector->dev, mode);return ret; + }drm_mode_copy (mode, &imxpd->mode); mode->type |= DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,
drivers/gpu/drm/tegra/dsi.c +3 -1
@@ -1475,8 +1475,10 @@ static int tegra_dsi_ganged_probe(struct tegra_dsi *dsi) dsi->slave =platform_get_drvdata (gangster);of_node_put (np); -if (!dsi->slave) +if (!dsi->slave) { +put_device (&gangster->dev);return -EPROBE_DEFER ; + } dsi->slave->master = dsi; }
drivers/gpu/ipu-v3/ipu-di.c +3 -2
@@ -460,8 +460,9 @@ static void ipu_di_config_clock(struct ipu_di *di, error = rate / (sig->mode.pixelclock /1000 ); -dev_dbg (di->ipu->dev," IPU clock can give %lu with divider %u, error %d.%u%%\n" , - rate, div, (signed )(error -1000 ) /10 , error %10 ); +dev_dbg (di->ipu->dev," IPU clock can give %lu with divider %u, error %c%d.%d%%\n" , + rate, div, error <1000 ?'-' :'+' , +abs (error -1000 ) /10 ,abs (error -1000 ) %10 );/* Allow a 1% error */ if (error <1010 && error >=990 ) {
drivers/hid/i2c-hid/i2c-hid-core.c +24 -8
@@ -643,6 +643,17 @@ static int i2c_hid_get_raw_report(struct hid_device *hid,if (report_type ==HID_OUTPUT_REPORT )return -EINVAL ; +/* +* In case of unnumbered reports the response from the device will +* not have the report ID that the upper layers expect, so we need +* to stash it the buffer ourselves and adjust the data size. +*/ +if (!report_number) { + buf[0 ] =0 ; + buf++; + count--; + } +/* +2 bytes to include the size of the reply in the query buffer */ ask_count =min (count +2 , (size_t )ihid->bufsize);
@@ -664,6 +675,9 @@ static int i2c_hid_get_raw_report(struct hid_device *hid, count =min (count, ret_count -2 );memcpy (buf, ihid->rawbuf +2 , count); +if (!report_number) + count++; +return count; }
@@ -680,17 +694,19 @@ static int i2c_hid_output_raw_report(struct hid_device *hid, __u8 *buf,mutex_lock (&ihid->reset_lock); -if (report_id) { - buf++; - count--; - } - +/* +* Note that both numbered and unnumbered reports passed here +* are supposed to have report ID stored in the 1st byte of the +* buffer, so we strip it off unconditionally before passing payload +* to i2c_hid_set_or_send_report which takes care of encoding +* everything properly. +*/ ret =i2c_hid_set_or_send_report (client, report_type ==HID_FEATURE_REPORT ?0x03 :0x02 , - report_id, buf, count, use_data); + report_id, buf +1 , count -1 , use_data); -if (report_id && ret >=0 ) - ret++;/* add report_id to the number of transfered bytes */ +if (ret >=0 ) + ret++;/* add report_id to the number of transferred bytes */ mutex_unlock (&ihid->reset_lock);
drivers/hwmon/pmbus/pmbus.h +1 -0
@@ -262,6 +262,7 @@ enum pmbus_regs {/* * STATUS_VOUT, STATUS_INPUT */ +#define PB_VOLTAGE_VIN_OFF BIT(3)#define PB_VOLTAGE_UV_FAULT BIT(4)#define PB_VOLTAGE_UV_WARNING BIT(5)#define PB_VOLTAGE_OV_WARNING BIT(6)
drivers/hwmon/pmbus/pmbus_core.c +14 -4
@@ -1133,7 +1133,7 @@ static const struct pmbus_limit_attr vin_limit_attrs[] = { .reg = PMBUS_VIN_UV_FAULT_LIMIT, .attr = "lcrit", .alarm = "lcrit_alarm", - .sbit = PB_VOLTAGE_UV_FAULT, + .sbit = PB_VOLTAGE_UV_FAULT | PB_VOLTAGE_VIN_OFF, }, { .reg = PMBUS_VIN_OV_WARN_LIMIT, .attr = "max",
@@ -1818,10 +1818,14 @@ static int pmbus_regulator_is_enabled(struct regulator_dev *rdev) {struct device *dev =rdev_get_dev (rdev);struct i2c_client *client =to_i2c_client (dev->parent); +struct pmbus_data *data =i2c_get_clientdata (client);u8 page =rdev_get_id (rdev);int ret; +mutex_lock (&data->update_lock); ret =pmbus_read_byte_data (client, page,PMBUS_OPERATION ); +mutex_unlock (&data->update_lock); +if (ret <0 )return ret;
@@ -1832,11 +1836,17 @@ static int _pmbus_regulator_on_off(struct regulator_dev *rdev, bool enable) {struct device *dev =rdev_get_dev (rdev);struct i2c_client *client =to_i2c_client (dev->parent); +struct pmbus_data *data =i2c_get_clientdata (client);u8 page =rdev_get_id (rdev); +int ret; -return pmbus_update_byte_data (client, page,PMBUS_OPERATION , -PB_OPERATION_CONTROL_ON , - enable ?PB_OPERATION_CONTROL_ON :0 ); +mutex_lock (&data->update_lock); + ret =pmbus_update_byte_data (client, page,PMBUS_OPERATION , +PB_OPERATION_CONTROL_ON , + enable ?PB_OPERATION_CONTROL_ON :0 ); +mutex_unlock (&data->update_lock); + +return ret; }static int pmbus_regulator_enable (struct regulator_dev *rdev)
drivers/hwmon/sch56xx-common.c +1 -1
@@ -438,7 +438,7 @@ struct sch56xx_watchdog_data *sch56xx_watchdog_register(struct device *parent,if (nowayout)set_bit (WDOG_NO_WAY_OUT , &data->wddev.status);if (output_enable &SCH56XX_WDOG_OUTPUT_ENABLE ) -set_bit (WDOG_ACTIVE , &data->wddev.status); +set_bit (WDOG_HW_RUNNING , &data->wddev.status);/* Since the watchdog uses a downcounter there is no register to read the BIOS set timeout from (if any was set at all) ->
drivers/hwtracing/coresight/coresight-etm4x-sysfs.c +6 -2
@@ -379,8 +379,12 @@ static ssize_t mode_store(struct device *dev, mode =ETM_MODE_QELEM (config->mode);/* start by clearing QE bits */ config->cfg &= ~(BIT (13 ) |BIT (14 )); -/* if supported, Q elements with instruction counts are enabled */ -if ((mode &BIT (0 )) && (drvdata->q_support &BIT (0 ))) +/* +* if supported, Q elements with instruction counts are enabled. +* Always set the low bit for any requested mode. Valid combos are +* 0b00, 0b01 and 0b11. +*/ +if (mode && drvdata->q_support) config->cfg |=BIT (13 );/* * if supported, Q elements with and without instruction
drivers/i2c/busses/i2c-pasemi.c +6 -0
@@ -145,6 +145,12 @@ static int pasemi_i2c_xfer_msg(struct i2c_adapter *adapter,TXFIFO_WR (smbus, msg->buf[msg->len-1 ] | (stop ?MTXFIFO_STOP :0 )); + +if (stop) { + err =pasemi_smb_waitready (smbus); +if (err) + goto reset_out; + } }return 0 ;
drivers/i2c/busses/i2c-xiic.c +2 -1
@@ -727,7 +727,6 @@ static const struct i2c_algorithm xiic_algorithm = {static struct i2c_adapter xiic_adapter = { .owner =THIS_MODULE , - .name =DRIVER_NAME , .class =I2C_CLASS_DEPRECATED , .algo = &xiic_algorithm, };
@@ -763,6 +762,8 @@ static int xiic_i2c_probe(struct platform_device *pdev)i2c_set_adapdata (&i2c->adap, i2c); i2c->adap.dev.parent = &pdev->dev; i2c->adap.dev.of_node = pdev->dev.of_node; +snprintf (i2c->adap.name,sizeof (i2c->adap.name), +DRIVER_NAME " %s" , pdev->name);mutex_init (&i2c->lock);init_waitqueue_head (&i2c->wait);
drivers/i2c/muxes/i2c-demux-pinctrl.c +3 -2
@@ -259,7 +259,7 @@ static int i2c_demux_pinctrl_probe(struct platform_device *pdev) err =device_create_file (&pdev->dev, &dev_attr_available_masters);if (err) - goto err_rollback; + goto err_rollback_activation; err =device_create_file (&pdev->dev, &dev_attr_current_master);if (err)
@@ -269,8 +269,9 @@ static int i2c_demux_pinctrl_probe(struct platform_device *pdev) err_rollback_available:device_remove_file (&pdev->dev, &dev_attr_available_masters); -err_rollback: +err_rollback_activation:i2c_demux_deactivate_master (priv); +err_rollback:for (j =0 ; j < i; j++) {of_node_put (priv->chan[j].parent_np);of_changeset_destroy (&priv->chan[j].chgset);
drivers/iio/adc/twl6030-gpadc.c +2 -0
@@ -927,6 +927,8 @@ static int twl6030_gpadc_probe(struct platform_device *pdev) ret =devm_request_threaded_irq (dev, irq,NULL , twl6030_gpadc_irq_handler,IRQF_ONESHOT ,"twl6030_gpadc" , indio_dev); +if (ret) +return ret; ret =twl6030_gpadc_enable_irq (TWL6030_GPADC_RT_SW1_EOC_MASK );if (ret <0 ) {
drivers/iio/inkern.c +28 -6
@@ -591,13 +591,35 @@ EXPORT_SYMBOL_GPL(iio_read_channel_average_raw);static int iio_convert_raw_to_processed_unlocked (struct iio_channel *chan,int raw,int *processed,unsigned int scale) { -int scale_type, scale_val, scale_val2, offset; +int scale_type, scale_val, scale_val2; +int offset_type, offset_val, offset_val2;s64 raw64 = raw; -int ret; - ret =iio_channel_read (chan, &offset,NULL ,IIO_CHAN_INFO_OFFSET ); -if (ret >=0 ) - raw64 += offset; + offset_type =iio_channel_read (chan, &offset_val, &offset_val2, +IIO_CHAN_INFO_OFFSET ); +if (offset_type >=0 ) { +switch (offset_type) { +case IIO_VAL_INT : +break ; +case IIO_VAL_INT_PLUS_MICRO : +case IIO_VAL_INT_PLUS_NANO : +/* +* Both IIO_VAL_INT_PLUS_MICRO and IIO_VAL_INT_PLUS_NANO +* implicitely truncate the offset to it's integer form. +*/ +break ; +case IIO_VAL_FRACTIONAL : + offset_val /= offset_val2; +break ; +case IIO_VAL_FRACTIONAL_LOG2 : + offset_val >>= offset_val2; +break ; +default : +return -EINVAL ; + } + + raw64 += offset_val; + } scale_type =iio_channel_read (chan, &scale_val, &scale_val2,IIO_CHAN_INFO_SCALE );
@@ -606,7 +628,7 @@ static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan,switch (scale_type) {case IIO_VAL_INT : - *processed = raw64 * scale_val; + *processed = raw64 * scale_val * scale;break ;case IIO_VAL_INT_PLUS_MICRO :if (scale_val2 <0 )
drivers/input/input.c +0 -6
@@ -2112,12 +2112,6 @@ int input_register_device(struct input_dev *dev)/* KEY_RESERVED is not supposed to be transmitted to userspace. */ __clear_bit (KEY_RESERVED , dev->keybit); -/* Buttonpads should not map BTN_RIGHT and/or BTN_MIDDLE. */ -if (test_bit (INPUT_PROP_BUTTONPAD , dev->propbit)) { -__clear_bit (BTN_RIGHT , dev->keybit); -__clear_bit (BTN_MIDDLE , dev->keybit); - } -/* Make sure that bitmasks not mentioned in dev->evbit are clean. */ input_cleanse_bitmasks (dev);
drivers/iommu/arm-smmu-v3.c +1 -0
@@ -1171,6 +1171,7 @@ static irqreturn_t arm_smmu_evtq_thread(int irq, void *dev)dev_info (smmu->dev,"\t0x%016llx\n" , (unsigned long long )evt[i]); +cond_resched (); }/*
drivers/irqchip/irq-nvic.c +2 -0
@@ -108,6 +108,7 @@ static int __init nvic_of_init(struct device_node *node,if (!nvic_irq_domain) {pr_warn ("Failed to allocate irq domain\n" ); +iounmap (nvic_base);return -ENOMEM ; }
@@ -117,6 +118,7 @@ static int __init nvic_of_init(struct device_node *node,if (ret) {pr_warn ("Failed to allocate irq chips\n" );irq_domain_remove (nvic_irq_domain); +iounmap (nvic_base);return ret; }
drivers/md/dm-ioctl.c +2 -0
@@ -16,6 +16,7 @@#include <linux/dm-ioctl.h> #include <linux/hdreg.h> #include <linux/compat.h> +#include <linux/nospec.h> #include <asm/uaccess.h>
@@ -1642,6 +1643,7 @@ static ioctl_fn lookup_ioctl(unsigned int cmd, int *ioctl_flags)if (unlikely (cmd >=ARRAY_SIZE (_ioctls)))return NULL ; + cmd =array_index_nospec (cmd,ARRAY_SIZE (_ioctls)); *ioctl_flags = _ioctls[cmd].flags;return _ioctls[cmd].fn; }
drivers/media/pci/cx88/cx88-mpeg.c +3 -0
@@ -175,6 +175,9 @@ int cx8802_start_dma(struct cx8802_dev *dev,cx_write (MO_TS_GPCNTRL ,GP_COUNT_CONTROL_RESET ); q->count =0 ; +/* clear interrupt status register */ +cx_write (MO_TS_INTSTAT ,0x1f1111 ); +/* enable irqs */ dprintk (1 ,"setting the interrupt mask\n" );cx_set (MO_PCI_INTMSK , core->pci_irqmask |PCI_INT_TSINT );
drivers/media/platform/davinci/vpif.c +1 -0
@@ -437,6 +437,7 @@ static int vpif_probe(struct platform_device *pdev)static int vpif_remove (struct platform_device *pdev) { +pm_runtime_put (&pdev->dev);pm_runtime_disable (&pdev->dev);return 0 ; }
drivers/media/usb/go7007/s2250-board.c +4 -6
@@ -512,6 +512,7 @@ static int s2250_probe(struct i2c_client *client,u8 *data;struct go7007 *go =i2c_get_adapdata (adapter);struct go7007_usb *usb = go->hpi_context; +int err = -EIO ; audio =i2c_new_dummy (adapter,TLV320_ADDRESS >>1 );if (audio ==NULL )
@@ -540,11 +541,8 @@ static int s2250_probe(struct i2c_client *client, V4L2_CID_HUE, -512, 511, 1, 0); sd->ctrl_handler = &state->hdl;if (state->hdl.error) { -int err = state->hdl.error; - -v4l2_ctrl_handler_free (&state->hdl); -kfree (state); -return err; + err = state->hdl.error; + goto fail; } state->std =V4L2_STD_NTSC ;
@@ -608,7 +606,7 @@ static int s2250_probe(struct i2c_client *client,i2c_unregister_device (audio);v4l2_ctrl_handler_free (&state->hdl);kfree (state); -return -EIO ; +return err; }static int s2250_remove (struct i2c_client *client)
drivers/media/usb/hdpvr/hdpvr-video.c +3 -1
@@ -312,7 +312,6 @@ static int hdpvr_start_streaming(struct hdpvr_device *dev) dev->status =STATUS_STREAMING ; -INIT_WORK (&dev->worker, hdpvr_transmit_buffers);schedule_work (&dev->worker); v4l2_dbg(MSG_BUFFER, hdpvr_debug, &dev->v4l2_dev,
@@ -1156,6 +1155,9 @@ int hdpvr_register_videodev(struct hdpvr_device *dev, struct device *parent,bool ac3 = dev->flags &HDPVR_FLAG_AC3_CAP ;int res; +// initialize dev->worker +INIT_WORK (&dev->worker, hdpvr_transmit_buffers); + dev->cur_std =V4L2_STD_525_60 ; dev->width =720 ; dev->height =480 ;
drivers/memory/emif.c +5 -3
@@ -1425,7 +1425,7 @@ static struct emif_data *__init_or_module get_device_details( temp =devm_kzalloc (dev,sizeof (*pd),GFP_KERNEL ); dev_info =devm_kzalloc (dev,sizeof (*dev_info),GFP_KERNEL ); -if (!emif || !pd || !dev_info) { +if (!emif || !temp || !dev_info) {dev_err (dev,"%s:%d: allocation error\n" , __func__, __LINE__); goto error; }
@@ -1517,7 +1517,7 @@ static int __init_or_module emif_probe(struct platform_device *pdev) {struct emif_data *emif;struct resource *res; -int irq; +int irq, ret;if (pdev->dev.of_node) emif =of_get_memory_device_details (pdev->dev.of_node, &pdev->dev);
@@ -1551,7 +1551,9 @@ static int __init_or_module emif_probe(struct platform_device *pdev)emif_onetime_settings (emif);emif_debugfs_init (emif);disable_and_clear_all_interrupts (emif); -setup_interrupts (emif, irq); + ret =setup_interrupts (emif, irq); +if (ret) + goto error;/* One-time actions taken on probing the first device */ if (!emif1) {
drivers/mfd/asic3.c +7 -3
@@ -915,14 +915,14 @@ static int __init asic3_mfd_probe(struct platform_device *pdev, ret =mfd_add_devices (&pdev->dev, pdev->id, &asic3_cell_ds1wm,1 , mem, asic->irq_base,NULL );if (ret <0 ) - goto out; + goto out_unmap; }if (mem_sdio && (irq >=0 )) { ret =mfd_add_devices (&pdev->dev, pdev->id, &asic3_cell_mmc,1 , mem_sdio, irq,NULL );if (ret <0 ) - goto out; + goto out_unmap; } ret =0 ;
@@ -936,8 +936,12 @@ static int __init asic3_mfd_probe(struct platform_device *pdev, ret =mfd_add_devices (&pdev->dev,0 , asic3_cell_leds,ASIC3_NUM_LEDS ,NULL ,0 ,NULL ); } +return ret; - out: +out_unmap: +if (asic->tmio_cnf) +iounmap (asic->tmio_cnf); +out:return ret; }
drivers/mfd/mc13xxx-core.c +3 -1
@@ -313,8 +313,10 @@ int mc13xxx_adc_do_conversion(struct mc13xxx *mc13xxx, unsigned int mode, adc1 |=MC13783_ADC1_ATOX ;dev_dbg (mc13xxx->dev,"%s: request irq\n" , __func__); -mc13xxx_irq_request (mc13xxx,MC13XXX_IRQ_ADCDONE , + ret =mc13xxx_irq_request (mc13xxx,MC13XXX_IRQ_ADCDONE , mc13xxx_handler_adcdone, __func__, &adcdone_data); +if (ret) + goto out;mc13xxx_reg_write (mc13xxx,MC13XXX_ADC0 , adc0);mc13xxx_reg_write (mc13xxx,MC13XXX_ADC1 , adc1);
drivers/misc/kgdbts.c +2 -2
@@ -1066,10 +1066,10 @@ static int kgdbts_option_setup(char *opt) {if (strlen (opt) >=MAX_CONFIG_LEN ) {printk (KERN_ERR "kgdbts: config string too long\n" ); -return -ENOSPC ; +return 1 ; }strcpy (config, opt); -return 0 ; +return 1 ; }__setup ("kgdbts=" , kgdbts_option_setup);
drivers/mmc/core/host.c +13 -2
@@ -403,6 +403,16 @@ struct mmc_host *mmc_alloc_host(int extra, struct device *dev)EXPORT_SYMBOL (mmc_alloc_host); +static int mmc_validate_host_caps (struct mmc_host *host) +{ +if (host->caps &MMC_CAP_SDIO_IRQ && !host->ops->enable_sdio_irq) { +dev_warn (host->parent,"missing ->enable_sdio_irq() ops\n" ); +return -EINVAL ; + } + +return 0 ; +} +/** * mmc_add_host - initialise host hardware * @host: mmc host
@@ -415,8 +425,9 @@ int mmc_add_host(struct mmc_host *host) {int err; -WARN_ON ((host->caps &MMC_CAP_SDIO_IRQ ) && - !host->ops->enable_sdio_irq); + err =mmc_validate_host_caps (host); +if (err) +return err; err =device_add (&host->class_dev);if (err)
drivers/mtd/onenand/generic.c +6 -1
@@ -58,7 +58,12 @@ static int generic_onenand_probe(struct platform_device *pdev) } info->onenand.mmcontrol = pdata ? pdata->mmcontrol :NULL ; - info->onenand.irq =platform_get_irq (pdev,0 ); + + err =platform_get_irq (pdev,0 ); +if (err <0 ) + goto out_iounmap; + + info->onenand.irq = err; info->mtd.dev.parent = &pdev->dev; info->mtd.priv = &info->onenand;
drivers/mtd/ubi/fastmap.c +19 -9
@@ -478,7 +478,9 @@ static int scan_pool(struct ubi_device *ubi, struct ubi_attach_info *ai,if (err ==UBI_IO_FF_BITFLIPS ) scrub =1 ; -add_aeb (ai, free, pnum, ec, scrub); + ret =add_aeb (ai, free, pnum, ec, scrub); +if (ret) + goto out;continue ; }else if (err ==0 || err ==UBI_IO_BITFLIPS ) {dbg_bld ("Found non empty PEB:%i in pool" , pnum);
@@ -648,8 +650,10 @@ static int ubi_attach_fastmap(struct ubi_device *ubi,if (fm_pos >= fm_size) goto fail_bad; -add_aeb (ai, &ai->free,be32_to_cpu (fmec->pnum), -be32_to_cpu (fmec->ec),0 ); + ret =add_aeb (ai, &ai->free,be32_to_cpu (fmec->pnum), +be32_to_cpu (fmec->ec),0 ); +if (ret) + goto fail; }/* read EC values from used list */
@@ -659,8 +663,10 @@ static int ubi_attach_fastmap(struct ubi_device *ubi,if (fm_pos >= fm_size) goto fail_bad; -add_aeb (ai, &used,be32_to_cpu (fmec->pnum), -be32_to_cpu (fmec->ec),0 ); + ret =add_aeb (ai, &used,be32_to_cpu (fmec->pnum), +be32_to_cpu (fmec->ec),0 ); +if (ret) + goto fail; }/* read EC values from scrub list */
@@ -670,8 +676,10 @@ static int ubi_attach_fastmap(struct ubi_device *ubi,if (fm_pos >= fm_size) goto fail_bad; -add_aeb (ai, &used,be32_to_cpu (fmec->pnum), -be32_to_cpu (fmec->ec),1 ); + ret =add_aeb (ai, &used,be32_to_cpu (fmec->pnum), +be32_to_cpu (fmec->ec),1 ); +if (ret) + goto fail; }/* read EC values from erase list */
@@ -681,8 +689,10 @@ static int ubi_attach_fastmap(struct ubi_device *ubi,if (fm_pos >= fm_size) goto fail_bad; -add_aeb (ai, &ai->erase,be32_to_cpu (fmec->pnum), -be32_to_cpu (fmec->ec),1 ); + ret =add_aeb (ai, &ai->erase,be32_to_cpu (fmec->pnum), +be32_to_cpu (fmec->ec),1 ); +if (ret) + goto fail; } ai->mean_ec =div_u64 (ai->ec_sum, ai->ec_count);
drivers/net/can/usb/ems_usb.c +0 -1
@@ -834,7 +834,6 @@ static netdev_tx_t ems_usb_start_xmit(struct sk_buff *skb, struct net_device *neusb_unanchor_urb (urb);usb_free_coherent (dev->udev, size, buf, urb->transfer_dma); -dev_kfree_skb (skb);atomic_dec (&dev->active_tx_urbs);
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +1 -3
@@ -1008,9 +1008,7 @@ static int bnxt_set_pauseparam(struct net_device *dev, } link_info->autoneg |=BNXT_AUTONEG_FLOW_CTRL ; -if (bp->hwrm_spec_code >=0x10201 ) - link_info->req_flow_ctrl = -PORT_PHY_CFG_REQ_AUTO_PAUSE_AUTONEG_PAUSE ; + link_info->req_flow_ctrl =0 ; }else {/* when transition from auto pause to force pause, * force a link change
drivers/net/ethernet/micrel/Kconfig +1 -0
@@ -45,6 +45,7 @@ config KS8851 config KS8851_MLL tristate "Micrel KS8851 MLL" depends on HAS_IOMEM + depends on PTP_1588_CLOCK_OPTIONAL select MII ---help--- This platform driver is for Micrel KS8851 Address/data bus
drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h +5 -5
@@ -52,7 +52,7 @@ static inline int qlcnic_dcb_get_hw_capability(struct qlcnic_dcb *dcb)if (dcb && dcb->ops->get_hw_capability)return dcb->ops->get_hw_capability (dcb); -return 0 ; +return -EOPNOTSUPP ; }static inline void qlcnic_dcb_free (struct qlcnic_dcb *dcb)
@@ -66,7 +66,7 @@ static inline int qlcnic_dcb_attach(struct qlcnic_dcb *dcb)if (dcb && dcb->ops->attach)return dcb->ops->attach (dcb); -return 0 ; +return -EOPNOTSUPP ; } static inline int
@@ -75,7 +75,7 @@ qlcnic_dcb_query_hw_capability(struct qlcnic_dcb *dcb, char *buf)if (dcb && dcb->ops->query_hw_capability)return dcb->ops->query_hw_capability (dcb, buf); -return 0 ; +return -EOPNOTSUPP ; }static inline void qlcnic_dcb_get_info (struct qlcnic_dcb *dcb)
@@ -90,7 +90,7 @@ qlcnic_dcb_query_cee_param(struct qlcnic_dcb *dcb, char *buf, u8 type)if (dcb && dcb->ops->query_cee_param)return dcb->ops->query_cee_param (dcb, buf, type); -return 0 ; +return -EOPNOTSUPP ; }static inline int qlcnic_dcb_get_cee_cfg (struct qlcnic_dcb *dcb)
@@ -98,7 +98,7 @@ static inline int qlcnic_dcb_get_cee_cfg(struct qlcnic_dcb *dcb)if (dcb && dcb->ops->get_cee_cfg)return dcb->ops->get_cee_cfg (dcb); -return 0 ; +return -EOPNOTSUPP ; }static inline void qlcnic_dcb_aen_handler (struct qlcnic_dcb *dcb,void *msg)
drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.c +0 -8
@@ -68,10 +68,6 @@#define TSE_PCS_USE_SGMII_ENA BIT(0)#define TSE_PCS_IF_USE_SGMII 0x03 -#define SGMII_ADAPTER_CTRL_REG 0x00 -#define SGMII_ADAPTER_DISABLE 0x0001 -#define SGMII_ADAPTER_ENABLE 0x0000 -#define AUTONEGO_LINK_TIMER 20static int tse_pcs_reset (void __iomem *base,struct tse_pcs *pcs)
@@ -215,12 +211,8 @@ void tse_pcs_fix_mac_speed(struct tse_pcs *pcs, struct phy_device *phy_dev, unsigned int speed) {void __iomem *tse_pcs_base = pcs->tse_pcs_base; -void __iomem *sgmii_adapter_base = pcs->sgmii_adapter_base;u32 val; -writew (SGMII_ADAPTER_ENABLE , - sgmii_adapter_base +SGMII_ADAPTER_CTRL_REG ); - pcs->autoneg = phy_dev->autoneg;if (phy_dev->autoneg ==AUTONEG_ENABLE ) {
drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.h +4 -0
@@ -21,6 +21,10 @@#include <linux/phy.h> #include <linux/timer.h> +#define SGMII_ADAPTER_CTRL_REG 0x00 +#define SGMII_ADAPTER_ENABLE 0x0000 +#define SGMII_ADAPTER_DISABLE 0x0001 +struct tse_pcs {struct device *dev;void __iomem *tse_pcs_base;
drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c +5 -8
@@ -29,9 +29,6 @@#include "altr_tse_pcs.h" -#define SGMII_ADAPTER_CTRL_REG 0x00 -#define SGMII_ADAPTER_DISABLE 0x0001 -#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_GMII_MII 0x0#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RGMII 0x1#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RMII 0x2
@@ -65,16 +62,14 @@ static void socfpga_dwmac_fix_mac_speed(void *priv, unsigned int speed) {struct socfpga_dwmac *dwmac = (struct socfpga_dwmac *)priv;void __iomem *splitter_base = dwmac->splitter_base; -void __iomem *tse_pcs_base = dwmac->pcs.tse_pcs_base;void __iomem *sgmii_adapter_base = dwmac->pcs.sgmii_adapter_base;struct device *dev = dwmac->dev;struct net_device *ndev =dev_get_drvdata (dev);struct phy_device *phy_dev = ndev->phydev;u32 val; -if ((tse_pcs_base) && (sgmii_adapter_base)) -writew (SGMII_ADAPTER_DISABLE , - sgmii_adapter_base +SGMII_ADAPTER_CTRL_REG ); +writew (SGMII_ADAPTER_DISABLE , + sgmii_adapter_base +SGMII_ADAPTER_CTRL_REG );if (splitter_base) { val =readl (splitter_base +EMAC_SPLITTER_CTRL_REG );
@@ -96,7 +91,9 @@ static void socfpga_dwmac_fix_mac_speed(void *priv, unsigned int speed)writel (val, splitter_base +EMAC_SPLITTER_CTRL_REG ); } -if (tse_pcs_base && sgmii_adapter_base) +writew (SGMII_ADAPTER_ENABLE , + sgmii_adapter_base +SGMII_ADAPTER_CTRL_REG ); +if (phy_dev)tse_pcs_fix_mac_speed (&dwmac->pcs, phy_dev, speed); }
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +1 -2
@@ -221,8 +221,7 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) plat->interface =of_get_phy_mode (np);/* Get max speed of operation from device tree */ -if (of_property_read_u32 (np,"max-speed" , &plat->max_speed)) - plat->max_speed =-1 ; +of_property_read_u32 (np,"max-speed" , &plat->max_speed); plat->bus_id =of_alias_get_id (np,"ethernet" );if (plat->bus_id <0 )
drivers/net/ethernet/sun/sunhme.c +5 -1
@@ -3160,7 +3160,7 @@ static int happy_meal_pci_probe(struct pci_dev *pdev,if (err) {printk (KERN_ERR "happymeal(PCI): Cannot register net device, " "aborting.\n" ); - goto err_out_iounmap; + goto err_out_free_coherent; }pci_set_drvdata (pdev, hp);
@@ -3193,6 +3193,10 @@ static int happy_meal_pci_probe(struct pci_dev *pdev,return 0 ; +err_out_free_coherent: +dma_free_coherent (hp->dma_dev,PAGE_SIZE , + hp->happy_block, hp->hblock_dvma); + err_out_iounmap:iounmap (hp->gregs);
drivers/net/hamradio/6pack.c +2 -2
@@ -685,14 +685,14 @@ static void sixpack_close(struct tty_struct *tty)*/ netif_stop_queue (sp->dev); +unregister_netdev (sp->dev); +del_timer_sync (&sp->tx_t);del_timer_sync (&sp->resync_t);/* Free all 6pack frame buffers. */ kfree (sp->rbuff);kfree (sp->xbuff); - -unregister_netdev (sp->dev); }/* Perform I/O control on an active 6pack channel. */
drivers/net/phy/broadcom.c +21 -0
@@ -15,6 +15,7 @@*/ #include "bcm-phy-lib.h" +#include <linux/delay.h> #include <linux/module.h> #include <linux/phy.h> #include <linux/brcmphy.h>
@@ -357,6 +358,26 @@ static int brcm_fet_config_init(struct phy_device *phydev)if (err <0 )return err; +/* The datasheet indicates the PHY needs up to 1us to complete a reset, +* build some slack here. +*/ +usleep_range (1000 ,2000 ); + +/* The PHY requires 65 MDC clock cycles to complete a write operation +* and turnaround the line properly. +* +* We ignore -EIO here as the MDIO controller (e.g.: mdio-bcm-unimac) +* may flag the lack of turn-around as a read failure. This is +* particularly true with this combination since the MDIO controller +* only used 64 MDC cycles. This is not a critical failure in this +* specific case and it has no functional impact otherwise, so we let +* that one go through. If there is a genuine bus error, the next read +* of MII_BRCM_FET_INTREG will error out. +*/ + err =phy_read (phydev,MII_BMCR ); +if (err <0 && err != -EIO ) +return err; + reg =phy_read (phydev,MII_BRCM_FET_INTREG );if (reg <0 )return reg;
drivers/net/slip/slip.c +1 -1
@@ -471,7 +471,7 @@ static void sl_tx_timeout(struct net_device *dev)spin_lock (&sl->lock);if (netif_queue_stopped (dev)) { -if (!netif_running (dev)) +if (!netif_running (dev) || !sl->tty) goto out;/* May be we must check transmitter timeout here ?
drivers/net/veth.c +1 -1
@@ -114,7 +114,7 @@ static netdev_tx_t veth_xmit(struct sk_buff *skb, struct net_device *dev)rcu_read_lock (); rcv =rcu_dereference (priv->peer); -if (unlikely (!rcv)) { +if (unlikely (!rcv) || !pskb_may_pull (skb,ETH_HLEN )) {kfree_skb (skb); goto drop; }
drivers/net/wireless/ath/ath5k/eeprom.c +3 -0
@@ -746,6 +746,9 @@ ath5k_eeprom_convert_pcal_info_5111(struct ath5k_hw *ah, int mode, } } +if (idx ==AR5K_EEPROM_N_PD_CURVES ) + goto err_out; + ee->ee_pd_gains[mode] =1 ; pd = &chinfo[pier].pd_curves[idx];
drivers/net/wireless/ath/ath9k/htc_hst.c +5 -0
@@ -31,6 +31,7 @@ static int htc_issue_send(struct htc_target *target, struct sk_buff* skb, hdr->endpoint_id = epid; hdr->flags = flags; hdr->payload_len =cpu_to_be16 (len); +memset (hdr->control,0 ,sizeof (hdr->control)); status = target->hif->send (target->hif_dev, endpoint->ul_pipeid, skb);
@@ -278,6 +279,10 @@ int htc_connect_service(struct htc_target *target, conn_msg->dl_pipeid = endpoint->dl_pipeid; conn_msg->ul_pipeid = endpoint->ul_pipeid; +/* To prevent infoleak */ + conn_msg->svc_meta_len =0 ; + conn_msg->pad =0 ; + ret =htc_issue_send (target, skb, skb->len,0 ,ENDPOINT0 );if (ret) goto err;
drivers/net/wireless/ath/carl9170/main.c +1 -1
@@ -1920,7 +1920,7 @@ static int carl9170_parse_eeprom(struct ar9170 *ar)WARN_ON (!(tx_streams >=1 && tx_streams <=IEEE80211_HT_MCS_TX_MAX_STREAMS )); - tx_params = (tx_streams -1 ) << + tx_params |= (tx_streams -1 ) <<IEEE80211_HT_MCS_TX_MAX_STREAMS_SHIFT ; carl9170_band_2GHz.ht_cap.mcs.tx_params |= tx_params;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c +2 -0
@@ -216,6 +216,8 @@ static int brcmf_init_nvram_parser(struct nvram_parser *nvp, size =BRCMF_FW_MAX_NVRAM_SIZE ; else size = data_len; +/* Add space for properties we may add */ + size +=strlen (BRCMF_FW_DEFAULT_BOARDREV ) +1 ;/* Alloc for extra 0 byte + roundup by 4 + length field */ size +=1 +3 +sizeof (u32); nvp->nvram =kzalloc (size,GFP_KERNEL );
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +4 -44
72 lines not on this page · raw message
drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c +1 -1
@@ -315,7 +315,7 @@ static int iwlagn_mac_start(struct ieee80211_hw *hw) priv->is_open =1 ;IWL_DEBUG_MAC80211 (priv,"leave\n" ); -return 0 ; +return ret; }static void iwlagn_mac_stop (struct ieee80211_hw *hw)
drivers/net/wireless/ray_cs.c +6 -0
@@ -396,6 +396,8 @@ static int ray_config(struct pcmcia_device *link) goto failed; local->sram =ioremap (link->resource[2 ]->start,resource_size (link->resource[2 ])); +if (!local->sram) + goto failed;/*** Set up 16k window for shared memory (receive buffer) ***************/ link->resource[3]->flags |=
@@ -410,6 +412,8 @@ static int ray_config(struct pcmcia_device *link) goto failed; local->rmem =ioremap (link->resource[3 ]->start,resource_size (link->resource[3 ])); +if (!local->rmem) + goto failed;/*** Set up window for attribute memory ***********************************/ link->resource[4]->flags |=
@@ -424,6 +428,8 @@ static int ray_config(struct pcmcia_device *link) goto failed; local->amem =ioremap (link->resource[4 ]->start,resource_size (link->resource[4 ])); +if (!local->amem) + goto failed;dev_dbg (&link->dev,"ray_config sram=%p\n" , local->sram);dev_dbg (&link->dev,"ray_config rmem=%p\n" , local->rmem);
drivers/pci/hotplug/pciehp_hpc.c +2 -0
@@ -120,6 +120,8 @@ static int pcie_poll_cmd(struct controller *ctrl, int timeout)if (slot_status &PCI_EXP_SLTSTA_CC ) {pcie_capability_write_word (pdev,PCI_EXP_SLTSTA ,PCI_EXP_SLTSTA_CC ); + ctrl->cmd_busy =0 ; +smp_mb ();return 1 ; }if (timeout <0 )
drivers/pinctrl/mediatek/pinctrl-mtk-common.c +2 -0
@@ -1355,6 +1355,7 @@ int mtk_pctrl_init(struct platform_device *pdev, node =of_parse_phandle (np,"mediatek,pctl-regmap" ,0 );if (node) { pctl->regmap1 =syscon_node_to_regmap (node); +of_node_put (node);if (IS_ERR (pctl->regmap1))return PTR_ERR (pctl->regmap1); }else if (regmap) {
@@ -1368,6 +1369,7 @@ int mtk_pctrl_init(struct platform_device *pdev, node =of_parse_phandle (np,"mediatek,pctl-regmap" ,1 );if (node) { pctl->regmap2 =syscon_node_to_regmap (node); +of_node_put (node);if (IS_ERR (pctl->regmap2))return PTR_ERR (pctl->regmap2); }
drivers/pinctrl/nomadik/pinctrl-nomadik.c +3 -1
@@ -1916,8 +1916,10 @@ static int nmk_pinctrl_probe(struct platform_device *pdev) } prcm_np =of_parse_phandle (np,"prcm" ,0 ); -if (prcm_np) +if (prcm_np) { npct->prcm_base =of_iomap (prcm_np,0 ); +of_node_put (prcm_np); + }if (!npct->prcm_base) {if (version ==PINCTRL_NMK_STN8815 ) { dev_info(&pdev->dev,
drivers/pinctrl/pinconf-generic.c +3 -3
@@ -31,10 +31,10 @@ static const struct pin_config_item conf_items[] = {PCONFDUMP (PIN_CONFIG_BIAS_BUS_HOLD ,"input bias bus hold" ,NULL , false),PCONFDUMP (PIN_CONFIG_BIAS_DISABLE ,"input bias disabled" ,NULL , false),PCONFDUMP (PIN_CONFIG_BIAS_HIGH_IMPEDANCE ,"input bias high impedance" ,NULL , false), -PCONFDUMP (PIN_CONFIG_BIAS_PULL_DOWN ,"input bias pull down" ,NULL , false), +PCONFDUMP (PIN_CONFIG_BIAS_PULL_DOWN ,"input bias pull down" ,"ohms" , true),PCONFDUMP (PIN_CONFIG_BIAS_PULL_PIN_DEFAULT , -"input bias pull to pin specific state" ,NULL , false), -PCONFDUMP (PIN_CONFIG_BIAS_PULL_UP ,"input bias pull up" ,NULL , false), +"input bias pull to pin specific state" ,"ohms" , true), +PCONFDUMP (PIN_CONFIG_BIAS_PULL_UP ,"input bias pull up" ,"ohms" , true),PCONFDUMP (PIN_CONFIG_DRIVE_OPEN_DRAIN ,"output drive open drain" ,NULL , false),PCONFDUMP (PIN_CONFIG_DRIVE_OPEN_SOURCE ,"output drive open source" ,NULL , false), PCONFDUMP(PIN_CONFIG_DRIVE_PUSH_PULL, "output drive push pull", NULL, false),
drivers/pinctrl/pinctrl-rockchip.c +2 -0
@@ -2414,6 +2414,7 @@ static int rockchip_pinctrl_probe(struct platform_device *pdev) node =of_parse_phandle (np,"rockchip,grf" ,0 );if (node) { info->regmap_base =syscon_node_to_regmap (node); +of_node_put (node);if (IS_ERR (info->regmap_base))return PTR_ERR (info->regmap_base); }else {
@@ -2450,6 +2451,7 @@ static int rockchip_pinctrl_probe(struct platform_device *pdev) node =of_parse_phandle (np,"rockchip,pmu" ,0 );if (node) { info->regmap_pmu =syscon_node_to_regmap (node); +of_node_put (node);if (IS_ERR (info->regmap_pmu))return PTR_ERR (info->regmap_pmu); }
drivers/power/supply/ab8500_fg.c +3 -1
@@ -2545,8 +2545,10 @@ static int ab8500_fg_sysfs_init(struct ab8500_fg *di) ret =kobject_init_and_add (&di->fg_kobject, &ab8500_fg_ktype,NULL ,"battery" ); -if (ret <0 ) +if (ret <0 ) { +kobject_put (&di->fg_kobject);dev_err (di->dev,"failed to create sysfs entry\n" ); + }return ret; }
drivers/power/supply/wm8350_power.c +83 -14
133 lines not on this page · raw message
drivers/ptp/ptp_sysfs.c +2 -2
@@ -26,7 +26,7 @@ static ssize_t clock_name_show(struct device *dev, struct device_attribute *attr, char *page) { struct ptp_clock *ptp = dev_get_drvdata(dev); -return snprintf (page,PAGE_SIZE -1 ,"%s\n" , ptp->info->name); +return sysfs_emit (page,"%s\n" , ptp->info->name); } static DEVICE_ATTR(clock_name, 0444, clock_name_show, NULL);
@@ -240,7 +240,7 @@ static ssize_t ptp_pin_show(struct device *dev, struct device_attribute *attr,mutex_unlock (&ptp->pincfg_mux); -return snprintf (page,PAGE_SIZE ,"%u %u\n" , func, chan); +return sysfs_emit (page,"%u %u\n" , func, chan); } static ssize_t ptp_pin_store(struct device *dev, struct device_attribute *attr,
drivers/pwm/pwm-lpc18xx-sct.c +9 -11
@@ -406,12 +406,6 @@ static int lpc18xx_pwm_probe(struct platform_device *pdev)lpc18xx_pwm_writel (lpc18xx_pwm,LPC18XX_PWM_LIMIT ,BIT (lpc18xx_pwm->period_event)); - ret =pwmchip_add (&lpc18xx_pwm->chip); -if (ret <0 ) { -dev_err (&pdev->dev,"pwmchip_add failed: %d\n" , ret); - goto disable_pwmclk; - } -for (i =0 ; i < lpc18xx_pwm->chip.npwm; i++) {struct lpc18xx_pwm_data *data;
@@ -421,14 +415,12 @@ static int lpc18xx_pwm_probe(struct platform_device *pdev) GFP_KERNEL);if (!data) { ret = -ENOMEM ; - goto remove_pwmchip; + goto disable_pwmclk; }pwm_set_chip_data (pwm, data); } -platform_set_drvdata (pdev, lpc18xx_pwm); - val =lpc18xx_pwm_readl (lpc18xx_pwm,LPC18XX_PWM_CTRL ); val &= ~LPC18XX_PWM_BIDIR ; val &= ~LPC18XX_PWM_CTRL_HALT ;
@@ -436,10 +428,16 @@ static int lpc18xx_pwm_probe(struct platform_device *pdev) val |=LPC18XX_PWM_PRE (0 );lpc18xx_pwm_writel (lpc18xx_pwm,LPC18XX_PWM_CTRL , val); + ret =pwmchip_add (&lpc18xx_pwm->chip); +if (ret <0 ) { +dev_err (&pdev->dev,"pwmchip_add failed: %d\n" , ret); + goto disable_pwmclk; + } + +platform_set_drvdata (pdev, lpc18xx_pwm); +return 0 ; -remove_pwmchip: -pwmchip_remove (&lpc18xx_pwm->chip); disable_pwmclk:clk_disable_unprepare (lpc18xx_pwm->pwm_clk);return ret;
drivers/remoteproc/qcom_wcnss.c +1 -0
@@ -472,6 +472,7 @@ static int wcnss_alloc_memory_region(struct qcom_wcnss *wcnss) } ret =of_address_to_resource (node,0 , &r); +of_node_put (node);if (ret)return ret;
drivers/rtc/rtc-wm8350.c +9 -2
@@ -443,14 +443,21 @@ static int wm8350_rtc_probe(struct platform_device *pdev)return ret; } -wm8350_register_irq (wm8350,WM8350_IRQ_RTC_SEC , + ret =wm8350_register_irq (wm8350,WM8350_IRQ_RTC_SEC , wm8350_rtc_update_handler,0 ,"RTC Seconds" , wm8350); +if (ret) +return ret; +wm8350_mask_irq (wm8350,WM8350_IRQ_RTC_SEC ); -wm8350_register_irq (wm8350,WM8350_IRQ_RTC_ALM , + ret =wm8350_register_irq (wm8350,WM8350_IRQ_RTC_ALM , wm8350_rtc_alarm_handler,0 ,"RTC Alarm" , wm8350); +if (ret) { +wm8350_free_irq (wm8350,WM8350_IRQ_RTC_SEC , wm8350); +return ret; + }return 0 ; }
drivers/scsi/aha152x.c +2 -4
@@ -3381,13 +3381,11 @@ static int __init aha152x_setup(char *str) setup[setup_count].synchronous = ints[0 ] >=6 ? ints[6 ] :1 ; setup[setup_count].delay = ints[0 ] >=7 ? ints[7 ] :DELAY_DEFAULT ; setup[setup_count].ext_trans = ints[0 ] >=8 ? ints[8 ] :0 ; -if (ints[0 ] >8 ) {/*}*/ +if (ints[0 ] >8 )printk (KERN_NOTICE "aha152x: usage: aha152x=<IOBASE>[,<IRQ>[,<SCSI ID>" "[,<RECONNECT>[,<PARITY>[,<SYNCHRONOUS>[,<DELAY>[,<EXT_TRANS>]]]]]]]\n" ); - }else { +else setup_count++; -return 0 ; - }return 1 ; }
drivers/scsi/bfa/bfad_attr.c +13 -13
@@ -722,7 +722,7 @@ bfad_im_serial_num_show(struct device *dev, struct device_attribute *attr,char serial_num[BFA_ADAPTER_SERIAL_NUM_LEN ];bfa_get_adapter_serial_num (&bfad->bfa, serial_num); -return snprintf (buf,PAGE_SIZE ,"%s\n" , serial_num); +return sysfs_emit (buf,"%s\n" , serial_num); } static ssize_t
@@ -736,7 +736,7 @@ bfad_im_model_show(struct device *dev, struct device_attribute *attr,char model[BFA_ADAPTER_MODEL_NAME_LEN ];bfa_get_adapter_model (&bfad->bfa, model); -return snprintf (buf,PAGE_SIZE ,"%s\n" , model); +return sysfs_emit (buf,"%s\n" , model); } static ssize_t
@@ -816,7 +816,7 @@ bfad_im_model_desc_show(struct device *dev, struct device_attribute *attr,snprintf (model_descr,BFA_ADAPTER_MODEL_DESCR_LEN ,"Invalid Model" ); -return snprintf (buf,PAGE_SIZE ,"%s\n" , model_descr); +return sysfs_emit (buf,"%s\n" , model_descr); } static ssize_t
@@ -830,7 +830,7 @@ bfad_im_node_name_show(struct device *dev, struct device_attribute *attr,u64 nwwn; nwwn =bfa_fcs_lport_get_nwwn (port->fcs_port); -return snprintf (buf,PAGE_SIZE ,"0x%llx\n" ,cpu_to_be64 (nwwn)); +return sysfs_emit (buf,"0x%llx\n" ,cpu_to_be64 (nwwn)); } static ssize_t
@@ -847,7 +847,7 @@ bfad_im_symbolic_name_show(struct device *dev, struct device_attribute *attr,bfa_fcs_lport_get_attr (&bfad->bfa_fcs.fabric.bport, &port_attr);strlcpy (symname, port_attr.port_cfg.sym_name.symname,BFA_SYMNAME_MAXLEN ); -return snprintf (buf,PAGE_SIZE ,"%s\n" , symname); +return sysfs_emit (buf,"%s\n" , symname); } static ssize_t
@@ -861,14 +861,14 @@ bfad_im_hw_version_show(struct device *dev, struct device_attribute *attr,char hw_ver[BFA_VERSION_LEN ];bfa_get_pci_chip_rev (&bfad->bfa, hw_ver); -return snprintf (buf,PAGE_SIZE ,"%s\n" , hw_ver); +return sysfs_emit (buf,"%s\n" , hw_ver); }static ssize_t bfad_im_drv_version_show (struct device *dev,struct device_attribute *attr,char *buf) { -return snprintf (buf,PAGE_SIZE ,"%s\n" ,BFAD_DRIVER_VERSION ); +return sysfs_emit (buf,"%s\n" ,BFAD_DRIVER_VERSION ); } static ssize_t
@@ -882,7 +882,7 @@ bfad_im_optionrom_version_show(struct device *dev,char optrom_ver[BFA_VERSION_LEN ];bfa_get_adapter_optrom_ver (&bfad->bfa, optrom_ver); -return snprintf (buf,PAGE_SIZE ,"%s\n" , optrom_ver); +return sysfs_emit (buf,"%s\n" , optrom_ver); } static ssize_t
@@ -896,7 +896,7 @@ bfad_im_fw_version_show(struct device *dev, struct device_attribute *attr,char fw_ver[BFA_VERSION_LEN ];bfa_get_adapter_fw_ver (&bfad->bfa, fw_ver); -return snprintf (buf,PAGE_SIZE ,"%s\n" , fw_ver); +return sysfs_emit (buf,"%s\n" , fw_ver); } static ssize_t
@@ -908,7 +908,7 @@ bfad_im_num_of_ports_show(struct device *dev, struct device_attribute *attr, (struct bfad_im_port_s *) shost->hostdata[0 ];struct bfad_s *bfad = im_port->bfad; -return snprintf (buf,PAGE_SIZE ,"%d\n" , +return sysfs_emit (buf,"%d\n" ,bfa_get_nports (&bfad->bfa)); }
@@ -916,7 +916,7 @@ static ssize_t bfad_im_drv_name_show(struct device *dev, struct device_attribute *attr, char *buf) { - return snprintf(buf, PAGE_SIZE, "%s\n", BFAD_DRIVER_NAME); + return sysfs_emit(buf, "%s\n", BFAD_DRIVER_NAME); } static ssize_t
@@ -935,14 +935,14 @@ bfad_im_num_of_discovered_ports_show(struct device *dev, rports =kzalloc (sizeof (struct bfa_rport_qualifier_s ) * nrports,GFP_ATOMIC );if (rports ==NULL ) -return snprintf (buf,PAGE_SIZE ,"Failed\n" ); +return sysfs_emit (buf,"Failed\n" );spin_lock_irqsave (&bfad->bfad_lock, flags);bfa_fcs_lport_get_rport_quals (port->fcs_port, rports, &nrports);spin_unlock_irqrestore (&bfad->bfad_lock, flags);kfree (rports); -return snprintf (buf,PAGE_SIZE ,"%d\n" , nrports); +return sysfs_emit (buf,"%d\n" , nrports); } static DEVICE_ATTR(serial_number, S_IRUGO,
drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c +1 -1
@@ -43,7 +43,7 @@#define IBMVSCSIS_VERSION "v0.2" -#define INITIAL_SRP_LIMIT 800 +#define INITIAL_SRP_LIMIT 1024#define DEFAULT_MAX_SECTORS 256#define MAX_TXU 1024 * 1024
drivers/scsi/libfc/fc_exch.c +1 -0
@@ -1663,6 +1663,7 @@ static void fc_exch_abts_resp(struct fc_exch *ep, struct fc_frame *fp)if (cancel_delayed_work_sync (&ep->timeout_work)) {FC_EXCH_DBG (ep,"Exchange timer canceled due to ABTS response\n" );fc_exch_release (ep);/* release from pending timer hold */ +return ; }spin_lock_bh (&ep->ex_lock);
drivers/scsi/libsas/sas_ata.c +1 -1
@@ -220,7 +220,7 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc) task->total_xfer_len = qc->nbytes; task->num_scatter = qc->n_elem; task->data_dir = qc->dma_dir; - }else if (qc->tf.protocol ==ATA_PROT_NODATA ) { + }else if (!ata_is_data (qc->tf.protocol)) { task->data_dir =DMA_NONE ; }else {for_each_sg (qc->sg, sg, qc->n_elem, si)
drivers/scsi/mvsas/mv_init.c +3 -2
@@ -679,6 +679,7 @@ static struct pci_device_id mvs_pci_table[] = { { PCI_VDEVICE(ARECA, PCI_DEVICE_ID_ARECA_1300), chip_1300 }, { PCI_VDEVICE(ARECA, PCI_DEVICE_ID_ARECA_1320), chip_1320 }, { PCI_VDEVICE(ADAPTEC2, 0x0450), chip_6440 }, + { PCI_VDEVICE(TTI, 0x2640), chip_6440 }, { PCI_VDEVICE(TTI, 0x2710), chip_9480 }, { PCI_VDEVICE(TTI, 0x2720), chip_9480 }, { PCI_VDEVICE(TTI, 0x2721), chip_9480 },
@@ -730,7 +731,7 @@ static ssize_t mvs_show_driver_version(struct device *cdev, struct device_attribute *attr, char *buffer) { - return snprintf(buffer, PAGE_SIZE, "%s\n", DRV_VERSION); + return sysfs_emit(buffer, "%s\n", DRV_VERSION); } static DEVICE_ATTR(driver_version,
@@ -782,7 +783,7 @@ mvs_store_interrupt_coalescing(struct device *cdev,static ssize_t mvs_show_interrupt_coalescing (struct device *cdev,struct device_attribute *attr,char *buffer) { -return snprintf (buffer,PAGE_SIZE ,"%d\n" , interrupt_coalescing); +return sysfs_emit (buffer,"%d\n" , interrupt_coalescing); } static DEVICE_ATTR(interrupt_coalescing,
drivers/scsi/pm8001/pm8001_hwi.c +7 -6
@@ -1748,6 +1748,7 @@ static void pm8001_send_abort_all(struct pm8001_hba_info *pm8001_ha, ccb->device = pm8001_ha_dev; ccb->ccb_tag = ccb_tag; ccb->task = task; + ccb->n_elem =0 ; circularQ = &pm8001_ha->inbnd_q_tbl[0 ];
@@ -1810,6 +1811,7 @@ static void pm8001_send_read_log(struct pm8001_hba_info *pm8001_ha, ccb->device = pm8001_ha_dev; ccb->ccb_tag = ccb_tag; ccb->task = task; + ccb->n_elem =0 ; pm8001_ha_dev->id |=NCQ_READ_LOG_FLAG ; pm8001_ha_dev->id |=NCQ_2ND_RLE_FLAG ;
@@ -1826,7 +1828,7 @@ static void pm8001_send_read_log(struct pm8001_hba_info *pm8001_ha, sata_cmd.tag =cpu_to_le32 (ccb_tag); sata_cmd.device_id =cpu_to_le32 (pm8001_ha_dev->device_id); - sata_cmd.ncqtag_atap_dir_m |= ((0x1 <<7 ) | (0x5 <<9 )); + sata_cmd.ncqtag_atap_dir_m =cpu_to_le32 ((0x1 <<7 ) | (0x5 <<9 ));memcpy (&sata_cmd.sata_fis, &fis,sizeof (struct host_to_dev_fis )); res =pm8001_mpi_build_cmd (pm8001_ha, circularQ, opc, &sata_cmd,0 );
@@ -3766,12 +3768,11 @@ int pm8001_mpi_task_abort_resp(struct pm8001_hba_info *pm8001_ha, void *piomb)mb ();if (pm8001_dev->id &NCQ_ABORT_ALL_FLAG ) { -pm8001_tag_free (pm8001_ha, tag);sas_free_task (t); -/* clear the flag */ - pm8001_dev->id &=0xBFFFFFFF ; - }else + pm8001_dev->id &= ~NCQ_ABORT_ALL_FLAG ; + }else { t->task_done (t); + }return 0 ; }
@@ -4718,7 +4719,7 @@ int pm8001_chip_ssp_tm_req(struct pm8001_hba_info *pm8001_ha,memcpy (sspTMCmd.lun, task->ssp_task.LUN,8 ); sspTMCmd.tag =cpu_to_le32 (ccb->ccb_tag);if (pm8001_ha->chip_id != chip_8001) - sspTMCmd.ds_ads_m =0x08 ; + sspTMCmd.ds_ads_m =cpu_to_le32 (0x08 ); circularQ = &pm8001_ha->inbnd_q_tbl[0 ]; ret =pm8001_mpi_build_cmd (pm8001_ha, circularQ, opc, &sspTMCmd,0 );return ret;
drivers/scsi/pm8001/pm80xx_hwi.c +7 -4
@@ -870,9 +870,11 @@ pm80xx_set_thermal_config(struct pm8001_hba_info *pm8001_ha)else page_code =THERMAL_PAGE_CODE_8H ; - payload.cfg_pg[0 ] = (THERMAL_LOG_ENABLE <<9 ) | - (THERMAL_ENABLE <<8 ) | page_code; - payload.cfg_pg[1 ] = (LTEMPHIL <<24 ) | (RTEMPHIL <<8 ); + payload.cfg_pg[0 ] = +cpu_to_le32 ((THERMAL_LOG_ENABLE <<9 ) | + (THERMAL_ENABLE <<8 ) | page_code); + payload.cfg_pg[1 ] = +cpu_to_le32 ((LTEMPHIL <<24 ) | (RTEMPHIL <<8 )); rc =pm8001_mpi_build_cmd (pm8001_ha, circularQ, opc, &payload,0 );if (rc)
@@ -1424,6 +1426,7 @@ static void pm80xx_send_abort_all(struct pm8001_hba_info *pm8001_ha, ccb->device = pm8001_ha_dev; ccb->ccb_tag = ccb_tag; ccb->task = task; + ccb->n_elem =0 ; circularQ = &pm8001_ha->inbnd_q_tbl[0 ];
@@ -1504,7 +1507,7 @@ static void pm80xx_send_read_log(struct pm8001_hba_info *pm8001_ha, sata_cmd.tag =cpu_to_le32 (ccb_tag); sata_cmd.device_id =cpu_to_le32 (pm8001_ha_dev->device_id); - sata_cmd.ncqtag_atap_dir_m_dad |= ((0x1 <<7 ) | (0x5 <<9 )); + sata_cmd.ncqtag_atap_dir_m_dad =cpu_to_le32 (((0x1 <<7 ) | (0x5 <<9 )));memcpy (&sata_cmd.sata_fis, &fis,sizeof (struct host_to_dev_fis )); res =pm8001_mpi_build_cmd (pm8001_ha, circularQ, opc, &sata_cmd,0 );
drivers/scsi/qla2xxx/qla_isr.c +1 -0
@@ -1618,6 +1618,7 @@ qla24xx_tm_iocb_entry(scsi_qla_host_t *vha, struct req_que *req, void *tsk) iocb->u.tmf.data =QLA_FUNCTION_FAILED ; }else if ((le16_to_cpu (sts->scsi_status) &SS_RESPONSE_INFO_LEN_VALID )) { +host_to_fcp_swap (sts->data,sizeof (sts->data));if (le32_to_cpu (sts->rsp_data_len) <4 ) { ql_log(ql_log_warn, fcport->vha, 0x503b, "Async-%s error - hdl=%x not enough response(%d).\n",
drivers/scsi/zorro7xx.c +2 -0
@@ -158,6 +158,8 @@ static void zorro7xx_remove_one(struct zorro_dev *z)scsi_remove_host (host);NCR_700_release (host); +if (host->base >0x01000000 ) +iounmap (hostdata->base);kfree (hostdata);free_irq (host->irq, host);zorro_release_device (z);
drivers/soc/ti/wkup_m3_ipc.c +2 -2
@@ -405,9 +405,9 @@ static int wkup_m3_ipc_probe(struct platform_device *pdev) } irq =platform_get_irq (pdev,0 ); -if (!irq) { +if (irq <0 ) {dev_err (&pdev->dev,"no irq resource\n" ); -return -ENXIO ; +return irq; } ret = devm_request_irq(dev, irq, wkup_m3_txev_handler,
drivers/spi/spi-tegra114.c +4 -0
@@ -1098,6 +1098,10 @@ static int tegra_spi_probe(struct platform_device *pdev) tspi->phys = r->start; spi_irq =platform_get_irq (pdev,0 ); +if (spi_irq <0 ) { + ret = spi_irq; + goto exit_free_master; + } tspi->irq = spi_irq; tspi->clk =devm_clk_get (&pdev->dev,"spi" );
drivers/spi/spi-tegra20-slink.c +1 -7
@@ -1016,14 +1016,8 @@ static int tegra_slink_probe(struct platform_device *pdev)struct resource *r;int ret, spi_irq;const struct tegra_slink_chip_data *cdata =NULL ; -const struct of_device_id *match; - match =of_match_device (tegra_slink_of_match, &pdev->dev); -if (!match) { -dev_err (&pdev->dev,"Error: No device match found\n" ); -return -ENODEV ; - } - cdata = match->data; + cdata =of_device_get_match_data (&pdev->dev); master =spi_alloc_master (&pdev->dev,sizeof (*tspi));if (!master) {
drivers/thermal/int340x_thermal/int3400_thermal.c +1 -1
@@ -51,7 +51,7 @@ struct int3400_thermal_priv {struct art *arts;int trt_count;struct trt *trts; -u8 uuid_bitmap; +u32 uuid_bitmap;int rel_misc_dev_res;int current_uuid_index; };
drivers/tty/hvc/hvc_iucv.c +3 -1
@@ -1469,7 +1469,9 @@ static int __init hvc_iucv_init(void)*/ static int __init hvc_iucv_config (char *val) { -return kstrtoul (val,10 , &hvc_iucv_devices); +if (kstrtoul (val,10 , &hvc_iucv_devices)) +pr_warn ("hvc_iucv= invalid parameter value '%s'\n" , val); +return 1 ; }
drivers/tty/mxser.c +11 -4
@@ -860,6 +860,7 @@ static int mxser_activate(struct tty_port *port, struct tty_struct *tty) struct mxser_port *info = container_of(port, struct mxser_port, port);unsigned long page;unsigned long flags; +int ret; page =__get_free_page (GFP_KERNEL );if (!page)
@@ -869,9 +870,9 @@ static int mxser_activate(struct tty_port *port, struct tty_struct *tty)if (!info->ioaddr || !info->type) {set_bit (TTY_IO_ERROR , &tty->flags); -free_page (page);spin_unlock_irqrestore (&info->slock, flags); -return 0 ; + ret =0 ; + goto err_free_xmit; } info->port.xmit_buf = (unsigned char *) page;
@@ -897,8 +898,10 @@ static int mxser_activate(struct tty_port *port, struct tty_struct *tty)if (capable (CAP_SYS_ADMIN )) {set_bit (TTY_IO_ERROR , &tty->flags);return 0 ; - }else -return -ENODEV ; + } + + ret = -ENODEV ; + goto err_free_xmit; }/*
@@ -943,6 +946,10 @@ static int mxser_activate(struct tty_port *port, struct tty_struct *tty)spin_unlock_irqrestore (&info->slock, flags);return 0 ; +err_free_xmit: +free_page (page); + info->port.xmit_buf =NULL ; +return ret; }/*
drivers/tty/serial/kgdboc.c +3 -3
@@ -304,16 +304,16 @@ static int kgdboc_option_setup(char *opt) {if (!opt) {pr_err ("config string not provided\n" ); -return -EINVAL ; +return 1 ; }if (strlen (opt) >=MAX_CONFIG_LEN ) {pr_err ("config string too long\n" ); -return -ENOSPC ; +return 1 ; }strcpy (config, opt); -return 0 ; +return 1 ; }__setup ("kgdboc=" , kgdboc_option_setup);
drivers/tty/serial/samsung.c +1 -4
@@ -764,11 +764,8 @@ static irqreturn_t s3c24xx_serial_tx_chars(int irq, void *id) goto out; } -if (uart_circ_chars_pending (xmit) <WAKEUP_CHARS ) { -spin_unlock (&port->lock); +if (uart_circ_chars_pending (xmit) <WAKEUP_CHARS )uart_write_wakeup (port); -spin_lock (&port->lock); - }if (uart_circ_empty (xmit))s3c24xx_serial_stop_tx (port);
drivers/usb/dwc3/dwc3-omap.c +1 -1
@@ -245,7 +245,7 @@ static void dwc3_omap_set_mailbox(struct dwc3_omap *omap,break ;case OMAP_DWC3_ID_FLOAT : -if (omap->vbus_reg) +if (omap->vbus_reg &®ulator_is_enabled (omap->vbus_reg))regulator_disable (omap->vbus_reg); val =dwc3_omap_read_utmi_ctrl (omap); val |=USBOTGSS_UTMI_OTG_CTRL_IDDIG ;
drivers/usb/serial/Kconfig +1 -0
@@ -65,6 +65,7 @@ config USB_SERIAL_SIMPLE - Libtransistor USB console - a number of Motorola phones - Motorola Tetra devices + - Nokia mobile phones - Novatel Wireless GPS receivers - Siemens USB/MPI adapter. - ViVOtech ViVOpay USB device.
drivers/usb/serial/pl2303.c +1 -0
@@ -105,6 +105,7 @@ static const struct usb_device_id id_table[] = { { USB_DEVICE(ADLINK_VENDOR_ID, ADLINK_ND6530GC_PRODUCT_ID) }, { USB_DEVICE(SMART_VENDOR_ID, SMART_PRODUCT_ID) }, { USB_DEVICE(AT_VENDOR_ID, AT_VTKIT3_PRODUCT_ID) }, + { USB_DEVICE(IBM_VENDOR_ID, IBM_PRODUCT_ID) }, { } /* Terminating entry */ };
drivers/usb/serial/pl2303.h +3 -0
@@ -33,6 +33,9 @@#define ATEN_PRODUCT_UC485 0x2021#define ATEN_PRODUCT_ID2 0x2118 +#define IBM_VENDOR_ID 0x04b3 +#define IBM_PRODUCT_ID 0x4016 +#define IODATA_VENDOR_ID 0x04bb#define IODATA_PRODUCT_ID 0x0a03#define IODATA_PRODUCT_ID_RSAQ5 0x0a0e
drivers/usb/serial/usb-serial-simple.c +7 -0
@@ -94,6 +94,11 @@ DEVICE(moto_modem, MOTO_IDS); { USB_DEVICE(0x0cad, 0x9016) } /* TPG2200 */DEVICE (motorola_tetra,MOTOROLA_TETRA_IDS ); +/* Nokia mobile phone driver */ +#define NOKIA_IDS () \ + { USB_DEVICE(0x0421, 0x069a) }/* Nokia 130 (RM-1035) */ +DEVICE (nokia,NOKIA_IDS ); +/* Novatel Wireless GPS driver */ #define NOVATEL_IDS () \ { USB_DEVICE(0x09d7, 0x0100) }/* NovAtel FlexPack GPS */
@@ -126,6 +131,7 @@ static struct usb_serial_driver * const serial_drivers[] = { &vivopay_device, &moto_modem_device, &motorola_tetra_device, + &nokia_device, &novatel_gps_device, &hp4x_device, &suunto_device,
@@ -143,6 +149,7 @@ static const struct usb_device_id id_table[] = {VIVOPAY_IDS (),MOTO_IDS (),MOTOROLA_TETRA_IDS (), +NOKIA_IDS (),NOVATEL_IDS (),HP4X_IDS (), SUUNTO_IDS(),
drivers/usb/storage/ene_ub6250.c +76 -79
167 lines not on this page · raw message
drivers/video/fbdev/core/fbcvt.c +21 -32
53 lines not on this page · raw message
drivers/video/fbdev/omap2/omapfb/displays/connector-dvi.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/video/fbdev/omap2/omapfb/displays/panel-dsi-cm.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/video/fbdev/sm712fb.c +11 -35
46 lines not on this page · raw message
kernel/ptrace.c +32 -15
47 lines not on this page · raw message
net/netfilter/nf_conntrack_proto_tcp.c +13 -4
Lines of this file are not shown. View the raw message.
scripts/gcc-plugins/latent_entropy_plugin.c +27 -17
44 lines not on this page · raw message
tools/testing/selftests/x86/check_cc.sh +1 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.