Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1597151 > unrolled thread
| Started by | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| First post | 2017-03-10 12:40 +0100 |
| Last post | 2017-03-10 20:20 +0100 |
| Articles | 17 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH 4.9 000/153] 4.9.14-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 12:40 +0100
[PATCH 4.9 010/153] MIPS: Calculate microMIPS ra properly when unwinding the stack Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 12:40 +0100
[PATCH 4.9 005/153] MIPS: Lantiq: Keep ethernet enabled during boot Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 12:40 +0100
[PATCH 4.9 004/153] MIPS: OCTEON: Fix copy_from_user fault handling for large buffers Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 12:40 +0100
[PATCH 4.9 012/153] mmc: sdhci-acpi: support deferred probe Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 12:40 +0100
[PATCH 4.9 031/153] hwmon: (it87) Do not overwrite bit 2..6 of pwm control registers Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 12:40 +0100
[PATCH 4.9 020/153] spi: s3c64xx: fix inconsistency between binding and driver Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 12:40 +0100
[PATCH 4.9 011/153] MIPS: Handle microMIPS jumps in the same way as MIPS32/MIPS64 jumps Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 12:40 +0100
[PATCH 4.9 036/153] coresight: STM: Balance enable/disable Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 12:40 +0100
[PATCH 4.9 009/153] MIPS: Fix is_jump_ins() handling of 16b microMIPS instructions Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 12:40 +0100
[PATCH 4.9 008/153] MIPS: Fix get_frame_info() handling of microMIPS function size Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 12:40 +0100
[PATCH 4.9 002/153] MIPS: Fix special case in 64 bit IP checksumming. Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 12:40 +0100
[PATCH 4.9 019/153] ext4: fix deadlock between inline_data and ext4_expand_extra_isize_ea() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 12:40 +0100
[PATCH 4.9 014/153] [media] uvcvideo: Fix a wrong macro Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 12:40 +0100
[PATCH 4.9 151/153] ceph: update readpages osd request according to size of pages Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-10 16:00 +0100
Re: [PATCH 4.9 000/153] 4.9.14-stable review Guenter Roeck <linux@roeck-us.net> - 2017-03-10 19:40 +0100
Re: [PATCH 4.9 000/153] 4.9.14-stable review Shuah Khan <shuahkh@osg.samsung.com> - 2017-03-10 20:20 +0100
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 12:40 +0100 |
| Subject | [PATCH 4.9 000/153] 4.9.14-stable review |
| Message-ID | <tjoSl-1MV-7@gated-at.bofh.it> |
This is the start of the stable review cycle for the 4.9.14 release.
There are 153 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Sun Mar 12 08:39:14 UTC 2017.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.9.14-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.9.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 4.9.14-rc1
Florian Westphal <fw@strlen.de>
netfilter: conntrack: refine gc worker heuristics, redux
Florian Westphal <fw@strlen.de>
netfilter: conntrack: remove GC_MAX_EVICTS break
Yan, Zheng <zyan@redhat.com>
ceph: update readpages osd request according to size of pages
James Smart <jsmart2021@gmail.com>
scsi: lpfc: Correct WQ creation for pagesize
Ralf Baechle <ralf@linux-mips.org>
MIPS: IP22: Fix build error due to binutils 2.25 uselessnes.
Ralf Baechle <ralf@linux-mips.org>
MIPS: IP22: Reformat inline assembler code to modern standards.
Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
powerpc/mm/hash: Always clear UPRT and Host Radix bits when setting up CPU
Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
powerpc/mm: Add MMU_FTR_KERNEL_RO to possible feature mask
Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
powerpc/xmon: Fix data-breakpoint
Chuck Lever <chuck.lever@oracle.com>
xprtrdma: Reduce required number of send SGEs
Chuck Lever <chuck.lever@oracle.com>
xprtrdma: Disable pad optimization by default
Chuck Lever <chuck.lever@oracle.com>
xprtrdma: Per-connection pad optimization
Chuck Lever <chuck.lever@oracle.com>
xprtrdma: Fix Read chunk padding
Magnus Lilja <lilja.magnus@gmail.com>
dmaengine: ipu: Make sure the interrupt routine checks all interrupts.
Mark Marshall <mark.marshall@omicronenergy.com>
mtd: nand: ifc: Fix location of eccstat registers for IFC V1.0
Rafał Miłecki <rafal@milecki.pl>
bcma: use (get|put)_device when probing/removing device driver
colyli@suse.de <colyli@suse.de>
md linear: fix a race between linear_add() and linear_congested()
Maxime Ripard <maxime.ripard@free-electrons.com>
rtc: sun6i: Switch to the external oscillator
Maxime Ripard <maxime.ripard@free-electrons.com>
rtc: sun6i: Add some locking
Maxime Ripard <maxime.ripard@free-electrons.com>
rtc: sun6i: Disable the build as a module
Jaegeuk Kim <jaegeuk@kernel.org>
f2fs: avoid to issue redundant discard commands
Hou Pengyang <houpengyang@huawei.com>
f2fs: add ovp valid_blocks check for bg gc victim to fg_gc
Jaegeuk Kim <jaegeuk@kernel.org>
f2fs: fix multiple f2fs_add_link() calls having same name
Yunlei He <heyunlei@huawei.com>
f2fs: fix a problem of using memory after free
Weston Andros Adamson <dros@primarydata.com>
NFSv4: fix getacl ERANGE for some ACL buffer sizes
J. Bruce Fields <bfields@redhat.com>
NFSv4: fix getacl head length estimation
Trond Myklebust <trond.myklebust@primarydata.com>
pNFS/flexfiles: If the layout is invalid, it must be updated before retrying
Trond Myklebust <trond.myklebust@primarydata.com>
NFSv4: Fix reboot recovery in copy offload
Trond Myklebust <trond.myklebust@primarydata.com>
NFSv4: Fix memory and state leak in _nfs4_open_and_get_state
Christoph Hellwig <hch@lst.de>
nfsd: special case truncates some more
Christoph Hellwig <hch@lst.de>
nfsd: minor nfsd_setattr cleanup
Stefano Babic <sbabic@denx.de>
VME: restore bus_remove function causing incomplete module unload
Larry Finger <Larry.Finger@lwfinger.net>
rtlwifi: rtl8192c-common: Fix "BUG: KASAN:
Ping-Ke Shih <pkshih@realtek.com>
rtlwifi: Fix alignment issues
Bjorn Andersson <bjorn.andersson@linaro.org>
remoteproc: qcom: mdt_loader: Don't overwrite firmware object
Andrew Price <anprice@redhat.com>
gfs2: Add missing rcu locking for glock lookup
Steve Wise <swise@opengridcomputing.com>
rdma_cm: fail iwarp accepts w/o connection params
Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
RDMA/core: Fix incorrect structure packing for booleans
K. Y. Srinivasan <kys@microsoft.com>
Drivers: hv: util: Backup: Fix a rescind processing issue
K. Y. Srinivasan <kys@microsoft.com>
Drivers: hv: util: Fcopy: Fix a rescind processing issue
K. Y. Srinivasan <kys@microsoft.com>
Drivers: hv: util: kvp: Fix a rescind processing issue
K. Y. Srinivasan <kys@microsoft.com>
Drivers: hv: vmbus: Fix a rescind handling bug
K. Y. Srinivasan <kys@microsoft.com>
Drivers: hv: vmbus: Prevent sending data on a rescinded channel
Vitaly Kuznetsov <vkuznets@redhat.com>
hv: don't reset hv_context.tsc_page on crash
Vitaly Kuznetsov <vkuznets@redhat.com>
hv: init percpu_list in hv_synic_alloc()
Vitaly Kuznetsov <vkuznets@redhat.com>
hv: allocate synic pages for all present CPUs
Krzysztof Opasiak <kopasiak90@gmail.com>
usb: gadget: f_hid: Use spinlock instead of mutex
Krzysztof Opasiak <kopasiak90@gmail.com>
usb: gadget: f_hid: fix: Prevent accessing released memory
Krzysztof Opasiak <kopasiak90@gmail.com>
usb: gadget: f_hid: fix: Free out requests
Magnus Lilja <lilja.magnus@gmail.com>
usb: gadget: udc: fsl: Add missing complete function.
Krzysztof Opasiak <k.opasiak@samsung.com>
usb: gadget: udc-core: Rescan pending list on driver unbind
William wu <william.wu@rock-chips.com>
usb: host: xhci: plat: check hcc_params after add hcd
Felipe Balbi <felipe.balbi@linux.intel.com>
usb: dwc3: gadget: skip Set/Clear Halt when invalid
Alexandre Bailon <abailon@baylibre.com>
usb: musb: da8xx: Remove CPPI 3.0 quirk and methods
Maciej S. Szmigiero <mail@maciej.szmigiero.name>
w1: ds2490: USB transfer buffers need to be DMAable
Maciej S. Szmigiero <mail@maciej.szmigiero.name>
w1: don't leak refcount on slave attach failure in w1_attach_slave_device()
Marc Kleine-Budde <mkl@pengutronix.de>
can: usb_8dev: Fix memory leak of priv->cmd_msg_buffer
Ethan Zonca <e@ethanzonca.com>
can: gs_usb: Don't use stack memory for USB transfers
Peter Rosin <peda@axentia.se>
iio: pressure: mpl3115: do not rely on structure field ordering
Peter Rosin <peda@axentia.se>
iio: pressure: mpl115: do not rely on structure field ordering
Shanker Donthineni <shankerd@codeaurora.org>
KVM: arm/arm64: vgic: Stop injecting the MSI occurrence twice
Mark Rutland <mark.rutland@arm.com>
arm64: fix erroneous __raw_read_system_reg() cases
Robin Murphy <robin.murphy@arm.com>
arm64: dma-mapping: Fix dma_mapping_error() when bypassing SWIOTLB
Marc Zyngier <marc.zyngier@arm.com>
arm/arm64: KVM: Enforce unconditional flush to PoC when mapping to stage-2
Dave Hansen <dave.hansen@linux.intel.com>
x86/pkeys: Check against max pkey to avoid overflows
Miklos Szeredi <mszeredi@redhat.com>
fuse: add missing FR_FORCE
Laura Abbott <labbott@redhat.com>
crypto: testmgr - Pad aes_ccm_enc_tv_template vector
Krister Johansen <kjlx@templeofstupid.com>
perf callchain: Reference count maps
Vitaly Kuznetsov <vkuznets@redhat.com>
Drivers: hv: vmbus: Raise retry/wait limits in vmbus_post_msg()
Ley Foon Tan <ley.foon.tan@intel.com>
PCI: altera: Fix TLP_CFG_DW0 for TLP write
Gavin Shan <gwshan@linux.vnet.ibm.com>
pci/hotplug/pnv-php: Disable MSI and PCI device properly
Dexuan Cui <decui@microsoft.com>
PCI: hv: Fix wslot_to_devfn() to fix warnings on device removal
Christian Lamparter <chunkeey@googlemail.com>
ath9k: use correct OTP register offsets for the AR9340 and AR9550
Felix Fietkau <nbd@nbd.name>
ath9k: fix race condition in enabling/disabling IRQs
Felix Fietkau <nbd@nbd.name>
ath5k: drop bogus warning on drv_set_key with unsupported cipher
Tamizh chelvam <c_traja@qti.qualcomm.com>
ath10k: fix boot failure in UTF mode/testmode
Alexander Usyskin <alexander.usyskin@intel.com>
mei: remove support for broken parallel read
Mathias Svensson <idolf@google.com>
samples/seccomp: fix 64-bit comparison macros
Theodore Ts'o <tytso@mit.edu>
ext4: return EROFS if device is r/o and journal replay is needed
Theodore Ts'o <tytso@mit.edu>
ext4: preserve the needs_recovery flag when the journal is aborted
Theodore Ts'o <tytso@mit.edu>
ext4: fix inline data error paths
Eric Biggers <ebiggers@google.com>
ext4: fix use-after-iput when fscrypt contexts are inconsistent
Jan Kara <jack@suse.cz>
ext4: fix data corruption in data=journal mode
Jan Kara <jack@suse.cz>
ext4: trim allocation requests to group size
Roman Pen <roman.penyaev@profitbricks.com>
ext4: do not polute the extents cache while shifting extents
Roman Pen <roman.penyaev@profitbricks.com>
ext4: Include forgotten start block on fallocate insert range
Omar Sandoval <osandov@fb.com>
loop: fix LO_FLAGS_PARTSCAN hang
Ming Lei <tom.leiming@gmail.com>
block/loop: fix race between I/O and set_status
Theodore Ts'o <tytso@mit.edu>
jbd2: don't leak modified metadata buffers on an aborted journal
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fix: Disable sys_membarrier when nohz_full is enabled
Alexandre Belloni <alexandre.belloni@free-electrons.com>
power: reset: at91-poweroff: timely shutdown LPDDR memories
Hannes Reinecke <hare@suse.de>
scsi: use 'scsi_device_from_queue()' for scsi_dh
Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
scsi: aacraid: Reorder Adapter status check
Long Li <longli@microsoft.com>
scsi: storvsc: properly set residual data length on errors
Long Li <longli@microsoft.com>
scsi: storvsc: properly handle SRB_ERROR when sense message is present
Long Li <longli@microsoft.com>
scsi: storvsc: use tagged SRB requests if supported by the device
Heinz Mauelshagen <heinzm@redhat.com>
dm raid: fix data corruption on reshape request
Mike Snitzer <snitzer@redhat.com>
dm round robin: revert "use percpu 'repeat_count' and 'current_path'"
Mikulas Patocka <mpatocka@redhat.com>
dm stats: fix a leaked s->histogram_boundaries array
Joe Thornber <ejt@redhat.com>
dm cache: fix corruption seen when using cache > 2TB
Chanwoo Choi <cw00.choi@samsung.com>
PM / devfreq: Fix wrong trans_stat of passive devfreq device
Chanwoo Choi <cw00.choi@samsung.com>
PM / devfreq: Fix available_governor sysfs
Mimi Zohar <zohar@linux.vnet.ibm.com>
ima: fix ima_d_path() possible race with rename
Davidlohr Bueso <dave@stgolabs.net>
ipc/shm: Fix shmat mmap nil-page protection
Stas Sergeev <stsp@list.ru>
sigaltstack: support SS_AUTODISARM for CONFIG_COMPAT
Michal Hocko <mhocko@suse.com>
mm, vmscan: consider eligible zones in get_scan_count
Michal Hocko <mhocko@suse.com>
mm, vmscan: cleanup lru size claculations
Yisheng Xie <xieyisheng1@huawei.com>
mm balloon: umount balloon_mnt when removing vb device
Minchan Kim <minchan@kernel.org>
mm: do not access page->mapping directly on page_endio
Vinayak Menon <vinmenon@codeaurora.org>
mm: vmpressure: fix sending wrong events on underflow
Gavin Shan <gwshan@linux.vnet.ibm.com>
mm/page_alloc: fix nodes for reclaim in fast path
Dan Williams <dan.j.williams@intel.com>
mm, devm_memremap_pages: hold device_hotplug lock over mem_hotplug_{begin, done}
Pavel Shilovsky <pshilov@microsoft.com>
CIFS: Fix splice read for non-cached files
Ashok Raj <ashok.raj@intel.com>
iommu/vt-d: Tylersburg isoch identity map check is done too late.
CQ Tang <cq.tang@intel.com>
iommu/vt-d: Fix some macros that are incorrectly specified in intel-iommu
Wei Yongjun <weiyongjun1@huawei.com>
tpm_tis: fix the error handling of init_tis()
Leonard Crestez <leonard.crestez@nxp.com>
regulator: Fix regulator_summary for deviceless consumers
Suzuki K Poulose <suzuki.poulose@arm.com>
coresight: STM: Balance enable/disable
Arnd Bergmann <arnd@arndb.de>
staging: rtl: fix possible NULL pointer dereference
Oleg Drokin <green@linuxhacker.ru>
staging/lustre/lnet: Fix allocation size for sv_cpt_data
Johan Hovold <johan@kernel.org>
staging: greybus: loopback: fix broken udelay
Guenter Roeck <linux@roeck-us.net>
hwmon: (it87) Ensure that pwm control cache is current before updating values
Guenter Roeck <linux@roeck-us.net>
hwmon: (it87) Do not overwrite bit 2..6 of pwm control registers
Hui Wang <hui.wang@canonical.com>
ALSA: hda - Fix micmute hotkey problem for a lenovo AIO machine
Takashi Iwai <tiwai@suse.de>
ALSA: hda - Add subwoofer support for Dell Inspiron 17 7000 Gaming
Takashi Iwai <tiwai@suse.de>
ALSA: seq: Fix link corruption by event error handling
Takashi Iwai <tiwai@suse.de>
ALSA: ctxfi: Fallback DMA mask to 32bit
Takashi Iwai <tiwai@suse.de>
ALSA: timer: Reject user params with too small ticks
Jaroslav Kysela <perex@perex.cz>
ALSA: hda - fix Lewisburg audio issue
Kai-Heng Feng <kai.heng.feng@canonical.com>
ALSA: hda/realtek - Cannot adjust speaker's volume on a Dell AIO
Alexandre Belloni <alexandre.belloni@free-electrons.com>
ARM: dts: at91: Enable DMA on sama5d2_xplained console
Alexandre Belloni <alexandre.belloni@free-electrons.com>
ARM: dts: at91: Enable DMA on sama5d4_xplained console
Alexandre Belloni <alexandre.belloni@free-electrons.com>
ARM: at91: define LPDDR types
Andi Shyti <andi.shyti@samsung.com>
spi: s3c64xx: fix inconsistency between binding and driver
Theodore Ts'o <tytso@mit.edu>
ext4: fix deadlock between inline_data and ext4_expand_extra_isize_ea()
Sakari Ailus <sakari.ailus@linux.intel.com>
media: Properly pass through media entity types in entity enumeration
Sean Young <sean@mess.org>
lirc_dev: LIRC_{G,S}ET_REC_MODE do not work
Antti Palosaari <crope@iki.fi>
cxd2820r: fix gpio null pointer dereference
Randy Dunlap <rdunlap@infradead.org>
media: fix dm1105.c build error
Guennadi Liakhovetski <g.liakhovetski@gmx.de>
uvcvideo: Fix a wrong macro
Nicolas Iooss <nicolas.iooss_linux@m4x.org>
am437x-vpfe: always assign bpp variable
Zhang Rui <rui.zhang@intel.com>
mmc: sdhci-acpi: support deferred probe
Paul Burton <paul.burton@imgtec.com>
MIPS: Handle microMIPS jumps in the same way as MIPS32/MIPS64 jumps
Paul Burton <paul.burton@imgtec.com>
MIPS: Calculate microMIPS ra properly when unwinding the stack
Paul Burton <paul.burton@imgtec.com>
MIPS: Fix is_jump_ins() handling of 16b microMIPS instructions
Paul Burton <paul.burton@imgtec.com>
MIPS: Fix get_frame_info() handling of microMIPS function size
Paul Burton <paul.burton@imgtec.com>
MIPS: Prevent unaligned accesses during stack unwinding
Paul Burton <paul.burton@imgtec.com>
MIPS: Clear ISA bit correctly in get_frame_info()
Felix Fietkau <nbd@nbd.name>
MIPS: Lantiq: Keep ethernet enabled during boot
James Cowgill <James.Cowgill@imgtec.com>
MIPS: OCTEON: Fix copy_from_user fault handling for large buffers
Mirko Parthey <mirko.parthey@web.de>
MIPS: BCM47XX: Fix button inversion for Asus WL-500W
Ralf Baechle <ralf@linux-mips.org>
MIPS: Fix special case in 64 bit IP checksumming.
Purna Chandra Mandal <purna.mandal@microchip.com>
MIPS: pic32mzda: Fix linker error for pic32_get_pbclk()
-------------
Diffstat:
Makefile | 4 +-
arch/arm/boot/dts/at91-sama5d2_xplained.dts | 2 +
arch/arm/boot/dts/at91-sama5d4_xplained.dts | 2 +
arch/arm/include/asm/kvm_mmu.h | 9 +-
arch/arm64/include/asm/kvm_mmu.h | 3 +-
arch/arm64/kernel/cpufeature.c | 6 +-
arch/arm64/mm/dma-mapping.c | 9 +-
arch/mips/bcm47xx/buttons.c | 10 +-
arch/mips/cavium-octeon/octeon-memcpy.S | 20 +--
arch/mips/include/asm/checksum.h | 2 +
arch/mips/kernel/process.c | 151 +++++++++++++--------
arch/mips/lantiq/xway/sysctrl.c | 8 +-
arch/mips/mm/sc-ip22.c | 54 +++++---
arch/mips/pic32/pic32mzda/Makefile | 5 +-
arch/powerpc/include/asm/mmu.h | 1 +
arch/powerpc/kernel/cpu_setup_power.S | 4 +
arch/powerpc/kernel/hw_breakpoint.c | 4 +-
arch/x86/include/asm/pkeys.h | 15 +-
crypto/testmgr.h | 2 +-
drivers/bcma/main.c | 4 +
drivers/block/loop.c | 32 +++--
drivers/char/tpm/tpm_tis.c | 2 +-
drivers/devfreq/devfreq.c | 34 ++++-
drivers/devfreq/governor.h | 2 +
drivers/devfreq/governor_passive.c | 6 +
drivers/dma/ipu/ipu_irq.c | 2 +-
drivers/hv/channel.c | 35 +++--
drivers/hv/channel_mgmt.c | 35 ++++-
drivers/hv/connection.c | 17 ++-
drivers/hv/hv.c | 13 +-
drivers/hv/hv_fcopy.c | 4 +
drivers/hv/hv_kvp.c | 4 +
drivers/hv/hv_snapshot.c | 4 +
drivers/hv/hyperv_vmbus.h | 2 +-
drivers/hv/ring_buffer.c | 7 +
drivers/hwmon/it87.c | 39 ++++--
drivers/hwtracing/coresight/coresight-stm.c | 2 +-
drivers/iio/pressure/mpl115.c | 1 +
drivers/iio/pressure/mpl3115.c | 4 +-
drivers/infiniband/core/cma.c | 3 +
drivers/iommu/intel-iommu.c | 3 +-
drivers/md/dm-cache-target.c | 6 +-
drivers/md/dm-raid.c | 12 +-
drivers/md/dm-round-robin.c | 67 ++-------
drivers/md/dm-stats.c | 1 +
drivers/md/linear.c | 39 +++++-
drivers/md/linear.h | 1 +
drivers/media/dvb-frontends/cxd2820r_core.c | 2 +-
drivers/media/media-device.c | 2 +-
drivers/media/pci/dm1105/Kconfig | 2 +-
drivers/media/platform/am437x/am437x-vpfe.c | 2 +-
drivers/media/rc/lirc_dev.c | 4 +-
drivers/media/usb/uvc/uvc_queue.c | 2 +-
drivers/misc/mei/main.c | 48 ++++---
drivers/mmc/host/sdhci-acpi.c | 5 +-
drivers/mtd/nand/fsl_ifc_nand.c | 8 +-
drivers/net/can/usb/gs_usb.c | 40 ++++--
drivers/net/can/usb/usb_8dev.c | 9 +-
drivers/net/wireless/ath/ath10k/core.c | 14 +-
drivers/net/wireless/ath/ath5k/mac80211-ops.c | 3 +-
drivers/net/wireless/ath/ath9k/ar9003_eeprom.h | 4 +-
drivers/net/wireless/ath/ath9k/ath9k.h | 1 +
drivers/net/wireless/ath/ath9k/init.c | 1 +
drivers/net/wireless/ath/ath9k/mac.c | 44 ++++--
drivers/net/wireless/ath/ath9k/mac.h | 1 +
drivers/net/wireless/ath/ath9k/main.c | 27 ++--
drivers/net/wireless/realtek/rtlwifi/pci.h | 4 +-
.../net/wireless/realtek/rtlwifi/rtl8192ee/hw.c | 2 +-
.../net/wireless/realtek/rtlwifi/rtl8821ae/hw.c | 2 +-
drivers/net/wireless/realtek/rtlwifi/usb.h | 3 +-
drivers/pci/host/pci-hyperv.c | 8 +-
drivers/pci/host/pcie-altera.c | 10 +-
drivers/pci/hotplug/pnv_php.c | 22 +--
drivers/power/reset/Kconfig | 2 +-
drivers/power/reset/at91-poweroff.c | 54 +++++++-
drivers/power/reset/at91-sama5d2_shdwc.c | 49 ++++++-
drivers/regulator/core.c | 5 +-
drivers/remoteproc/qcom_mdt_loader.c | 7 +-
drivers/rtc/Kconfig | 2 +-
drivers/rtc/rtc-sun6i.c | 30 ++--
drivers/scsi/aacraid/src.c | 21 ++-
drivers/scsi/lpfc/lpfc_hw4.h | 2 +
drivers/scsi/lpfc/lpfc_sli.c | 9 +-
drivers/scsi/scsi_dh.c | 22 +--
drivers/scsi/scsi_lib.c | 23 ++++
drivers/scsi/storvsc_drv.c | 32 ++++-
drivers/spi/spi-s3c64xx.c | 2 +-
drivers/staging/greybus/loopback.c | 9 +-
drivers/staging/lustre/lnet/selftest/rpc.c | 2 +-
drivers/staging/rtl8188eu/core/rtw_recv.c | 3 +
drivers/staging/rtl8712/rtl871x_recv.c | 7 +-
drivers/usb/dwc3/gadget.c | 5 +
drivers/usb/gadget/function/f_hid.c | 101 ++++++++++----
drivers/usb/gadget/udc/core.c | 45 ++++--
drivers/usb/gadget/udc/fsl_udc_core.c | 10 +-
drivers/usb/host/xhci-plat.c | 6 +-
drivers/usb/musb/da8xx.c | 6 +-
drivers/virtio/virtio_balloon.c | 4 +
drivers/vme/vme.c | 15 ++
drivers/w1/masters/ds2490.c | 142 +++++++++++--------
drivers/w1/w1.c | 1 +
fs/ceph/addr.c | 1 +
fs/cifs/file.c | 10 +-
fs/ext4/extents.c | 27 ++--
fs/ext4/inline.c | 75 +++++-----
fs/ext4/inode.c | 39 ++++--
fs/ext4/mballoc.c | 7 +
fs/ext4/namei.c | 6 +-
fs/ext4/super.c | 9 +-
fs/ext4/xattr.c | 30 ++--
fs/ext4/xattr.h | 32 +++++
fs/f2fs/dir.c | 34 ++++-
fs/f2fs/extent_cache.c | 5 +-
fs/f2fs/f2fs.h | 4 +
fs/f2fs/gc.c | 22 ++-
fs/f2fs/segment.c | 2 +
fs/f2fs/segment.h | 9 ++
fs/fuse/file.c | 1 +
fs/gfs2/glock.c | 5 +
fs/jbd2/transaction.c | 4 +-
fs/nfs/flexfilelayout/flexfilelayout.c | 13 +-
fs/nfs/nfs42proc.c | 63 +++++----
fs/nfs/nfs4proc.c | 10 +-
fs/nfs/nfs4xdr.c | 2 +-
fs/nfsd/vfs.c | 59 +++++---
include/linux/compat.h | 4 +-
include/linux/devfreq.h | 3 +
include/linux/fsl_ifc.h | 8 +-
include/linux/hyperv.h | 1 +
include/linux/intel-iommu.h | 14 +-
include/linux/mmzone.h | 2 +-
include/rdma/ib_sa.h | 6 +-
include/scsi/scsi_device.h | 1 +
include/soc/at91/at91sam9_ddrsdr.h | 3 +
ipc/shm.c | 13 +-
kernel/membarrier.c | 4 +
kernel/memremap.c | 6 +
kernel/signal.c | 11 +-
mm/filemap.c | 7 +-
mm/page_alloc.c | 2 +-
mm/vmpressure.c | 10 +-
mm/vmscan.c | 81 ++++++-----
mm/workingset.c | 2 +-
net/ceph/osd_client.c | 3 +-
net/netfilter/nf_conntrack_core.c | 44 +++---
net/sunrpc/xprtrdma/rpc_rdma.c | 62 ++++++---
net/sunrpc/xprtrdma/transport.c | 2 +-
net/sunrpc/xprtrdma/verbs.c | 15 +-
net/sunrpc/xprtrdma/xprt_rdma.h | 3 +
samples/seccomp/bpf-helper.h | 125 +++++++++--------
security/integrity/ima/ima.h | 2 +-
security/integrity/ima/ima_api.c | 20 ++-
security/integrity/ima/ima_main.c | 8 +-
sound/core/seq/seq_fifo.c | 3 +
sound/core/timer.c | 18 ++-
sound/pci/ctxfi/cthw20k1.c | 19 +--
sound/pci/ctxfi/cthw20k2.c | 19 +--
sound/pci/hda/hda_intel.c | 4 +-
sound/pci/hda/patch_realtek.c | 8 ++
tools/perf/util/callchain.c | 11 +-
tools/perf/util/callchain.h | 6 +
tools/perf/util/hist.c | 7 +
virt/kvm/arm/vgic/vgic-irqfd.c | 3 +
163 files changed, 1740 insertions(+), 867 deletions(-)
[toc] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 12:40 +0100 |
| Subject | [PATCH 4.9 010/153] MIPS: Calculate microMIPS ra properly when unwinding the stack |
| Message-ID | <tjr3P-3kY-13@gated-at.bofh.it> |
| In reply to | #1597151 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Paul Burton <paul.burton@imgtec.com>
commit bb9bc4689b9c635714fbcd5d335bad9934a7ebfc upstream.
get_frame_info() calculates the offset of the return address within a
stack frame simply by dividing a the bottom 16 bits of the instruction,
treated as a signed integer, by the size of a long. Whilst this works
for MIPS32 & MIPS64 ISAs where the sw or sd instructions are used, it's
incorrect for microMIPS where encodings differ. The result is that we
typically completely fail to unwind the stack on microMIPS.
Fix this by adjusting is_ra_save_ins() to calculate the return address
offset, and take into account the various different encodings there in
the same place as we consider whether an instruction is storing the
ra/$31 register.
With this we are now able to unwind the stack for kernels targetting the
microMIPS ISA, for example we can produce:
Call Trace:
[<80109e1f>] show_stack+0x63/0x7c
[<8011ea17>] __warn+0x9b/0xac
[<8011ea45>] warn_slowpath_fmt+0x1d/0x20
[<8013fe53>] register_console+0x43/0x314
[<8067c58d>] of_setup_earlycon+0x1dd/0x1ec
[<8067f63f>] early_init_dt_scan_chosen_stdout+0xe7/0xf8
[<8066c115>] do_early_param+0x75/0xac
[<801302f9>] parse_args+0x1dd/0x308
[<8066c459>] parse_early_options+0x25/0x28
[<8066c48b>] parse_early_param+0x2f/0x38
[<8066e8cf>] setup_arch+0x113/0x488
[<8066c4f3>] start_kernel+0x57/0x328
---[ end trace 0000000000000000 ]---
Whereas previously we only produced:
Call Trace:
[<80109e1f>] show_stack+0x63/0x7c
---[ end trace 0000000000000000 ]---
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Fixes: 34c2f668d0f6 ("MIPS: microMIPS: Add unaligned access support.")
Cc: Leonid Yegoshin <leonid.yegoshin@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14532/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/mips/kernel/process.c | 85 +++++++++++++++++++++++++++++++++------------
1 file changed, 64 insertions(+), 21 deletions(-)
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -195,7 +195,7 @@ struct mips_frame_info {
#define J_TARGET(pc,target) \
(((unsigned long)(pc) & 0xf0000000) | ((target) << 2))
-static inline int is_ra_save_ins(union mips_instruction *ip)
+static inline int is_ra_save_ins(union mips_instruction *ip, int *poff)
{
#ifdef CONFIG_CPU_MICROMIPS
/*
@@ -208,25 +208,70 @@ static inline int is_ra_save_ins(union m
* microMIPS is way more fun...
*/
if (mm_insn_16bit(ip->halfword[1])) {
- return (ip->mm16_r5_format.opcode == mm_swsp16_op &&
- ip->mm16_r5_format.rt == 31) ||
- (ip->mm16_m_format.opcode == mm_pool16c_op &&
- ip->mm16_m_format.func == mm_swm16_op);
- }
- else {
- return (ip->mm_m_format.opcode == mm_pool32b_op &&
- ip->mm_m_format.rd > 9 &&
- ip->mm_m_format.base == 29 &&
- ip->mm_m_format.func == mm_swm32_func) ||
- (ip->i_format.opcode == mm_sw32_op &&
- ip->i_format.rs == 29 &&
- ip->i_format.rt == 31);
+ switch (ip->mm16_r5_format.opcode) {
+ case mm_swsp16_op:
+ if (ip->mm16_r5_format.rt != 31)
+ return 0;
+
+ *poff = ip->mm16_r5_format.simmediate;
+ *poff = (*poff << 2) / sizeof(ulong);
+ return 1;
+
+ case mm_pool16c_op:
+ switch (ip->mm16_m_format.func) {
+ case mm_swm16_op:
+ *poff = ip->mm16_m_format.imm;
+ *poff += 1 + ip->mm16_m_format.rlist;
+ *poff = (*poff << 2) / sizeof(ulong);
+ return 1;
+
+ default:
+ return 0;
+ }
+
+ default:
+ return 0;
+ }
+ }
+
+ switch (ip->i_format.opcode) {
+ case mm_sw32_op:
+ if (ip->i_format.rs != 29)
+ return 0;
+ if (ip->i_format.rt != 31)
+ return 0;
+
+ *poff = ip->i_format.simmediate / sizeof(ulong);
+ return 1;
+
+ case mm_pool32b_op:
+ switch (ip->mm_m_format.func) {
+ case mm_swm32_func:
+ if (ip->mm_m_format.rd < 0x10)
+ return 0;
+ if (ip->mm_m_format.base != 29)
+ return 0;
+
+ *poff = ip->mm_m_format.simmediate;
+ *poff += (ip->mm_m_format.rd & 0xf) * sizeof(u32);
+ *poff /= sizeof(ulong);
+ return 1;
+ default:
+ return 0;
+ }
+
+ default:
+ return 0;
}
#else
/* sw / sd $ra, offset($sp) */
- return (ip->i_format.opcode == sw_op || ip->i_format.opcode == sd_op) &&
- ip->i_format.rs == 29 &&
- ip->i_format.rt == 31;
+ if ((ip->i_format.opcode == sw_op || ip->i_format.opcode == sd_op) &&
+ ip->i_format.rs == 29 && ip->i_format.rt == 31) {
+ *poff = ip->i_format.simmediate / sizeof(ulong);
+ return 1;
+ }
+
+ return 0;
#endif
}
@@ -349,11 +394,9 @@ static int get_frame_info(struct mips_fr
}
continue;
}
- if (info->pc_offset == -1 && is_ra_save_ins(&insn)) {
- info->pc_offset =
- ip->i_format.simmediate / sizeof(long);
+ if (info->pc_offset == -1 &&
+ is_ra_save_ins(&insn, &info->pc_offset))
break;
- }
}
if (info->frame_size && info->pc_offset >= 0) /* nested */
return 0;
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 12:40 +0100 |
| Subject | [PATCH 4.9 005/153] MIPS: Lantiq: Keep ethernet enabled during boot |
| Message-ID | <tjr3P-3kY-11@gated-at.bofh.it> |
| In reply to | #1597151 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Felix Fietkau <nbd@nbd.name>
commit 774f0c6419bb8f9d83901d33582c7fe3ba6a6cb3 upstream.
Disabling ethernet during reboot (only to enable it again when the
ethernet driver attaches) can put the chip into a faulty state where it
corrupts the header of all incoming packets.
This happens if packets arrive during the time window where the core is
disabled, and it can be easily reproduced by rebooting while sending a
flood ping to the broadcast address.
Fixes: 95135bfa7ead ("MIPS: Lantiq: Deactivate most of the devices by default")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Acked-by: John Crispin <john@phrozen.org>
Cc: hauke.mehrtens@lantiq.com
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/15078/
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/mips/lantiq/xway/sysctrl.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
--- a/arch/mips/lantiq/xway/sysctrl.c
+++ b/arch/mips/lantiq/xway/sysctrl.c
@@ -545,7 +545,7 @@ void __init ltq_soc_init(void)
clkdev_add_pmu("1a800000.pcie", "msi", 1, 1, PMU1_PCIE2_MSI);
clkdev_add_pmu("1a800000.pcie", "pdi", 1, 1, PMU1_PCIE2_PDI);
clkdev_add_pmu("1a800000.pcie", "ctl", 1, 1, PMU1_PCIE2_CTL);
- clkdev_add_pmu("1e108000.eth", NULL, 1, 0, PMU_SWITCH | PMU_PPE_DP);
+ clkdev_add_pmu("1e108000.eth", NULL, 0, 0, PMU_SWITCH | PMU_PPE_DP);
clkdev_add_pmu("1da00000.usif", "NULL", 1, 0, PMU_USIF);
clkdev_add_pmu("1e103100.deu", NULL, 1, 0, PMU_DEU);
} else if (of_machine_is_compatible("lantiq,ar10")) {
@@ -553,7 +553,7 @@ void __init ltq_soc_init(void)
ltq_ar10_fpi_hz(), ltq_ar10_pp32_hz());
clkdev_add_pmu("1e101000.usb", "ctl", 1, 0, PMU_USB0);
clkdev_add_pmu("1e106000.usb", "ctl", 1, 0, PMU_USB1);
- clkdev_add_pmu("1e108000.eth", NULL, 1, 0, PMU_SWITCH |
+ clkdev_add_pmu("1e108000.eth", NULL, 0, 0, PMU_SWITCH |
PMU_PPE_DP | PMU_PPE_TC);
clkdev_add_pmu("1da00000.usif", "NULL", 1, 0, PMU_USIF);
clkdev_add_pmu("1f203000.rcu", "gphy", 1, 0, PMU_GPHY);
@@ -575,11 +575,11 @@ void __init ltq_soc_init(void)
clkdev_add_pmu(NULL, "ahb", 1, 0, PMU_AHBM | PMU_AHBS);
clkdev_add_pmu("1da00000.usif", "NULL", 1, 0, PMU_USIF);
- clkdev_add_pmu("1e108000.eth", NULL, 1, 0,
+ clkdev_add_pmu("1e108000.eth", NULL, 0, 0,
PMU_SWITCH | PMU_PPE_DPLUS | PMU_PPE_DPLUM |
PMU_PPE_EMA | PMU_PPE_TC | PMU_PPE_SLL01 |
PMU_PPE_QSB | PMU_PPE_TOP);
- clkdev_add_pmu("1f203000.rcu", "gphy", 1, 0, PMU_GPHY);
+ clkdev_add_pmu("1f203000.rcu", "gphy", 0, 0, PMU_GPHY);
clkdev_add_pmu("1e103000.sdio", NULL, 1, 0, PMU_SDIO);
clkdev_add_pmu("1e103100.deu", NULL, 1, 0, PMU_DEU);
clkdev_add_pmu("1e116000.mei", "dfe", 1, 0, PMU_DFE);
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 12:40 +0100 |
| Subject | [PATCH 4.9 004/153] MIPS: OCTEON: Fix copy_from_user fault handling for large buffers |
| Message-ID | <tjr3Q-3kY-21@gated-at.bofh.it> |
| In reply to | #1597151 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: James Cowgill <James.Cowgill@imgtec.com>
commit 884b426917e4b3c85f33b382c792a94305dfdd62 upstream.
If copy_from_user is called with a large buffer (>= 128 bytes) and the
userspace buffer refers partially to unreadable memory, then it is
possible for Octeon's copy_from_user to report the wrong number of bytes
have been copied. In the case where the buffer size is an exact multiple
of 128 and the fault occurs in the last 64 bytes, copy_from_user will
report that all the bytes were copied successfully but leave some
garbage in the destination buffer.
The bug is in the main __copy_user_common loop in octeon-memcpy.S where
in the middle of the loop, src and dst are incremented by 128 bytes. The
l_exc_copy fault handler is used after this but that assumes that
"src < THREAD_BUADDR($28)". This is not the case if src has already been
incremented.
Fix by adding an extra fault handler which rewinds the src and dst
pointers 128 bytes before falling though to l_exc_copy.
Thanks to the pwritev test from the strace test suite for originally
highlighting this bug!
Fixes: 5b3b16880f40 ("MIPS: Add Cavium OCTEON processor support ...")
Signed-off-by: James Cowgill <James.Cowgill@imgtec.com>
Acked-by: David Daney <david.daney@cavium.com>
Reviewed-by: James Hogan <james.hogan@imgtec.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14978/
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/mips/cavium-octeon/octeon-memcpy.S | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
--- a/arch/mips/cavium-octeon/octeon-memcpy.S
+++ b/arch/mips/cavium-octeon/octeon-memcpy.S
@@ -208,18 +208,18 @@ EXC( STORE t2, UNIT(6)(dst), s_exc_p10u)
ADD src, src, 16*NBYTES
EXC( STORE t3, UNIT(7)(dst), s_exc_p9u)
ADD dst, dst, 16*NBYTES
-EXC( LOAD t0, UNIT(-8)(src), l_exc_copy)
-EXC( LOAD t1, UNIT(-7)(src), l_exc_copy)
-EXC( LOAD t2, UNIT(-6)(src), l_exc_copy)
-EXC( LOAD t3, UNIT(-5)(src), l_exc_copy)
+EXC( LOAD t0, UNIT(-8)(src), l_exc_copy_rewind16)
+EXC( LOAD t1, UNIT(-7)(src), l_exc_copy_rewind16)
+EXC( LOAD t2, UNIT(-6)(src), l_exc_copy_rewind16)
+EXC( LOAD t3, UNIT(-5)(src), l_exc_copy_rewind16)
EXC( STORE t0, UNIT(-8)(dst), s_exc_p8u)
EXC( STORE t1, UNIT(-7)(dst), s_exc_p7u)
EXC( STORE t2, UNIT(-6)(dst), s_exc_p6u)
EXC( STORE t3, UNIT(-5)(dst), s_exc_p5u)
-EXC( LOAD t0, UNIT(-4)(src), l_exc_copy)
-EXC( LOAD t1, UNIT(-3)(src), l_exc_copy)
-EXC( LOAD t2, UNIT(-2)(src), l_exc_copy)
-EXC( LOAD t3, UNIT(-1)(src), l_exc_copy)
+EXC( LOAD t0, UNIT(-4)(src), l_exc_copy_rewind16)
+EXC( LOAD t1, UNIT(-3)(src), l_exc_copy_rewind16)
+EXC( LOAD t2, UNIT(-2)(src), l_exc_copy_rewind16)
+EXC( LOAD t3, UNIT(-1)(src), l_exc_copy_rewind16)
EXC( STORE t0, UNIT(-4)(dst), s_exc_p4u)
EXC( STORE t1, UNIT(-3)(dst), s_exc_p3u)
EXC( STORE t2, UNIT(-2)(dst), s_exc_p2u)
@@ -383,6 +383,10 @@ done:
nop
END(memcpy)
+l_exc_copy_rewind16:
+ /* Rewind src and dst by 16*NBYTES for l_exc_copy */
+ SUB src, src, 16*NBYTES
+ SUB dst, dst, 16*NBYTES
l_exc_copy:
/*
* Copy bytes from src until faulting load address (or until a
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 12:40 +0100 |
| Subject | [PATCH 4.9 012/153] mmc: sdhci-acpi: support deferred probe |
| Message-ID | <tjr3Q-3kY-27@gated-at.bofh.it> |
| In reply to | #1597151 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zhang Rui <rui.zhang@intel.com>
commit e28d6f048799acb0014491e6b74e580d84bd7916 upstream.
With commit 67bf5156edc4 ("gpio / ACPI: fix returned error from
acpi_dev_gpio_irq_get()"), mmc_gpiod_request_cd() returns -EPROBE_DEFER if
GPIO is not ready when sdhci-acpi driver is probed, and sdhci-acpi driver
should be probed again later in this case.
This fixes an order issue when both GPIO and sdhci-acpi drivers are built
as modules.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=177101
Tested-by: Jonas Aaberg <cja@gmx.net>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/mmc/host/sdhci-acpi.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
--- a/drivers/mmc/host/sdhci-acpi.c
+++ b/drivers/mmc/host/sdhci-acpi.c
@@ -466,7 +466,10 @@ static int sdhci_acpi_probe(struct platf
if (sdhci_acpi_flag(c, SDHCI_ACPI_SD_CD)) {
bool v = sdhci_acpi_flag(c, SDHCI_ACPI_SD_CD_OVERRIDE_LEVEL);
- if (mmc_gpiod_request_cd(host->mmc, NULL, 0, v, 0, NULL)) {
+ err = mmc_gpiod_request_cd(host->mmc, NULL, 0, v, 0, NULL);
+ if (err) {
+ if (err == -EPROBE_DEFER)
+ goto err_free;
dev_warn(dev, "failed to setup card detect gpio\n");
c->use_runtime_pm = false;
}
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 12:40 +0100 |
| Subject | [PATCH 4.9 031/153] hwmon: (it87) Do not overwrite bit 2..6 of pwm control registers |
| Message-ID | <tjr3Q-3kY-31@gated-at.bofh.it> |
| In reply to | #1597151 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Guenter Roeck <linux@roeck-us.net>
commit 4c7b8ca1ae5ed9e27014732c8a918ba11a86cf09 upstream.
In IT8620E, after setting pwm control to manual, it was observed that
pwm values for fan 4..6 have reversed results (writing 0 results in fans
running at full speed, writing 255 results in fans turned off).
With the new PWM control, pwm polarity for pwm control 4..6 is specified
in its pwm control registers. Those registers are overwritten when setting
the pwm mode or the temperature mapping. Do not touch bit 2..6 of pwm
control registers on register writes to fix the problem.
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/hwmon/it87.c | 37 ++++++++++++++++++++++++-------------
1 file changed, 24 insertions(+), 13 deletions(-)
--- a/drivers/hwmon/it87.c
+++ b/drivers/hwmon/it87.c
@@ -1300,25 +1300,35 @@ static ssize_t set_pwm_enable(struct dev
it87_write_value(data, IT87_REG_FAN_MAIN_CTRL,
data->fan_main_ctrl);
} else {
+ u8 ctrl;
+
/* No on/off mode, set maximum pwm value */
data->pwm_duty[nr] = pwm_to_reg(data, 0xff);
it87_write_value(data, IT87_REG_PWM_DUTY[nr],
data->pwm_duty[nr]);
/* and set manual mode */
- data->pwm_ctrl[nr] = has_newer_autopwm(data) ?
- data->pwm_temp_map[nr] :
- data->pwm_duty[nr];
- it87_write_value(data, IT87_REG_PWM[nr],
- data->pwm_ctrl[nr]);
+ if (has_newer_autopwm(data)) {
+ ctrl = (data->pwm_ctrl[nr] & 0x7c) |
+ data->pwm_temp_map[nr];
+ } else {
+ ctrl = data->pwm_duty[nr];
+ }
+ data->pwm_ctrl[nr] = ctrl;
+ it87_write_value(data, IT87_REG_PWM[nr], ctrl);
}
} else {
- if (val == 1) /* Manual mode */
- data->pwm_ctrl[nr] = has_newer_autopwm(data) ?
- data->pwm_temp_map[nr] :
- data->pwm_duty[nr];
- else /* Automatic mode */
- data->pwm_ctrl[nr] = 0x80 | data->pwm_temp_map[nr];
- it87_write_value(data, IT87_REG_PWM[nr], data->pwm_ctrl[nr]);
+ u8 ctrl;
+
+ if (has_newer_autopwm(data)) {
+ ctrl = (data->pwm_ctrl[nr] & 0x7c) |
+ data->pwm_temp_map[nr];
+ if (val != 1)
+ ctrl |= 0x80;
+ } else {
+ ctrl = (val == 1 ? data->pwm_duty[nr] : 0x80);
+ }
+ data->pwm_ctrl[nr] = ctrl;
+ it87_write_value(data, IT87_REG_PWM[nr], ctrl);
if (data->type != it8603 && nr < 3) {
/* set SmartGuardian mode */
@@ -1462,7 +1472,8 @@ static ssize_t set_pwm_temp_map(struct d
* otherwise, just store it for later use.
*/
if (data->pwm_ctrl[nr] & 0x80) {
- data->pwm_ctrl[nr] = 0x80 | data->pwm_temp_map[nr];
+ data->pwm_ctrl[nr] = (data->pwm_ctrl[nr] & 0xfc) |
+ data->pwm_temp_map[nr];
it87_write_value(data, IT87_REG_PWM[nr], data->pwm_ctrl[nr]);
}
mutex_unlock(&data->update_lock);
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 12:40 +0100 |
| Subject | [PATCH 4.9 020/153] spi: s3c64xx: fix inconsistency between binding and driver |
| Message-ID | <tjr3Q-3kY-33@gated-at.bofh.it> |
| In reply to | #1597151 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andi Shyti <andi.shyti@samsung.com>
commit 379f831a927817c130a62e3ca0082ae685557324 upstream.
Commit a92e7c3d82a1 ("spi: s3c64xx: consider the case when the CS
line is not connected") introduced an inconsistency between the
binding, where the disconnected CS line was marked as
'no-cs-readback', and the driver.
The driver is erroneously checking for that attribute with
property name of 'broken-cs'.
Check for 'no-cs-readback' in the driver as well.
Fixes: a92e7c3d82a1 ("spi: s3c64xx: consider the case when the CS line is not connected")
Signed-off-by: Andi Shyti <andi.shyti@samsung.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/spi/spi-s3c64xx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/spi/spi-s3c64xx.c
+++ b/drivers/spi/spi-s3c64xx.c
@@ -1003,7 +1003,7 @@ static struct s3c64xx_spi_info *s3c64xx_
sci->num_cs = temp;
}
- sci->no_cs = of_property_read_bool(dev->of_node, "broken-cs");
+ sci->no_cs = of_property_read_bool(dev->of_node, "no-cs-readback");
return sci;
}
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 12:40 +0100 |
| Subject | [PATCH 4.9 011/153] MIPS: Handle microMIPS jumps in the same way as MIPS32/MIPS64 jumps |
| Message-ID | <tjr3Q-3kY-35@gated-at.bofh.it> |
| In reply to | #1597151 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Paul Burton <paul.burton@imgtec.com>
commit 096a0de427ea333f56f0ee00328cff2a2731bcf1 upstream.
is_jump_ins() checks for plain jump ("j") instructions since commit
e7438c4b893e ("MIPS: Fix sibling call handling in get_frame_info") but
that commit didn't make the same change to the microMIPS code, leaving
it inconsistent with the MIPS32/MIPS64 code. Handle the microMIPS
encoding of the jump instruction too such that it behaves consistently.
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Fixes: e7438c4b893e ("MIPS: Fix sibling call handling in get_frame_info")
Cc: Tony Wu <tung7970@gmail.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14533/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/mips/kernel/process.c | 2 ++
1 file changed, 2 insertions(+)
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -293,6 +293,8 @@ static inline int is_jump_ins(union mips
return 0;
}
+ if (ip->j_format.opcode == mm_j32_op)
+ return 1;
if (ip->j_format.opcode == mm_jal32_op)
return 1;
if (ip->r_format.opcode != mm_pool32a_op ||
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 12:40 +0100 |
| Subject | [PATCH 4.9 036/153] coresight: STM: Balance enable/disable |
| Message-ID | <tjr3Q-3kY-43@gated-at.bofh.it> |
| In reply to | #1597151 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Suzuki K Poulose <suzuki.poulose@arm.com>
commit 4474f4c40a9c607c7317e686b23619b7b768004f upstream.
The stm is automatically enabled when an application sets the policy
via ->link() call back by using coresight_enable(), which keeps the
refcount of the current users of the STM. However, the unlink() callback
issues stm_disable() directly, which leaves the STM turned off, without
the coresight layer knowing about it. This prevents any further uses
of the STM hardware as the coresight layer still thinks the STM is
turned on and doesn't enable the hardware when required. Even manually
enabling the STM via sysfs can't really enable the hw.
e.g,
$ echo 1 > $CS_DEVS/$ETR/enable_sink
$ mkdir -p $CONFIG_FS/stp-policy/$source.0/stm_test/
$ echo 32768 65535 > $CONFIG_FS/stp-policy/$source.0/stm_test/channels
$ echo 64 > $CS_DEVS/$source/traceid
$ ./stm_app
Sending 64000 byte blocks of pattern 0 at 0us intervals
Success to map channel(32768~32783) to 0xffffa95fa000
Sending on channel 32768
$ dd if=/dev/$ETR of=~/trace.bin.1
597+1 records in
597+1 records out
305920 bytes (306 kB) copied, 0.399952 s, 765 kB/s
$ ./stm_app
Sending 64000 byte blocks of pattern 0 at 0us intervals
Success to map channel(32768~32783) to 0xffff7e9e2000
Sending on channel 32768
$ dd if=/dev/$ETR of=~/trace.bin.2
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.0232083 s, 0.0 kB/s
Note that we don't get any data from the ETR for the second session.
Also dmesg shows :
[ 77.520458] coresight-tmc 20800000.etr: TMC-ETR enabled
[ 77.537097] coresight-replicator etr_replicator@20890000: REPLICATOR enabled
[ 77.558828] coresight-replicator main_replicator@208a0000: REPLICATOR enabled
[ 77.581068] coresight-funnel 208c0000.main_funnel: FUNNEL inport 0 enabled
[ 77.602217] coresight-tmc 20840000.etf: TMC-ETF enabled
[ 77.618422] coresight-stm 20860000.stm: STM tracing enabled
[ 139.554252] coresight-stm 20860000.stm: STM tracing disabled
# End of first tracing session
[ 146.351135] coresight-tmc 20800000.etr: TMC read start
[ 146.514486] coresight-tmc 20800000.etr: TMC read end
# Note that the STM is not turned on via stm_generic_link()->coresight_enable()
# and hence none of the components are turned on.
[ 152.479080] coresight-tmc 20800000.etr: TMC read start
[ 152.542632] coresight-tmc 20800000.etr: TMC read end
This patch fixes the problem by balancing the unlink operation by using
the coresight_disable(), keeping the coresight layer in sync with the
hardware state and thus allowing normal usage of the STM component.
Fixes: commit 237483aa5cf43 ("coresight: stm: adding driver for CoreSight STM component")
Cc: Pratik Patel <pratikp@codeaurora.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Reviewed-by: Chunyan Zhang <zhang.chunyan@linaro.org>
Reported-by: Robert Walker <robert.walker@arm.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/hwtracing/coresight/coresight-stm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/hwtracing/coresight/coresight-stm.c
+++ b/drivers/hwtracing/coresight/coresight-stm.c
@@ -356,7 +356,7 @@ static void stm_generic_unlink(struct st
if (!drvdata || !drvdata->csdev)
return;
- stm_disable(drvdata->csdev, NULL);
+ coresight_disable(drvdata->csdev);
}
static phys_addr_t
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 12:40 +0100 |
| Subject | [PATCH 4.9 009/153] MIPS: Fix is_jump_ins() handling of 16b microMIPS instructions |
| Message-ID | <tjr3R-3kY-45@gated-at.bofh.it> |
| In reply to | #1597151 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Paul Burton <paul.burton@imgtec.com>
commit 67c75057709a6d85c681c78b9b2f9b71191f01a2 upstream.
is_jump_ins() checks 16b instruction fields without verifying that the
instruction is indeed 16b, as is done by is_ra_save_ins() &
is_sp_move_ins(). Add the appropriate check.
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Fixes: 34c2f668d0f6 ("MIPS: microMIPS: Add unaligned access support.")
Cc: Leonid Yegoshin <leonid.yegoshin@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14531/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/mips/kernel/process.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -241,9 +241,14 @@ static inline int is_jump_ins(union mips
*
* microMIPS is kind of more fun...
*/
- if ((ip->mm16_r5_format.opcode == mm_pool16c_op &&
- (ip->mm16_r5_format.rt & mm_jr16_op) == mm_jr16_op) ||
- ip->j_format.opcode == mm_jal32_op)
+ if (mm_insn_16bit(ip->halfword[1])) {
+ if ((ip->mm16_r5_format.opcode == mm_pool16c_op &&
+ (ip->mm16_r5_format.rt & mm_jr16_op) == mm_jr16_op))
+ return 1;
+ return 0;
+ }
+
+ if (ip->j_format.opcode == mm_jal32_op)
return 1;
if (ip->r_format.opcode != mm_pool32a_op ||
ip->r_format.func != mm_pool32axf_op)
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 12:40 +0100 |
| Subject | [PATCH 4.9 008/153] MIPS: Fix get_frame_info() handling of microMIPS function size |
| Message-ID | <tjr3Q-3kY-39@gated-at.bofh.it> |
| In reply to | #1597151 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Paul Burton <paul.burton@imgtec.com>
commit b6c7a324df37bf05ef7a2c1580683cf10d082d97 upstream.
get_frame_info() is meant to iterate over up to the first 128
instructions within a function, but for microMIPS kernels it will not
reach that many instructions unless the function is 512 bytes long since
we calculate the maximum number of instructions to check by dividing the
function length by the 4 byte size of a union mips_instruction. In
microMIPS kernels this won't do since instructions are variable length.
Fix this by instead checking whether the pointer to the current
instruction has reached the end of the function, and use max_insns as a
simple constant to check the number of iterations against.
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Fixes: 34c2f668d0f6 ("MIPS: microMIPS: Add unaligned access support.")
Cc: Leonid Yegoshin <leonid.yegoshin@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14530/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/mips/kernel/process.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -293,9 +293,9 @@ static inline int is_sp_move_ins(union m
static int get_frame_info(struct mips_frame_info *info)
{
bool is_mmips = IS_ENABLED(CONFIG_CPU_MICROMIPS);
- union mips_instruction insn, *ip;
- unsigned max_insns = info->func_size / sizeof(union mips_instruction);
- unsigned i;
+ union mips_instruction insn, *ip, *ip_end;
+ const unsigned int max_insns = 128;
+ unsigned int i;
info->pc_offset = -1;
info->frame_size = 0;
@@ -304,11 +304,9 @@ static int get_frame_info(struct mips_fr
if (!ip)
goto err;
- if (max_insns == 0)
- max_insns = 128U; /* unknown function size */
- max_insns = min(128U, max_insns);
+ ip_end = (void *)ip + info->func_size;
- for (i = 0; i < max_insns; i++, ip++) {
+ for (i = 0; i < max_insns && ip < ip_end; i++, ip++) {
if (is_mmips && mm_insn_16bit(ip->halfword[0])) {
insn.halfword[0] = 0;
insn.halfword[1] = ip->halfword[0];
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 12:40 +0100 |
| Subject | [PATCH 4.9 002/153] MIPS: Fix special case in 64 bit IP checksumming. |
| Message-ID | <tjr3R-3kY-47@gated-at.bofh.it> |
| In reply to | #1597151 |
4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Ralf Baechle <ralf@linux-mips.org> commit 66fd848cadaa6be974a8c780fbeb328f0af4d3bd upstream. For certain arguments such as saddr = 0xc0a8fd60, daddr = 0xc0a8fda1, len = 80, proto = 17, sum = 0x7eae049d there will be a carry when folding the intermediate 64 bit checksum to 32 bit but the code doesn't add the carry back to the one's complement sum, thus an incorrect result will be generated. Reported-by: Mark Zhang <bomb.zhang@gmail.com> Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Reviewed-by: James Hogan <james.hogan@imgtec.com> Signed-off-by: James Hogan <james.hogan@imgtec.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- arch/mips/include/asm/checksum.h | 2 ++ 1 file changed, 2 insertions(+) --- a/arch/mips/include/asm/checksum.h +++ b/arch/mips/include/asm/checksum.h @@ -186,7 +186,9 @@ static inline __wsum csum_tcpudp_nofold( " daddu %0, %4 \n" " dsll32 $1, %0, 0 \n" " daddu %0, $1 \n" + " sltu $1, %0, $1 \n" " dsra32 %0, %0, 0 \n" + " addu %0, $1 \n" #endif " .set pop" : "=r" (sum)
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 12:40 +0100 |
| Subject | [PATCH 4.9 019/153] ext4: fix deadlock between inline_data and ext4_expand_extra_isize_ea() |
| Message-ID | <tjr3R-3kY-49@gated-at.bofh.it> |
| In reply to | #1597151 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Theodore Ts'o <tytso@mit.edu>
commit c755e251357a0cee0679081f08c3f4ba797a8009 upstream.
The xattr_sem deadlock problems fixed in commit 2e81a4eeedca: "ext4:
avoid deadlock when expanding inode size" didn't include the use of
xattr_sem in fs/ext4/inline.c. With the addition of project quota
which added a new extra inode field, this exposed deadlocks in the
inline_data code similar to the ones fixed by 2e81a4eeedca.
The deadlock can be reproduced via:
dmesg -n 7
mke2fs -t ext4 -O inline_data -Fq -I 256 /dev/vdc 32768
mount -t ext4 -o debug_want_extra_isize=24 /dev/vdc /vdc
mkdir /vdc/a
umount /vdc
mount -t ext4 /dev/vdc /vdc
echo foo > /vdc/a/foo
and looks like this:
[ 11.158815]
[ 11.160276] =============================================
[ 11.161960] [ INFO: possible recursive locking detected ]
[ 11.161960] 4.10.0-rc3-00015-g011b30a8a3cf #160 Tainted: G W
[ 11.161960] ---------------------------------------------
[ 11.161960] bash/2519 is trying to acquire lock:
[ 11.161960] (&ei->xattr_sem){++++..}, at: [<c1225a4b>] ext4_expand_extra_isize_ea+0x3d/0x4cd
[ 11.161960]
[ 11.161960] but task is already holding lock:
[ 11.161960] (&ei->xattr_sem){++++..}, at: [<c1227941>] ext4_try_add_inline_entry+0x3a/0x152
[ 11.161960]
[ 11.161960] other info that might help us debug this:
[ 11.161960] Possible unsafe locking scenario:
[ 11.161960]
[ 11.161960] CPU0
[ 11.161960] ----
[ 11.161960] lock(&ei->xattr_sem);
[ 11.161960] lock(&ei->xattr_sem);
[ 11.161960]
[ 11.161960] *** DEADLOCK ***
[ 11.161960]
[ 11.161960] May be due to missing lock nesting notation
[ 11.161960]
[ 11.161960] 4 locks held by bash/2519:
[ 11.161960] #0: (sb_writers#3){.+.+.+}, at: [<c11a2414>] mnt_want_write+0x1e/0x3e
[ 11.161960] #1: (&type->i_mutex_dir_key){++++++}, at: [<c119508b>] path_openat+0x338/0x67a
[ 11.161960] #2: (jbd2_handle){++++..}, at: [<c123314a>] start_this_handle+0x582/0x622
[ 11.161960] #3: (&ei->xattr_sem){++++..}, at: [<c1227941>] ext4_try_add_inline_entry+0x3a/0x152
[ 11.161960]
[ 11.161960] stack backtrace:
[ 11.161960] CPU: 0 PID: 2519 Comm: bash Tainted: G W 4.10.0-rc3-00015-g011b30a8a3cf #160
[ 11.161960] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.1-1 04/01/2014
[ 11.161960] Call Trace:
[ 11.161960] dump_stack+0x72/0xa3
[ 11.161960] __lock_acquire+0xb7c/0xcb9
[ 11.161960] ? kvm_clock_read+0x1f/0x29
[ 11.161960] ? __lock_is_held+0x36/0x66
[ 11.161960] ? __lock_is_held+0x36/0x66
[ 11.161960] lock_acquire+0x106/0x18a
[ 11.161960] ? ext4_expand_extra_isize_ea+0x3d/0x4cd
[ 11.161960] down_write+0x39/0x72
[ 11.161960] ? ext4_expand_extra_isize_ea+0x3d/0x4cd
[ 11.161960] ext4_expand_extra_isize_ea+0x3d/0x4cd
[ 11.161960] ? _raw_read_unlock+0x22/0x2c
[ 11.161960] ? jbd2_journal_extend+0x1e2/0x262
[ 11.161960] ? __ext4_journal_get_write_access+0x3d/0x60
[ 11.161960] ext4_mark_inode_dirty+0x17d/0x26d
[ 11.161960] ? ext4_add_dirent_to_inline.isra.12+0xa5/0xb2
[ 11.161960] ext4_add_dirent_to_inline.isra.12+0xa5/0xb2
[ 11.161960] ext4_try_add_inline_entry+0x69/0x152
[ 11.161960] ext4_add_entry+0xa3/0x848
[ 11.161960] ? __brelse+0x14/0x2f
[ 11.161960] ? _raw_spin_unlock_irqrestore+0x44/0x4f
[ 11.161960] ext4_add_nondir+0x17/0x5b
[ 11.161960] ext4_create+0xcf/0x133
[ 11.161960] ? ext4_mknod+0x12f/0x12f
[ 11.161960] lookup_open+0x39e/0x3fb
[ 11.161960] ? __wake_up+0x1a/0x40
[ 11.161960] ? lock_acquire+0x11e/0x18a
[ 11.161960] path_openat+0x35c/0x67a
[ 11.161960] ? sched_clock_cpu+0xd7/0xf2
[ 11.161960] do_filp_open+0x36/0x7c
[ 11.161960] ? _raw_spin_unlock+0x22/0x2c
[ 11.161960] ? __alloc_fd+0x169/0x173
[ 11.161960] do_sys_open+0x59/0xcc
[ 11.161960] SyS_open+0x1d/0x1f
[ 11.161960] do_int80_syscall_32+0x4f/0x61
[ 11.161960] entry_INT80_32+0x2f/0x2f
[ 11.161960] EIP: 0xb76ad469
[ 11.161960] EFLAGS: 00000286 CPU: 0
[ 11.161960] EAX: ffffffda EBX: 08168ac8 ECX: 00008241 EDX: 000001b6
[ 11.161960] ESI: b75e46bc EDI: b7755000 EBP: bfbdb108 ESP: bfbdafc0
[ 11.161960] DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b
Reported-by: George Spelvin <linux@sciencehorizons.net>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/ext4/inline.c | 66 +++++++++++++++++++++++++------------------------------
fs/ext4/xattr.c | 30 ++++++++++---------------
fs/ext4/xattr.h | 32 ++++++++++++++++++++++++++
3 files changed, 74 insertions(+), 54 deletions(-)
--- a/fs/ext4/inline.c
+++ b/fs/ext4/inline.c
@@ -376,7 +376,7 @@ out:
static int ext4_prepare_inline_data(handle_t *handle, struct inode *inode,
unsigned int len)
{
- int ret, size;
+ int ret, size, no_expand;
struct ext4_inode_info *ei = EXT4_I(inode);
if (!ext4_test_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA))
@@ -386,15 +386,14 @@ static int ext4_prepare_inline_data(hand
if (size < len)
return -ENOSPC;
- down_write(&EXT4_I(inode)->xattr_sem);
+ ext4_write_lock_xattr(inode, &no_expand);
if (ei->i_inline_off)
ret = ext4_update_inline_data(handle, inode, len);
else
ret = ext4_create_inline_data(handle, inode, len);
- up_write(&EXT4_I(inode)->xattr_sem);
-
+ ext4_write_unlock_xattr(inode, &no_expand);
return ret;
}
@@ -523,7 +522,7 @@ static int ext4_convert_inline_data_to_e
struct inode *inode,
unsigned flags)
{
- int ret, needed_blocks;
+ int ret, needed_blocks, no_expand;
handle_t *handle = NULL;
int retries = 0, sem_held = 0;
struct page *page = NULL;
@@ -563,7 +562,7 @@ retry:
goto out;
}
- down_write(&EXT4_I(inode)->xattr_sem);
+ ext4_write_lock_xattr(inode, &no_expand);
sem_held = 1;
/* If some one has already done this for us, just exit. */
if (!ext4_has_inline_data(inode)) {
@@ -600,7 +599,7 @@ retry:
put_page(page);
page = NULL;
ext4_orphan_add(handle, inode);
- up_write(&EXT4_I(inode)->xattr_sem);
+ ext4_write_unlock_xattr(inode, &no_expand);
sem_held = 0;
ext4_journal_stop(handle);
handle = NULL;
@@ -626,7 +625,7 @@ out:
put_page(page);
}
if (sem_held)
- up_write(&EXT4_I(inode)->xattr_sem);
+ ext4_write_unlock_xattr(inode, &no_expand);
if (handle)
ext4_journal_stop(handle);
brelse(iloc.bh);
@@ -719,7 +718,7 @@ convert:
int ext4_write_inline_data_end(struct inode *inode, loff_t pos, unsigned len,
unsigned copied, struct page *page)
{
- int ret;
+ int ret, no_expand;
void *kaddr;
struct ext4_iloc iloc;
@@ -737,7 +736,7 @@ int ext4_write_inline_data_end(struct in
goto out;
}
- down_write(&EXT4_I(inode)->xattr_sem);
+ ext4_write_lock_xattr(inode, &no_expand);
BUG_ON(!ext4_has_inline_data(inode));
kaddr = kmap_atomic(page);
@@ -747,7 +746,7 @@ int ext4_write_inline_data_end(struct in
/* clear page dirty so that writepages wouldn't work for us. */
ClearPageDirty(page);
- up_write(&EXT4_I(inode)->xattr_sem);
+ ext4_write_unlock_xattr(inode, &no_expand);
brelse(iloc.bh);
out:
return copied;
@@ -758,7 +757,7 @@ ext4_journalled_write_inline_data(struct
unsigned len,
struct page *page)
{
- int ret;
+ int ret, no_expand;
void *kaddr;
struct ext4_iloc iloc;
@@ -768,11 +767,11 @@ ext4_journalled_write_inline_data(struct
return NULL;
}
- down_write(&EXT4_I(inode)->xattr_sem);
+ ext4_write_lock_xattr(inode, &no_expand);
kaddr = kmap_atomic(page);
ext4_write_inline_data(inode, &iloc, kaddr, 0, len);
kunmap_atomic(kaddr);
- up_write(&EXT4_I(inode)->xattr_sem);
+ ext4_write_unlock_xattr(inode, &no_expand);
return iloc.bh;
}
@@ -1249,7 +1248,7 @@ out:
int ext4_try_add_inline_entry(handle_t *handle, struct ext4_filename *fname,
struct inode *dir, struct inode *inode)
{
- int ret, inline_size;
+ int ret, inline_size, no_expand;
void *inline_start;
struct ext4_iloc iloc;
@@ -1257,7 +1256,7 @@ int ext4_try_add_inline_entry(handle_t *
if (ret)
return ret;
- down_write(&EXT4_I(dir)->xattr_sem);
+ ext4_write_lock_xattr(dir, &no_expand);
if (!ext4_has_inline_data(dir))
goto out;
@@ -1303,7 +1302,7 @@ int ext4_try_add_inline_entry(handle_t *
out:
ext4_mark_inode_dirty(handle, dir);
- up_write(&EXT4_I(dir)->xattr_sem);
+ ext4_write_unlock_xattr(dir, &no_expand);
brelse(iloc.bh);
return ret;
}
@@ -1663,7 +1662,7 @@ int ext4_delete_inline_entry(handle_t *h
struct buffer_head *bh,
int *has_inline_data)
{
- int err, inline_size;
+ int err, inline_size, no_expand;
struct ext4_iloc iloc;
void *inline_start;
@@ -1671,7 +1670,7 @@ int ext4_delete_inline_entry(handle_t *h
if (err)
return err;
- down_write(&EXT4_I(dir)->xattr_sem);
+ ext4_write_lock_xattr(dir, &no_expand);
if (!ext4_has_inline_data(dir)) {
*has_inline_data = 0;
goto out;
@@ -1705,7 +1704,7 @@ int ext4_delete_inline_entry(handle_t *h
ext4_show_inline_dir(dir, iloc.bh, inline_start, inline_size);
out:
- up_write(&EXT4_I(dir)->xattr_sem);
+ ext4_write_unlock_xattr(dir, &no_expand);
brelse(iloc.bh);
if (err != -ENOENT)
ext4_std_error(dir->i_sb, err);
@@ -1804,11 +1803,11 @@ out:
int ext4_destroy_inline_data(handle_t *handle, struct inode *inode)
{
- int ret;
+ int ret, no_expand;
- down_write(&EXT4_I(inode)->xattr_sem);
+ ext4_write_lock_xattr(inode, &no_expand);
ret = ext4_destroy_inline_data_nolock(handle, inode);
- up_write(&EXT4_I(inode)->xattr_sem);
+ ext4_write_unlock_xattr(inode, &no_expand);
return ret;
}
@@ -1893,7 +1892,7 @@ out:
void ext4_inline_data_truncate(struct inode *inode, int *has_inline)
{
handle_t *handle;
- int inline_size, value_len, needed_blocks;
+ int inline_size, value_len, needed_blocks, no_expand;
size_t i_size;
void *value = NULL;
struct ext4_xattr_ibody_find is = {
@@ -1910,7 +1909,7 @@ void ext4_inline_data_truncate(struct in
if (IS_ERR(handle))
return;
- down_write(&EXT4_I(inode)->xattr_sem);
+ ext4_write_lock_xattr(inode, &no_expand);
if (!ext4_has_inline_data(inode)) {
*has_inline = 0;
ext4_journal_stop(handle);
@@ -1968,7 +1967,7 @@ out_error:
up_write(&EXT4_I(inode)->i_data_sem);
out:
brelse(is.iloc.bh);
- up_write(&EXT4_I(inode)->xattr_sem);
+ ext4_write_unlock_xattr(inode, &no_expand);
kfree(value);
if (inode->i_nlink)
ext4_orphan_del(handle, inode);
@@ -1984,7 +1983,7 @@ out:
int ext4_convert_inline_data(struct inode *inode)
{
- int error, needed_blocks;
+ int error, needed_blocks, no_expand;
handle_t *handle;
struct ext4_iloc iloc;
@@ -2006,15 +2005,10 @@ int ext4_convert_inline_data(struct inod
goto out_free;
}
- down_write(&EXT4_I(inode)->xattr_sem);
- if (!ext4_has_inline_data(inode)) {
- up_write(&EXT4_I(inode)->xattr_sem);
- goto out;
- }
-
- error = ext4_convert_inline_data_nolock(handle, inode, &iloc);
- up_write(&EXT4_I(inode)->xattr_sem);
-out:
+ ext4_write_lock_xattr(inode, &no_expand);
+ if (ext4_has_inline_data(inode))
+ error = ext4_convert_inline_data_nolock(handle, inode, &iloc);
+ ext4_write_unlock_xattr(inode, &no_expand);
ext4_journal_stop(handle);
out_free:
brelse(iloc.bh);
--- a/fs/ext4/xattr.c
+++ b/fs/ext4/xattr.c
@@ -1174,16 +1174,14 @@ ext4_xattr_set_handle(handle_t *handle,
struct ext4_xattr_block_find bs = {
.s = { .not_found = -ENODATA, },
};
- unsigned long no_expand;
+ int no_expand;
int error;
if (!name)
return -EINVAL;
if (strlen(name) > 255)
return -ERANGE;
- down_write(&EXT4_I(inode)->xattr_sem);
- no_expand = ext4_test_inode_state(inode, EXT4_STATE_NO_EXPAND);
- ext4_set_inode_state(inode, EXT4_STATE_NO_EXPAND);
+ ext4_write_lock_xattr(inode, &no_expand);
error = ext4_reserve_inode_write(handle, inode, &is.iloc);
if (error)
@@ -1251,7 +1249,7 @@ ext4_xattr_set_handle(handle_t *handle,
ext4_xattr_update_super_block(handle, inode->i_sb);
inode->i_ctime = ext4_current_time(inode);
if (!value)
- ext4_clear_inode_state(inode, EXT4_STATE_NO_EXPAND);
+ no_expand = 0;
error = ext4_mark_iloc_dirty(handle, inode, &is.iloc);
/*
* The bh is consumed by ext4_mark_iloc_dirty, even with
@@ -1265,9 +1263,7 @@ ext4_xattr_set_handle(handle_t *handle,
cleanup:
brelse(is.iloc.bh);
brelse(bs.bh);
- if (no_expand == 0)
- ext4_clear_inode_state(inode, EXT4_STATE_NO_EXPAND);
- up_write(&EXT4_I(inode)->xattr_sem);
+ ext4_write_unlock_xattr(inode, &no_expand);
return error;
}
@@ -1484,12 +1480,11 @@ int ext4_expand_extra_isize_ea(struct in
int error = 0, tried_min_extra_isize = 0;
int s_min_extra_isize = le16_to_cpu(EXT4_SB(inode->i_sb)->s_es->s_min_extra_isize);
int isize_diff; /* How much do we need to grow i_extra_isize */
+ int no_expand;
+
+ if (ext4_write_trylock_xattr(inode, &no_expand) == 0)
+ return 0;
- down_write(&EXT4_I(inode)->xattr_sem);
- /*
- * Set EXT4_STATE_NO_EXPAND to avoid recursion when marking inode dirty
- */
- ext4_set_inode_state(inode, EXT4_STATE_NO_EXPAND);
retry:
isize_diff = new_extra_isize - EXT4_I(inode)->i_extra_isize;
if (EXT4_I(inode)->i_extra_isize >= new_extra_isize)
@@ -1571,17 +1566,16 @@ shift:
EXT4_I(inode)->i_extra_isize = new_extra_isize;
brelse(bh);
out:
- ext4_clear_inode_state(inode, EXT4_STATE_NO_EXPAND);
- up_write(&EXT4_I(inode)->xattr_sem);
+ ext4_write_unlock_xattr(inode, &no_expand);
return 0;
cleanup:
brelse(bh);
/*
- * We deliberately leave EXT4_STATE_NO_EXPAND set here since inode
- * size expansion failed.
+ * Inode size expansion failed; don't try again
*/
- up_write(&EXT4_I(inode)->xattr_sem);
+ no_expand = 1;
+ ext4_write_unlock_xattr(inode, &no_expand);
return error;
}
--- a/fs/ext4/xattr.h
+++ b/fs/ext4/xattr.h
@@ -102,6 +102,38 @@ extern const struct xattr_handler ext4_x
#define EXT4_XATTR_NAME_ENCRYPTION_CONTEXT "c"
+/*
+ * The EXT4_STATE_NO_EXPAND is overloaded and used for two purposes.
+ * The first is to signal that there the inline xattrs and data are
+ * taking up so much space that we might as well not keep trying to
+ * expand it. The second is that xattr_sem is taken for writing, so
+ * we shouldn't try to recurse into the inode expansion. For this
+ * second case, we need to make sure that we take save and restore the
+ * NO_EXPAND state flag appropriately.
+ */
+static inline void ext4_write_lock_xattr(struct inode *inode, int *save)
+{
+ down_write(&EXT4_I(inode)->xattr_sem);
+ *save = ext4_test_inode_state(inode, EXT4_STATE_NO_EXPAND);
+ ext4_set_inode_state(inode, EXT4_STATE_NO_EXPAND);
+}
+
+static inline int ext4_write_trylock_xattr(struct inode *inode, int *save)
+{
+ if (down_write_trylock(&EXT4_I(inode)->xattr_sem) == 0)
+ return 0;
+ *save = ext4_test_inode_state(inode, EXT4_STATE_NO_EXPAND);
+ ext4_set_inode_state(inode, EXT4_STATE_NO_EXPAND);
+ return 1;
+}
+
+static inline void ext4_write_unlock_xattr(struct inode *inode, int *save)
+{
+ if (*save == 0)
+ ext4_clear_inode_state(inode, EXT4_STATE_NO_EXPAND);
+ up_write(&EXT4_I(inode)->xattr_sem);
+}
+
extern ssize_t ext4_listxattr(struct dentry *, char *, size_t);
extern int ext4_xattr_get(struct inode *, int, const char *, void *, size_t);
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 12:40 +0100 |
| Subject | [PATCH 4.9 014/153] [media] uvcvideo: Fix a wrong macro |
| Message-ID | <tjr3P-3kY-17@gated-at.bofh.it> |
| In reply to | #1597151 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
commit 17c341ec0115837a610b2da15e32546e26068234 upstream.
Don't mix up UVC_BUF_STATE_* and VB2_BUF_STATE_* codes.
Fixes: 6998b6fb4b1c ("[media] uvcvideo: Use videobuf2-vmalloc")
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@intel.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/media/usb/uvc/uvc_queue.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/media/usb/uvc/uvc_queue.c
+++ b/drivers/media/usb/uvc/uvc_queue.c
@@ -412,7 +412,7 @@ struct uvc_buffer *uvc_queue_next_buffer
nextbuf = NULL;
spin_unlock_irqrestore(&queue->irqlock, flags);
- buf->state = buf->error ? VB2_BUF_STATE_ERROR : UVC_BUF_STATE_DONE;
+ buf->state = buf->error ? UVC_BUF_STATE_ERROR : UVC_BUF_STATE_DONE;
vb2_set_plane_payload(&buf->buf.vb2_buf, 0, buf->bytesused);
vb2_buffer_done(&buf->buf.vb2_buf, VB2_BUF_STATE_DONE);
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-03-10 16:00 +0100 |
| Subject | [PATCH 4.9 151/153] ceph: update readpages osd request according to size of pages |
| Message-ID | <tjubn-5v7-11@gated-at.bofh.it> |
| In reply to | #1597151 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yan, Zheng <zyan@redhat.com>
commit d641df819db8b80198fd85d9de91137e8a823b07 upstream.
add_to_page_cache_lru() can fails, so the actual pages to read
can be smaller than the initial size of osd request. We need to
update osd request size in that case.
Signed-off-by: Yan, Zheng <zyan@redhat.com>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/ceph/addr.c | 1 +
net/ceph/osd_client.c | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
--- a/fs/ceph/addr.c
+++ b/fs/ceph/addr.c
@@ -363,6 +363,7 @@ static int start_read(struct inode *inod
nr_pages = i;
if (nr_pages > 0) {
len = nr_pages << PAGE_SHIFT;
+ osd_req_op_extent_update(req, 0, len);
break;
}
goto out_pages;
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -672,7 +672,8 @@ void osd_req_op_extent_update(struct cep
BUG_ON(length > previous);
op->extent.length = length;
- op->indata_len -= previous - length;
+ if (op->op == CEPH_OSD_OP_WRITE || op->op == CEPH_OSD_OP_WRITEFULL)
+ op->indata_len -= previous - length;
}
EXPORT_SYMBOL(osd_req_op_extent_update);
[toc] | [prev] | [next] | [standalone]
| From | Guenter Roeck <linux@roeck-us.net> |
|---|---|
| Date | 2017-03-10 19:40 +0100 |
| Message-ID | <tjxCi-7Rw-25@gated-at.bofh.it> |
| In reply to | #1597151 |
On Fri, Mar 10, 2017 at 10:07:13AM +0100, Greg Kroah-Hartman wrote: > This is the start of the stable review cycle for the 4.9.14 release. > There are 153 patches in this series, all will be posted as a response > to this one. If anyone has any issues with these being applied, please > let me know. > > Responses should be made by Sun Mar 12 08:39:14 UTC 2017. > Anything received after that time might be too late. > Build results: total: 149 pass: 149 fail: 0 Qemu test results: total: 122 pass: 122 fail: 0 Details are available at http://kerneltests.org/builders. Guenter
[toc] | [prev] | [next] | [standalone]
| From | Shuah Khan <shuahkh@osg.samsung.com> |
|---|---|
| Date | 2017-03-10 20:20 +0100 |
| Message-ID | <tjyeZ-8mN-5@gated-at.bofh.it> |
| In reply to | #1597151 |
On 03/10/2017 02:07 AM, Greg Kroah-Hartman wrote: > This is the start of the stable review cycle for the 4.9.14 release. > There are 153 patches in this series, all will be posted as a response > to this one. If anyone has any issues with these being applied, please > let me know. > > Responses should be made by Sun Mar 12 08:39:14 UTC 2017. > Anything received after that time might be too late. > > The whole patch series can be found in one patch at: > kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.9.14-rc1.gz > or in the git tree and branch at: > git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.9.y > and the diffstat can be found below. > > thanks, > > greg k-h > Compiled and booted on my test system. No dmesg regressions. thanks, -- Shuah
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web