Linux 4.14.186
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.186 kernel.
All users of the 4.14 kernel series must upgrade.
The updated 4.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.14.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/driver-api/mtdnand.rst | 2 Makefile | 2 arch/arm/mach-integrator/Kconfig | 7 arch/arm64/kernel/hw_breakpoint.c | 44 ++-- arch/m68k/coldfire/pci.c | 4 arch/openrisc/kernel/entry.S | 4 arch/powerpc/include/asm/book3s/64/pgtable.h | 23 ++ arch/powerpc/kernel/machine_kexec.c | 8 arch/powerpc/perf/hv-24x7.c | 10 - arch/powerpc/platforms/4xx/pci.c | 4 arch/powerpc/platforms/ps3/mm.c | 22 +- arch/powerpc/platforms/pseries/ras.c | 5 arch/s390/include/asm/syscall.h | 12 + arch/x86/boot/Makefile | 2 arch/x86/kernel/apic/apic.c | 2 arch/x86/kernel/kprobes/core.c | 16 - arch/x86/kvm/mmu.c | 51 +++++ arch/x86/kvm/x86.c | 31 --- crypto/algboss.c | 2 crypto/algif_skcipher.c | 6 drivers/ata/libata-core.c | 11 - drivers/base/platform.c | 2 drivers/block/ps3disk.c | 1 drivers/clk/bcm/clk-bcm2835.c | 10 - drivers/clk/qcom/gcc-msm8916.c | 8 drivers/clk/samsung/clk-exynos5433.c | 3 drivers/clk/st/clk-flexgen.c | 1 drivers/clk/sunxi/clk-sunxi.c | 2 drivers/clk/ti/composite.c | 1 drivers/crypto/omap-sham.c | 64 +++---- drivers/extcon/extcon-adc-jack.c | 3 drivers/gpu/drm/drm_dp_mst_topology.c | 58 +++--- drivers/gpu/drm/drm_encoder_slave.c | 5 drivers/gpu/drm/i915/i915_cmd_parser.c | 4 drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c | 3 drivers/gpu/drm/qxl/qxl_kms.c | 2 drivers/gpu/drm/sun4i/sun4i_hdmi.h | 2 drivers/gpu/drm/sun4i/sun4i_hdmi_ddc_clk.c | 2 drivers/i2c/busses/i2c-piix4.c | 3 drivers/i2c/busses/i2c-pxa.c | 13 - drivers/iio/pressure/bmp280-core.c | 7 drivers/infiniband/core/cma_configfs.c | 13 + drivers/md/bcache/btree.c | 8 drivers/md/dm-mpath.c | 2 drivers/md/dm-zoned-metadata.c | 4 drivers/md/dm-zoned-reclaim.c | 4 drivers/md/md.c | 13 + drivers/md/raid0.c | 3 drivers/mfd/wm8994-core.c | 1 drivers/mtd/nand/ams-delta.c | 2 drivers/mtd/nand/au1550nd.c | 2 drivers/mtd/nand/bcm47xxnflash/main.c | 2 drivers/mtd/nand/bf5xx_nand.c | 2 drivers/mtd/nand/brcmnand/brcmnand.c | 2 drivers/mtd/nand/cafe_nand.c | 2 drivers/mtd/nand/cmx270_nand.c | 2 drivers/mtd/nand/cs553x_nand.c | 2 drivers/mtd/nand/davinci_nand.c | 2 drivers/mtd/nand/denali.c | 4 drivers/mtd/nand/diskonchip.c | 9 drivers/mtd/nand/docg4.c | 4 drivers/mtd/nand/fsl_elbc_nand.c | 2 drivers/mtd/nand/fsl_ifc_nand.c | 2 drivers/mtd/nand/fsl_upm.c | 2 drivers/mtd/nand/fsmc_nand.c | 2 drivers/mtd/nand/gpio.c | 2 drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 2 drivers/mtd/nand/hisi504_nand.c | 5 drivers/mtd/nand/jz4740_nand.c | 4 drivers/mtd/nand/jz4780_nand.c | 4 drivers/mtd/nand/lpc32xx_mlc.c | 5 drivers/mtd/nand/lpc32xx_slc.c | 5 drivers/mtd/nand/mpc5121_nfc.c | 2 drivers/mtd/nand/mtk_nand.c | 4 drivers/mtd/nand/mxc_nand.c | 2 drivers/mtd/nand/nand_base.c | 8 drivers/mtd/nand/nandsim.c | 4 drivers/mtd/nand/ndfc.c | 2 drivers/mtd/nand/nuc900_nand.c | 2 drivers/mtd/nand/omap2.c | 2 drivers/mtd/nand/orion_nand.c | 5 drivers/mtd/nand/oxnas_nand.c | 16 - drivers/mtd/nand/pasemi_nand.c | 2 drivers/mtd/nand/plat_nand.c | 4 drivers/mtd/nand/pxa3xx_nand.c | 2 drivers/mtd/nand/qcom_nandc.c | 2 drivers/mtd/nand/r852.c | 4 drivers/mtd/nand/s3c2410.c | 2 drivers/mtd/nand/sh_flctl.c | 2 drivers/mtd/nand/sharpsl.c | 4 drivers/mtd/nand/socrates_nand.c | 5 drivers/mtd/nand/sunxi_nand.c | 4 drivers/mtd/nand/tango_nand.c | 2 drivers/mtd/nand/tmio_nand.c | 4 drivers/mtd/nand/txx9ndfmc.c | 2 drivers/mtd/nand/vf610_nfc.c | 2 drivers/mtd/nand/xway_nand.c | 4 drivers/net/ethernet/intel/e1000e/netdev.c | 14 + drivers/net/geneve.c | 7 drivers/net/hamradio/yam.c | 1 drivers/ntb/ntb.c | 8 drivers/pci/host/pci-aardvark.c | 4 drivers/pci/host/pcie-rcar.c | 9 drivers/pci/pcie/aspm.c | 10 - drivers/pci/pcie/ptm.c | 22 +- drivers/pci/probe.c | 5 drivers/pinctrl/freescale/pinctrl-imx.c | 19 -- drivers/pinctrl/freescale/pinctrl-imx1-core.c | 1 drivers/power/supply/Kconfig | 2 drivers/power/supply/lp8788-charger.c | 18 - drivers/power/supply/smb347-charger.c | 1 drivers/remoteproc/remoteproc_core.c | 3 drivers/s390/cio/qdio.h | 1 drivers/s390/cio/qdio_setup.c | 1 drivers/s390/cio/qdio_thinint.c | 14 - drivers/scsi/arm/acornscsi.c | 4 drivers/scsi/ibmvscsi/ibmvscsi.c | 2 drivers/scsi/iscsi_boot_sysfs.c | 2 drivers/scsi/lpfc/lpfc_els.c | 2 drivers/scsi/mpt3sas/mpt3sas_base.c | 2 drivers/scsi/qedi/qedi_iscsi.c | 7 drivers/scsi/qla2xxx/qla_os.c | 1 drivers/scsi/qla2xxx/tcm_qla2xxx.c | 2 drivers/scsi/sr.c | 6 drivers/scsi/ufs/ufs-qcom.c | 6 drivers/scsi/ufs/ufshcd.c | 1 drivers/staging/greybus/light.c | 3 drivers/staging/sm750fb/sm750.c | 1 drivers/thermal/ti-soc-thermal/ti-thermal-common.c | 6 drivers/tty/hvc/hvc_console.c | 16 + drivers/tty/n_gsm.c | 26 +- drivers/tty/serial/amba-pl011.c | 1 drivers/usb/class/usblp.c | 5 drivers/usb/dwc2/core_intr.c | 7 drivers/usb/gadget/composite.c | 78 ++++++-- drivers/usb/gadget/udc/lpc32xx_udc.c | 11 - drivers/usb/gadget/udc/m66592-udc.c | 2 drivers/usb/gadget/udc/s3c2410_udc.c | 4 drivers/usb/host/ehci-mxc.c | 2 drivers/usb/host/ehci-platform.c | 5 drivers/usb/host/ohci-platform.c | 5 drivers/usb/host/xhci-plat.c | 10 - drivers/vfio/mdev/mdev_sysfs.c | 2 drivers/vfio/pci/vfio_pci_config.c | 14 + drivers/video/backlight/lp855x_bl.c | 20 +- drivers/watchdog/da9062_wdt.c | 5 fs/block_dev.c | 12 - fs/dlm/dlm_internal.h | 1 fs/ext4/extents.c | 2 fs/f2fs/super.c | 3 fs/gfs2/log.c | 11 - fs/gfs2/ops_fstype.c | 2 fs/nfs/nfs4proc.c | 2 fs/nfsd/nfs4callback.c | 2 include/linux/bitops.h | 2 include/linux/elfnote.h | 2 include/linux/genhd.h | 2 include/linux/kprobes.h | 4 include/linux/libata.h | 3 include/linux/mtd/rawnand.h | 6 include/linux/usb/composite.h | 3 include/uapi/linux/raid/md_p.h | 2 kernel/kprobes.c | 27 ++ kernel/trace/blktrace.c | 30 +-- lib/zlib_inflate/inffast.c | 91 +++------- net/core/dev.c | 40 +--- net/sunrpc/addr.c | 4 scripts/mksysmap | 2 security/apparmor/label.c | 4 security/selinux/ss/services.c | 4 sound/isa/wavefront/wavefront_synth.c | 8 sound/soc/davinci/davinci-mcasp.c | 4 sound/soc/fsl/fsl_asrc_dma.c | 1 sound/usb/card.h | 4 sound/usb/endpoint.c | 43 ++++ sound/usb/endpoint.h | 1 sound/usb/pcm.c | 2 tools/perf/builtin-report.c | 3 tools/testing/selftests/networking/timestamping/timestamping.c | 10 - tools/testing/selftests/x86/protection_keys.c | 3 180 files changed, 823 insertions(+), 587 deletions(-)
Adam Honse (1):
i2c: piix4: Detect secondary SMBus controller on AMD AM4 chipsets
Ahmed S. Darwish (2):
block: nr_sects_write(): Disable preemption on seqcount write
net: core: device_rename: Use rwsem instead of a seqcount
Alain Volmat (1):
clk: clk-flexgen: fix clock-critical handling
Alex Elder (1):
remoteproc: Fix IDR initialisation in rproc_alloc()
Alex Williamson (1):
vfio-pci: Mask cap zero
Alexander Tsoy (1):
ALSA: usb-audio: Improve frames size computation
Andreas Klinger (1):
iio: bmp280: fix compensation of humidity
Andrew Murray (1):
PCI: rcar: Fix incorrect programming of OB windows
Andy Shevchenko (1):
iio: pressure: bmp280: Tolerate IRQ before registering
Ard Biesheuvel (1):
x86/boot/compressed: Relax sed symbol type regex for LLVM ld.lld
Arnd Bergmann (2):
dlm: remove BUG() before panic() include/linux/bitops.h: avoid clang shift-count-overflow warnings
Bjorn Helgaas (1):
PCI/PTM: Inherit Switch Downstream Port PTM settings from Upstream Port
Bob Peterson (2):
gfs2: Allow lock_nolock mount to specify jid=X
gfs2: fix use-after-free on transaction ail lists
Boris Brezillon (1):
mtd: rawnand: Pass a nand_chip object to nand_release()
Borislav Petkov (1):
x86/apic: Make TSC deadline timer detection message visible
Bryan O'Donoghue (1):
clk: qcom: msm8916: Fix the address location of pll->config_reg
Can Guo (1):
scsi: ufs: Don't update urgent bkops level when toggling auto bkops
Chaitanya Kulkarni (3):
blktrace: use errno instead of bi_status
blktrace: fix endianness in get_pdu_int()
blktrace: fix endianness for blk_log_remap()
Chen Yu (1):
e1000e: Do not wake up the system via WOL if device wakeup is disabled
Chen Zhou (1):
staging: greybus: fix a missing-check bug in gb_lights_light_config()
Chris Wilson (1):
drm/i915: Whitelist context-local timestamp in the gen9 cmdparser
Christophe JAILLET (6):
m68k/PCI: Fix a memory leak in an error handling path
power: supply: lp8788: Fix an error handling path in 'lp8788_charger_probe()'
extcon: adc-jack: Fix an error handling path in 'adc_jack_probe()'
pinctrl: imxl: Fix an error handling path in 'imx1_pinctrl_core_probe()'
pinctrl: freescale: imx: Fix an error handling path in 'imx_pinctrl_probe()'
scsi: acornscsi: Fix an error handling path in acornscsi_probe()
Colin Ian King (1):
usb: gadget: lpc32xx_udc: don't dereference ep pointer before null check
Dan Carpenter (2):
scsi: qedi: Check for buffer overflow in qedi_set_path()
ALSA: isa/wavefront: prevent out of bounds write in ioctl
Dmitry Osipenko (1):
power: supply: smb347-charger: IRQSTAT_D is volatile
Dmitry V. Levin (1):
s390: fix syscall_get_error for compat processes
Emmanuel Nicolet (1):
ps3disk: use the default segment boundary
Enric Balletbo i Serra (1):
power: supply: bq24257_charger: Replace depends on REGMAP_I2C with select
Eric Biggers (1):
crypto: algboss - don't wait during notifier callback
Fabrice Gasnier (1):
usb: dwc2: gadget: move gadget resume after the core is in L0 state
Fedor Tokarev (1):
net: sunrpc: Fix off-by-one issues in 'rpc_ntop6'
Gaurav Singh (1):
perf report: Fix NULL pointer dereference in hists__fprintf_nr_sample_events()
Geoff Levand (1):
powerpc/ps3: Fix kexec shutdown hang
Greg Kroah-Hartman (1):
Linux 4.14.186
Gregory CLEMENT (3):
tty: n_gsm: Fix SOF skipping
tty: n_gsm: Fix waking up upper tty layer when room available
tty: n_gsm: Fix bogus i++ in gsm_data_kick
Hannes Reinecke (1):
dm zoned: return NULL if dmz_get_zone_for_reclaim() fails to find a zone
Herbert Xu (1):
crypto: algif_skcipher - Cap recv SG list at ctx->used
Huacai Chen (1):
drm/qxl: Use correct notify port address when creating cursor ring
Jann Horn (1):
lib/zlib: remove outdated and incorrect pre-increment optimization
Jason Yan (1):
block: Fix use-after-free in blkdev_get()
Jeffle Xu (1):
ext4: fix partial cluster initialization when splitting extent
Jeffrey Hugo (1):
scsi: ufs-qcom: Fix scheduling while atomic issue
Jernej Skrabec (1):
drm/sun4i: hdmi ddc clk: Fix size of m divider
Jiri Benc (1):
geneve: change from tx_error to tx_dropped on missing metadata
Jiri Olsa (1):
kretprobe: Prevent triggering kretprobe from within kprobe_flush_task
John Johansen (1):
apparmor: fix introspection of of task mode for unconfined tasks
John Stultz (1):
serial: amba-pl011: Make sure we initialize the port.lock spinlock
Jon Hunter (1):
backlight: lp855x: Ensure regulators are disabled on probe failure
Julian Wiedmann (1):
s390/qdio: put thinint indicator after early error
Kai Huang (2):
kvm: x86: Move kvm_set_mmio_spte_mask() from x86.c to mmu.c
kvm: x86: Fix reserved bits related calculation errors caused by MKTME
Kai-Heng Feng (2):
PCI/ASPM: Allow ASPM on links to PCIe-to-PCI/PCI-X Bridges
libata: Use per port sync for detach
Kajol Jain (1):
powerpc/perf/hv-24x7: Fix inconsistent output values incase multiple hv-24x7 events run
Konstantin Khlebnikov (1):
f2fs: report delalloc reserve as non-free in statfs for project quota
Kuppuswamy Sathyanarayanan (1):
drivers: base: Fix NULL pointer exception in __platform_driver_probe() if a driver developer is foolish
Linus Walleij (1):
ARM: integrator: Add some Kconfig selections
Logan Gunthorpe (1):
NTB: Fix the default port and peer numbers for legacy drivers
Lyude Paul (2):
drm/dp_mst: Reformat drm_dp_check_act_status() a bit drm/dp_mst: Increase ACT retry timeout to 3s
Maor Gottlieb (1):
IB/cma: Fix ports memory leak in cma_configfs
Marek Szyprowski (2):
mfd: wm8994: Fix driver operation if loaded as modules
clk: samsung: exynos5433: Add IGNORE_UNUSED flag to sclk_i2s1
Martin Wilck (1):
dm mpath: switch paths in dm_blk_ioctl() code path
Masami Hiramatsu (1):
kprobes: Fix to protect kick_kprobe_optimizer() by kprobe_mutex
Matej Dujava (1):
staging: sm750fb: add missing case while setting FB_VISUAL
Miquel Raynal (9):
mtd: rawnand: diskonchip: Fix the probe error path
mtd: rawnand: sharpsl: Fix the probe error path
mtd: rawnand: xway: Fix the probe error path
mtd: rawnand: orion: Fix the probe error path
mtd: rawnand: oxnas: Fix the probe error path
mtd: rawnand: socrates: Fix the probe error path
mtd: rawnand: plat_nand: Fix the probe error path
mtd: rawnand: mtk: Fix the probe error path
mtd: rawnand: tmio: Fix the probe error path
Nathan Chancellor (2):
USB: gadget: udc: s3c2410_udc: Remove pointless NULL check in s3c2410_udc_nuke
clk: bcm2835: Fix return type of bcm2835_register_gate
NeilBrown (1):
md: add feature flag MD_FEATURE_RAID0_LAYOUT
Nicholas Piggin (1):
powerpc/pseries/ras: Fix FWNMI_VALID off by one
Nick Desaulniers (1):
elfnote: mark all .note sections SHF_ALLOC
Nilesh Javali (1):
scsi: qedi: Do not flush offload work if ARP not resolved
Nishka Dasgupta (1):
mtd: rawnand: oxnas: Add of_node_put()
Olga Kornievskaia (1):
NFSv4.1 fix rpc_call_done assignment for BIND_CONN_TO_SESSION
Oliver Neukum (1):
usblp: poison URBs upon disconnect
Pali Rohár (1):
PCI: aardvark: Don't blindly enable ASPM L0s and don't write to read-only register
Pawel Laszczak (1):
usb: gadget: Fix issue with config_ep_by_speed function
Pingfan Liu (1):
powerpc/crashkernel: Take "mem=" option into account
Qais Yousef (3):
usb/ohci-platform: Fix a warning when hibernating usb/xhci-plat: Set PM runtime as active on resume usb/ehci-platform: Set PM runtime as active on resume
Qian Cai (2):
vfio/pci: fix memory leaks in alloc_perm_bits() powerpc/64s/pgtable: fix an undefined behaviour
Qiushi Wu (3):
usb: gadget: fix potential double-free in m66592_probe. vfio/mdev: Fix reference count leak in add_mdev_supported_type
scsi: iscsi: Fix reference count leak in iscsi_boot_create_kobj
Raghavendra Rao Ananta (1):
tty: hvc: Fix data abort due to race in hvc_open
Ram Pai (1):
selftests/vm/pkeys: fix alloc_random_pkey() to make it really random
Rikard Falkeborn (1):
clk: sunxi: Fix incorrect usage of round_down()
Rob Herring (1):
PCI: Fix pci_register_host_bridge() device_register() error handling
Roy Spliet (1):
drm/msm/mdp5: Fix mdp5_init error path for failed mdp5_kms allocation
Russell King (2):
i2c: pxa: clear all master action bits in i2c_pxa_stop_message()
i2c: pxa: fix i2c_pxa_scream_blue_murder() debug output
Sean Christopherson (1):
KVM: x86/mmu: Set mmio_value to '0' if reserved #PF can't be generated
Simon Arlott (1):
scsi: sr: Fix sr_probe() missing deallocate of device minor
Stafford Horne (1):
openrisc: Fix issue with argument clobbering for clone/fork
Stefan Riedmueller (1):
watchdog: da9062: No need to ping manually before setting timeout
Sudip Mukherjee (1):
thermal/drivers/ti-soc-thermal: Avoid dereferencing ERR_PTR
Suganath Prabu S (1):
scsi: mpt3sas: Fix double free warnings
Tang Bin (1):
USB: host: ehci-mxc: Add error handling in ehci_mxc_drv_probe()
Tero Kristo (2):
clk: ti: composite: fix memory leak
crypto: omap-sham - add proper load balancing support for multicore
Thomas Gleixner (1):
sched/rt, net: Use CONFIG_PREEMPTION.patch
Tom Rix (1):
selinux: fix double free
Tyrel Datwyler (1):
scsi: ibmvscsi: Don't send host info in adapter info MAD after LPM
Viacheslav Dubeyko (2):
scsi: qla2xxx: Fix issue with adapter's stopping state
scsi: qla2xxx: Fix warning after FC target reset
Wang Hai (1):
yam: fix possible memory leak in yam_init_driver
Will Deacon (1):
arm64: hw_breakpoint: Don't invoke overflow handler on uaccess watchpoints
Wolfram Sang (1):
drm: encoder_slave: fix refcouting error for modules
Xiyu Yang (4):
ASoC: davinci-mcasp: Fix dma_chan refcnt leak when getting dma type
scsi: lpfc: Fix lpfc_nodelist leak when processing unsolicited event
nfsd: Fix svc_xprt refcnt leak when setup callback client failed
ASoC: fsl_asrc_dma: Fix dma_chan leak when config DMA channel failed
Zhiqiang Liu (1):
bcache: fix potential deadlock problem in btree_gc_coalesce
ashimida (1):
mksysmap: Fix the mismatch of '.L' symbols in System.map
huhai (1):
powerpc/4xx: Don't unmap NULL mbase
tannerlove (1):
selftests/net: in timestamping, strncpy needs to preserve null byte
Greg Kroah-Hartman
maintainerDocumentation/driver-api/mtdnand.rst +1 -1
@@ -277,7 +277,7 @@ unregisters the partitions in the MTD layer. static void __exit board_cleanup (void) { /* Release resources, unregister device */ - nand_release (board_mtd); + nand_release (mtd_to_nand(board_mtd)); /* unmap physical address */ iounmap(baseaddr);
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 14 -SUBLEVEL = 185 +SUBLEVEL = 186 EXTRAVERSION = NAME = Petit Gorille
arch/arm/mach-integrator/Kconfig +4 -3
@@ -3,6 +3,8 @@ menuconfig ARCH_INTEGRATOR depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V6 select ARM_AMBA select COMMON_CLK_VERSATILE + select CMA + select DMA_CMA select HAVE_TCM select ICST select MFD_SYSCON
@@ -34,14 +36,13 @@ config INTEGRATOR_IMPD1 select ARM_VIC select GPIO_PL061 select GPIOLIB + select REGULATOR + select REGULATOR_FIXED_VOLTAGE help The IM-PD1 is an add-on logic module for the Integrator which allows ARM(R) Ltd PrimeCells to be developed and evaluated. The IM-PD1 can be found on the Integrator/PP2 platform. - To compile this driver as a module, choose M here: the - module will be called impd1. - config INTEGRATOR_CM7TDMI bool "Integrator/CM7TDMI core module" depends on ARCH_INTEGRATOR_AP
arch/arm64/kernel/hw_breakpoint.c +26 -18
64 lines not on this page · raw message
arch/m68k/coldfire/pci.c +3 -1
@@ -316,8 +316,10 @@ static int __init mcf_pci_init(void)/* Keep a virtual mapping to IO/config space active */ iospace = (unsigned long )ioremap (PCI_IO_PA ,PCI_IO_SIZE ); -if (iospace ==0 ) +if (iospace ==0 ) { +pci_free_host_bridge (bridge);return -ENODEV ; + }pr_info ("Coldfire: PCI IO/config window mapped to 0x%x\n" , (u32 ) iospace);
arch/openrisc/kernel/entry.S +2 -2
@@ -1102,13 +1102,13 @@ ENTRY(__sys_clone) l.movhi r29,hi(sys_clone) l.ori r29,r29,lo(sys_clone) l.j _fork_save_extra_regs_and_call - l.addi r7,r1,0 + l.nop ENTRY(__sys_fork) l.movhi r29,hi(sys_fork) l.ori r29,r29,lo(sys_fork) l.j _fork_save_extra_regs_and_call - l.addi r3,r1,0 + l.nop ENTRY(sys_rt_sigreturn) l.jal _sys_rt_sigreturn
arch/powerpc/include/asm/book3s/64/pgtable.h +19 -4
@@ -898,10 +898,25 @@ extern struct page *pgd_page(pgd_t pgd);#define pud_page_vaddr (pud) __va(pud_val(pud) & ~PUD_MASKED_BITS)#define pgd_page_vaddr (pgd) __va(pgd_val(pgd) & ~PGD_MASKED_BITS) -#define pgd_index (address) (((address) >> (PGDIR_SHIFT)) & (PTRS_PER_PGD - 1)) -#define pud_index (address) (((address) >> (PUD_SHIFT)) & (PTRS_PER_PUD - 1)) -#define pmd_index (address) (((address) >> (PMD_SHIFT)) & (PTRS_PER_PMD - 1)) -#define pte_index (address) (((address) >> (PAGE_SHIFT)) & (PTRS_PER_PTE - 1)) +static inline unsigned long pgd_index (unsigned long address) +{ +return (address >>PGDIR_SHIFT ) & (PTRS_PER_PGD -1 ); +} + +static inline unsigned long pud_index (unsigned long address) +{ +return (address >>PUD_SHIFT ) & (PTRS_PER_PUD -1 ); +} + +static inline unsigned long pmd_index (unsigned long address) +{ +return (address >>PMD_SHIFT ) & (PTRS_PER_PMD -1 ); +} + +static inline unsigned long pte_index (unsigned long address) +{ +return (address >>PAGE_SHIFT ) & (PTRS_PER_PTE -1 ); +}/* * Find an entry in a page-table-directory. We combine the address region
arch/powerpc/kernel/machine_kexec.c +5 -3
@@ -113,11 +113,12 @@ void machine_kexec(struct kimage *image)void __init reserve_crashkernel (void ) { -unsigned long long crash_size, crash_base; +unsigned long long crash_size, crash_base, total_mem_sz;int ret; + total_mem_sz = memory_limit ? memory_limit :memblock_phys_mem_size ();/* use common parsing */ - ret =parse_crashkernel (boot_command_line,memblock_phys_mem_size (), + ret =parse_crashkernel (boot_command_line, total_mem_sz, &crash_size, &crash_base);if (ret ==0 && crash_size >0 ) { crashk_res.start = crash_base;
@@ -176,6 +177,7 @@ void __init reserve_crashkernel(void)/* Crash kernel trumps memory limit */ if (memory_limit && memory_limit <= crashk_res.end) { memory_limit = crashk_res.end +1 ; + total_mem_sz = memory_limit;printk ("Adjusted memory limit for crashkernel, now 0x%llx\n" , memory_limit); }
@@ -184,7 +186,7 @@ void __init reserve_crashkernel(void)"for crashkernel (System RAM: %ldMB)\n" , (unsigned long )(crash_size >>20 ), (unsigned long )(crashk_res.start >>20 ), - (unsigned long)(memblock_phys_mem_size() >> 20)); + (unsigned long)(total_mem_sz >> 20));if (!memblock_is_region_memory (crashk_res.start, crash_size) ||memblock_reserve (crashk_res.start, crash_size)) {
arch/powerpc/perf/hv-24x7.c +0 -10
@@ -1413,16 +1413,6 @@ static void h_24x7_event_read(struct perf_event *event) h24x7hw = &get_cpu_var (hv_24x7_hw); h24x7hw->events[i] = event;put_cpu_var (h24x7hw); -/* -* Clear the event count so we can compute the _change_ -* in the 24x7 raw counter value at the end of the txn. -* -* Note that we could alternatively read the 24x7 value -* now and save its value in event->hw.prev_count. But -* that would require issuing a hcall, which would then -* defeat the purpose of using the txn interface. -*/ -local64_set (&event->count,0 ); }put_cpu_var (hv_24x7_reqb);
arch/powerpc/platforms/4xx/pci.c +1 -3
@@ -1242,7 +1242,7 @@ static void __init ppc460sx_pciex_check_link(struct ppc4xx_pciex_port *port)if (mbase ==NULL ) {printk (KERN_ERR "%pOF: Can't map internal config space !" , port->node); - goto done; +return ; } while (attempt && (0 == (in_le32(mbase + PECFG_460SX_DLLSTA)
@@ -1252,9 +1252,7 @@ static void __init ppc460sx_pciex_check_link(struct ppc4xx_pciex_port *port) }if (attempt) port->link =1 ; -done:iounmap (mbase); - }static struct ppc4xx_pciex_hwops ppc460sx_pcie_hwops__initdata = {
arch/powerpc/platforms/ps3/mm.c +12 -10
@@ -212,13 +212,14 @@ void ps3_mm_vas_destroy(void) {int result; -DBG ("%s:%d: map.vas_id = %llu\n" , __func__, __LINE__, map.vas_id); -if (map.vas_id) { result =lv1_select_virtual_address_space (0 ); -BUG_ON (result); - result =lv1_destruct_virtual_address_space (map.vas_id); -BUG_ON (result); + result +=lv1_destruct_virtual_address_space (map.vas_id); + +if (result) { +lv1_panic (0 ); + } + map.vas_id =0 ; } }
@@ -316,19 +317,20 @@ static void ps3_mm_region_destroy(struct mem_region *r)int result;if (!r->destroy) { -pr_info ("%s:%d: Not destroying high region: %llxh %llxh\n" , - __func__, __LINE__, r->base, r->size);return ; } -DBG ("%s:%d: r->base = %llxh\n" , __func__, __LINE__, r->base); -if (r->base) { result =lv1_release_memory (r->base); -BUG_ON (result); + +if (result) { +lv1_panic (0 ); + } + r->size = r->base = r->offset =0 ; map.total = map.rm.size; } +ps3_mm_set_repository_highmem (NULL ); }
arch/powerpc/platforms/pseries/ras.c +3 -2
@@ -325,10 +325,11 @@ static irqreturn_t ras_error_interrupt(int irq, void *dev_id)/* * Some versions of FWNMI place the buffer inside the 4kB page starting at * 0x7000. Other versions place it inside the rtas buffer. We check both. +* Minimum size of the buffer is 16 bytes. */ #define VALID_FWNMI_BUFFER (A ) \ - ((((A) >= 0x7000) && ((A) < 0x7ff0)) || \ - (((A) >= rtas.base) && ((A) < (rtas.base + rtas.size - 16)))) + ((((A) >= 0x7000) && ((A) <= 0x8000 - 16)) || \ + (((A) >= rtas.base) && ((A) <= (rtas.base + rtas.size - 16))))/* * Get the error information for errors coming through the
arch/s390/include/asm/syscall.h +11 -1
@@ -41,7 +41,17 @@ static inline void syscall_rollback(struct task_struct *task,static inline long syscall_get_error (struct task_struct *task,struct pt_regs *regs) { -return IS_ERR_VALUE (regs->gprs[2 ]) ? regs->gprs[2 ] :0 ; +unsigned long error = regs->gprs[2 ]; +#ifdef CONFIG_COMPAT +if (test_tsk_thread_flag (task,TIF_31BIT )) { +/* +* Sign-extend the value so (int)-EFOO becomes (long)-EFOO +* and will match correctly in comparisons. +*/ + error = (long )(int )error; + } +#endif +return IS_ERR_VALUE (error) ? error :0 ; } static inline long syscall_get_return_value(struct task_struct *task,
arch/x86/boot/Makefile +1 -1
@@ -87,7 +87,7 @@ $(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE SETUP_OBJS = $(addprefix $(obj)/,$(setup-y)) -sed-zoffset := -e 's/^\([0-9a-fA-F]*\) [ABCDGRSTVW] \(startup_32\|startup_64\|efi32_stub_entry\|efi64_stub_entry\|efi_pe_entry\|input_data\|_end\|_ehead\|_text\|z_.*\)$$/\#define ZO_\2 0x\1/p' +sed-zoffset := -e 's/^\([0-9a-fA-F]*\) [a-zA-Z] \(startup_32\|startup_64\|efi32_stub_entry\|efi64_stub_entry\|efi_pe_entry\|input_data\|_end\|_ehead\|_text\|z_.*\)$$/\#define ZO_\2 0x\1/p' quiet_cmd_zoffset = ZOFFSET $@ cmd_zoffset = $(NM) $< | sed -n $(sed-zoffset) > $@
arch/x86/kernel/apic/apic.c +1 -1
@@ -1915,7 +1915,7 @@ void __init init_apic_mappings(void)unsigned int new_apicid;if (apic_validate_deadline_timer ()) -pr_debug ("TSC deadline timer available\n" ); +pr_info ("TSC deadline timer available\n" );if (x2apic_mode) { boot_cpu_physical_apicid =read_apic_id ();
arch/x86/kernel/kprobes/core.c +3 -13
@@ -744,16 +744,11 @@ asm(NOKPROBE_SYMBOL (kretprobe_trampoline);STACK_FRAME_NON_STANDARD (kretprobe_trampoline); -static struct kprobe kretprobe_kprobe = { - .addr = (void *)kretprobe_trampoline, -}; -/* * Called from kretprobe_trampoline */ __visible __used void *trampoline_handler(struct pt_regs *regs) { -struct kprobe_ctlblk *kcb;struct kretprobe_instance *ri =NULL ;struct hlist_head *head, empty_rp;struct hlist_node *tmp;
@@ -763,16 +758,12 @@ __visible __used void *trampoline_handler(struct pt_regs *regs)void *frame_pointer;bool skipped = false; -preempt_disable (); -/* * Set a dummy kprobe for avoiding kretprobe recursion. * Since kretprobe never run in kprobe handler, kprobe must not * be running at this point. */ - kcb =get_kprobe_ctlblk (); -__this_cpu_write (current_kprobe, &kretprobe_kprobe); - kcb->kprobe_status =KPROBE_HIT_ACTIVE ; +kprobe_busy_begin ();INIT_HLIST_HEAD (&empty_rp);kretprobe_hash_lock (current, &head, &flags);
@@ -851,7 +842,7 @@ __visible __used void *trampoline_handler(struct pt_regs *regs)__this_cpu_write (current_kprobe, &ri->rp->kp); ri->ret_addr = correct_ret_addr; ri->rp->handler (ri, regs); -__this_cpu_write (current_kprobe, &kretprobe_kprobe); +__this_cpu_write (current_kprobe, &kprobe_busy); }recycle_rp_inst (ri, &empty_rp);
@@ -867,8 +858,7 @@ __visible __used void *trampoline_handler(struct pt_regs *regs)kretprobe_hash_unlock (current, &flags); -__this_cpu_write (current_kprobe,NULL ); -preempt_enable (); +kprobe_busy_end ();hlist_for_each_entry_safe (ri, tmp, &empty_rp, hlist) {hlist_del (&ri->hlist);
arch/x86/kvm/mmu.c +47 -4
104 lines not on this page · raw message
arch/x86/kvm/x86.c +0 -31
@@ -6291,35 +6291,6 @@ void kvm_after_handle_nmi(struct kvm_vcpu *vcpu) }EXPORT_SYMBOL_GPL (kvm_after_handle_nmi); -static void kvm_set_mmio_spte_mask (void ) -{ -u64 mask; -int maxphyaddr = boot_cpu_data.x86_phys_bits; - -/* -* Set the reserved bits and the present bit of an paging-structure -* entry to generate page fault with PFER.RSV = 1. -*/ - -/* -* Mask the uppermost physical address bit, which would be reserved as -* long as the supported physical address width is less than 52. -*/ - mask =1ull <<51 ; - -/* Set the present bit. */ - mask |=1ull ; - -/* -* If reserved bit is not supported, clear the present bit to disable -* mmio page fault. -*/ -if (maxphyaddr ==52 ) - mask &= ~1ull ; - -kvm_mmu_set_mmio_spte_mask (mask, mask); -} -#ifdef CONFIG_X86_64 static void pvclock_gtod_update_fn (struct work_struct *work) {
@@ -6397,8 +6368,6 @@ int kvm_arch_init(void *opaque)if (r) goto out_free_percpu; -kvm_set_mmio_spte_mask (); - kvm_x86_ops = ops; kvm_mmu_set_mask_ptes(PT_USER_MASK, PT_ACCESSED_MASK,
crypto/algboss.c +0 -2
@@ -194,8 +194,6 @@ static int cryptomgr_schedule_probe(struct crypto_larval *larval)if (IS_ERR (thread)) goto err_put_larval; -wait_for_completion_interruptible (&larval->completion); -return NOTIFY_STOP ; err_put_larval:
crypto/algif_skcipher.c +1 -5
@@ -85,14 +85,10 @@ static int _skcipher_recvmsg(struct socket *sock, struct msghdr *msg,return PTR_ERR (areq);/* convert iovecs of output buffers into RX SGL */ - err =af_alg_get_rsgl (sk, msg, flags, areq,-1 , &len); + err =af_alg_get_rsgl (sk, msg, flags, areq, ctx->used, &len);if (err) goto free; -/* Process only as much RX buffers for which we have TX data */ -if (len > ctx->used) - len = ctx->used; -/* * If more buffers are to be expected to be processed, process only * full block size buffers.
drivers/ata/libata-core.c +5 -6
@@ -57,7 +57,6 @@#include <linux/workqueue.h> #include <linux/scatterlist.h> #include <linux/io.h> -#include <linux/async.h> #include <linux/log2.h> #include <linux/slab.h> #include <linux/glob.h>
@@ -6536,7 +6535,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)/* perform each probe asynchronously */ for (i =0 ; i < host->n_ports; i++) {struct ata_port *ap = host->ports[i]; -async_schedule (async_port_probe, ap); + ap->cookie =async_schedule (async_port_probe, ap); }return 0 ;
@@ -6676,11 +6675,11 @@ void ata_host_detach(struct ata_host *host) {int i; -/* Ensure ata_port probe has completed */ -async_synchronize_full (); - -for (i =0 ; i < host->n_ports; i++) +for (i =0 ; i < host->n_ports; i++) { +/* Ensure ata_port probe has completed */ +async_synchronize_cookie (host->ports[i]->cookie +1 );ata_port_detach (host->ports[i]); + }/* the host is dead now, dissociate ACPI */ ata_acpi_dissociate (host);
drivers/base/platform.c +2 -0
@@ -702,6 +702,8 @@ int __init_or_module __platform_driver_probe(struct platform_driver *drv,/* temporary section violation during probe() */ drv->probe = probe; retval = code =__platform_driver_register (drv, module); +if (retval) +return retval;/* * Fixup that section violation, being paranoid about code scanning
drivers/block/ps3disk.c +0 -1
@@ -468,7 +468,6 @@ static int ps3disk_probe(struct ps3_system_bus_device *_dev)blk_queue_bounce_limit (queue,BLK_BOUNCE_HIGH );blk_queue_max_hw_sectors (queue, dev->bounce_size >>9 ); -blk_queue_segment_boundary (queue,-1UL );blk_queue_dma_alignment (queue, dev->blk_size-1 );blk_queue_logical_block_size (queue, dev->blk_size);
drivers/clk/bcm/clk-bcm2835.c +5 -5
@@ -1483,13 +1483,13 @@ static struct clk_hw *bcm2835_register_clock(struct bcm2835_cprman *cprman,return &clock->hw; } -static struct clk *bcm2835_register_gate (struct bcm2835_cprman *cprman, +static struct clk_hw *bcm2835_register_gate (struct bcm2835_cprman *cprman,const struct bcm2835_gate_data *data) { -return clk_register_gate (cprman->dev, data->name, data->parent, -CLK_IGNORE_UNUSED |CLK_SET_RATE_GATE , - cprman->regs + data->ctl_reg, -CM_GATE_BIT ,0 , &cprman->regs_lock); +return clk_hw_register_gate (cprman->dev, data->name, data->parent, +CLK_IGNORE_UNUSED |CLK_SET_RATE_GATE , + cprman->regs + data->ctl_reg, +CM_GATE_BIT ,0 , &cprman->regs_lock); } typedef struct clk_hw *(*bcm2835_clk_register)(struct bcm2835_cprman *cprman,
drivers/clk/qcom/gcc-msm8916.c +4 -4
@@ -270,7 +270,7 @@ static struct clk_pll gpll0 = { .l_reg = 0x21004, .m_reg = 0x21008, .n_reg = 0x2100c, - .config_reg = 0x21014, + .config_reg = 0x21010, .mode_reg = 0x21000, .status_reg = 0x2101c, .status_bit = 17,
@@ -297,7 +297,7 @@ static struct clk_pll gpll1 = { .l_reg = 0x20004, .m_reg = 0x20008, .n_reg = 0x2000c, - .config_reg = 0x20014, + .config_reg = 0x20010, .mode_reg = 0x20000, .status_reg = 0x2001c, .status_bit = 17,
@@ -324,7 +324,7 @@ static struct clk_pll gpll2 = { .l_reg = 0x4a004, .m_reg = 0x4a008, .n_reg = 0x4a00c, - .config_reg = 0x4a014, + .config_reg = 0x4a010, .mode_reg = 0x4a000, .status_reg = 0x4a01c, .status_bit = 17,
@@ -351,7 +351,7 @@ static struct clk_pll bimc_pll = { .l_reg = 0x23004, .m_reg = 0x23008, .n_reg = 0x2300c, - .config_reg = 0x23014, + .config_reg = 0x23010, .mode_reg = 0x23000, .status_reg = 0x2301c, .status_bit = 17,
drivers/clk/samsung/clk-exynos5433.c +2 -1
@@ -1674,7 +1674,8 @@ static const struct samsung_gate_clock peric_gate_clks[] __initconst = {GATE (CLK_SCLK_PCM1 ,"sclk_pcm1" ,"sclk_pcm1_peric" ,ENABLE_SCLK_PERIC ,7 ,CLK_SET_RATE_PARENT ,0 ),GATE (CLK_SCLK_I2S1 ,"sclk_i2s1" ,"sclk_i2s1_peric" , -ENABLE_SCLK_PERIC ,6 ,CLK_SET_RATE_PARENT ,0 ), +ENABLE_SCLK_PERIC ,6 , +CLK_SET_RATE_PARENT |CLK_IGNORE_UNUSED ,0 ),GATE (CLK_SCLK_SPI2 ,"sclk_spi2" ,"sclk_spi2_peric" ,ENABLE_SCLK_PERIC ,5 ,CLK_SET_RATE_PARENT ,0 ), GATE(CLK_SCLK_SPI1, "sclk_spi1", "sclk_spi1_peric", ENABLE_SCLK_PERIC,
drivers/clk/st/clk-flexgen.c +1 -0
@@ -373,6 +373,7 @@ static void __init st_of_flexgen_setup(struct device_node *np)break ; } + flex_flags &= ~CLK_IS_CRITICAL ;of_clk_detect_critical (np, i, &flex_flags);/*
drivers/clk/sunxi/clk-sunxi.c +1 -1
@@ -98,7 +98,7 @@ static void sun6i_a31_get_pll1_factors(struct factors_request *req)* Round down the frequency to the closest multiple of either * 6 or 16 */ -u32 round_freq_6 =round_down (freq_mhz,6 ); +u32 round_freq_6 =rounddown (freq_mhz,6 );u32 round_freq_16 =round_down (freq_mhz,16 );if (round_freq_6 > round_freq_16)
drivers/clk/ti/composite.c +1 -0
@@ -240,6 +240,7 @@ static void __init _register_composite(struct clk_hw *hw,if (!cclk->comp_clks[i])continue ;list_del (&cclk->comp_clks[i]->link); +kfree (cclk->comp_clks[i]->parent_names);kfree (cclk->comp_clks[i]); }
drivers/crypto/omap-sham.c +31 -33
130 lines not on this page · raw message
drivers/extcon/extcon-adc-jack.c +1 -2
@@ -128,7 +128,7 @@ static int adc_jack_probe(struct platform_device *pdev)for (i =0 ; data->adc_conditions[i].id !=EXTCON_NONE ; i++); data->num_conditions = i; - data->chan =iio_channel_get (&pdev->dev, pdata->consumer_channel); + data->chan =devm_iio_channel_get (&pdev->dev, pdata->consumer_channel);if (IS_ERR (data->chan))return PTR_ERR (data->chan);
@@ -170,7 +170,6 @@ static int adc_jack_remove(struct platform_device *pdev)free_irq (data->irq, data);cancel_work_sync (&data->handler.work); -iio_channel_release (data->chan);return 0 ; }
drivers/gpu/drm/drm_dp_mst_topology.c +33 -25
78 lines not on this page · raw message
drivers/gpu/drm/drm_encoder_slave.c +3 -2
@@ -84,7 +84,7 @@ int drm_i2c_encoder_init(struct drm_device *dev, err = encoder_drv->encoder_init (client, dev, encoder);if (err) - goto fail_unregister; + goto fail_module_put;if (info->platform_data) encoder->slave_funcs->set_config(&encoder->base,
@@ -92,9 +92,10 @@ int drm_i2c_encoder_init(struct drm_device *dev,return 0 ; +fail_module_put: +module_put (module); fail_unregister:i2c_unregister_device (client); -module_put (module); fail:return err; }
drivers/gpu/drm/i915/i915_cmd_parser.c +4 -0
@@ -570,6 +570,9 @@ struct drm_i915_reg_descriptor {#define REG32 (_reg, ...) \ { .addr = (_reg), __VA_ARGS__ } +#define REG32_IDX (_reg, idx) \ + { .addr = _reg(idx) } +/* * Convenience macro for adding 64-bit registers. *
@@ -667,6 +670,7 @@ static const struct drm_i915_reg_descriptor gen9_blt_regs[] = {REG64_IDX (RING_TIMESTAMP ,BSD_RING_BASE ),REG32 (BCS_SWCTRL ),REG64_IDX (RING_TIMESTAMP ,BLT_RING_BASE ), +REG32_IDX (RING_CTX_TIMESTAMP ,BLT_RING_BASE ),REG64_IDX (BCS_GPR ,0 ),REG64_IDX (BCS_GPR ,1 ), REG64_IDX(BCS_GPR, 2),
drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c +2 -1
@@ -972,7 +972,8 @@ static int mdp5_init(struct platform_device *pdev, struct drm_device *dev)return 0 ; fail: -mdp5_destroy (pdev); +if (mdp5_kms) +mdp5_destroy (pdev);return ret; }
drivers/gpu/drm/qxl/qxl_kms.c +1 -1
@@ -181,7 +181,7 @@ int qxl_device_init(struct qxl_device *qdev, &(qdev->ram_header->cursor_ring_hdr),sizeof (struct qxl_command ),QXL_CURSOR_RING_SIZE , - qdev->io_base +QXL_IO_NOTIFY_CMD , + qdev->io_base +QXL_IO_NOTIFY_CURSOR , false, &qdev->cursor_event);
drivers/gpu/drm/sun4i/sun4i_hdmi.h +1 -1
@@ -143,7 +143,7 @@#define SUN4I_HDMI_DDC_CMD_IMPLICIT_WRITE 3#define SUN4I_HDMI_DDC_CLK_REG 0x528 -#define SUN4I_HDMI_DDC_CLK_M (m) (((m) & 0x7) << 3) +#define SUN4I_HDMI_DDC_CLK_M (m) (((m) & 0xf) << 3)#define SUN4I_HDMI_DDC_CLK_N (n) ((n) & 0x7)#define SUN4I_HDMI_DDC_LINE_CTRL_REG 0x540
drivers/gpu/drm/sun4i/sun4i_hdmi_ddc_clk.c +1 -1
@@ -32,7 +32,7 @@ static unsigned long sun4i_ddc_calc_divider(unsigned long rate,unsigned long best_rate =0 ;u8 best_m =0 , best_n =0 , _m, _n; -for (_m =0 ; _m <8 ; _m++) { +for (_m =0 ; _m <16 ; _m++) {for (_n =0 ; _n <8 ; _n++) {unsigned long tmp_rate;
drivers/i2c/busses/i2c-piix4.c +2 -1
@@ -960,7 +960,8 @@ static int piix4_probe(struct pci_dev *dev, const struct pci_device_id *id) }if (dev->vendor ==PCI_VENDOR_ID_AMD && - dev->device ==PCI_DEVICE_ID_AMD_HUDSON2_SMBUS ) { + (dev->device ==PCI_DEVICE_ID_AMD_HUDSON2_SMBUS || + dev->device ==PCI_DEVICE_ID_AMD_KERNCZ_SMBUS )) { retval =piix4_setup_sb800 (dev, id,1 ); }
drivers/i2c/busses/i2c-pxa.c +5 -8
@@ -315,11 +315,10 @@ static void i2c_pxa_scream_blue_murder(struct pxa_i2c *i2c, const char *why)dev_err (dev,"IBMR: %08x IDBR: %08x ICR: %08x ISR: %08x\n" ,readl (_IBMR (i2c)),readl (_IDBR (i2c)),readl (_ICR (i2c)),readl (_ISR (i2c))); -dev_dbg (dev,"log: " ); +dev_err (dev,"log:" );for (i =0 ; i < i2c->irqlogidx; i++) -pr_debug ("[%08x:%08x] " , i2c->isrlog[i], i2c->icrlog[i]); - - pr_debug("\n"); +pr_cont (" [%03x:%05x]" , i2c->isrlog[i], i2c->icrlog[i]); + pr_cont("\n"); }#else /* ifdef DEBUG */
@@ -709,11 +708,9 @@ static inline void i2c_pxa_stop_message(struct pxa_i2c *i2c) {u32 icr; -/* -* Clear the STOP and ACK flags -*/ +/* Clear the START, STOP, ACK, TB and MA flags */ icr =readl (_ICR (i2c)); - icr &= ~(ICR_STOP |ICR_ACKNAK ); + icr &= ~(ICR_START |ICR_STOP |ICR_ACKNAK |ICR_TB |ICR_MA );writel (icr,_ICR (i2c)); }
drivers/iio/pressure/bmp280-core.c +6 -1
@@ -182,6 +182,8 @@ static u32 bmp280_compensate_humidity(struct bmp280_data *data, + (s32)2097152) * H2 + 8192) >> 14); var -= ((((var >>15 ) * (var >>15 )) >>7 ) * (s32 )H1 ) >>4 ; + var =clamp_val (var,0 ,419430400 ); +return var >>12 ; };
@@ -651,7 +653,7 @@ static int bmp180_measure(struct bmp280_data *data, u8 ctrl_meas)unsigned int ctrl;if (data->use_eoc) -init_completion (&data->done); +reinit_completion (&data->done); ret =regmap_write (data->regmap,BMP280_REG_CTRL_MEAS , ctrl_meas);if (ret)
@@ -907,6 +909,9 @@ static int bmp085_fetch_eoc_irq(struct device *dev, "trying to enforce it\n"); irq_trig =IRQF_TRIGGER_RISING ; } + +init_completion (&data->done); + ret = devm_request_threaded_irq(dev, irq, bmp085_eoc_irq,
drivers/infiniband/core/cma_configfs.c +13 -0
@@ -319,8 +319,21 @@ static struct config_group *make_cma_dev(struct config_group *group,return ERR_PTR (err); } +static void drop_cma_dev (struct config_group *cgroup,struct config_item *item) +{ +struct config_group *group = + container_of(item, struct config_group, cg_item); +struct cma_dev_group *cma_dev_group = + container_of(group, struct cma_dev_group, device_group); + +configfs_remove_default_groups (&cma_dev_group->ports_group); +configfs_remove_default_groups (&cma_dev_group->device_group); +config_item_put (item); +} +static struct configfs_group_operations cma_subsys_group_ops = { .make_group = make_cma_dev, + .drop_item = drop_cma_dev, };static struct config_item_type cma_subsys_type = {
drivers/md/bcache/btree.c +6 -2
@@ -1374,7 +1374,7 @@ static int btree_gc_coalesce(struct btree *b, struct btree_op *op,if (__set_blocks (n1, n1->keys + n2->keys,block_bytes (b->c)) >btree_blocks (new_nodes[i])) - goto out_nocoalesce; + goto out_unlock_nocoalesce; keys = n2->keys;/* Take the key of the node we're getting rid of */
@@ -1403,7 +1403,7 @@ static int btree_gc_coalesce(struct btree *b, struct btree_op *op,if (__bch_keylist_realloc (&keylist,bkey_u64s (&new_nodes[i]->key))) - goto out_nocoalesce; + goto out_unlock_nocoalesce;bch_btree_node_write (new_nodes[i], &cl);bch_keylist_add (&keylist, &new_nodes[i]->key);
@@ -1449,6 +1449,10 @@ static int btree_gc_coalesce(struct btree *b, struct btree_op *op,/* Invalidated our iterator */ return -EINTR ; +out_unlock_nocoalesce: +for (i =0 ; i < nodes; i++) +mutex_unlock (&new_nodes[i]->write_lock); + out_nocoalesce:closure_sync (&cl);bch_keylist_free (&keylist);
drivers/md/dm-mpath.c +1 -1
@@ -1815,7 +1815,7 @@ static int multipath_prepare_ioctl(struct dm_target *ti,int r; current_pgpath =READ_ONCE (m->current_pgpath); -if (!current_pgpath) +if (!current_pgpath || !test_bit (MPATHF_QUEUE_IO , &m->flags)) current_pgpath =choose_pgpath (m,0 );if (current_pgpath) {
drivers/md/dm-zoned-metadata.c +2 -2
@@ -1580,7 +1580,7 @@ static struct dm_zone *dmz_get_rnd_zone_for_reclaim(struct dmz_metadata *zmd)return dzone; } -return ERR_PTR (-EBUSY ); +return NULL ; }/*
@@ -1600,7 +1600,7 @@ static struct dm_zone *dmz_get_seq_zone_for_reclaim(struct dmz_metadata *zmd)return zone; } -return ERR_PTR (-EBUSY ); +return NULL ; }/*
drivers/md/dm-zoned-reclaim.c +2 -2
@@ -350,8 +350,8 @@ static int dmz_do_reclaim(struct dmz_reclaim *zrc)/* Get a data zone */ dzone =dmz_get_zone_for_reclaim (zmd); -if (IS_ERR (dzone)) -return PTR_ERR (dzone); +if (!dzone) +return -EBUSY ; start = jiffies;
drivers/md/md.c +13 -0
@@ -1168,6 +1168,8 @@ static int super_90_validate(struct mddev *mddev, struct md_rdev *rdev) mddev->new_layout = mddev->layout; mddev->new_chunk_sectors = mddev->chunk_sectors; } +if (mddev->level ==0 ) + mddev->layout =-1 ;if (sb->state & (1 <<MD_SB_CLEAN )) mddev->recovery_cp = MaxSector;
@@ -1584,6 +1586,10 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_ rdev->ppl.sector = rdev->sb_start + rdev->ppl.offset; } +if ((le32_to_cpu (sb->feature_map) &MD_FEATURE_RAID0_LAYOUT ) && + sb->level !=0 ) +return -EINVAL ; +if (!refdev) { ret =1 ; }else {
@@ -1694,6 +1700,10 @@ static int super_1_validate(struct mddev *mddev, struct md_rdev *rdev) mddev->new_chunk_sectors = mddev->chunk_sectors; } +if (mddev->level ==0 && + !(le32_to_cpu (sb->feature_map) &MD_FEATURE_RAID0_LAYOUT )) + mddev->layout =-1 ; +if (le32_to_cpu (sb->feature_map) &MD_FEATURE_JOURNAL )set_bit (MD_HAS_JOURNAL , &mddev->flags);
@@ -6757,6 +6767,9 @@ static int set_array_info(struct mddev *mddev, mdu_array_info_t *info) mddev->external =0 ; mddev->layout = info->layout; +if (mddev->level ==0 ) +/* Cannot trust RAID0 layout info here */ + mddev->layout =-1 ; mddev->chunk_sectors = info->chunk_size >>9 ;if (mddev->persistent) {
drivers/md/raid0.c +3 -0
@@ -152,6 +152,9 @@ static int create_strip_zones(struct mddev *mddev, struct r0conf **private_conf)if (conf->nr_strip_zones ==1 ) { conf->layout =RAID0_ORIG_LAYOUT ; + }else if (mddev->layout ==RAID0_ORIG_LAYOUT || + mddev->layout ==RAID0_ALT_MULTIZONE_LAYOUT ) { + conf->layout = mddev->layout; }else if (default_layout ==RAID0_ORIG_LAYOUT || default_layout ==RAID0_ALT_MULTIZONE_LAYOUT ) { conf->layout = default_layout;
drivers/mfd/wm8994-core.c +1 -0
@@ -696,3 +696,4 @@ module_i2c_driver(wm8994_i2c_driver);MODULE_DESCRIPTION ("Core support for the WM8994 audio CODEC" );MODULE_LICENSE ("GPL" );MODULE_AUTHOR ("Mark Brown <[email protected]>" ); +MODULE_SOFTDEP ("pre: wm8994_regulator" );
drivers/mtd/nand/ams-delta.c +1 -1
@@ -263,7 +263,7 @@ static int ams_delta_cleanup(struct platform_device *pdev)void __iomem *io_base =platform_get_drvdata (pdev);/* Release resources, unregister device */ -nand_release (ams_delta_mtd); +nand_release (mtd_to_nand (ams_delta_mtd));gpio_free_array (_mandatory_gpio,ARRAY_SIZE (_mandatory_gpio));gpio_free (AMS_DELTA_GPIO_PIN_NAND_RB );
drivers/mtd/nand/au1550nd.c +1 -1
@@ -496,7 +496,7 @@ static int au1550nd_remove(struct platform_device *pdev)struct au1550nd_ctx *ctx =platform_get_drvdata (pdev);struct resource *r =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); -nand_release (nand_to_mtd (&ctx->chip)); +nand_release (&ctx->chip);iounmap (ctx->base);release_mem_region (r->start,0x1000 );kfree (ctx);
drivers/mtd/nand/bcm47xxnflash/main.c +1 -1
@@ -65,7 +65,7 @@ static int bcm47xxnflash_remove(struct platform_device *pdev) {struct bcm47xxnflash *nflash =platform_get_drvdata (pdev); -nand_release (nand_to_mtd (&nflash->nand_chip)); +nand_release (&nflash->nand_chip);return 0 ; }
drivers/mtd/nand/bf5xx_nand.c +1 -1
@@ -688,7 +688,7 @@ static int bf5xx_nand_remove(struct platform_device *pdev)* and their partitions, then go through freeing the * resources used */ -nand_release (nand_to_mtd (&info->chip)); +nand_release (&info->chip);peripheral_free_list (bfin_nfc_pin_req);bf5xx_nand_dma_remove (info);
drivers/mtd/nand/brcmnand/brcmnand.c +1 -1
@@ -2597,7 +2597,7 @@ int brcmnand_remove(struct platform_device *pdev)struct brcmnand_host *host;list_for_each_entry (host, &ctrl->host_list, node) -nand_release (nand_to_mtd (&host->chip)); +nand_release (&host->chip);clk_disable_unprepare (ctrl->clk);
drivers/mtd/nand/cafe_nand.c +1 -1
@@ -826,7 +826,7 @@ static void cafe_nand_remove(struct pci_dev *pdev)/* Disable NAND IRQ in global IRQ mask register */ cafe_writel (cafe, ~1 &cafe_readl (cafe,GLOBAL_IRQ_MASK ),GLOBAL_IRQ_MASK );free_irq (pdev->irq, mtd); -nand_release (mtd); +nand_release (chip);free_rs (cafe->rs);pci_iounmap (pdev, cafe->mmio); dma_free_coherent(&cafe->pdev->dev,
drivers/mtd/nand/cmx270_nand.c +1 -1
@@ -230,7 +230,7 @@ module_init(cmx270_init); static void __exit cmx270_cleanup(void) {/* Release resources, unregister device */ -nand_release (cmx270_nand_mtd); +nand_release (mtd_to_nand (cmx270_nand_mtd));gpio_free (GPIO_NAND_RB );gpio_free (GPIO_NAND_CS );
drivers/mtd/nand/cs553x_nand.c +1 -1
@@ -338,7 +338,7 @@ static void __exit cs553x_cleanup(void) mmio_base = this->IO_ADDR_R;/* Release resources, unregister device */ -nand_release (mtd); +nand_release (this);kfree (mtd->name); cs553x_mtd[i] =NULL ;
drivers/mtd/nand/davinci_nand.c +1 -1
@@ -854,7 +854,7 @@ static int nand_davinci_remove(struct platform_device *pdev) ecc4_busy = false;spin_unlock_irq (&davinci_nand_lock); -nand_release (nand_to_mtd (&info->chip)); +nand_release (&info->chip);clk_disable_unprepare (info->clk);
drivers/mtd/nand/denali.c +1 -3
@@ -1444,9 +1444,7 @@ EXPORT_SYMBOL(denali_init);/* driver exit point */ void denali_remove (struct denali_nand_info *denali) { -struct mtd_info *mtd =nand_to_mtd (&denali->nand); - -nand_release (mtd); +nand_release (&denali->nand);kfree (denali->buf);denali_disable_irq (denali); }
drivers/mtd/nand/diskonchip.c +3 -6
@@ -1605,13 +1605,10 @@ static int __init doc_probe(unsigned long physadr) numchips =doc2001_init (mtd);if ((ret =nand_scan (mtd, numchips)) || (ret = doc->late_init (mtd))) { -/* DBB note: i believe nand_release is necessary here, as +/* DBB note: i believe nand_cleanup is necessary here, as buffers may have been allocated in nand_base. Check with Thomas. FIX ME! */ -/* nand_release will call mtd_device_unregister, but we -haven't yet added it. This is handled without incident by -mtd_device_unregister, as far as I can tell. */ -nand_release (mtd); +nand_cleanup (nand);kfree (nand); goto fail; }
@@ -1644,7 +1641,7 @@ static void release_nanddoc(void) doc =nand_get_controller_data (nand); nextmtd = doc->nextdoc; -nand_release (mtd); +nand_release (nand);iounmap (doc->virtadr);release_mem_region (doc->physadr,DOC_IOREMAP_LEN );kfree (nand);
drivers/mtd/nand/docg4.c +2 -2
@@ -1376,7 +1376,7 @@ static int __init probe_docg4(struct platform_device *pdev)return 0 ; fail: -nand_release (mtd);/* deletes partitions and mtd devices */ +nand_release (nand);/* deletes partitions and mtd devices */ free_bch (doc->bch);kfree (nand);
@@ -1389,7 +1389,7 @@ static int __init probe_docg4(struct platform_device *pdev) static int __exit cleanup_docg4(struct platform_device *pdev) {struct docg4_priv *doc =platform_get_drvdata (pdev); -nand_release (doc->mtd); +nand_release (mtd_to_nand (doc->mtd));free_bch (doc->bch);kfree (mtd_to_nand (doc->mtd));iounmap (doc->virtadr);
drivers/mtd/nand/fsl_elbc_nand.c +1 -1
@@ -813,7 +813,7 @@ static int fsl_elbc_chip_remove(struct fsl_elbc_mtd *priv)struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl = priv->ctrl->nand;struct mtd_info *mtd =nand_to_mtd (&priv->chip); -nand_release (mtd); +nand_release (&priv->chip);kfree (mtd->name);
drivers/mtd/nand/fsl_ifc_nand.c +1 -1
@@ -927,7 +927,7 @@ static int fsl_ifc_chip_remove(struct fsl_ifc_mtd *priv) {struct mtd_info *mtd =nand_to_mtd (&priv->chip); -nand_release (mtd); +nand_release (&priv->chip);kfree (mtd->name);
drivers/mtd/nand/fsl_upm.c +1 -1
@@ -326,7 +326,7 @@ static int fun_remove(struct platform_device *ofdev)struct mtd_info *mtd =nand_to_mtd (&fun->chip);int i; -nand_release (mtd); +nand_release (&fun->chip);kfree (mtd->name);for (i =0 ; i < fun->mchip_count; i++) {
drivers/mtd/nand/fsmc_nand.c +1 -1
@@ -1118,7 +1118,7 @@ static int fsmc_nand_remove(struct platform_device *pdev)struct fsmc_nand_data *host =platform_get_drvdata (pdev);if (host) { -nand_release (nand_to_mtd (&host->nand)); +nand_release (&host->nand);if (host->mode ==USE_DMA_ACCESS ) {dma_release_channel (host->write_dma_chan);
drivers/mtd/nand/gpio.c +1 -1
@@ -199,7 +199,7 @@ static int gpio_nand_remove(struct platform_device *pdev) {struct gpiomtd *gpiomtd =platform_get_drvdata (pdev); -nand_release (nand_to_mtd (&gpiomtd->nand_chip)); +nand_release (&gpiomtd->nand_chip);if (gpio_is_valid (gpiomtd->plat.gpio_nwp))gpio_set_value (gpiomtd->plat.gpio_nwp,0 );
drivers/mtd/nand/gpmi-nand/gpmi-nand.c +1 -1
@@ -2135,7 +2135,7 @@ static int gpmi_nand_remove(struct platform_device *pdev) {struct gpmi_nand_data *this =platform_get_drvdata (pdev); -nand_release (nand_to_mtd (&this->nand)); +nand_release (&this->nand);gpmi_free_dma_buffer (this);release_resources (this);return 0 ;
drivers/mtd/nand/hisi504_nand.c +2 -3
@@ -823,7 +823,7 @@ static int hisi_nfc_probe(struct platform_device *pdev)return 0 ; err_mtd: -nand_release (mtd); +nand_release (chip); err_res:return ret; }
@@ -831,9 +831,8 @@ static int hisi_nfc_probe(struct platform_device *pdev)static int hisi_nfc_remove (struct platform_device *pdev) {struct hinfc_host *host =platform_get_drvdata (pdev); -struct mtd_info *mtd =nand_to_mtd (&host->chip); -nand_release (mtd); +nand_release (&host->chip);return 0 ; }
drivers/mtd/nand/jz4740_nand.c +2 -2
@@ -480,7 +480,7 @@ static int jz_nand_probe(struct platform_device *pdev)return 0 ; err_nand_release: -nand_release (mtd); +nand_release (chip); err_unclaim_banks:while (chipnr--) {unsigned char bank = nand->banks[chipnr];
@@ -500,7 +500,7 @@ static int jz_nand_remove(struct platform_device *pdev)struct jz_nand *nand =platform_get_drvdata (pdev);size_t i; -nand_release (nand_to_mtd (&nand->chip)); +nand_release (&nand->chip);/* Deassert and disable all chips */ writel (0 , nand->base +JZ_REG_NAND_CTRL );
drivers/mtd/nand/jz4780_nand.c +2 -2
@@ -293,7 +293,7 @@ static int jz4780_nand_init_chip(struct platform_device *pdev, ret =mtd_device_register (mtd,NULL ,0 );if (ret) { -nand_release (mtd); +nand_release (chip);return ret; }
@@ -308,7 +308,7 @@ static void jz4780_nand_cleanup_chips(struct jz4780_nand_controller *nfc)while (!list_empty (&nfc->chips)) { chip = list_first_entry(&nfc->chips, struct jz4780_nand_chip, chip_list); -nand_release (nand_to_mtd (&chip->chip)); +nand_release (&chip->chip);list_del (&chip->chip_list); } }
drivers/mtd/nand/lpc32xx_mlc.c +2 -3
@@ -805,7 +805,7 @@ static int lpc32xx_nand_probe(struct platform_device *pdev)if (!res)return res; -nand_release (mtd); +nand_release (nand_chip); err_exit4:free_irq (host->irq, host);
@@ -829,9 +829,8 @@ static int lpc32xx_nand_probe(struct platform_device *pdev)static int lpc32xx_nand_remove (struct platform_device *pdev) {struct lpc32xx_nand_host *host =platform_get_drvdata (pdev); -struct mtd_info *mtd =nand_to_mtd (&host->nand_chip); -nand_release (mtd); +nand_release (&host->nand_chip);free_irq (host->irq, host);if (use_dma)dma_release_channel (host->dma_chan);
drivers/mtd/nand/lpc32xx_slc.c +2 -3
@@ -935,7 +935,7 @@ static int lpc32xx_nand_probe(struct platform_device *pdev)if (!res)return res; -nand_release (mtd); +nand_release (chip); err_exit3:dma_release_channel (host->dma_chan);
@@ -954,9 +954,8 @@ static int lpc32xx_nand_remove(struct platform_device *pdev) {uint32_t tmp;struct lpc32xx_nand_host *host =platform_get_drvdata (pdev); -struct mtd_info *mtd =nand_to_mtd (&host->nand_chip); -nand_release (mtd); +nand_release (&host->nand_chip);dma_release_channel (host->dma_chan);/* Force CE high */
drivers/mtd/nand/mpc5121_nfc.c +1 -1
@@ -829,7 +829,7 @@ static int mpc5121_nfc_remove(struct platform_device *op)struct device *dev = &op->dev;struct mtd_info *mtd =dev_get_drvdata (dev); -nand_release (mtd); +nand_release (mtd_to_nand (mtd));mpc5121_nfc_free (dev, mtd);return 0 ;
drivers/mtd/nand/mtk_nand.c +2 -2
@@ -1357,7 +1357,7 @@ static int mtk_nfc_nand_chip_init(struct device *dev, struct mtk_nfc *nfc, ret =mtd_device_parse_register (mtd,NULL ,NULL ,NULL ,0 );if (ret) {dev_err (dev,"mtd parse partition error\n" ); -nand_release (mtd); +nand_cleanup (nand);return ret; }
@@ -1514,7 +1514,7 @@ static int mtk_nfc_remove(struct platform_device *pdev)while (!list_empty (&nfc->chips)) { chip = list_first_entry(&nfc->chips, struct mtk_nfc_nand_chip, node); -nand_release (nand_to_mtd (&chip->nand)); +nand_release (&chip->nand);list_del (&chip->node); }
drivers/mtd/nand/mxc_nand.c +1 -1
@@ -1834,7 +1834,7 @@ static int mxcnd_remove(struct platform_device *pdev) {struct mxc_nand_host *host =platform_get_drvdata (pdev); -nand_release (nand_to_mtd (&host->nand)); +nand_release (&host->nand);if (host->clk_act)clk_disable_unprepare (host->clk);
drivers/mtd/nand/nand_base.c +4 -4
@@ -5046,12 +5046,12 @@ EXPORT_SYMBOL_GPL(nand_cleanup);/** * nand_release - [NAND Interface] Unregister the MTD device and free resources * held by the NAND device -* @mtd: MTD device structure +* @chip: NAND chip object */ -void nand_release (struct mtd_info *mtd) +void nand_release (struct nand_chip *chip) { -mtd_device_unregister (mtd); -nand_cleanup (mtd_to_nand (mtd)); +mtd_device_unregister (nand_to_mtd (chip)); +nand_cleanup (chip); }EXPORT_SYMBOL_GPL (nand_release);
drivers/mtd/nand/nandsim.c +2 -2
@@ -2356,7 +2356,7 @@ static int __init ns_init_module(void) err_exit:free_nandsim (nand); -nand_release (nsmtd); +nand_release (chip);for (i =0 ;i <ARRAY_SIZE (nand->partitions); ++i)kfree (nand->partitions[i].name); error:
@@ -2378,7 +2378,7 @@ static void __exit ns_cleanup_module(void)int i;free_nandsim (ns);/* Free nandsim private resources */ -nand_release (nsmtd);/* Unregister driver */ +nand_release (chip);/* Unregister driver */ for (i =0 ;i <ARRAY_SIZE (ns->partitions); ++i)kfree (ns->partitions[i].name);kfree (mtd_to_nand (nsmtd));/* Free other structures */
drivers/mtd/nand/ndfc.c +1 -1
@@ -258,7 +258,7 @@ static int ndfc_remove(struct platform_device *ofdev)struct ndfc_controller *ndfc =dev_get_drvdata (&ofdev->dev);struct mtd_info *mtd =nand_to_mtd (&ndfc->chip); -nand_release (mtd); +nand_release (&ndfc->chip);kfree (mtd->name);return 0 ;
drivers/mtd/nand/nuc900_nand.c +1 -1
@@ -284,7 +284,7 @@ static int nuc900_nand_remove(struct platform_device *pdev) {struct nuc900_nand *nuc900_nand =platform_get_drvdata (pdev); -nand_release (nand_to_mtd (&nuc900_nand->chip)); +nand_release (&nuc900_nand->chip);clk_disable (nuc900_nand->clk);return 0 ;
drivers/mtd/nand/omap2.c +1 -1
@@ -2306,7 +2306,7 @@ static int omap_nand_remove(struct platform_device *pdev) }if (info->dma)dma_release_channel (info->dma); -nand_release (mtd); +nand_release (nand_chip);return 0 ; }
drivers/mtd/nand/orion_nand.c +2 -3
@@ -186,7 +186,7 @@ static int __init orion_nand_probe(struct platform_device *pdev) mtd->name ="orion_nand" ; ret =mtd_device_register (mtd, board->parts, board->nr_parts);if (ret) { -nand_release (mtd); +nand_cleanup (nc); goto no_dev; }
@@ -201,9 +201,8 @@ static int orion_nand_remove(struct platform_device *pdev) {struct orion_nand_info *info =platform_get_drvdata (pdev);struct nand_chip *chip = &info->chip; -struct mtd_info *mtd =nand_to_mtd (chip); -nand_release (mtd); +nand_release (chip);clk_disable_unprepare (info->clk);
drivers/mtd/nand/oxnas_nand.c +9 -7
@@ -123,7 +123,7 @@ static int oxnas_nand_probe(struct platform_device *pdev) GFP_KERNEL);if (!chip) { err = -ENOMEM ; - goto err_clk_unprepare; + goto err_release_child; } chip->controller = &oxnas->base;
@@ -144,13 +144,11 @@ static int oxnas_nand_probe(struct platform_device *pdev)/* Scan to find existence of the device */ err =nand_scan (mtd,1 );if (err) - goto err_clk_unprepare; + goto err_release_child; err =mtd_device_register (mtd,NULL ,0 ); -if (err) { -nand_release (mtd); - goto err_clk_unprepare; - } +if (err) + goto err_cleanup_nand; oxnas->chips[nchips] = chip; ++nchips;
@@ -166,6 +164,10 @@ static int oxnas_nand_probe(struct platform_device *pdev)return 0 ; +err_cleanup_nand: +nand_cleanup (chip); +err_release_child: +of_node_put (nand_np); err_clk_unprepare:clk_disable_unprepare (oxnas->clk);return err;
@@ -176,7 +178,7 @@ static int oxnas_nand_remove(struct platform_device *pdev)struct oxnas_nand_ctrl *oxnas =platform_get_drvdata (pdev);if (oxnas->chips[0 ]) -nand_release (nand_to_mtd (oxnas->chips[0 ])); +nand_release (oxnas->chips[0 ]);clk_disable_unprepare (oxnas->clk);
drivers/mtd/nand/pasemi_nand.c +1 -1
@@ -193,7 +193,7 @@ static int pasemi_nand_remove(struct platform_device *ofdev) chip =mtd_to_nand (pasemi_nand_mtd);/* Release resources, unregister device */ -nand_release (pasemi_nand_mtd); +nand_release (chip);release_region (lpcctl,4 );
drivers/mtd/nand/plat_nand.c +2 -2
@@ -99,7 +99,7 @@ static int plat_nand_probe(struct platform_device *pdev)if (!err)return err; -nand_release (mtd); +nand_cleanup (&data->chip); out:if (pdata->ctrl.remove) pdata->ctrl.remove (pdev);
@@ -114,7 +114,7 @@ static int plat_nand_remove(struct platform_device *pdev)struct plat_nand_data *data =platform_get_drvdata (pdev);struct platform_nand_data *pdata =dev_get_platdata (&pdev->dev); -nand_release (nand_to_mtd (&data->chip)); +nand_release (&data->chip);if (pdata->ctrl.remove) pdata->ctrl.remove (pdev);
drivers/mtd/nand/pxa3xx_nand.c +1 -1
@@ -1915,7 +1915,7 @@ static int pxa3xx_nand_remove(struct platform_device *pdev)clk_disable_unprepare (info->clk);for (cs =0 ; cs < pdata->num_cs; cs++) -nand_release (nand_to_mtd (&info->host[cs]->chip)); +nand_release (&info->host[cs]->chip);return 0 ; }
drivers/mtd/nand/qcom_nandc.c +1 -1
@@ -2760,7 +2760,7 @@ static int qcom_nandc_remove(struct platform_device *pdev)struct qcom_nand_host *host;list_for_each_entry (host, &nandc->host_list, node) -nand_release (nand_to_mtd (&host->chip)); +nand_release (&host->chip);qcom_nandc_unalloc (nandc);
drivers/mtd/nand/r852.c +2 -2
@@ -656,7 +656,7 @@ static int r852_register_nand_device(struct r852_device *dev) dev->card_registred =1 ;return 0 ; error3: -nand_release (mtd); +nand_release (dev->chip); error1:/* Force card redetect */ dev->card_detected =0 ;
@@ -675,7 +675,7 @@ static void r852_unregister_nand_device(struct r852_device *dev)return ;device_remove_file (&mtd->dev, &dev_attr_media_type); -nand_release (mtd); +nand_release (dev->chip);r852_engine_disable (dev); dev->card_registred =0 ; }
drivers/mtd/nand/s3c2410.c +1 -1
@@ -784,7 +784,7 @@ static int s3c24xx_nand_remove(struct platform_device *pdev)for (mtdno =0 ; mtdno < info->mtd_count; mtdno++, ptr++) {pr_debug ("releasing mtd %d (%p)\n" , mtdno, ptr); -nand_release (nand_to_mtd (&ptr->chip)); +nand_release (&ptr->chip); } }
drivers/mtd/nand/sh_flctl.c +1 -1
@@ -1231,7 +1231,7 @@ static int flctl_remove(struct platform_device *pdev)struct sh_flctl *flctl =platform_get_drvdata (pdev);flctl_release_dma (flctl); -nand_release (nand_to_mtd (&flctl->chip)); +nand_release (&flctl->chip);pm_runtime_disable (&pdev->dev);return 0 ;
drivers/mtd/nand/sharpsl.c +2 -2
@@ -192,7 +192,7 @@ static int sharpsl_nand_probe(struct platform_device *pdev)return 0 ; err_add: -nand_release (mtd); +nand_cleanup (this); err_scan:iounmap (sharpsl->io);
@@ -210,7 +210,7 @@ static int sharpsl_nand_remove(struct platform_device *pdev)struct sharpsl_nand *sharpsl =platform_get_drvdata (pdev);/* Release resources, unregister device */ -nand_release (nand_to_mtd (&sharpsl->chip)); +nand_release (&sharpsl->chip);iounmap (sharpsl->io);
drivers/mtd/nand/socrates_nand.c +2 -3
@@ -195,7 +195,7 @@ static int socrates_nand_probe(struct platform_device *ofdev)if (!res)return res; -nand_release (mtd); +nand_cleanup (nand_chip); out:iounmap (host->io_base);
@@ -208,9 +208,8 @@ static int socrates_nand_probe(struct platform_device *ofdev)static int socrates_nand_remove (struct platform_device *ofdev) {struct socrates_nand_host *host =dev_get_drvdata (&ofdev->dev); -struct mtd_info *mtd =nand_to_mtd (&host->nand_chip); -nand_release (mtd); +nand_release (&host->nand_chip);iounmap (host->io_base);
drivers/mtd/nand/sunxi_nand.c +2 -2
@@ -2125,7 +2125,7 @@ static int sunxi_nand_chip_init(struct device *dev, struct sunxi_nfc *nfc, ret =mtd_device_register (mtd,NULL ,0 );if (ret) {dev_err (dev,"failed to register mtd device: %d\n" , ret); -nand_release (mtd); +nand_release (nand);return ret; }
@@ -2164,7 +2164,7 @@ static void sunxi_nand_chips_cleanup(struct sunxi_nfc *nfc)while (!list_empty (&nfc->chips)) { chip = list_first_entry(&nfc->chips, struct sunxi_nand_chip, node); -nand_release (nand_to_mtd (&chip->nand)); +nand_release (&chip->nand);sunxi_nand_ecc_cleanup (&chip->nand.ecc);list_del (&chip->node); }
drivers/mtd/nand/tango_nand.c +1 -1
@@ -619,7 +619,7 @@ static int tango_nand_remove(struct platform_device *pdev)for (cs =0 ; cs <MAX_CS ; ++cs) {if (nfc->chips[cs]) -nand_release (nand_to_mtd (&nfc->chips[cs]->nand_chip)); +nand_release (&nfc->chips[cs]->nand_chip); }return 0 ;
drivers/mtd/nand/tmio_nand.c +2 -2
@@ -448,7 +448,7 @@ static int tmio_probe(struct platform_device *dev)if (!retval)return retval; -nand_release (mtd); +nand_cleanup (nand_chip); err_irq:tmio_hw_stop (dev, tmio);
@@ -459,7 +459,7 @@ static int tmio_remove(struct platform_device *dev) {struct tmio_nand *tmio =platform_get_drvdata (dev); -nand_release (nand_to_mtd (&tmio->chip)); +nand_release (&tmio->chip);tmio_hw_stop (dev, tmio);return 0 ; }
drivers/mtd/nand/txx9ndfmc.c +1 -1
@@ -390,7 +390,7 @@ static int __exit txx9ndfmc_remove(struct platform_device *dev) chip =mtd_to_nand (mtd); txx9_priv =nand_get_controller_data (chip); -nand_release (mtd); +nand_release (chip);kfree (txx9_priv->mtdname);kfree (txx9_priv); }
drivers/mtd/nand/vf610_nfc.c +1 -1
@@ -794,7 +794,7 @@ static int vf610_nfc_remove(struct platform_device *pdev)struct mtd_info *mtd =platform_get_drvdata (pdev);struct vf610_nfc *nfc =mtd_to_nfc (mtd); -nand_release (mtd); +nand_release (mtd_to_nand (mtd));clk_disable_unprepare (nfc->clk);return 0 ; }
drivers/mtd/nand/xway_nand.c +2 -2
@@ -211,7 +211,7 @@ static int xway_nand_probe(struct platform_device *pdev) err =mtd_device_register (mtd,NULL ,0 );if (err) -nand_release (mtd); +nand_cleanup (&data->chip);return err; }
@@ -223,7 +223,7 @@ static int xway_nand_remove(struct platform_device *pdev) {struct xway_nand_data *data =platform_get_drvdata (pdev); -nand_release (nand_to_mtd (&data->chip)); +nand_release (&data->chip);return 0 ; }
drivers/net/ethernet/intel/e1000e/netdev.c +10 -4
@@ -6328,11 +6328,17 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool runtime)struct net_device *netdev =pci_get_drvdata (pdev);struct e1000_adapter *adapter =netdev_priv (netdev);struct e1000_hw *hw = &adapter->hw; -u32 ctrl, ctrl_ext, rctl, status; -/* Runtime suspend should only enable wakeup for link changes */ -u32 wufc = runtime ?E1000_WUFC_LNKC : adapter->wol; +u32 ctrl, ctrl_ext, rctl, status, wufc;int retval =0 ; +/* Runtime suspend should only enable wakeup for link changes */ +if (runtime) + wufc =E1000_WUFC_LNKC ; +else if (device_may_wakeup (&pdev->dev)) + wufc = adapter->wol; +else + wufc =0 ; + status =er32 (STATUS );if (status &E1000_STATUS_LU ) wufc &= ~E1000_WUFC_LNKC ;
@@ -6389,7 +6395,7 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool runtime)if (adapter->hw.phy.type == e1000_phy_igp_3) {e1000e_igp3_phy_powerdown_workaround_ich8lan (&adapter->hw); }else if (hw->mac.type >= e1000_pch_lpt) { -if (!(wufc & (E1000_WUFC_EX |E1000_WUFC_MC |E1000_WUFC_BC ))) +if (wufc && !(wufc & (E1000_WUFC_EX |E1000_WUFC_MC |E1000_WUFC_BC )))/* ULP does not support wake from unicast, multicast * or broadcast. */
drivers/net/geneve.c +4 -3
@@ -915,9 +915,10 @@ static netdev_tx_t geneve_xmit(struct sk_buff *skb, struct net_device *dev)if (geneve->collect_md) { info =skb_tunnel_info (skb);if (unlikely (!info || !(info->mode &IP_TUNNEL_INFO_TX ))) { - err = -EINVAL ;netdev_dbg (dev,"no tunnel metadata\n" ); - goto tx_error; +dev_kfree_skb (skb); + dev->stats.tx_dropped++; +return NETDEV_TX_OK ; } }else { info = &geneve->info;
@@ -934,7 +935,7 @@ static netdev_tx_t geneve_xmit(struct sk_buff *skb, struct net_device *dev)if (likely (!err))return NETDEV_TX_OK ; -tx_error: +dev_kfree_skb (skb);if (err == -ELOOP )
drivers/net/hamradio/yam.c +1 -0
@@ -1162,6 +1162,7 @@ static int __init yam_init_driver(void) err =register_netdev (dev);if (err) {printk (KERN_WARNING "yam: cannot register net device %s\n" , dev->name); +free_netdev (dev); goto error; } yam_devs[i] = dev;
drivers/ntb/ntb.c +2 -6
@@ -216,10 +216,8 @@ int ntb_default_port_number(struct ntb_dev *ntb)case NTB_TOPO_B2B_DSD :return NTB_PORT_SEC_DSD ;default : -break ; +return 0 ; } - -return -EINVAL ; }EXPORT_SYMBOL (ntb_default_port_number);
@@ -242,10 +240,8 @@ int ntb_default_peer_port_number(struct ntb_dev *ntb, int pidx)case NTB_TOPO_B2B_DSD :return NTB_PORT_PRI_USD ;default : -break ; +return 0 ; } - -return -EINVAL ; }EXPORT_SYMBOL (ntb_default_peer_port_number);
drivers/pci/host/pci-aardvark.c +0 -4
@@ -365,10 +365,6 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie)advk_pcie_wait_for_link (pcie); - reg =PCIE_CORE_LINK_L0S_ENTRY | - (1 <<PCIE_CORE_LINK_WIDTH_SHIFT ); -advk_writel (pcie, reg,PCIE_CORE_LINK_CTRL_STAT_REG ); - reg =advk_readl (pcie,PCIE_CORE_CMD_STATUS_REG ); reg |=PCIE_CORE_CMD_MEM_ACCESS_EN | PCIE_CORE_CMD_IO_ACCESS_EN |
drivers/pci/host/pcie-rcar.c +5 -4
@@ -328,11 +328,12 @@ static struct pci_ops rcar_pcie_ops = { };static void rcar_pcie_setup_window (int win,struct rcar_pcie *pcie, -struct resource *res) +struct resource_entry *window) {/* Setup PCIe address space mappings for each resource */ resource_size_t size;resource_size_t res_start; +struct resource *res = window->res;u32 mask;rcar_pci_write_reg (pcie,0x00000000 ,PCIEPTCTLR (win));
@@ -346,9 +347,9 @@ static void rcar_pcie_setup_window(int win, struct rcar_pcie *pcie,rcar_pci_write_reg (pcie, mask <<7 ,PCIEPAMR (win));if (res->flags &IORESOURCE_IO ) - res_start =pci_pio_to_address (res->start); + res_start =pci_pio_to_address (res->start) - window->offset;else - res_start = res->start; + res_start = res->start - window->offset;rcar_pci_write_reg (pcie,upper_32_bits (res_start),PCIEPAUR (win)); rcar_pci_write_reg(pcie, lower_32_bits(res_start) & ~0x7F,
@@ -377,7 +378,7 @@ static int rcar_pcie_setup(struct list_head *resource, struct rcar_pcie *pci)switch (resource_type (res)) {case IORESOURCE_IO :case IORESOURCE_MEM : -rcar_pcie_setup_window (i, pci, res); +rcar_pcie_setup_window (i, pci, win); i++;break ;case IORESOURCE_BUS :
drivers/pci/pcie/aspm.c +0 -10
@@ -584,16 +584,6 @@ static void pcie_aspm_cap_init(struct pcie_link_state *link, int blacklist)/* Setup initial capable state. Will be updated later */ link->aspm_capable = link->aspm_support; -/* -* If the downstream component has pci bridge function, don't -* do ASPM for now. -*/ -list_for_each_entry (child, &linkbus->devices, bus_list) { -if (pci_pcie_type (child) ==PCI_EXP_TYPE_PCI_BRIDGE ) { - link->aspm_disable =ASPM_STATE_ALL ; -break ; - } - }/* Get and check endpoint acceptable latencies */ list_for_each_entry (child, &linkbus->devices, bus_list) {
drivers/pci/pcie/ptm.c +17 -5
@@ -47,10 +47,6 @@ void pci_ptm_init(struct pci_dev *dev)if (!pci_is_pcie (dev))return ; - pos =pci_find_ext_capability (dev,PCI_EXT_CAP_ID_PTM ); -if (!pos) -return ; -/* * Enable PTM only on interior devices (root ports, switch ports, * etc.) on the assumption that it causes no link traffic until an
@@ -60,6 +56,23 @@ void pci_ptm_init(struct pci_dev *dev) pci_pcie_type(dev) == PCI_EXP_TYPE_RC_END))return ; +/* +* Switch Downstream Ports are not permitted to have a PTM +* capability; their PTM behavior is controlled by the Upstream +* Port (PCIe r5.0, sec 7.9.16). +*/ + ups =pci_upstream_bridge (dev); +if (pci_pcie_type (dev) ==PCI_EXP_TYPE_DOWNSTREAM && + ups && ups->ptm_enabled) { + dev->ptm_granularity = ups->ptm_granularity; + dev->ptm_enabled =1 ; +return ; + } + + pos =pci_find_ext_capability (dev,PCI_EXT_CAP_ID_PTM ); +if (!pos) +return ; +pci_read_config_dword (dev, pos +PCI_PTM_CAP , &cap); local_clock = (cap &PCI_PTM_GRANULARITY_MASK ) >>8 ;
@@ -69,7 +82,6 @@ void pci_ptm_init(struct pci_dev *dev)* the spec recommendation (PCIe r3.1, sec 7.32.3), select the * furthest upstream Time Source as the PTM Root. */ - ups =pci_upstream_bridge (dev);if (ups && ups->ptm_enabled) { ctrl =PCI_PTM_CTRL_ENABLE ;if (ups->ptm_granularity ==0 )
drivers/pci/probe.c +3 -2
@@ -792,9 +792,10 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge) goto free; err =device_register (&bridge->dev); -if (err) +if (err) {put_device (&bridge->dev); - + goto free; + } bus->bridge =get_device (&bridge->dev);device_enable_async_suspend (bus->bridge);pci_set_bus_of_node (bus);
drivers/pinctrl/freescale/pinctrl-imx.c +2 -17
@@ -661,16 +661,6 @@ static int imx_pinctrl_probe_dt(struct platform_device *pdev,return 0 ; } -/* -* imx_free_resources() - free memory used by this driver -* @info: info driver instance -*/ -static void imx_free_resources (struct imx_pinctrl *ipctl) -{ -if (ipctl->pctl) -pinctrl_unregister (ipctl->pctl); -} -int imx_pinctrl_probe (struct platform_device *pdev,struct imx_pinctrl_soc_info *info) {
@@ -761,21 +751,16 @@ int imx_pinctrl_probe(struct platform_device *pdev, &ipctl->pctl);if (ret) {dev_err (&pdev->dev,"could not register IMX pinctrl driver\n" ); - goto free; +return ret; } ret =imx_pinctrl_probe_dt (pdev, ipctl);if (ret) {dev_err (&pdev->dev,"fail to probe dt properties\n" ); - goto free; +return ret; }dev_info (&pdev->dev,"initialized IMX pinctrl driver\n" );return pinctrl_enable (ipctl->pctl); - -free: -imx_free_resources (ipctl); - -return ret; }
drivers/pinctrl/freescale/pinctrl-imx1-core.c +0 -1
@@ -642,7 +642,6 @@ int imx1_pinctrl_core_probe(struct platform_device *pdev, ret =of_platform_populate (pdev->dev.of_node,NULL ,NULL , &pdev->dev);if (ret) { -pinctrl_unregister (ipctl->pctl);dev_err (&pdev->dev,"Failed to populate subdevices\n" );return ret; }
drivers/power/supply/Kconfig +1 -1
@@ -530,7 +530,7 @@ config CHARGER_BQ24257 tristate "TI BQ24250/24251/24257 battery charger driver" depends on I2C depends on GPIOLIB || COMPILE_TEST - depends on REGMAP_I2C + select REGMAP_I2C help Say Y to enable support for the TI BQ24250, BQ24251, and BQ24257 battery chargers.
drivers/power/supply/lp8788-charger.c +2 -16
@@ -600,27 +600,14 @@ static void lp8788_setup_adc_channel(struct device *dev,return ;/* ADC channel for battery voltage */ - chan =iio_channel_get (dev, pdata->adc_vbatt); + chan =devm_iio_channel_get (dev, pdata->adc_vbatt); pchg->chan[LP8788_VBATT ] =IS_ERR (chan) ?NULL : chan;/* ADC channel for battery temperature */ - chan =iio_channel_get (dev, pdata->adc_batt_temp); + chan =devm_iio_channel_get (dev, pdata->adc_batt_temp); pchg->chan[LP8788_BATT_TEMP ] =IS_ERR (chan) ?NULL : chan; } -static void lp8788_release_adc_channel (struct lp8788_charger *pchg) -{ -int i; - -for (i =0 ; i <LP8788_NUM_CHG_ADC ; i++) { -if (!pchg->chan[i]) -continue ; - -iio_channel_release (pchg->chan[i]); - pchg->chan[i] =NULL ; - } -} -static ssize_t lp8788_show_charger_status (struct device *dev,struct device_attribute *attr,char *buf) {
@@ -747,7 +734,6 @@ static int lp8788_charger_remove(struct platform_device *pdev)lp8788_irq_unregister (pdev, pchg);sysfs_remove_group (&pdev->dev.kobj, &lp8788_attr_group);lp8788_psy_unregister (pchg); -lp8788_release_adc_channel (pchg);return 0 ; }
drivers/power/supply/smb347-charger.c +1 -0
@@ -1141,6 +1141,7 @@ static bool smb347_volatile_reg(struct device *dev, unsigned int reg)switch (reg) {case IRQSTAT_A :case IRQSTAT_C : +case IRQSTAT_D :case IRQSTAT_E :case IRQSTAT_F :case STAT_A :
drivers/remoteproc/remoteproc_core.c +1 -2
@@ -1432,6 +1432,7 @@ struct rproc *rproc_alloc(struct device *dev, const char *name, rproc->dev.type = &rproc_type; rproc->dev.class = &rproc_class; rproc->dev.driver_data = rproc; +idr_init (&rproc->notifyids);/* Assign a unique device index and name */ rproc->index =ida_simple_get (&rproc_dev_index,0 ,0 ,GFP_KERNEL );
@@ -1450,8 +1451,6 @@ struct rproc *rproc_alloc(struct device *dev, const char *name,mutex_init (&rproc->lock); -idr_init (&rproc->notifyids); -INIT_LIST_HEAD (&rproc->carveouts);INIT_LIST_HEAD (&rproc->mappings);INIT_LIST_HEAD (&rproc->traces);
drivers/s390/cio/qdio.h +0 -1
@@ -377,7 +377,6 @@ static inline int multicast_outbound(struct qdio_q *q)extern u64 last_ai_time;/* prototypes for thin interrupt */ -void qdio_setup_thinint (struct qdio_irq *irq_ptr);int qdio_establish_thinint (struct qdio_irq *irq_ptr);void qdio_shutdown_thinint (struct qdio_irq *irq_ptr);void tiqdio_add_input_queues (struct qdio_irq *irq_ptr);
drivers/s390/cio/qdio_setup.c +0 -1
@@ -479,7 +479,6 @@ int qdio_setup_irq(struct qdio_initialize *init_data)setup_queues (irq_ptr, init_data);setup_qib (irq_ptr, init_data); -qdio_setup_thinint (irq_ptr); set_impl_params(irq_ptr, init_data->qib_param_field_format, init_data->qib_param_field, init_data->input_slib_elements,
drivers/s390/cio/qdio_thinint.c +8 -6
@@ -270,17 +270,19 @@ int __init tiqdio_register_thinints(void)int qdio_establish_thinint (struct qdio_irq *irq_ptr) { +int rc; +if (!is_thinint_irq (irq_ptr))return 0 ; -return set_subchannel_ind (irq_ptr,0 ); -} -void qdio_setup_thinint (struct qdio_irq *irq_ptr) -{ -if (!is_thinint_irq (irq_ptr)) -return ; irq_ptr->dsci =get_indicator ();DBF_HEX (&irq_ptr->dsci,sizeof (void *)); + + rc =set_subchannel_ind (irq_ptr,0 ); +if (rc) +put_indicator (irq_ptr->dsci); + +return rc; }void qdio_shutdown_thinint (struct qdio_irq *irq_ptr)
drivers/scsi/arm/acornscsi.c +3 -1
@@ -2914,8 +2914,10 @@ static int acornscsi_probe(struct expansion_card *ec, const struct ecard_id *id) ashost->base =ecardm_iomap (ec,ECARD_RES_MEMC ,0 ,0 ); ashost->fast =ecardm_iomap (ec,ECARD_RES_IOCFAST ,0 ,0 ); -if (!ashost->base || !ashost->fast) +if (!ashost->base || !ashost->fast) { + ret = -ENOMEM ; goto out_put; + } host->irq = ec->irq; ashost->host = host;
drivers/scsi/ibmvscsi/ibmvscsi.c +2 -0
@@ -429,6 +429,8 @@ static int ibmvscsi_reenable_crq_queue(struct crq_queue *queue,int rc =0 ;struct vio_dev *vdev =to_vio_dev (hostdata->dev); +set_adapter_info (hostdata); +/* Re-enable the CRQ */ do { if (rc)
drivers/scsi/iscsi_boot_sysfs.c +1 -1
@@ -360,7 +360,7 @@ iscsi_boot_create_kobj(struct iscsi_boot_kset *boot_kset, boot_kobj->kobj.kset = boot_kset->kset;if (kobject_init_and_add (&boot_kobj->kobj, &iscsi_boot_ktype,NULL , name, index)) { -kfree (boot_kobj); +kobject_put (&boot_kobj->kobj);return NULL ; } boot_kobj->data = data;
drivers/scsi/lpfc/lpfc_els.c +2 -0
@@ -7913,6 +7913,8 @@ lpfc_els_unsol_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,spin_lock_irq (shost->host_lock);if (ndlp->nlp_flag &NLP_IN_DEV_LOSS ) {spin_unlock_irq (shost->host_lock); +if (newnode) +lpfc_nlp_put (ndlp); goto dropit; }spin_unlock_irq (shost->host_lock);
drivers/scsi/mpt3sas/mpt3sas_base.c +2 -0
@@ -3263,7 +3263,9 @@ _base_release_memory_pools(struct MPT3SAS_ADAPTER *ioc) ioc->scsi_lookup =NULL ; }kfree (ioc->hpr_lookup); + ioc->hpr_lookup =NULL ;kfree (ioc->internal_lookup); + ioc->internal_lookup =NULL ;if (ioc->chain_lookup) {for (i =0 ; i < ioc->chain_depth; i++) {if (ioc->chain_lookup[i].chain_buffer)
drivers/scsi/qedi/qedi_iscsi.c +6 -1
@@ -1007,7 +1007,8 @@ static void qedi_ep_disconnect(struct iscsi_endpoint *ep)if (qedi_ep->state ==EP_STATE_OFLDCONN_START ) goto ep_exit_recover; -flush_work (&qedi_ep->offload_work); +if (qedi_ep->state !=EP_STATE_OFLDCONN_NONE ) +flush_work (&qedi_ep->offload_work);if (qedi_ep->conn) { qedi_conn = qedi_ep->conn;
@@ -1224,6 +1225,10 @@ static int qedi_set_path(struct Scsi_Host *shost, struct iscsi_path *path_data) } iscsi_cid = (u32 )path_data->handle; +if (iscsi_cid >= qedi->max_active_conns) { + ret = -EINVAL ; + goto set_path_exit; + } qedi_ep = qedi->ep_tbl[iscsi_cid];QEDI_INFO (&qedi->dbg_ctx,QEDI_LOG_INFO ,"iscsi_cid=0x%x, qedi_ep=%p\n" , iscsi_cid, qedi_ep);
drivers/scsi/qla2xxx/qla_os.c +1 -0
@@ -5824,6 +5824,7 @@ qla2x00_do_dpc(void *data)if (do_reset && !(test_and_set_bit (ABORT_ISP_ACTIVE , &base_vha->dpc_flags))) { + base_vha->flags.online =1 ;ql_dbg (ql_dbg_dpc, base_vha,0x4007 ,"ISP abort scheduled.\n" );if (ha->isp_ops->abort_isp (base_vha)) {
drivers/scsi/qla2xxx/tcm_qla2xxx.c +2 -0
@@ -937,6 +937,7 @@ static ssize_t tcm_qla2xxx_tpg_enable_store(struct config_item *item,atomic_set (&tpg->lport_tpg_enabled,0 );qlt_stop_phase1 (vha->vha_tgt.qla_tgt); +qlt_stop_phase2 (vha->vha_tgt.qla_tgt); }return count;
@@ -1101,6 +1102,7 @@ static ssize_t tcm_qla2xxx_npiv_tpg_enable_store(struct config_item *item,atomic_set (&tpg->lport_tpg_enabled,0 );qlt_stop_phase1 (vha->vha_tgt.qla_tgt); +qlt_stop_phase2 (vha->vha_tgt.qla_tgt); }return count;
drivers/scsi/sr.c +5 -1
@@ -748,7 +748,7 @@ static int sr_probe(struct device *dev) cd->cdi.disk = disk;if (register_cdrom (&cd->cdi)) - goto fail_put; + goto fail_minor;/* * Initialize block layer runtime PM stuffs before the
@@ -766,6 +766,10 @@ static int sr_probe(struct device *dev)return 0 ; +fail_minor: +spin_lock (&sr_index_lock); +clear_bit (minor, sr_index_bits); +spin_unlock (&sr_index_lock); fail_put:put_disk (disk); fail_free:
drivers/scsi/ufs/ufs-qcom.c +3 -3
@@ -1649,11 +1649,11 @@ static void ufs_qcom_dump_dbg_regs(struct ufs_hba *hba)/* sleep a bit intermittently as we are dumping too much data */ ufs_qcom_print_hw_debug_reg_all (hba,NULL , ufs_qcom_dump_regs_wrapper); -usleep_range (1000 ,1100 ); +udelay (1000 );ufs_qcom_testbus_read (hba); -usleep_range (1000 ,1100 ); +udelay (1000 );ufs_qcom_print_unipro_testbus (hba); -usleep_range (1000 ,1100 ); +udelay (1000 ); }/**
drivers/scsi/ufs/ufshcd.c +0 -1
@@ -4890,7 +4890,6 @@ static int ufshcd_bkops_ctrl(struct ufs_hba *hba, err =ufshcd_enable_auto_bkops (hba); else err =ufshcd_disable_auto_bkops (hba); - hba->urgent_bkops_lvl = curr_status; out:return err; }
drivers/staging/greybus/light.c +2 -1
@@ -1033,7 +1033,8 @@ static int gb_lights_light_config(struct gb_lights *glights, u8 id) light->channels_count = conf.channel_count; light->name =kstrndup (conf.name,NAMES_MAX ,GFP_KERNEL ); - +if (!light->name) +return -ENOMEM ; light->channels =kcalloc (light->channels_count,sizeof (struct gb_channel ),GFP_KERNEL );if (!light->channels)
drivers/staging/sm750fb/sm750.c +1 -0
@@ -899,6 +899,7 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index) fix->visual =FB_VISUAL_PSEUDOCOLOR ;break ;case 16 : +case 24 :case 32 : fix->visual =FB_VISUAL_TRUECOLOR ;break ;
drivers/thermal/ti-soc-thermal/ti-thermal-common.c +3 -3
@@ -183,7 +183,7 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id, data =ti_bandgap_get_sensor_data (bgp, id); -if (!data ||IS_ERR (data)) +if (!IS_ERR_OR_NULL (data)) data =ti_thermal_build_data (bgp, id);if (!data)
@@ -210,7 +210,7 @@ int ti_thermal_remove_sensor(struct ti_bandgap *bgp, int id) data =ti_bandgap_get_sensor_data (bgp, id); -if (data && data->ti_thermal) { +if (!IS_ERR_OR_NULL (data) && data->ti_thermal) {if (data->our_zone)thermal_zone_device_unregister (data->ti_thermal); }
@@ -276,7 +276,7 @@ int ti_thermal_unregister_cpu_cooling(struct ti_bandgap *bgp, int id) data =ti_bandgap_get_sensor_data (bgp, id); -if (data) { +if (!IS_ERR_OR_NULL (data)) {cpufreq_cooling_unregister (data->cool_dev);cpufreq_cpu_put (data->policy); }
drivers/tty/hvc/hvc_console.c +14 -2
@@ -88,6 +88,8 @@ static LIST_HEAD(hvc_structs);*/ static DEFINE_SPINLOCK (hvc_structs_lock); +/* Mutex to serialize hvc_open */ +static DEFINE_MUTEX (hvc_open_mutex);/* * This value is used to assign a tty->index value to a hvc_struct based * upon order of exposure via hvc_probe(), when we can not match it to
@@ -332,16 +334,24 @@ static int hvc_install(struct tty_driver *driver, struct tty_struct *tty)*/ static int hvc_open (struct tty_struct *tty,struct file * filp) { -struct hvc_struct *hp = tty->driver_data; +struct hvc_struct *hp;unsigned long flags;int rc =0 ; +mutex_lock (&hvc_open_mutex); + + hp = tty->driver_data; +if (!hp) { + rc = -EIO ; + goto out; + } +spin_lock_irqsave (&hp->port.lock, flags);/* Check and then increment for fast path open. */ if (hp->port.count++ >0 ) {spin_unlock_irqrestore (&hp->port.lock, flags);hvc_kick (); -return 0 ; + goto out; }/* else count == 0 */ spin_unlock_irqrestore (&hp->port.lock, flags);
@@ -369,6 +379,8 @@ static int hvc_open(struct tty_struct *tty, struct file * filp)/* Force wakeup of the polling thread */ hvc_kick (); +out: +mutex_unlock (&hvc_open_mutex);return rc; }
drivers/tty/n_gsm.c +15 -11
@@ -677,11 +677,10 @@ static struct gsm_msg *gsm_data_alloc(struct gsm_mux *gsm, u8 addr, int len,* FIXME: lock against link layer control transmissions */ -static void gsm_data_kick (struct gsm_mux *gsm) +static void gsm_data_kick (struct gsm_mux *gsm,struct gsm_dlci *dlci) {struct gsm_msg *msg, *nmsg;int len; -int skip_sof =0 ;list_for_each_entry_safe (msg, nmsg, &gsm->tx_list, list) {if (gsm->constipated && msg->addr)
@@ -703,18 +702,23 @@ static void gsm_data_kick(struct gsm_mux *gsm)print_hex_dump_bytes ("gsm_data_kick: " ,DUMP_PREFIX_OFFSET , gsm->txframe, len); - -if (gsm->output (gsm, gsm->txframe + skip_sof, - len - skip_sof) <0 ) +if (gsm->output (gsm, gsm->txframe, len) <0 )break ;/* FIXME: Can eliminate one SOF in many more cases */ gsm->tx_bytes -= msg->len; -/* For a burst of frames skip the extra SOF within the -burst */ - skip_sof =1 ;list_del (&msg->list);kfree (msg); + +if (dlci) { +tty_port_tty_wakeup (&dlci->port); + }else { +int i =0 ; + +for (i =0 ; i <NUM_DLCI ; i++) +if (gsm->dlci[i]) +tty_port_tty_wakeup (&gsm->dlci[i]->port); + } } }
@@ -766,7 +770,7 @@ static void __gsm_data_queue(struct gsm_dlci *dlci, struct gsm_msg *msg)/* Add to the actual output queue */ list_add_tail (&msg->list, &gsm->tx_list); gsm->tx_bytes += msg->len; -gsm_data_kick (gsm); +gsm_data_kick (gsm, dlci); }/**
@@ -1227,7 +1231,7 @@ static void gsm_control_message(struct gsm_mux *gsm, unsigned int command,gsm_control_reply (gsm,CMD_FCON ,NULL ,0 );/* Kick the link in case it is idling */ spin_lock_irqsave (&gsm->tx_lock, flags); -gsm_data_kick (gsm); +gsm_data_kick (gsm,NULL );spin_unlock_irqrestore (&gsm->tx_lock, flags);break ;case CMD_FCOFF :
@@ -2426,7 +2430,7 @@ static void gsmld_write_wakeup(struct tty_struct *tty)/* Queue poll */ clear_bit (TTY_DO_WRITE_WAKEUP , &tty->flags);spin_lock_irqsave (&gsm->tx_lock, flags); -gsm_data_kick (gsm); +gsm_data_kick (gsm,NULL );if (gsm->tx_bytes <TX_THRESH_LO ) {gsm_dlci_data_sweep (gsm); }
drivers/tty/serial/amba-pl011.c +1 -0
@@ -2605,6 +2605,7 @@ static int pl011_setup_port(struct device *dev, struct uart_amba_port *uap, uap->port.fifosize = uap->fifosize; uap->port.flags =UPF_BOOT_AUTOCONF ; uap->port.line = index; +spin_lock_init (&uap->port.lock); amba_ports[index] = uap;
drivers/usb/class/usblp.c +4 -1
@@ -481,7 +481,8 @@ static int usblp_release(struct inode *inode, struct file *file)usb_autopm_put_interface (usblp->intf);if (!usblp->present)/* finish cleanup from disconnect */ -usblp_cleanup (usblp); +usblp_cleanup (usblp);/* any URBs must be dead */ +mutex_unlock (&usblp_mutex);return 0 ; }
@@ -1388,9 +1389,11 @@ static void usblp_disconnect(struct usb_interface *intf)usblp_unlink_urbs (usblp);mutex_unlock (&usblp->mut); +usb_poison_anchored_urbs (&usblp->urbs);if (!usblp->used)usblp_cleanup (usblp); +mutex_unlock (&usblp_mutex); }
drivers/usb/dwc2/core_intr.c +5 -2
@@ -364,10 +364,13 @@ static void dwc2_handle_wakeup_detected_intr(struct dwc2_hsotg *hsotg)if (ret && (ret != -ENOTSUPP ))dev_err (hsotg->dev,"exit hibernation failed\n" ); +/* Change to L0 state */ + hsotg->lx_state =DWC2_L0 ;call_gadget (hsotg, resume); + }else { +/* Change to L0 state */ + hsotg->lx_state =DWC2_L0 ; } -/* Change to L0 state */ - hsotg->lx_state =DWC2_L0 ; }else {if (hsotg->params.hibernation)return ;
drivers/usb/gadget/composite.c +61 -17
126 lines not on this page · raw message
drivers/usb/gadget/udc/lpc32xx_udc.c +6 -5
@@ -1615,17 +1615,17 @@ static int lpc32xx_ep_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc) { struct lpc32xx_ep *ep = container_of(_ep, struct lpc32xx_ep, ep); -struct lpc32xx_udc *udc = ep->udc; +struct lpc32xx_udc *udc;u16 maxpacket;u32 tmp;unsigned long flags;/* Verify EP data */ if ((!_ep) || (!ep) || (!desc) || - (desc->bDescriptorType !=USB_DT_ENDPOINT )) { -dev_dbg (udc->dev,"bad ep or descriptor\n" ); + (desc->bDescriptorType !=USB_DT_ENDPOINT ))return -EINVAL ; - } + + udc = ep->udc; maxpacket =usb_endpoint_maxp (desc);if ((maxpacket ==0 ) || (maxpacket > ep->maxpacket)) {dev_dbg (udc->dev,"bad ep descriptor's packet size\n" );
@@ -1873,7 +1873,7 @@ static int lpc32xx_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)static int lpc32xx_ep_set_halt (struct usb_ep *_ep,int value) { struct lpc32xx_ep *ep = container_of(_ep, struct lpc32xx_ep, ep); -struct lpc32xx_udc *udc = ep->udc; +struct lpc32xx_udc *udc;unsigned long flags;if ((!ep) || (ep->hwep_num <=1 ))
@@ -1883,6 +1883,7 @@ static int lpc32xx_ep_set_halt(struct usb_ep *_ep, int value)if (ep->is_in)return -EAGAIN ; + udc = ep->udc;spin_lock_irqsave (&udc->lock, flags);if (value ==1 ) {
drivers/usb/gadget/udc/m66592-udc.c +1 -1
@@ -1672,7 +1672,7 @@ static int m66592_probe(struct platform_device *pdev) err_add_udc:m66592_free_request (&m66592->ep[0 ].ep, m66592->ep0_req); - + m66592->ep0_req =NULL ; clean_up3:if (m66592->pdata->on_chip) {clk_disable (m66592->clk);
drivers/usb/gadget/udc/s3c2410_udc.c +0 -4
@@ -268,10 +268,6 @@ static void s3c2410_udc_done(struct s3c2410_ep *ep,static void s3c2410_udc_nuke (struct s3c2410_udc *udc,struct s3c2410_ep *ep,int status) { -/* Sanity check */ -if (&ep->queue ==NULL ) -return ; -while (!list_empty (&ep->queue)) {struct s3c2410_request *req; req = list_entry(ep->queue.next, struct s3c2410_request,
drivers/usb/host/ehci-mxc.c +2 -0
@@ -63,6 +63,8 @@ static int ehci_mxc_drv_probe(struct platform_device *pdev) } irq =platform_get_irq (pdev,0 ); +if (irq <0 ) +return irq; hcd =usb_create_hcd (&ehci_mxc_hc_driver, dev,dev_name (dev));if (!hcd)
drivers/usb/host/ehci-platform.c +5 -0
@@ -390,6 +390,11 @@ static int ehci_platform_resume(struct device *dev) }ehci_resume (hcd, priv->reset_on_resume); + +pm_runtime_disable (dev); +pm_runtime_set_active (dev); +pm_runtime_enable (dev); +return 0 ; }#endif /* CONFIG_PM_SLEEP */
drivers/usb/host/ohci-platform.c +5 -0
@@ -355,6 +355,11 @@ static int ohci_platform_resume(struct device *dev) }ohci_resume (hcd, false); + +pm_runtime_disable (dev); +pm_runtime_set_active (dev); +pm_runtime_enable (dev); +return 0 ; }#endif /* CONFIG_PM_SLEEP */
drivers/usb/host/xhci-plat.c +9 -1
@@ -381,7 +381,15 @@ static int __maybe_unused xhci_plat_resume(struct device *dev)if (ret)return ret; -return xhci_resume (xhci,0 ); + ret =xhci_resume (xhci,0 ); +if (ret) +return ret; + +pm_runtime_disable (dev); +pm_runtime_set_active (dev); +pm_runtime_enable (dev); + +return 0 ; }static int __maybe_unused xhci_plat_runtime_suspend (struct device *dev)
drivers/vfio/mdev/mdev_sysfs.c +1 -1
@@ -113,7 +113,7 @@ struct mdev_type *add_mdev_supported_type(struct mdev_parent *parent,"%s-%s" ,dev_driver_string (parent->dev), group->name);if (ret) { -kfree (type); +kobject_put (&type->kobj);return ERR_PTR (ret); }
drivers/vfio/pci/vfio_pci_config.c +11 -3
@@ -1464,7 +1464,12 @@ static int vfio_cap_init(struct vfio_pci_device *vdev)if (ret)return ret; -if (cap <=PCI_CAP_ID_MAX ) { +/* +* ID 0 is a NULL capability, conflicting with our fake +* PCI_CAP_ID_BASIC. As it has no content, consider it +* hidden for now. +*/ +if (cap && cap <=PCI_CAP_ID_MAX ) { len = pci_cap_length[cap];if (len ==0xFF ) {/* Variable length */ len =vfio_cap_len (vdev, cap, pos);
@@ -1732,8 +1737,11 @@ void vfio_config_free(struct vfio_pci_device *vdev) vdev->vconfig =NULL ;kfree (vdev->pci_config_map); vdev->pci_config_map =NULL ; -kfree (vdev->msi_perm); - vdev->msi_perm =NULL ; +if (vdev->msi_perm) { +free_perm_bits (vdev->msi_perm); +kfree (vdev->msi_perm); + vdev->msi_perm =NULL ; + } }/*
drivers/video/backlight/lp855x_bl.c +16 -4
@@ -460,7 +460,7 @@ static int lp855x_probe(struct i2c_client *cl, const struct i2c_device_id *id) ret =regulator_enable (lp->enable);if (ret <0 ) {dev_err (lp->dev,"failed to enable vddio: %d\n" , ret); -return ret; + goto disable_supply; }/*
@@ -475,24 +475,34 @@ static int lp855x_probe(struct i2c_client *cl, const struct i2c_device_id *id) ret =lp855x_configure (lp);if (ret) {dev_err (lp->dev,"device config err: %d" , ret); -return ret; + goto disable_vddio; } ret =lp855x_backlight_register (lp);if (ret) {dev_err (lp->dev,"failed to register backlight. err: %d\n" , ret); -return ret; + goto disable_vddio; } ret =sysfs_create_group (&lp->dev->kobj, &lp855x_attr_group);if (ret) {dev_err (lp->dev,"failed to register sysfs. err: %d\n" , ret); -return ret; + goto disable_vddio; }backlight_update_status (lp->bl); +return 0 ; + +disable_vddio: +if (lp->enable) +regulator_disable (lp->enable); +disable_supply: +if (lp->supply) +regulator_disable (lp->supply); + +return ret; }static int lp855x_remove (struct i2c_client *cl)
@@ -501,6 +511,8 @@ static int lp855x_remove(struct i2c_client *cl) lp->bl->props.brightness =0 ;backlight_update_status (lp->bl); +if (lp->enable) +regulator_disable (lp->enable);if (lp->supply)regulator_disable (lp->supply);sysfs_remove_group (&lp->dev->kobj, &lp855x_attr_group);
drivers/watchdog/da9062_wdt.c +0 -5
@@ -94,11 +94,6 @@ static int da9062_wdt_update_timeout_register(struct da9062_watchdog *wdt, unsigned int regval) {struct da9062 *chip = wdt->hw; -int ret; - - ret =da9062_reset_watchdog_timer (wdt); -if (ret) -return ret; return regmap_update_bits(chip->regmap, DA9062AA_CONTROL_D,
fs/block_dev.c +7 -5
@@ -1439,10 +1439,8 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)*/ if (!for_part) { ret =devcgroup_inode_permission (bdev->bd_inode, perm); -if (ret !=0 ) { -bdput (bdev); +if (ret !=0 )return ret; - } } restart:
@@ -1515,8 +1513,10 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part) goto out_clear;BUG_ON (for_part); ret =__blkdev_get (whole, mode,1 ); -if (ret) +if (ret) { +bdput (whole); goto out_clear; + } bdev->bd_contains = whole; bdev->bd_part =disk_get_part (disk, partno); if (!(disk->flags & GENHD_FL_UP) ||
@@ -1570,7 +1570,6 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)put_disk (disk);module_put (owner); out: -bdput (bdev);return ret; }
@@ -1656,6 +1655,9 @@ int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder)bdput (whole); } +if (res) +bdput (bdev); +return res; }EXPORT_SYMBOL (blkdev_get);
fs/dlm/dlm_internal.h +0 -1
@@ -99,7 +99,6 @@ do { \ __LINE__, __FILE__, #x, jiffies); \ {do} \ printk("\n"); \ - BUG(); \ panic("DLM: Record message above and reboot.\n"); \ } \ }
fs/ext4/extents.c +1 -1
@@ -2917,7 +2917,7 @@ int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start,* in use to avoid freeing it when removing blocks. */ if (sbi->s_cluster_ratio >1 ) { - pblk =ext4_ext_pblock (ex) + end - ee_block +2 ; + pblk =ext4_ext_pblock (ex) + end - ee_block +1 ; partial_cluster = -(long long )EXT4_B2C (sbi, pblk); }
fs/f2fs/super.c +2 -1
@@ -918,7 +918,8 @@ static int f2fs_statfs_project(struct super_block *sb, limit >>= sb->s_blocksize_bits;if (limit && buf->f_blocks > limit) { - curblock = dquot->dq_dqb.dqb_curspace >> sb->s_blocksize_bits; + curblock = (dquot->dq_dqb.dqb_curspace + + dquot->dq_dqb.dqb_rsvspace) >> sb->s_blocksize_bits; buf->f_blocks = limit; buf->f_bfree = buf->f_bavail = (buf->f_blocks > curblock) ?
fs/gfs2/log.c +9 -2
@@ -804,8 +804,10 @@ void gfs2_log_flush(struct gfs2_sbd *sdp, struct gfs2_glock *gl,* @new: New transaction to be merged */ -static void gfs2_merge_trans (struct gfs2_trans *old,struct gfs2_trans *new) +static void gfs2_merge_trans (struct gfs2_sbd *sdp,struct gfs2_trans *new) { +struct gfs2_trans *old = sdp->sd_log_tr; +WARN_ON_ONCE (!test_bit (TR_ATTACHED , &old->tr_flags)); old->tr_num_buf_new += new->tr_num_buf_new;
@@ -817,6 +819,11 @@ static void gfs2_merge_trans(struct gfs2_trans *old, struct gfs2_trans *new)list_splice_tail_init (&new->tr_databuf, &old->tr_databuf);list_splice_tail_init (&new->tr_buf, &old->tr_buf); + +spin_lock (&sdp->sd_ail_lock); +list_splice_tail_init (&new->tr_ail1_list, &old->tr_ail1_list); +list_splice_tail_init (&new->tr_ail2_list, &old->tr_ail2_list); +spin_unlock (&sdp->sd_ail_lock); }static void log_refund (struct gfs2_sbd *sdp,struct gfs2_trans *tr)
@@ -828,7 +835,7 @@ static void log_refund(struct gfs2_sbd *sdp, struct gfs2_trans *tr)gfs2_log_lock (sdp);if (sdp->sd_log_tr) { -gfs2_merge_trans (sdp->sd_log_tr, tr); +gfs2_merge_trans (sdp, tr); }else if (tr->tr_num_buf_new || tr->tr_num_databuf_new) {gfs2_assert_withdraw (sdp,test_bit (TR_ALLOCED , &tr->tr_flags)); sdp->sd_log_tr = tr;
fs/gfs2/ops_fstype.c +1 -1
@@ -922,7 +922,7 @@ static int init_per_node(struct gfs2_sbd *sdp, int undo) }static const match_table_t nolock_tokens = { - { Opt_jid,"jid=%d\n" , }, + { Opt_jid,"jid=%d" , }, { Opt_err,NULL }, };
fs/nfs/nfs4proc.c +1 -1
@@ -7309,7 +7309,7 @@ nfs4_bind_one_conn_to_session_done(struct rpc_task *task, void *calldata) }static const struct rpc_call_ops nfs4_bind_one_conn_to_session_ops = { - .rpc_call_done = &nfs4_bind_one_conn_to_session_done, + .rpc_call_done = nfs4_bind_one_conn_to_session_done, };/*
fs/nfsd/nfs4callback.c +2 -0
@@ -1161,6 +1161,8 @@ static void nfsd4_process_cb_update(struct nfsd4_callback *cb) err =setup_callback_client (clp, &conn, ses);if (err) {nfsd4_mark_cb_down (clp, err); +if (c) +svc_xprt_put (c->cn_xprt);return ; } }
include/linux/bitops.h +1 -1
@@ -50,7 +50,7 @@ static inline int get_bitmask_order(unsigned int count)static __always_inline unsigned long hweight_long (unsigned long w) { -return sizeof (w) ==4 ?hweight32 (w) :hweight64 (w); +return sizeof (w) ==4 ?hweight32 (w) :hweight64 ((__u64 )w); }/**
include/linux/elfnote.h +1 -1
@@ -54,7 +54,7 @@ .popsection ;#define ELFNOTE (name, type, desc) \ - ELFNOTE_START(name, type, "") \ + ELFNOTE_START(name, type, "a") \ desc ; \ ELFNOTE_END
include/linux/genhd.h +2 -0
@@ -693,9 +693,11 @@ static inline sector_t part_nr_sects_read(struct hd_struct *part)static inline void part_nr_sects_write (struct hd_struct *part,sector_t size) {#if BITS_PER_LONG ==32 && defined(CONFIG_LBDAF ) && defined(CONFIG_SMP ) +preempt_disable ();write_seqcount_begin (&part->nr_sects_seq); part->nr_sects = size;write_seqcount_end (&part->nr_sects_seq); +preempt_enable ();#elif BITS_PER_LONG ==32 && defined(CONFIG_LBDAF ) && defined(CONFIG_PREEMPT )preempt_disable (); part->nr_sects = size;
include/linux/kprobes.h +4 -0
@@ -385,6 +385,10 @@ static inline struct kprobe_ctlblk *get_kprobe_ctlblk(void)return this_cpu_ptr (&kprobe_ctlblk); } +extern struct kprobe kprobe_busy; +void kprobe_busy_begin (void ); +void kprobe_busy_end (void ); +kprobe_opcode_t *kprobe_lookup_name (const char *name,unsigned int offset);int register_kprobe (struct kprobe *p);void unregister_kprobe (struct kprobe *p);
include/linux/libata.h +3 -0
@@ -38,6 +38,7 @@#include <linux/acpi.h> #include <linux/cdrom.h> #include <linux/sched.h> +#include <linux/async.h> /* * Define if arch has non-standard setup. This is a _PCI_ standard
@@ -884,6 +885,8 @@ struct ata_port {struct timer_list fastdrain_timer;unsigned long fastdrain_cnt; +async_cookie_t cookie; +int em_message_type;void *private_data;
include/linux/mtd/rawnand.h +2 -4
@@ -22,6 +22,7 @@#include <linux/mtd/flashchip.h> #include <linux/mtd/bbm.h> +struct nand_chip ;struct mtd_info ;struct nand_flash_dev ;struct device_node ;
@@ -37,7 +38,7 @@ int nand_scan_ident(struct mtd_info *mtd, int max_chips,int nand_scan_tail (struct mtd_info *mtd);/* Unregister the MTD device and free resources held by the NAND device */ -void nand_release (struct mtd_info *mtd); +void nand_release (struct nand_chip *chip);/* Internal helper for board drivers which need to override command function */ void nand_wait_ready (struct mtd_info *mtd);
@@ -227,9 +228,6 @@ enum nand_ecc_algo {#define NAND_CI_CELLTYPE_MSK 0x0C#define NAND_CI_CELLTYPE_SHIFT 2 -/* Keep gcc happy */ -struct nand_chip ; -/* ONFI features */ #define ONFI_FEATURE_16_BIT_BUS (1 << 0)#define ONFI_FEATURE_EXT_PARAM_PAGE (1 << 7)
include/linux/usb/composite.h +3 -0
@@ -248,6 +248,9 @@ int usb_function_activate(struct usb_function *);int usb_interface_id (struct usb_configuration *,struct usb_function *); +int config_ep_by_speed_and_alt (struct usb_gadget *g,struct usb_function *f, +struct usb_ep *_ep,u8 alt); +int config_ep_by_speed (struct usb_gadget *g,struct usb_function *f,struct usb_ep *_ep);
include/uapi/linux/raid/md_p.h +2 -0
@@ -329,6 +329,7 @@ struct mdp_superblock_1 {#define MD_FEATURE_JOURNAL 512/* support write cache */ #define MD_FEATURE_PPL 1024/* support PPL */ #define MD_FEATURE_MULTIPLE_PPLS 2048/* support for multiple PPLs */ +#define MD_FEATURE_RAID0_LAYOUT 4096/* layout is meaningful for RAID0 */ #define MD_FEATURE_ALL (MD_FEATURE_BITMAP_OFFSET \ |MD_FEATURE_RECOVERY_OFFSET \ |MD_FEATURE_RESHAPE_ACTIVE \
@@ -341,6 +342,7 @@ struct mdp_superblock_1 { |MD_FEATURE_JOURNAL \ |MD_FEATURE_PPL \ |MD_FEATURE_MULTIPLE_PPLS \ + |MD_FEATURE_RAID0_LAYOUT \ ) struct r5l_payload_header {
kernel/kprobes.c +26 -1
@@ -599,11 +599,12 @@ static void kprobe_optimizer(struct work_struct *work)mutex_unlock (&module_mutex);mutex_unlock (&text_mutex);cpus_read_unlock (); -mutex_unlock (&kprobe_mutex);/* Step 5: Kick optimizer again if needed */ if (!list_empty (&optimizing_list) || !list_empty (&unoptimizing_list))kick_kprobe_optimizer (); + +mutex_unlock (&kprobe_mutex); }/* Wait for completing optimization and unoptimization */
@@ -1217,6 +1218,26 @@ __releases(hlist_lock) }NOKPROBE_SYMBOL (kretprobe_table_unlock); +struct kprobe kprobe_busy = { + .addr = (void *) get_kprobe, +}; + +void kprobe_busy_begin (void ) +{ +struct kprobe_ctlblk *kcb; + +preempt_disable (); +__this_cpu_write (current_kprobe, &kprobe_busy); + kcb =get_kprobe_ctlblk (); + kcb->kprobe_status =KPROBE_HIT_ACTIVE ; +} + +void kprobe_busy_end (void ) +{ +__this_cpu_write (current_kprobe,NULL ); +preempt_enable (); +} +/* * This function is called from finish_task_switch when task tk becomes dead, * so that we can recycle any function-return probe instances associated
@@ -1234,6 +1255,8 @@ void kprobe_flush_task(struct task_struct *tk)/* Early boot. kretprobe_table_locks not yet initialized. */ return ; +kprobe_busy_begin (); +INIT_HLIST_HEAD (&empty_rp); hash =hash_ptr (tk,KPROBE_HASH_BITS ); head = &kretprobe_inst_table[hash];
@@ -1247,6 +1270,8 @@ void kprobe_flush_task(struct task_struct *tk)hlist_del (&ri->hlist);kfree (ri); } + +kprobe_busy_end (); }NOKPROBE_SYMBOL (kprobe_flush_task);
kernel/trace/blktrace.c +11 -19
@@ -1022,8 +1022,10 @@ static void blk_add_trace_split(void *ignore,__blk_add_trace (bt, bio->bi_iter.bi_sector, bio->bi_iter.bi_size,bio_op (bio), bio->bi_opf, -BLK_TA_SPLIT , bio->bi_status,sizeof (rpdu), - &rpdu,blk_trace_bio_get_cgid (q, bio)); +BLK_TA_SPLIT , +blk_status_to_errno (bio->bi_status), +sizeof (rpdu), &rpdu, +blk_trace_bio_get_cgid (q, bio)); }rcu_read_unlock (); }
@@ -1060,7 +1062,8 @@ static void blk_add_trace_bio_remap(void *ignore, r.sector_from =cpu_to_be64 (from);__blk_add_trace (bt, bio->bi_iter.bi_sector, bio->bi_iter.bi_size, -bio_op (bio), bio->bi_opf,BLK_TA_REMAP , bio->bi_status, +bio_op (bio), bio->bi_opf,BLK_TA_REMAP , +blk_status_to_errno (bio->bi_status),sizeof (r), &r,blk_trace_bio_get_cgid (q, bio));rcu_read_unlock (); }
@@ -1282,21 +1285,10 @@ static inline __u16 t_error(const struct trace_entry *ent)static __u64 get_pdu_int (const struct trace_entry *ent,bool has_cg) { -const __u64 *val =pdu_start (ent, has_cg); +const __be64 *val =pdu_start (ent, has_cg);return be64_to_cpu (*val); } -static void get_pdu_remap (const struct trace_entry *ent, -struct blk_io_trace_remap *r,bool has_cg) -{ -const struct blk_io_trace_remap *__r =pdu_start (ent, has_cg); -__u64 sector_from = __r->sector_from;
Lines of this file are not shown. View the raw message.
lib/zlib_inflate/inffast.c +35 -56
91 lines not on this page · raw message
sound/usb/endpoint.c +38 -5
43 lines not on this page · raw message
tools/testing/selftests/networking/timestamping/timestamping.c +8 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/x86/protection_keys.c +2 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.