Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1414513 > unrolled thread

[PATCH 4.5 000/128] 4.5.7-stable review

Started byGreg Kroah-Hartman <gregkh@linuxfoundation.org>
First post2016-06-06 01:00 +0200
Last post2016-06-07 15:40 +0200
Articles 20 on this page of 29 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH 4.5 000/128] 4.5.7-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 01:00 +0200
    [PATCH 4.5 126/128] Btrfs: fix unexpected return value of fiemap Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 127/128] btrfs: scrub: Set bbio to NULL before calling btrfs_map_block Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 098/128] PM / sleep: Handle failures in device_suspend_late() consistently Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 093/128] ext4: fix check of dqget() return value in ext4_ioctl_setproject() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 110/128] btrfs: allow balancing to dup with multi-device Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 128/128] btrfs: make state preallocation more speculative in __set_extent_bit Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 120/128] btrfs: fix int32 overflow in shrink_delalloc(). Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 095/128] ext4: address UBSAN warning in mb_find_order_for_block() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 102/128] gcov: disable tree-loop-im to reduce stack usage Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 097/128] nfs: avoid race that crashes nfs_init_commit Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 100/128] scripts/package/Makefile: rpmbuild add support of RPMOPTS Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 115/128] btrfs: add check to sysfs handler of label Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 096/128] ext4: silence UBSAN in ext4_mb_init() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 116/128] Btrfs: fix divide error upon chunks stripe_len Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 123/128] btrfs: pass the right error code to the btrfs_std_error Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 113/128] btrfs: fix lock dep warning, move scratch dev out of device_list_mutex and uuid_mutex Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 122/128] btrfs: fix memory leak during RAID 5/6 device replacement Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 109/128] Btrfs: do not create empty block group if we have allocated data Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 114/128] btrfs: add read-only check to sysfs handler of features Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 119/128] btrfs: add write protection to SET_FEATURES ioctl Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 117/128] Btrfs: remove BUG_ON()s in btrfs_map_block Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 111/128] btrfs: fix mixed block count of available space Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 118/128] btrfs: fix lock dep warning move scratch super outside of chunk_mutex Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 125/128] Btrfs: fix empty symlink after creating symlink and fsync parent dir Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 101/128] mm: thp: avoid false positive VM_BUG_ON_PAGE in page_move_anon_rmap() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:40 +0200
    [PATCH 4.5 112/128] btrfs: avoid overflowing f_bfree Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-06-06 16:50 +0200
    Re: [PATCH 4.5 000/128] 4.5.7-stable review Shuah Khan <shuahkh@osg.samsung.com> - 2016-06-06 19:30 +0200
    Re: [PATCH 4.5 000/128] 4.5.7-stable review Guenter Roeck <linux@roeck-us.net> - 2016-06-07 15:40 +0200

Page 1 of 2  [1] 2  Next page →


#1414513 — [PATCH 4.5 000/128] 4.5.7-stable review

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 01:00 +0200
Subject[PATCH 4.5 000/128] 4.5.7-stable review
Message-ID<rGOIq-4dq-17@gated-at.bofh.it>
------------------
NOTE: This is the LAST 4.5.y stable kernel to be released, 4.5.y will be
end-of-life with this release.  You should have moved to the 4.6.y
series already.
------------------

This is the start of the stable review cycle for the 4.5.7 release.
There are 128 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 Tue Jun  7 22:22:57 UTC 2016.
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.5.7-rc1.gz
and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Linux 4.5.7-rc1

David Sterba <dsterba@suse.com>
    btrfs: make state preallocation more speculative in __set_extent_bit

Zhao Lei <zhaolei@cn.fujitsu.com>
    btrfs: scrub: Set bbio to NULL before calling btrfs_map_block

Liu Bo <bo.li.liu@oracle.com>
    Btrfs: fix unexpected return value of fiemap

Filipe Manana <fdmanana@suse.com>
    Btrfs: fix empty symlink after creating symlink and fsync parent dir

Filipe Manana <fdmanana@suse.com>
    Btrfs: fix for incorrect directory entries after fsync log replay

Anand Jain <anand.jain@oracle.com>
    btrfs: pass the right error code to the btrfs_std_error

Scott Talbert <scott.talbert@hgst.com>
    btrfs: fix memory leak during RAID 5/6 device replacement

Vincent Stehlé <vincent.stehle@intel.com>
    Btrfs: fix fspath error deallocation

Adam Borowski <kilobyte@angband.pl>
    btrfs: fix int32 overflow in shrink_delalloc().

David Sterba <dsterba@suse.cz>
    btrfs: add write protection to SET_FEATURES ioctl

Anand Jain <anand.jain@oracle.com>
    btrfs: fix lock dep warning move scratch super outside of chunk_mutex

Josef Bacik <jbacik@fb.com>
    Btrfs: remove BUG_ON()'s in btrfs_map_block

Liu Bo <bo.li.liu@oracle.com>
    Btrfs: fix divide error upon chunk's stripe_len

David Sterba <dsterba@suse.com>
    btrfs: add check to sysfs handler of label

David Sterba <dsterba@suse.cz>
    btrfs: add read-only check to sysfs handler of features

Anand Jain <anand.jain@oracle.com>
    btrfs: fix lock dep warning, move scratch dev out of device_list_mutex and uuid_mutex

Luis de Bethencourt <luisbg@osg.samsung.com>
    btrfs: avoid overflowing f_bfree

Luis de Bethencourt <luisbg@osg.samsung.com>
    btrfs: fix mixed block count of available space

Austin S. Hemmelgarn <ahferroin7@gmail.com>
    btrfs: allow balancing to dup with multi-device

Liu Bo <bo.li.liu@oracle.com>
    Btrfs: do not create empty block group if we have allocated data

Luke Dashjr <luke@dashjr.org>
    btrfs: bugfix: handle FS_IOC32_{GETFLAGS,SETFLAGS,GETVERSION} in btrfs_ioctl

Dave Chinner <dchinner@redhat.com>
    xfs: skip stale inodes in xfs_iflush_cluster

Dave Chinner <dchinner@redhat.com>
    xfs: fix inode validity check in xfs_iflush_cluster

Dave Chinner <dchinner@redhat.com>
    xfs: xfs_iflush_cluster fails to abort on error

Dave Chinner <dchinner@redhat.com>
    xfs: Don't wrap growfs AGFL indexes

Eric Sandeen <sandeen@redhat.com>
    xfs: disallow rw remount on fs with unknown ro-compat features

Arnd Bergmann <arnd@arndb.de>
    gcov: disable tree-loop-im to reduce stack usage

Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    mm: thp: avoid false positive VM_BUG_ON_PAGE in page_move_anon_rmap()

Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    scripts/package/Makefile: rpmbuild add support of RPMOPTS

Ville Syrjälä <ville.syrjala@linux.intel.com>
    dma-debug: avoid spinlock recursion when disabling dma-debug

Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    PM / sleep: Handle failures in device_suspend_late() consistently

Weston Andros Adamson <dros@monkey.org>
    nfs: avoid race that crashes nfs_init_commit

Nicolai Stange <nicstange@gmail.com>
    ext4: silence UBSAN in ext4_mb_init()

Nicolai Stange <nicstange@gmail.com>
    ext4: address UBSAN warning in mb_find_order_for_block()

Jan Kara <jack@suse.cz>
    ext4: fix oops on corrupted filesystem

Seth Forshee <seth.forshee@canonical.com>
    ext4: fix check of dqget() return value in ext4_ioctl_setproject()

Theodore Ts'o <tytso@mit.edu>
    ext4: clean up error handling when orphan list is corrupted

Theodore Ts'o <tytso@mit.edu>
    ext4: fix hang when processing corrupted orphaned inode list

Philipp Zabel <p.zabel@pengutronix.de>
    drm/imx: Match imx-ipuv3-crtc components using device node in platform data

Ville Syrjälä <ville.syrjala@linux.intel.com>
    drm/i915: Fix watermarks for VLV/CHV

Ville Syrjälä <ville.syrjala@linux.intel.com>
    drm/i915: Don't leave old junk in ilk active watermarks on readout

Daniel Vetter <daniel.vetter@ffwll.ch>
    drm/i915/psr: Try to program link training times correctly

Glenn Ruben Bakke <glennrubenbakke@nordicsemi.no>
    Bluetooth: 6lowpan: Fix memory corruption of ipv6 destination address

Lyude <cpaul@redhat.com>
    drm/atomic: Verify connector->funcs != NULL when clearing states

Lyude <cpaul@redhat.com>
    drm/fb_helper: Fix references to dev->mode_config.num_connector

Lyude <cpaul@redhat.com>
    drm/i915/fbdev: Fix num_connector references in intel_fb_initial_config()

Mario Kleiner <mario.kleiner.de@gmail.com>
    drm/amdgpu: Fix hdmi deep color support.

Alex Deucher <alexander.deucher@amd.com>
    drm/amdgpu: use drm_mode_vrefresh() rather than mode->vrefresh

Sinclair Yeh <syeh@vmware.com>
    drm/vmwgfx: Fix order of operation

Charmaine Lee <charmainel@vmware.com>
    drm/vmwgfx: use vmw_cmd_dx_cid_check for query commands.

Charmaine Lee <charmainel@vmware.com>
    drm/vmwgfx: Enable SVGA_3D_CMD_DX_SET_PREDICATION

Itai Handler <itai_handler@hotmail.com>
    drm/gma500: Fix possible out of bounds read

Tomáš Trnka <ttrnka@mail.muni.cz>
    sunrpc: fix stripping of padded MIC tokens

Juergen Gross <jgross@suse.com>
    xen: use same main loop for counting and remapping pages

Ross Lagerwall <ross.lagerwall@citrix.com>
    xen/events: Don't move disabled irqs

Gavin Shan <gwshan@linux.vnet.ibm.com>
    powerpc/eeh: Restore initial state in eeh_pe_reset_and_recover()

Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
    Revert "powerpc/eeh: Fix crash in eeh_add_device_early() on Cell"

Gavin Shan <gwshan@linux.vnet.ibm.com>
    powerpc/eeh: Don't report error in eeh_pe_reset_and_recover()

Hari Bathini <hbathini@linux.vnet.ibm.com>
    powerpc/book3s64: Fix branching to OOL handlers in relocatable kernel

Zhao Qiang <qiang.zhao@nxp.com>
    QE-UART: add "fsl,t1040-ucc-uart" to of_device_id

Oleg Nesterov <oleg@redhat.com>
    wait/ptrace: assume __WALL if the child is traced

Stefan Bader <stefan.bader@canonical.com>
    mm: use phys_addr_t for reserve_bootmem_region() arguments

Tiffany Lin <tiffany.lin@mediatek.com>
    media: v4l2-compat-ioctl32: fix missing reserved field copy in put_v4l2_create32

Prarit Bhargava <prarit@redhat.com>
    PCI: Disable all BAR sizing for devices with non-compliant BARs

Andrew Jeffery <andrew@aj.id.au>
    pinctrl: exynos5440: Use off-stack memory for pinctrl_gpio_range

Martin Sperl <kernel@martin.sperl.org>
    clk: bcm2835: correctly enable fractional clock support

Martin Sperl <kernel@martin.sperl.org>
    clk: bcm2835: divider value has to be 1 or more

Martin Sperl <kernel@martin.sperl.org>
    clk: bcm2835: pll_off should only update CM_PLL_ANARST

Vladimir Zapolskiy <vz@mleia.com>
    clk: at91: fix check of clk_register() returned value

Eric Anholt <eric@anholt.net>
    clk: bcm2835: Fix PLL poweron

Daniel Lezcano <daniel.lezcano@linaro.org>
    cpuidle: Fix cpuidle_state_is_coupled() argument in cpuidle_enter()

Dave Gerlach <d-gerlach@ti.com>
    cpuidle: Indicate when a device has been unregistered

Ulf Hansson <ulf.hansson@linaro.org>
    PM / Runtime: Fix error path in pm_runtime_force_resume()

Ville Syrjälä <ville.syrjala@linux.intel.com>
    mfd: intel_soc_pmic_core: Terminate panel control GPIO lookup table correctly

Heikki Krogerus <heikki.krogerus@linux.intel.com>
    mfd: intel-lpss: Save register context on suspend

Akshay Bhat <akshay.bhat@timesys.com>
    hwmon: (ads7828) Enable internal reference

Javier Martinez Canillas <javier@osg.samsung.com>
    regulator: Try to resolve regulators supplies on registration

Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
    aacraid: Fix for KDUMP driver hang

Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
    aacraid: Fix for aac_command_thread hang

Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
    aacraid: Relinquish CPU during timeout wait

Martin K. Petersen <martin.petersen@oracle.com>
    Revert "lpfc: Delete unnecessary checks before the function call mempool_destroy"

wang yanqing <udknight@gmail.com>
    rtlwifi: pci: use dev_kfree_skb_irq instead of kfree_skb in rtl_pci_reset_trx_ring

wang yanqing <udknight@gmail.com>
    rtlwifi: Fix logic error in enter/exit power-save mode

Larry Finger <Larry.Finger@lwfinger.net>
    rtlwifi: btcoexist: Implement antenna selection

Larry Finger <Larry.Finger@lwfinger.net>
    rtlwifi: rtl8723be: Add antenna select module parameter

Krzysztof Kozlowski <k.kozlowski@samsung.com>
    hwrng: exynos - Fix unbalanced PM runtime put on timeout error path

Joseph Salisbury <joseph.salisbury@canonical.com>
    ath5k: Change led pin configuration for compaq c700 laptop

Anilkumar Kolli <akolli@qti.qualcomm.com>
    ath10k: fix kernel panic, move arvifs list head init before htt init

Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
    ath10k: fix rx_channel during hw reconfigure

Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
    ath10k: fix firmware assert in monitor mode

Anilkumar Kolli <akolli@qti.qualcomm.com>
    ath10k: fix debugfs pktlog_filter write

Vittorio Gambaletta (VittGam) <linux-wireless@vittgam.net>
    ath9k: Fix LED polarity for some Mini PCI AR9220 MB92 cards.

Vittorio Gambaletta (VittGam) <linux-wireless@vittgam.net>
    ath9k: Add a module parameter to invert LED polarity.

Alexander Kurz <akurz@blala.de>
    ARM: dts: imx35: restore existing used clock enumeration

Marek Szyprowski <m.szyprowski@samsung.com>
    ARM: dts: exynos: Add interrupt line to MAX8997 PMIC on exynos4210-trats

Florian Vallee <fvallee@eukrea.fr>
    ARM: dts: at91: fix typo in sama5d2 PIN_PD24 description

Imre Kaloz <kaloz@openwrt.org>
    ARM: mvebu: fix GPIO config on the Linksys boards

Priit Laes <plaes@plaes.org>
    ARM: sun7i: dt: Enable dram gate 5 (tve0 clock) for simplefb TV output

Priit Laes <plaes@plaes.org>
    ARM: sun4i: dt: Enable dram gate 5 (tve0 clock) for simplefb TV output

Cameron Gutman <aicommander@gmail.com>
    Input: xpad - prevent spurious input from wired Xbox 360 controllers

Pavel Rojtberg <rojtberg@gmail.com>
    Input: xpad - move pending clear to the correct location

Ricky Liang <jcliang@chromium.org>
    Input: uinput - handle compat ioctl for UI_SET_PHYS

Mark Brown <broonie@kernel.org>
    ASoC: ak4642: Enable cache usage to fix crashes on resume

Mikulas Patocka <mikulas@twibright.com>
    affs: fix remount failure when there are no options changed

Maciej W. Rozycki <macro@imgtec.com>
    MIPS: VDSO: Build with `-fno-strict-aliasing'

Harvey Hunt <harvey.hunt@imgtec.com>
    MIPS: lib: Mark intrinsics notrace

James Hogan <james.hogan@imgtec.com>
    MIPS: Build microMIPS VDSO for microMIPS kernels

James Hogan <james.hogan@imgtec.com>
    MIPS: Fix sigreturn via VDSO on microMIPS kernel

Maciej W. Rozycki <macro@imgtec.com>
    MIPS: ptrace: Prevent writes to read-only FCSR bits

Maciej W. Rozycki <macro@imgtec.com>
    MIPS: ptrace: Fix FP context restoration FCSR regression

Paul Burton <paul.burton@imgtec.com>
    MIPS: Disable preemption during prctl(PR_SET_FP_MODE, ...)

Paul Burton <paul.burton@imgtec.com>
    MIPS: Prevent "restoration" of MSA context in non-MSA kernels

James Hogan <james.hogan@imgtec.com>
    MIPS: Fix MSA ld_*/st_* asm macros to use PTR_ADDU

Paul Burton <paul.burton@imgtec.com>
    MIPS: Use copy_s.fmt rather than copy_u.fmt

Huacai Chen <chenhc@lemote.com>
    MIPS: Loongson-3: Reserve 32MB for RS780E integrated GPU

Huacai Chen <chenhc@lemote.com>
    MIPS: Reserve nosave data for hibernation

Matthias Schiffer <mschiffer@universe-factory.net>
    MIPS: ath79: make bootconsole wait for both THRE and TEMT

Huacai Chen <chenhc@lemote.com>
    MIPS: Loongson-3: Fix build error after ld-version.sh modification

Paul Burton <paul.burton@imgtec.com>
    MIPS: Sync icache & dcache in set_pte_at

Paul Burton <paul.burton@imgtec.com>
    MIPS: Handle highmem pages in __update_cache

James Hogan <james.hogan@imgtec.com>
    MIPS: Fix watchpoint restoration

James Hogan <james.hogan@imgtec.com>
    MIPS: Fix uapi include in exported asm/siginfo.h

James Hogan <james.hogan@imgtec.com>
    MIPS: Fix siginfo.h to use strict posix types

James Hogan <james.hogan@imgtec.com>
    MIPS: Avoid using unwind_stack() with usermode

James Hogan <james.hogan@imgtec.com>
    MIPS: Don't unwind to user mode with EVA

Maciej W. Rozycki <macro@imgtec.com>
    MIPS: MSA: Fix a link error on `_init_msa_upper' with older GCC

Paul Burton <paul.burton@imgtec.com>
    MIPS: math-emu: Fix jalr emulation when rd == $0

Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
    MIPS64: R6: R2 emulation bugfix


-------------

Diffstat:

 .../devicetree/bindings/clock/imx35-clock.txt      |   1 +
 Makefile                                           |   6 +-
 arch/arm/boot/dts/armada-385-linksys.dtsi          |   6 +-
 arch/arm/boot/dts/armada-xp-linksys-mamba.dts      |   4 +-
 arch/arm/boot/dts/exynos4210-trats.dts             |   2 +
 arch/arm/boot/dts/sama5d2-pinfunc.h                |   4 +-
 arch/arm/boot/dts/sun4i-a10.dtsi                   |   2 +-
 arch/arm/boot/dts/sun7i-a20.dtsi                   |   5 +-
 arch/mips/ath79/early_printk.c                     |   6 +-
 arch/mips/include/asm/asmmacro.h                   |  40 ++++----
 arch/mips/include/asm/cacheflush.h                 |   6 --
 arch/mips/include/asm/msa.h                        |  13 +++
 arch/mips/include/asm/pgtable.h                    |  26 ++++-
 arch/mips/include/asm/switch_to.h                  |   2 +-
 arch/mips/include/asm/watch.h                      |  10 +-
 arch/mips/include/uapi/asm/siginfo.h               |  22 ++---
 arch/mips/kernel/mips-r2-to-r6-emul.c              | 105 +++++++++++----------
 arch/mips/kernel/pm.c                              |   2 +-
 arch/mips/kernel/process.c                         |   6 +-
 arch/mips/kernel/ptrace.c                          |  27 ++++--
 arch/mips/kernel/r4k_fpu.S                         |  10 +-
 arch/mips/kernel/setup.c                           |   3 +
 arch/mips/kernel/signal.c                          |  15 +--
 arch/mips/kernel/traps.c                           |   8 +-
 arch/mips/kernel/watch.c                           |   5 +-
 arch/mips/lib/ashldi3.c                            |   2 +-
 arch/mips/lib/ashrdi3.c                            |   2 +-
 arch/mips/lib/bswapdi.c                            |   2 +-
 arch/mips/lib/bswapsi.c                            |   2 +-
 arch/mips/lib/cmpdi2.c                             |   2 +-
 arch/mips/lib/lshrdi3.c                            |   2 +-
 arch/mips/lib/ucmpdi2.c                            |   2 +-
 arch/mips/loongson64/Platform                      |   2 +-
 arch/mips/loongson64/loongson-3/numa.c             |   6 +-
 arch/mips/math-emu/cp1emu.c                        |   8 +-
 arch/mips/mm/cache.c                               |  29 +++---
 arch/mips/vdso/Makefile                            |   4 +-
 arch/powerpc/kernel/eeh.c                          |   2 +-
 arch/powerpc/kernel/eeh_driver.c                   |  26 ++++-
 arch/powerpc/kernel/exceptions-64s.S               |  16 +++-
 arch/x86/xen/setup.c                               |  65 +++++--------
 drivers/base/power/main.c                          |   5 +-
 drivers/base/power/runtime.c                       |   9 +-
 drivers/char/hw_random/exynos-rng.c                |  10 +-
 drivers/clk/at91/clk-h32mx.c                       |   2 +-
 drivers/clk/bcm/clk-bcm2835.c                      |  58 ++++++++++--
 drivers/clk/imx/clk-imx35.c                        |   4 +-
 drivers/cpuidle/cpuidle.c                          |   4 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c     |  10 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.c            |   2 +-
 drivers/gpu/drm/drm_atomic.c                       |   2 +-
 drivers/gpu/drm/drm_fb_helper.c                    |   5 +-
 drivers/gpu/drm/gma500/mdfld_dsi_pkg_sender.c      |   2 +-
 drivers/gpu/drm/i915/intel_atomic.c                |   3 +-
 drivers/gpu/drm/i915/intel_display.c               |  21 +++--
 drivers/gpu/drm/i915/intel_drv.h                   |   2 +-
 drivers/gpu/drm/i915/intel_fbdev.c                 |   6 +-
 drivers/gpu/drm/i915/intel_pm.c                    |   2 +
 drivers/gpu/drm/i915/intel_psr.c                   |  55 +++++++++--
 drivers/gpu/drm/imx/imx-drm-core.c                 |   8 ++
 drivers/gpu/drm/imx/ipuv3-crtc.c                   |   2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c            |  10 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_fb.c                 |   6 +-
 drivers/gpu/ipu-v3/ipu-common.c                    |   5 +-
 drivers/hwmon/ads7828.c                            |  10 ++
 drivers/input/joystick/xpad.c                      |   6 +-
 drivers/input/misc/uinput.c                        |   6 ++
 drivers/media/v4l2-core/v4l2-compat-ioctl32.c      |   3 +-
 drivers/mfd/intel-lpss.c                           |  19 +++-
 drivers/mfd/intel_soc_pmic_core.c                  |   1 +
 drivers/net/wireless/ath/ath10k/core.c             |   8 +-
 drivers/net/wireless/ath/ath10k/debug.c            |   7 +-
 drivers/net/wireless/ath/ath10k/mac.c              |  13 ++-
 drivers/net/wireless/ath/ath5k/led.c               |   2 +-
 drivers/net/wireless/ath/ath9k/init.c              |   7 ++
 drivers/net/wireless/ath/ath9k/pci.c               |  10 ++
 drivers/net/wireless/realtek/rtlwifi/base.c        |   4 +-
 .../realtek/rtlwifi/btcoexist/halbtc8723b2ant.c    |   9 +-
 .../realtek/rtlwifi/btcoexist/halbtcoutsrc.c       |  27 +++++-
 .../realtek/rtlwifi/btcoexist/halbtcoutsrc.h       |   2 +-
 .../wireless/realtek/rtlwifi/btcoexist/rtl_btc.c   |   5 +-
 drivers/net/wireless/realtek/rtlwifi/pci.c         |   2 +-
 .../net/wireless/realtek/rtlwifi/rtl8723be/hw.c    |   5 +
 .../net/wireless/realtek/rtlwifi/rtl8723be/sw.c    |   3 +
 drivers/net/wireless/realtek/rtlwifi/wifi.h        |   3 +
 drivers/pci/probe.c                                |   6 +-
 drivers/pinctrl/samsung/pinctrl-exynos5440.c       |  15 +--
 drivers/regulator/core.c                           |   9 ++
 drivers/scsi/aacraid/aacraid.h                     |   1 +
 drivers/scsi/aacraid/comminit.c                    |  24 +++++
 drivers/scsi/aacraid/commsup.c                     |  12 ++-
 drivers/scsi/lpfc/lpfc_mem.c                       |   6 +-
 drivers/tty/serial/ucc_uart.c                      |   3 +
 drivers/xen/events/events_base.c                   |   6 +-
 fs/affs/super.c                                    |   5 +-
 fs/btrfs/backref.c                                 |   2 +-
 fs/btrfs/ctree.h                                   |   1 +
 fs/btrfs/extent-tree.c                             |   2 +-
 fs/btrfs/extent_io.c                               |  14 ++-
 fs/btrfs/file.c                                    |   2 +-
 fs/btrfs/inode.c                                   |   2 +-
 fs/btrfs/ioctl.c                                   |  41 +++++++-
 fs/btrfs/scrub.c                                   |   7 +-
 fs/btrfs/super.c                                   |  22 ++++-
 fs/btrfs/sysfs.c                                   |   6 ++
 fs/btrfs/tree-log.c                                |  15 +--
 fs/btrfs/volumes.c                                 |  61 ++++++++----
 fs/btrfs/volumes.h                                 |   2 +-
 fs/ext4/ialloc.c                                   |  59 ++++++------
 fs/ext4/ioctl.c                                    |   2 +-
 fs/ext4/mballoc.c                                  |  10 +-
 fs/ext4/namei.c                                    |   2 +-
 fs/nfs/pnfs_nfs.c                                  |  28 ++++++
 fs/nfs/write.c                                     |   4 +
 fs/xfs/xfs_fsops.c                                 |   4 +-
 fs/xfs/xfs_inode.c                                 |  26 +++--
 fs/xfs/xfs_super.c                                 |  10 ++
 include/linux/mm.h                                 |   2 +-
 include/video/imx-ipu-v3.h                         |   2 +
 kernel/exit.c                                      |  29 ++++--
 lib/dma-debug.c                                    |   2 +-
 mm/page_alloc.c                                    |   2 +-
 mm/rmap.c                                          |   2 +
 net/bluetooth/6lowpan.c                            |  11 +--
 net/sunrpc/auth_gss/svcauth_gss.c                  |   4 +-
 scripts/package/Makefile                           |   4 +-
 sound/soc/codecs/ak4642.c                          |   3 +
 127 files changed, 927 insertions(+), 436 deletions(-)

[toc] | [next] | [standalone]


#1415119 — [PATCH 4.5 126/128] Btrfs: fix unexpected return value of fiemap

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 126/128] Btrfs: fix unexpected return value of fiemap
Message-ID<rH3R7-68Z-15@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Liu Bo <bo.li.liu@oracle.com>

commit 2d324f59f343967a03eeb2690f0ff178304d0687 upstream.

btrfs's fiemap is supposed to return 0 on success and return < 0 on
error. however, ret becomes 1 after looking up the last file extent:

  btrfs_lookup_file_extent ->
    btrfs_search_slot(..., ins_len=0, cow=0)

and if the offset is beyond EOF, we'll get 'path' pointed to the place
of potentail insertion, and ret == 1.

This may confuse applications using ioctl(FIEL_IOC_FIEMAP).

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/extent_io.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -4385,8 +4385,12 @@ int extent_fiemap(struct inode *inode, s
 	if (ret < 0) {
 		btrfs_free_path(path);
 		return ret;
+	} else {
+		WARN_ON(!ret);
+		if (ret == 1)
+			ret = 0;
 	}
-	WARN_ON(!ret);
+
 	path->slots[0]--;
 	btrfs_item_key_to_cpu(path->nodes[0], &found_key, path->slots[0]);
 	found_type = found_key.type;

[toc] | [prev] | [next] | [standalone]


#1415120 — [PATCH 4.5 127/128] btrfs: scrub: Set bbio to NULL before calling btrfs_map_block

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 127/128] btrfs: scrub: Set bbio to NULL before calling btrfs_map_block
Message-ID<rH3R7-68Z-17@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Zhao Lei <zhaolei@cn.fujitsu.com>

commit f1fee6534dcfbf468a159789aa202db2bce8c200 upstream.

We usually call btrfs_put_bbio() when btrfs_map_block() failed,
btrfs_put_bbio() works right whether bbio is a valid value, or NULL.

But there is a exception, in some case, btrfs_map_block() will return
fail without touching *bbio(keeping its original value), and if bbio
was not initialized yet, invalid memory accessing will happened.

Above case is in scrub_missing_raid56_pages(), and similar case in
scrub_raid56_parity().

Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/scrub.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/fs/btrfs/scrub.c
+++ b/fs/btrfs/scrub.c
@@ -2179,7 +2179,7 @@ static void scrub_missing_raid56_pages(s
 	struct btrfs_fs_info *fs_info = sctx->dev_root->fs_info;
 	u64 length = sblock->page_count * PAGE_SIZE;
 	u64 logical = sblock->pagev[0]->logical;
-	struct btrfs_bio *bbio;
+	struct btrfs_bio *bbio = NULL;
 	struct bio *bio;
 	struct btrfs_raid_bio *rbio;
 	int ret;
@@ -2980,6 +2980,7 @@ again:
 						       extent_len);
 
 			mapped_length = extent_len;
+			bbio = NULL;
 			ret = btrfs_map_block(fs_info, READ, extent_logical,
 					      &mapped_length, &bbio, 0);
 			if (!ret) {

[toc] | [prev] | [next] | [standalone]


#1415121 — [PATCH 4.5 098/128] PM / sleep: Handle failures in device_suspend_late() consistently

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 098/128] PM / sleep: Handle failures in device_suspend_late() consistently
Message-ID<rH3R7-68Z-5@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

commit 3a17fb329da68cb00558721aff876a80bba2fdb9 upstream.

Grygorii Strashko reports:

 The PM runtime will be left disabled for the device if its
 .suspend_late() callback fails and async suspend is not allowed
 for this device. In this case device will not be added in
 dpm_late_early_list and dpm_resume_early() will ignore this
 device, as result PM runtime will be disabled for it forever
 (side effect: after 8 subsequent failures for the same device
 the PM runtime will be reenabled due to disable_depth overflow).

To fix this problem, add devices to dpm_late_early_list regardless
of whether or not device_suspend_late() returns errors for them.

That will ensure failures in there to be handled consistently for
all devices regardless of their async suspend/resume status.

Reported-by: Grygorii Strashko <grygorii.strashko@ti.com>
Tested-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/base/power/main.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -1267,14 +1267,15 @@ int dpm_suspend_late(pm_message_t state)
 		error = device_suspend_late(dev);
 
 		mutex_lock(&dpm_list_mtx);
+		if (!list_empty(&dev->power.entry))
+			list_move(&dev->power.entry, &dpm_late_early_list);
+
 		if (error) {
 			pm_dev_err(dev, state, " late", error);
 			dpm_save_failed_dev(dev_name(dev));
 			put_device(dev);
 			break;
 		}
-		if (!list_empty(&dev->power.entry))
-			list_move(&dev->power.entry, &dpm_late_early_list);
 		put_device(dev);
 
 		if (async_error)

[toc] | [prev] | [next] | [standalone]


#1415122 — [PATCH 4.5 093/128] ext4: fix check of dqget() return value in ext4_ioctl_setproject()

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 093/128] ext4: fix check of dqget() return value in ext4_ioctl_setproject()
Message-ID<rH3R8-68Z-21@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Seth Forshee <seth.forshee@canonical.com>

commit ff0bc08454917964291f72ee5b8eca66de4bc250 upstream.

A failed call to dqget() returns an ERR_PTR() and not null. Fix
the check in ext4_ioctl_setproject() to handle this correctly.

Fixes: 9b7365fc1c82 ("ext4: add FS_IOC_FSSETXATTR/FS_IOC_FSGETXATTR interface support")
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/ext4/ioctl.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/fs/ext4/ioctl.c
+++ b/fs/ext4/ioctl.c
@@ -365,7 +365,7 @@ static int ext4_ioctl_setproject(struct
 		struct dquot *transfer_to[MAXQUOTAS] = { };
 
 		transfer_to[PRJQUOTA] = dqget(sb, make_kqid_projid(kprojid));
-		if (transfer_to[PRJQUOTA]) {
+		if (!IS_ERR(transfer_to[PRJQUOTA])) {
 			err = __dquot_transfer(inode, transfer_to);
 			dqput(transfer_to[PRJQUOTA]);
 			if (err)

[toc] | [prev] | [next] | [standalone]


#1415123 — [PATCH 4.5 110/128] btrfs: allow balancing to dup with multi-device

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 110/128] btrfs: allow balancing to dup with multi-device
Message-ID<rH3R7-68Z-7@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Austin S. Hemmelgarn <ahferroin7@gmail.com>

commit 88be159c905a2b4f6d59afa352bef410afb6af02 upstream.

Currently, we don't allow the user to try and rebalance to a dup profile
on a multi-device filesystem.  In most cases, this is a perfectly sensible
restriction as raid1 uses the same amount of space and provides better
protection.

However, when reshaping a multi-device filesystem down to a single device
filesystem, this requires the user to convert metadata and system chunks
to single profile before deleting devices, and then convert again to dup,
which leaves a period of time where metadata integrity is reduced.

This patch removes the single-device-only restriction from converting to
dup profile to remove this potential data integrity reduction.

Signed-off-by: Austin S. Hemmelgarn <ahferroin7@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/volumes.c |    6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -3699,10 +3699,8 @@ int btrfs_balance(struct btrfs_balance_c
 		num_devices--;
 	}
 	btrfs_dev_replace_unlock(&fs_info->dev_replace);
-	allowed = BTRFS_AVAIL_ALLOC_BIT_SINGLE;
-	if (num_devices == 1)
-		allowed |= BTRFS_BLOCK_GROUP_DUP;
-	else if (num_devices > 1)
+	allowed = BTRFS_AVAIL_ALLOC_BIT_SINGLE | BTRFS_BLOCK_GROUP_DUP;
+	if (num_devices > 1)
 		allowed |= (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID1);
 	if (num_devices > 2)
 		allowed |= BTRFS_BLOCK_GROUP_RAID5;

[toc] | [prev] | [next] | [standalone]


#1415124 — [PATCH 4.5 128/128] btrfs: make state preallocation more speculative in __set_extent_bit

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 128/128] btrfs: make state preallocation more speculative in __set_extent_bit
Message-ID<rH3R7-68Z-13@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: David Sterba <dsterba@suse.com>

commit 059f791c6bbaba72dc3c1bd6e2657aacc8552849 upstream.

Similar to __clear_extent_bit, do not fail if the state preallocation
fails as we might not need it. One less BUG_ON.

Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/extent_io.c |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -875,8 +875,14 @@ __set_extent_bit(struct extent_io_tree *
 	bits |= EXTENT_FIRST_DELALLOC;
 again:
 	if (!prealloc && gfpflags_allow_blocking(mask)) {
+		/*
+		 * Don't care for allocation failure here because we might end
+		 * up not needing the pre-allocated extent state at all, which
+		 * is the case if we only have in the tree extent states that
+		 * cover our input range and don't cover too any other range.
+		 * If we end up needing a new extent state we allocate it later.
+		 */
 		prealloc = alloc_extent_state(mask);
-		BUG_ON(!prealloc);
 	}
 
 	spin_lock(&tree->lock);

[toc] | [prev] | [next] | [standalone]


#1415126 — [PATCH 4.5 120/128] btrfs: fix int32 overflow in shrink_delalloc().

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 120/128] btrfs: fix int32 overflow in shrink_delalloc().
Message-ID<rH3R8-68Z-25@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Adam Borowski <kilobyte@angband.pl>

commit 8eb0dfdbda3f56bf7d248ed87fcc383df114ecbb upstream.

UBSAN: Undefined behaviour in fs/btrfs/extent-tree.c:4623:21
signed integer overflow:
10808 * 262144 cannot be represented in type 'int [8]'

If 8192<=items<16384, we request a writeback of an insane number of pages
which is benign (everything will be written).  But if items>=16384, the
space reservation won't be enough.

Signed-off-by: Adam Borowski <kilobyte@angband.pl>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/extent-tree.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -4620,7 +4620,7 @@ static void shrink_delalloc(struct btrfs
 
 	/* Calc the number of the pages we need flush for space reservation */
 	items = calc_reclaim_items_nr(root, to_reclaim);
-	to_reclaim = items * EXTENT_SIZE_PER_ITEM;
+	to_reclaim = (u64)items * EXTENT_SIZE_PER_ITEM;
 
 	trans = (struct btrfs_trans_handle *)current->journal_info;
 	block_rsv = &root->fs_info->delalloc_block_rsv;

[toc] | [prev] | [next] | [standalone]


#1415127 — [PATCH 4.5 095/128] ext4: address UBSAN warning in mb_find_order_for_block()

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 095/128] ext4: address UBSAN warning in mb_find_order_for_block()
Message-ID<rH3R8-68Z-29@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Nicolai Stange <nicstange@gmail.com>

commit b5cb316cdf3a3f5f6125412b0f6065185240cfdc upstream.

Currently, in mb_find_order_for_block(), there's a loop like the following:

  while (order <= e4b->bd_blkbits + 1) {
    ...
    bb += 1 << (e4b->bd_blkbits - order);
  }

Note that the updated bb is used in the loop's next iteration only.

However, at the last iteration, that is at order == e4b->bd_blkbits + 1,
the shift count becomes negative (c.f. C99 6.5.7(3)) and UBSAN reports

  UBSAN: Undefined behaviour in fs/ext4/mballoc.c:1281:11
  shift exponent -1 is negative
  [...]
  Call Trace:
   [<ffffffff818c4d35>] dump_stack+0xbc/0x117
   [<ffffffff818c4c79>] ? _atomic_dec_and_lock+0x169/0x169
   [<ffffffff819411bb>] ubsan_epilogue+0xd/0x4e
   [<ffffffff81941cbc>] __ubsan_handle_shift_out_of_bounds+0x1fb/0x254
   [<ffffffff81941ac1>] ? __ubsan_handle_load_invalid_value+0x158/0x158
   [<ffffffff816e93a0>] ? ext4_mb_generate_from_pa+0x590/0x590
   [<ffffffff816502c8>] ? ext4_read_block_bitmap_nowait+0x598/0xe80
   [<ffffffff816e7b7e>] mb_find_order_for_block+0x1ce/0x240
   [...]

Unless compilers start to do some fancy transformations (which at least
GCC 6.0.0 doesn't currently do), the issue is of cosmetic nature only: the
such calculated value of bb is never used again.

Silence UBSAN by introducing another variable, bb_incr, holding the next
increment to apply to bb and adjust that one by right shifting it by one
position per loop iteration.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=114701
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=112161

Signed-off-by: Nicolai Stange <nicstange@gmail.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/ext4/mballoc.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -1259,6 +1259,7 @@ static void ext4_mb_unload_buddy(struct
 static int mb_find_order_for_block(struct ext4_buddy *e4b, int block)
 {
 	int order = 1;
+	int bb_incr = 1 << (e4b->bd_blkbits - 1);
 	void *bb;
 
 	BUG_ON(e4b->bd_bitmap == e4b->bd_buddy);
@@ -1271,7 +1272,8 @@ static int mb_find_order_for_block(struc
 			/* this block is part of buddy of order 'order' */
 			return order;
 		}
-		bb += 1 << (e4b->bd_blkbits - order);
+		bb += bb_incr;
+		bb_incr >>= 1;
 		order++;
 	}
 	return 0;

[toc] | [prev] | [next] | [standalone]


#1415128 — [PATCH 4.5 102/128] gcov: disable tree-loop-im to reduce stack usage

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 102/128] gcov: disable tree-loop-im to reduce stack usage
Message-ID<rH3R7-68Z-19@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Arnd Bergmann <arnd@arndb.de>

commit c87bf431448b404a6ef5fbabd74c0e3e42157a7f upstream.

Enabling CONFIG_GCOV_PROFILE_ALL produces us a lot of warnings like

lib/lz4/lz4hc_compress.c: In function 'lz4_compresshcctx':
lib/lz4/lz4hc_compress.c:514:1: warning: the frame size of 1504 bytes is larger than 1024 bytes [-Wframe-larger-than=]

After some investigation, I found that this behavior started with gcc-4.9,
and opened https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69702.
A suggested workaround for it is to use the -fno-tree-loop-im
flag that turns off one of the optimization stages in gcc, so the
code runs a little slower but does not use excessive amounts
of stack.

We could make this conditional on the gcc version, but I could not
find an easy way to do this in Kbuild and the benefit would be
fairly small, given that most of the gcc version in production are
affected now.

I'm marking this for 'stable' backports because it addresses a bug
with code generation in gcc that exists in all kernel versions
with the affected gcc releases.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 Makefile |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/Makefile
+++ b/Makefile
@@ -364,7 +364,7 @@ AFLAGS_MODULE   =
 LDFLAGS_MODULE  =
 CFLAGS_KERNEL	=
 AFLAGS_KERNEL	=
-CFLAGS_GCOV	= -fprofile-arcs -ftest-coverage
+CFLAGS_GCOV	= -fprofile-arcs -ftest-coverage -fno-tree-loop-im
 
 
 # Use USERINCLUDE when you must reference the UAPI directories only.

[toc] | [prev] | [next] | [standalone]


#1415129 — [PATCH 4.5 097/128] nfs: avoid race that crashes nfs_init_commit

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 097/128] nfs: avoid race that crashes nfs_init_commit
Message-ID<rH3R7-68Z-1@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Weston Andros Adamson <dros@monkey.org>

commit ade8febde0271513360bac44883dbebad44276c3 upstream.

Since the patch "NFS: Allow multiple commit requests in flight per file"
we can run multiple simultaneous commits on the same inode.  This
introduced a race over collecting pages to commit that made it possible
to call nfs_init_commit() with an empty list - which causes crashes like
the one below.

The fix is to catch this race and avoid calling nfs_init_commit and
initiate_commit when there is no work to do.

Here is the crash:

[600522.076832] BUG: unable to handle kernel NULL pointer dereference at 0000000000000040
[600522.078475] IP: [<ffffffffa0479e72>] nfs_init_commit+0x22/0x130 [nfs]
[600522.078745] PGD 4272b1067 PUD 4272cb067 PMD 0
[600522.078972] Oops: 0000 [#1] SMP
[600522.079204] Modules linked in: nfsv3 nfs_layout_flexfiles rpcsec_gss_krb5 nfsv4 dns_resolver nfs fscache dcdbas ip6t_rpfilter ip6t_REJECT nf_reject_ipv6 xt_conntrack ebtable_nat ebtable_broute bridge stp llc ebtable_filter ebtables ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip6table_mangle ip6table_security ip6table_raw ip6table_filter ip6_tables iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack iptable_mangle iptable_security iptable_raw vmw_vsock_vmci_transport vsock bonding ipmi_devintf ipmi_msghandler coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel ppdev vmw_balloon parport_pc parport acpi_cpufreq vmw_vmci i2c_piix4 shpchp nfsd auth_rpcgss nfs_acl lockd grace sunrpc xfs libcrc32c vmwgfx drm_kms_helper ttm drm crc32c_intel serio_raw vmxnet3
[600522.081380]  vmw_pvscsi ata_generic pata_acpi
[600522.081809] CPU: 3 PID: 15667 Comm: /usr/bin/python Not tainted 4.1.9-100.pd.88.el7.x86_64 #1
[600522.082281] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 09/30/2014
[600522.082814] task: ffff8800bbbfa780 ti: ffff88042ae84000 task.ti: ffff88042ae84000
[600522.083378] RIP: 0010:[<ffffffffa0479e72>]  [<ffffffffa0479e72>] nfs_init_commit+0x22/0x130 [nfs]
[600522.083973] RSP: 0018:ffff88042ae87438  EFLAGS: 00010246
[600522.084571] RAX: 0000000000000000 RBX: ffff880003485e40 RCX: ffff88042ae87588
[600522.085188] RDX: 0000000000000000 RSI: ffff88042ae874b0 RDI: ffff880003485e40
[600522.085756] RBP: ffff88042ae87448 R08: ffff880003486010 R09: ffff88042ae874b0
[600522.086332] R10: 0000000000000000 R11: 0000000000000005 R12: ffff88042ae872d0
[600522.086905] R13: ffff88042ae874b0 R14: ffff880003485e40 R15: ffff88042704c840
[600522.087484] FS:  00007f4728ff2740(0000) GS:ffff88043fd80000(0000) knlGS:0000000000000000
[600522.088070] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[600522.088663] CR2: 0000000000000040 CR3: 000000042b6aa000 CR4: 00000000001406e0
[600522.089327] Stack:
[600522.089926]  0000000000000001 ffff88042ae87588 ffff88042ae874f8 ffffffffa04f09fa
[600522.090549]  0000000000017840 0000000000017840 ffff88042ae87588 ffff8803258d9930
[600522.091169]  ffff88042ae87578 ffffffffa0563d80 0000000000000000 ffff88042704c840
[600522.091789] Call Trace:
[600522.092420]  [<ffffffffa04f09fa>] pnfs_generic_commit_pagelist+0x1da/0x320 [nfsv4]
[600522.093052]  [<ffffffffa0563d80>] ? ff_layout_commit_prepare_v3+0x30/0x30 [nfs_layout_flexfiles]
[600522.093696]  [<ffffffffa0562645>] ff_layout_commit_pagelist+0x15/0x20 [nfs_layout_flexfiles]
[600522.094359]  [<ffffffffa047bc78>] nfs_generic_commit_list+0xe8/0x120 [nfs]
[600522.095032]  [<ffffffffa047bd6a>] nfs_commit_inode+0xba/0x110 [nfs]
[600522.095719]  [<ffffffffa046ac54>] nfs_release_page+0x44/0xd0 [nfs]
[600522.096410]  [<ffffffff811a8122>] try_to_release_page+0x32/0x50
[600522.097109]  [<ffffffff811bd4f1>] shrink_page_list+0x961/0xb30
[600522.097812]  [<ffffffff811bdced>] shrink_inactive_list+0x1cd/0x550
[600522.098530]  [<ffffffff811bea65>] shrink_lruvec+0x635/0x840
[600522.099250]  [<ffffffff811bed60>] shrink_zone+0xf0/0x2f0
[600522.099974]  [<ffffffff811bf312>] do_try_to_free_pages+0x192/0x470
[600522.100709]  [<ffffffff811bf6ca>] try_to_free_pages+0xda/0x170
[600522.101464]  [<ffffffff811b2198>] __alloc_pages_nodemask+0x588/0x970
[600522.102235]  [<ffffffff811fbbd5>] alloc_pages_vma+0xb5/0x230
[600522.103000]  [<ffffffff813a1589>] ? cpumask_any_but+0x39/0x50
[600522.103774]  [<ffffffff811d6115>] wp_page_copy.isra.55+0x95/0x490
[600522.104558]  [<ffffffff810e3438>] ? __wake_up+0x48/0x60
[600522.105357]  [<ffffffff811d7d3b>] do_wp_page+0xab/0x4f0
[600522.106137]  [<ffffffff810a1bbb>] ? release_task+0x36b/0x470
[600522.106902]  [<ffffffff8126dbd7>] ? eventfd_ctx_read+0x67/0x1c0
[600522.107659]  [<ffffffff811da2a8>] handle_mm_fault+0xc78/0x1900
[600522.108431]  [<ffffffff81067ef1>] __do_page_fault+0x181/0x420
[600522.109173]  [<ffffffff811446a6>] ? __audit_syscall_exit+0x1e6/0x280
[600522.109893]  [<ffffffff810681c0>] do_page_fault+0x30/0x80
[600522.110594]  [<ffffffff81024f36>] ? syscall_trace_leave+0xc6/0x120
[600522.111288]  [<ffffffff81790a58>] page_fault+0x28/0x30
[600522.111947] Code: 5d c3 0f 1f 80 00 00 00 00 0f 1f 44 00 00 55 4c 8d 87 d0 01 00 00 48 89 e5 53 48 89 fb 48 83 ec 08 4c 8b 0e 49 8b 41 18 4c 39 ce <48> 8b 40 40 4c 8b 50 30 74 24 48 8b 87 d0 01 00 00 48 8b 7e 08
[600522.113343] RIP  [<ffffffffa0479e72>] nfs_init_commit+0x22/0x130 [nfs]
[600522.114003]  RSP <ffff88042ae87438>
[600522.114636] CR2: 0000000000000040

Fixes: af7cf057 (NFS: Allow multiple commit requests in flight per file)
Signed-off-by: Weston Andros Adamson <dros@primarydata.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/nfs/pnfs_nfs.c |   28 ++++++++++++++++++++++++++++
 fs/nfs/write.c    |    4 ++++
 2 files changed, 32 insertions(+)

--- a/fs/nfs/pnfs_nfs.c
+++ b/fs/nfs/pnfs_nfs.c
@@ -246,6 +246,23 @@ void pnfs_fetch_commit_bucket_list(struc
 
 }
 
+/* Helper function for pnfs_generic_commit_pagelist to catch an empty
+ * page list. This can happen when two commits race. */
+static bool
+pnfs_generic_commit_cancel_empty_pagelist(struct list_head *pages,
+					  struct nfs_commit_data *data,
+					  struct nfs_commit_info *cinfo)
+{
+	if (list_empty(pages)) {
+		if (atomic_dec_and_test(&cinfo->mds->rpcs_out))
+			wake_up_atomic_t(&cinfo->mds->rpcs_out);
+		nfs_commitdata_release(data);
+		return true;
+	}
+
+	return false;
+}
+
 /* This follows nfs_commit_list pretty closely */
 int
 pnfs_generic_commit_pagelist(struct inode *inode, struct list_head *mds_pages,
@@ -280,6 +297,11 @@ pnfs_generic_commit_pagelist(struct inod
 	list_for_each_entry_safe(data, tmp, &list, pages) {
 		list_del_init(&data->pages);
 		if (data->ds_commit_index < 0) {
+			/* another commit raced with us */
+			if (pnfs_generic_commit_cancel_empty_pagelist(mds_pages,
+				data, cinfo))
+				continue;
+
 			nfs_init_commit(data, mds_pages, NULL, cinfo);
 			nfs_initiate_commit(NFS_CLIENT(inode), data,
 					    NFS_PROTO(data->inode),
@@ -288,6 +310,12 @@ pnfs_generic_commit_pagelist(struct inod
 			LIST_HEAD(pages);
 
 			pnfs_fetch_commit_bucket_list(&pages, data, cinfo);
+
+			/* another commit raced with us */
+			if (pnfs_generic_commit_cancel_empty_pagelist(&pages,
+				data, cinfo))
+				continue;
+
 			nfs_init_commit(data, &pages, data->lseg, cinfo);
 			initiate_commit(data, how);
 		}
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -1709,6 +1709,10 @@ nfs_commit_list(struct inode *inode, str
 {
 	struct nfs_commit_data	*data;
 
+	/* another commit raced with us */
+	if (list_empty(head))
+		return 0;
+
 	data = nfs_commitdata_alloc();
 
 	if (!data)

[toc] | [prev] | [next] | [standalone]


#1415130 — [PATCH 4.5 100/128] scripts/package/Makefile: rpmbuild add support of RPMOPTS

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 100/128] scripts/package/Makefile: rpmbuild add support of RPMOPTS
Message-ID<rH3R7-68Z-3@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>

commit 65a9f31c5042e5bb50d30ed8ae374044be561054 upstream.

After commit 21a59991ce0c ("scripts/package/Makefile: rpmbuild is needed
for rpm targets"), it is no longer possible to specify RPMOPTS.
For example, we can no longer able to control _topdir using the following
make command.
make RPMOPTS="--define '_topdir /home/xyz/workspace/'" binrpm-pkg

Fixes: 21a59991ce0c ("scripts/package/Makefile: rpmbuild is needed for rpm targets")
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 scripts/package/Makefile |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/scripts/package/Makefile
+++ b/scripts/package/Makefile
@@ -52,7 +52,7 @@ rpm-pkg rpm: FORCE
 	$(call cmd,src_tar,$(KERNELPATH),kernel.spec)
 	$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
 	mv -f $(objtree)/.tmp_version $(objtree)/.version
-	rpmbuild --target $(UTS_MACHINE) -ta $(KERNELPATH).tar.gz
+	rpmbuild $(RPMOPTS) --target $(UTS_MACHINE) -ta $(KERNELPATH).tar.gz
 	rm $(KERNELPATH).tar.gz kernel.spec
 
 # binrpm-pkg
@@ -63,7 +63,7 @@ binrpm-pkg: FORCE
 	$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
 	mv -f $(objtree)/.tmp_version $(objtree)/.version
 
-	rpmbuild --define "_builddir $(objtree)" --target \
+	rpmbuild $(RPMOPTS) --define "_builddir $(objtree)" --target \
 		$(UTS_MACHINE) -bb $(objtree)/binkernel.spec
 	rm binkernel.spec
 

[toc] | [prev] | [next] | [standalone]


#1415131 — [PATCH 4.5 115/128] btrfs: add check to sysfs handler of label

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 115/128] btrfs: add check to sysfs handler of label
Message-ID<rH3R8-68Z-33@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: David Sterba <dsterba@suse.com>

commit 66ac9fe7bacf9fa76c472efc7a7aaa590c7bce6a upstream.

Add a sanity check for the fs_info as we will dereference it, similar to
what the 'store features' handler does.

Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/sysfs.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/fs/btrfs/sysfs.c
+++ b/fs/btrfs/sysfs.c
@@ -377,6 +377,9 @@ static ssize_t btrfs_label_store(struct
 	struct btrfs_fs_info *fs_info = to_fs_info(kobj);
 	size_t p_len;
 
+	if (!fs_info)
+		return -EPERM;
+
 	if (fs_info->sb->s_flags & MS_RDONLY)
 		return -EROFS;
 

[toc] | [prev] | [next] | [standalone]


#1415133 — [PATCH 4.5 096/128] ext4: silence UBSAN in ext4_mb_init()

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 096/128] ext4: silence UBSAN in ext4_mb_init()
Message-ID<rH3R8-68Z-39@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Nicolai Stange <nicstange@gmail.com>

commit 935244cd54b86ca46e69bc6604d2adfb1aec2d42 upstream.

Currently, in ext4_mb_init(), there's a loop like the following:

  do {
    ...
    offset += 1 << (sb->s_blocksize_bits - i);
    i++;
  } while (i <= sb->s_blocksize_bits + 1);

Note that the updated offset is used in the loop's next iteration only.

However, at the last iteration, that is at i == sb->s_blocksize_bits + 1,
the shift count becomes equal to (unsigned)-1 > 31 (c.f. C99 6.5.7(3))
and UBSAN reports

  UBSAN: Undefined behaviour in fs/ext4/mballoc.c:2621:15
  shift exponent 4294967295 is too large for 32-bit type 'int'
  [...]
  Call Trace:
   [<ffffffff818c4d25>] dump_stack+0xbc/0x117
   [<ffffffff818c4c69>] ? _atomic_dec_and_lock+0x169/0x169
   [<ffffffff819411ab>] ubsan_epilogue+0xd/0x4e
   [<ffffffff81941cac>] __ubsan_handle_shift_out_of_bounds+0x1fb/0x254
   [<ffffffff81941ab1>] ? __ubsan_handle_load_invalid_value+0x158/0x158
   [<ffffffff814b6dc1>] ? kmem_cache_alloc+0x101/0x390
   [<ffffffff816fc13b>] ? ext4_mb_init+0x13b/0xfd0
   [<ffffffff814293c7>] ? create_cache+0x57/0x1f0
   [<ffffffff8142948a>] ? create_cache+0x11a/0x1f0
   [<ffffffff821c2168>] ? mutex_lock+0x38/0x60
   [<ffffffff821c23ab>] ? mutex_unlock+0x1b/0x50
   [<ffffffff814c26ab>] ? put_online_mems+0x5b/0xc0
   [<ffffffff81429677>] ? kmem_cache_create+0x117/0x2c0
   [<ffffffff816fcc49>] ext4_mb_init+0xc49/0xfd0
   [...]

Observe that the mentioned shift exponent, 4294967295, equals (unsigned)-1.

Unless compilers start to do some fancy transformations (which at least
GCC 6.0.0 doesn't currently do), the issue is of cosmetic nature only: the
such calculated value of offset is never used again.

Silence UBSAN by introducing another variable, offset_incr, holding the
next increment to apply to offset and adjust that one by right shifting it
by one position per loop iteration.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=114701
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=112161

Signed-off-by: Nicolai Stange <nicstange@gmail.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/ext4/mballoc.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -2578,7 +2578,7 @@ int ext4_mb_init(struct super_block *sb)
 {
 	struct ext4_sb_info *sbi = EXT4_SB(sb);
 	unsigned i, j;
-	unsigned offset;
+	unsigned offset, offset_incr;
 	unsigned max;
 	int ret;
 
@@ -2607,11 +2607,13 @@ int ext4_mb_init(struct super_block *sb)
 
 	i = 1;
 	offset = 0;
+	offset_incr = 1 << (sb->s_blocksize_bits - 1);
 	max = sb->s_blocksize << 2;
 	do {
 		sbi->s_mb_offsets[i] = offset;
 		sbi->s_mb_maxs[i] = max;
-		offset += 1 << (sb->s_blocksize_bits - i);
+		offset += offset_incr;
+		offset_incr = offset_incr >> 1;
 		max = max >> 1;
 		i++;
 	} while (i <= sb->s_blocksize_bits + 1);

[toc] | [prev] | [next] | [standalone]


#1415134 — [PATCH 4.5 116/128] Btrfs: fix divide error upon chunks stripe_len

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 116/128] Btrfs: fix divide error upon chunks stripe_len
Message-ID<rH3R8-68Z-31@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Liu Bo <bo.li.liu@oracle.com>

commit 3d8da67817606380fdadfa483d4dba5c3a5446c6 upstream.

The struct 'map_lookup' uses type int for @stripe_len, while
btrfs_chunk_stripe_len() can return a u64 value, and it may end up with
@stripe_len being undefined value and it can lead to 'divide error' in
 __btrfs_map_block().

This changes 'map_lookup' to use type u64 for stripe_len, also right now
we only use BTRFS_STRIPE_LEN for stripe_len, so this adds a valid checker for
BTRFS_STRIPE_LEN.

Reported-by: Vegard Nossum <vegard.nossum@oracle.com>
Reported-by: Quentin Casasnovas <quentin.casasnovas@oracle.com>
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Reviewed-by: David Sterba <dsterba@suse.com>
[ folded division fix to scrub_raid56_parity ]
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/scrub.c   |    2 +-
 fs/btrfs/volumes.c |    2 +-
 fs/btrfs/volumes.h |    2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

--- a/fs/btrfs/scrub.c
+++ b/fs/btrfs/scrub.c
@@ -2858,7 +2858,7 @@ static noinline_for_stack int scrub_raid
 	int extent_mirror_num;
 	int stop_loop = 0;
 
-	nsectors = map->stripe_len / root->sectorsize;
+	nsectors = div_u64(map->stripe_len, root->sectorsize);
 	bitmap_len = scrub_calc_parity_bitmap_len(nsectors);
 	sparity = kzalloc(sizeof(struct scrub_parity) + 2 * bitmap_len,
 			  GFP_NOFS);
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -6249,7 +6249,7 @@ static int read_one_chunk(struct btrfs_r
 			"invalid chunk length %llu", length);
 		return -EIO;
 	}
-	if (!is_power_of_2(stripe_len)) {
+	if (!is_power_of_2(stripe_len) || stripe_len != BTRFS_STRIPE_LEN) {
 		btrfs_err(root->fs_info, "invalid chunk stripe length: %llu",
 			  stripe_len);
 		return -EIO;
--- a/fs/btrfs/volumes.h
+++ b/fs/btrfs/volumes.h
@@ -347,7 +347,7 @@ struct map_lookup {
 	u64 type;
 	int io_align;
 	int io_width;
-	int stripe_len;
+	u64 stripe_len;
 	int sector_size;
 	int num_stripes;
 	int sub_stripes;

[toc] | [prev] | [next] | [standalone]


#1415136 — [PATCH 4.5 123/128] btrfs: pass the right error code to the btrfs_std_error

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 123/128] btrfs: pass the right error code to the btrfs_std_error
Message-ID<rH3R8-68Z-37@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Anand Jain <anand.jain@oracle.com>

commit ad8403df054c9b5dc3175a26c6179571b9cafa4e upstream.

Also drop the newline from the message.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>


---
 fs/btrfs/ioctl.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -4849,8 +4849,8 @@ static long btrfs_ioctl_qgroup_assign(st
 	/* update qgroup status and info */
 	err = btrfs_run_qgroups(trans, root->fs_info);
 	if (err < 0)
-		btrfs_std_error(root->fs_info, ret,
-			    "failed to update qgroup status and info\n");
+		btrfs_std_error(root->fs_info, err,
+			    "failed to update qgroup status and info");
 	err = btrfs_end_transaction(trans, root);
 	if (err && !ret)
 		ret = err;

[toc] | [prev] | [next] | [standalone]


#1415137 — [PATCH 4.5 113/128] btrfs: fix lock dep warning, move scratch dev out of device_list_mutex and uuid_mutex

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 113/128] btrfs: fix lock dep warning, move scratch dev out of device_list_mutex and uuid_mutex
Message-ID<rH3R8-68Z-51@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Anand Jain <anand.jain@oracle.com>

commit 779bf3fefa835cb52a07457c8acac6f2f66f2493 upstream.

When the replace target fails, the target device will be taken
out of fs device list, scratch + update_dev_time and freed. However
we could do the scratch  + update_dev_time and free part after the
device has been taken out of device list, so that we don't have to
hold the device_list_mutex and uuid_mutex locks.

Reported issue:

[ 5375.718845] ======================================================
[ 5375.718846] [ INFO: possible circular locking dependency detected ]
[ 5375.718849] 4.4.5-scst31x-debug-11+ #40 Not tainted
[ 5375.718849] -------------------------------------------------------
[ 5375.718851] btrfs-health/4662 is trying to acquire lock:
[ 5375.718861]  (sb_writers){.+.+.+}, at: [<ffffffff812214f7>] __sb_start_write+0xb7/0xf0
[ 5375.718862]
[ 5375.718862] but task is already holding lock:
[ 5375.718907]  (&fs_devs->device_list_mutex){+.+.+.}, at: [<ffffffffa028263c>] btrfs_destroy_dev_replace_tgtdev+0x3c/0x150 [btrfs]
[ 5375.718907]
[ 5375.718907] which lock already depends on the new lock.
[ 5375.718907]
[ 5375.718908]
[ 5375.718908] the existing dependency chain (in reverse order) is:
[ 5375.718911]
[ 5375.718911] -> #3 (&fs_devs->device_list_mutex){+.+.+.}:
[ 5375.718917]        [<ffffffff810da4be>] lock_acquire+0xce/0x1e0
[ 5375.718921]        [<ffffffff81633949>] mutex_lock_nested+0x69/0x3c0
[ 5375.718940]        [<ffffffffa0219bf6>] btrfs_show_devname+0x36/0x210 [btrfs]
[ 5375.718945]        [<ffffffff81267079>] show_vfsmnt+0x49/0x150
[ 5375.718948]        [<ffffffff81240b07>] m_show+0x17/0x20
[ 5375.718951]        [<ffffffff81246868>] seq_read+0x2d8/0x3b0
[ 5375.718955]        [<ffffffff8121df28>] __vfs_read+0x28/0xd0
[ 5375.718959]        [<ffffffff8121e806>] vfs_read+0x86/0x130
[ 5375.718962]        [<ffffffff8121f4c9>] SyS_read+0x49/0xa0
[ 5375.718966]        [<ffffffff81637976>] entry_SYSCALL_64_fastpath+0x16/0x7a
[ 5375.718968]
[ 5375.718968] -> #2 (namespace_sem){+++++.}:
[ 5375.718971]        [<ffffffff810da4be>] lock_acquire+0xce/0x1e0
[ 5375.718974]        [<ffffffff81635199>] down_write+0x49/0x80
[ 5375.718977]        [<ffffffff81243593>] lock_mount+0x43/0x1c0
[ 5375.718979]        [<ffffffff81243c13>] do_add_mount+0x23/0xd0
[ 5375.718982]        [<ffffffff81244afb>] do_mount+0x27b/0xe30
[ 5375.718985]        [<ffffffff812459dc>] SyS_mount+0x8c/0xd0
[ 5375.718988]        [<ffffffff81637976>] entry_SYSCALL_64_fastpath+0x16/0x7a
[ 5375.718991]
[ 5375.718991] -> #1 (&sb->s_type->i_mutex_key#5){+.+.+.}:
[ 5375.718994]        [<ffffffff810da4be>] lock_acquire+0xce/0x1e0
[ 5375.718996]        [<ffffffff81633949>] mutex_lock_nested+0x69/0x3c0
[ 5375.719001]        [<ffffffff8122d608>] path_openat+0x468/0x1360
[ 5375.719004]        [<ffffffff8122f86e>] do_filp_open+0x7e/0xe0
[ 5375.719007]        [<ffffffff8121da7b>] do_sys_open+0x12b/0x210
[ 5375.719010]        [<ffffffff8121db7e>] SyS_open+0x1e/0x20
[ 5375.719013]        [<ffffffff81637976>] entry_SYSCALL_64_fastpath+0x16/0x7a
[ 5375.719015]
[ 5375.719015] -> #0 (sb_writers){.+.+.+}:
[ 5375.719018]        [<ffffffff810d97ca>] __lock_acquire+0x17ba/0x1ae0
[ 5375.719021]        [<ffffffff810da4be>] lock_acquire+0xce/0x1e0
[ 5375.719026]        [<ffffffff810d3bef>] percpu_down_read+0x4f/0xa0
[ 5375.719028]        [<ffffffff812214f7>] __sb_start_write+0xb7/0xf0
[ 5375.719031]        [<ffffffff81242eb4>] mnt_want_write+0x24/0x50
[ 5375.719035]        [<ffffffff8122ded2>] path_openat+0xd32/0x1360
[ 5375.719037]        [<ffffffff8122f86e>] do_filp_open+0x7e/0xe0
[ 5375.719040]        [<ffffffff8121d8a4>] file_open_name+0xe4/0x130
[ 5375.719043]        [<ffffffff8121d923>] filp_open+0x33/0x60
[ 5375.719073]        [<ffffffffa02776a6>] update_dev_time+0x16/0x40 [btrfs]
[ 5375.719099]        [<ffffffffa02825be>] btrfs_scratch_superblocks+0x4e/0x90 [btrfs]
[ 5375.719123]        [<ffffffffa0282665>] btrfs_destroy_dev_replace_tgtdev+0x65/0x150 [btrfs]
[ 5375.719150]        [<ffffffffa02c6c80>] btrfs_dev_replace_finishing+0x6b0/0x990 [btrfs]
[ 5375.719175]        [<ffffffffa02c729e>] btrfs_dev_replace_start+0x33e/0x540 [btrfs]
[ 5375.719199]        [<ffffffffa02c7f58>] btrfs_auto_replace_start+0xf8/0x140 [btrfs]
[ 5375.719222]        [<ffffffffa02464e6>] health_kthread+0x246/0x490 [btrfs]
[ 5375.719225]        [<ffffffff810a70df>] kthread+0xef/0x110
[ 5375.719229]        [<ffffffff81637d2f>] ret_from_fork+0x3f/0x70
[ 5375.719230]
[ 5375.719230] other info that might help us debug this:
[ 5375.719230]
[ 5375.719233] Chain exists of:
[ 5375.719233]   sb_writers --> namespace_sem --> &fs_devs->device_list_mutex
[ 5375.719233]
[ 5375.719234]  Possible unsafe locking scenario:
[ 5375.719234]
[ 5375.719234]        CPU0                    CPU1
[ 5375.719235]        ----                    ----
[ 5375.719236]   lock(&fs_devs->device_list_mutex);
[ 5375.719238]                                lock(namespace_sem);
[ 5375.719239]                                lock(&fs_devs->device_list_mutex);
[ 5375.719241]   lock(sb_writers);
[ 5375.719241]
[ 5375.719241]  *** DEADLOCK ***
[ 5375.719241]
[ 5375.719243] 4 locks held by btrfs-health/4662:
[ 5375.719266]  #0:  (&fs_info->health_mutex){+.+.+.}, at: [<ffffffffa0246303>] health_kthread+0x63/0x490 [btrfs]
[ 5375.719293]  #1:  (&fs_info->dev_replace.lock_finishing_cancel_unmount){+.+.+.}, at: [<ffffffffa02c6611>] btrfs_dev_replace_finishing+0x41/0x990 [btrfs]
[ 5375.719319]  #2:  (uuid_mutex){+.+.+.}, at: [<ffffffffa0282620>] btrfs_destroy_dev_replace_tgtdev+0x20/0x150 [btrfs]
[ 5375.719343]  #3:  (&fs_devs->device_list_mutex){+.+.+.}, at: [<ffffffffa028263c>] btrfs_destroy_dev_replace_tgtdev+0x3c/0x150 [btrfs]
[ 5375.719343]
[ 5375.719343] stack backtrace:
[ 5375.719347] CPU: 2 PID: 4662 Comm: btrfs-health Not tainted 4.4.5-scst31x-debug-11+ #40
[ 5375.719348] Hardware name: Supermicro SYS-6018R-WTRT/X10DRW-iT, BIOS 1.0c 01/07/2015
[ 5375.719352]  0000000000000000 ffff880856f73880 ffffffff813529e3 ffffffff826182a0
[ 5375.719354]  ffffffff8260c090 ffff880856f738c0 ffffffff810d667c ffff880856f73930
[ 5375.719357]  ffff880861f32b40 ffff880861f32b68 0000000000000003 0000000000000004
[ 5375.719357] Call Trace:
[ 5375.719363]  [<ffffffff813529e3>] dump_stack+0x85/0xc2
[ 5375.719366]  [<ffffffff810d667c>] print_circular_bug+0x1ec/0x260
[ 5375.719369]  [<ffffffff810d97ca>] __lock_acquire+0x17ba/0x1ae0
[ 5375.719373]  [<ffffffff810f606d>] ? debug_lockdep_rcu_enabled+0x1d/0x20
[ 5375.719376]  [<ffffffff810da4be>] lock_acquire+0xce/0x1e0
[ 5375.719378]  [<ffffffff812214f7>] ? __sb_start_write+0xb7/0xf0
[ 5375.719383]  [<ffffffff810d3bef>] percpu_down_read+0x4f/0xa0
[ 5375.719385]  [<ffffffff812214f7>] ? __sb_start_write+0xb7/0xf0
[ 5375.719387]  [<ffffffff812214f7>] __sb_start_write+0xb7/0xf0
[ 5375.719389]  [<ffffffff81242eb4>] mnt_want_write+0x24/0x50
[ 5375.719393]  [<ffffffff8122ded2>] path_openat+0xd32/0x1360
[ 5375.719415]  [<ffffffffa02462a0>] ? btrfs_congested_fn+0x180/0x180 [btrfs]
[ 5375.719418]  [<ffffffff810f606d>] ? debug_lockdep_rcu_enabled+0x1d/0x20
[ 5375.719420]  [<ffffffff8122f86e>] do_filp_open+0x7e/0xe0
[ 5375.719423]  [<ffffffff810f615d>] ? rcu_read_lock_sched_held+0x6d/0x80
[ 5375.719426]  [<ffffffff81201a9b>] ? kmem_cache_alloc+0x26b/0x5d0
[ 5375.719430]  [<ffffffff8122e7d4>] ? getname_kernel+0x34/0x120
[ 5375.719433]  [<ffffffff8121d8a4>] file_open_name+0xe4/0x130
[ 5375.719436]  [<ffffffff8121d923>] filp_open+0x33/0x60
[ 5375.719462]  [<ffffffffa02776a6>] update_dev_time+0x16/0x40 [btrfs]
[ 5375.719485]  [<ffffffffa02825be>] btrfs_scratch_superblocks+0x4e/0x90 [btrfs]
[ 5375.719506]  [<ffffffffa0282665>] btrfs_destroy_dev_replace_tgtdev+0x65/0x150 [btrfs]
[ 5375.719530]  [<ffffffffa02c6c80>] btrfs_dev_replace_finishing+0x6b0/0x990 [btrfs]
[ 5375.719554]  [<ffffffffa02c6b23>] ? btrfs_dev_replace_finishing+0x553/0x990 [btrfs]
[ 5375.719576]  [<ffffffffa02c729e>] btrfs_dev_replace_start+0x33e/0x540 [btrfs]
[ 5375.719598]  [<ffffffffa02c7f58>] btrfs_auto_replace_start+0xf8/0x140 [btrfs]
[ 5375.719621]  [<ffffffffa02464e6>] health_kthread+0x246/0x490 [btrfs]
[ 5375.719641]  [<ffffffffa02463d8>] ? health_kthread+0x138/0x490 [btrfs]
[ 5375.719661]  [<ffffffffa02462a0>] ? btrfs_congested_fn+0x180/0x180 [btrfs]
[ 5375.719663]  [<ffffffff810a70df>] kthread+0xef/0x110
[ 5375.719666]  [<ffffffff810a6ff0>] ? kthread_create_on_node+0x200/0x200
[ 5375.719669]  [<ffffffff81637d2f>] ret_from_fork+0x3f/0x70
[ 5375.719672]  [<ffffffff810a6ff0>] ? kthread_create_on_node+0x200/0x200
[ 5375.719697] ------------[ cut here ]------------

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reported-by: Yauhen Kharuzhy <yauhen.kharuzhy@zavadatar.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/volumes.c |   17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -2023,10 +2023,9 @@ void btrfs_destroy_dev_replace_tgtdev(st
 
 	btrfs_sysfs_rm_device_link(fs_info->fs_devices, tgtdev);
 
-	if (tgtdev->bdev) {
-		btrfs_scratch_superblocks(tgtdev->bdev, tgtdev->name->str);
+	if (tgtdev->bdev)
 		fs_info->fs_devices->open_devices--;
-	}
+
 	fs_info->fs_devices->num_devices--;
 
 	next_device = list_entry(fs_info->fs_devices->devices.next,
@@ -2037,10 +2036,18 @@ void btrfs_destroy_dev_replace_tgtdev(st
 		fs_info->fs_devices->latest_bdev = next_device->bdev;
 	list_del_rcu(&tgtdev->dev_list);
 
-	call_rcu(&tgtdev->rcu, free_device);
-
 	mutex_unlock(&fs_info->fs_devices->device_list_mutex);
 	mutex_unlock(&uuid_mutex);
+
+	/*
+	 * The update_dev_time() with in btrfs_scratch_superblocks()
+	 * may lead to a call to btrfs_show_devname() which will try
+	 * to hold device_list_mutex. And here this device
+	 * is already out of device list, so we don't have to hold
+	 * the device_list_mutex lock.
+	 */
+	btrfs_scratch_superblocks(tgtdev->bdev, tgtdev->name->str);
+	call_rcu(&tgtdev->rcu, free_device);
 }
 
 static int btrfs_find_device_by_path(struct btrfs_root *root, char *device_path,

[toc] | [prev] | [next] | [standalone]


#1415138 — [PATCH 4.5 122/128] btrfs: fix memory leak during RAID 5/6 device replacement

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 122/128] btrfs: fix memory leak during RAID 5/6 device replacement
Message-ID<rH3R8-68Z-35@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Scott Talbert <scott.talbert@hgst.com>

commit 4673272f43ae790ab9ec04e38a7542f82bb8f020 upstream.

A 'struct bio' is allocated in scrub_missing_raid56_pages(), but it was never
freed anywhere.

Signed-off-by: Scott Talbert <scott.talbert@hgst.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/scrub.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/fs/btrfs/scrub.c
+++ b/fs/btrfs/scrub.c
@@ -2125,6 +2125,8 @@ static void scrub_missing_raid56_end_io(
 	if (bio->bi_error)
 		sblock->no_io_error_seen = 0;
 
+	bio_put(bio);
+
 	btrfs_queue_work(fs_info->scrub_workers, &sblock->work);
 }
 

[toc] | [prev] | [next] | [standalone]


#1415139 — [PATCH 4.5 109/128] Btrfs: do not create empty block group if we have allocated data

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 109/128] Btrfs: do not create empty block group if we have allocated data
Message-ID<rH3R8-68Z-41@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Liu Bo <bo.li.liu@oracle.com>

commit cf25ce518e8ef9d59b292e51193bed2b023a32da upstream.

Now we force to create empty block group to keep data profile alive,
however, in the below example, we eventually get an empty block group
while we're trying to get more space for other types (metadata/system),

- Before,
block group "A": size=2G, used=1.2G
block group "B": size=2G, used=512M

- After "btrfs balance start -dusage=50 mount_point",
block group "A": size=2G, used=(1.2+0.5)G
block group "C": size=2G, used=0

Since there is no data in block group C, it won't be deleted
automatically and we have to get the unused 2G until the next mount.

Balance itself just moves data and doesn't remove data, so it's safe
to not create such a empty block group if we already have data
 allocated in other block groups.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/volumes.c |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -3401,6 +3401,7 @@ static int __btrfs_balance(struct btrfs_
 	u32 count_meta = 0;
 	u32 count_sys = 0;
 	int chunk_reserved = 0;
+	u64 bytes_used = 0;
 
 	/* step one make some room on all the devices */
 	devices = &fs_info->fs_devices->devices;
@@ -3539,7 +3540,13 @@ again:
 			goto loop;
 		}
 
-		if ((chunk_type & BTRFS_BLOCK_GROUP_DATA) && !chunk_reserved) {
+		ASSERT(fs_info->data_sinfo);
+		spin_lock(&fs_info->data_sinfo->lock);
+		bytes_used = fs_info->data_sinfo->bytes_used;
+		spin_unlock(&fs_info->data_sinfo->lock);
+
+		if ((chunk_type & BTRFS_BLOCK_GROUP_DATA) &&
+		    !chunk_reserved && !bytes_used) {
 			trans = btrfs_start_transaction(chunk_root, 0);
 			if (IS_ERR(trans)) {
 				mutex_unlock(&fs_info->delete_unused_bgs_mutex);

[toc] | [prev] | [next] | [standalone]


#1415140 — [PATCH 4.5 114/128] btrfs: add read-only check to sysfs handler of features

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-06-06 16:40 +0200
Subject[PATCH 4.5 114/128] btrfs: add read-only check to sysfs handler of features
Message-ID<rH3R9-68Z-57@gated-at.bofh.it>
In reply to#1414513
4.5-stable review patch.  If anyone has any objections, please let me know.

------------------

From: David Sterba <dsterba@suse.cz>

commit ee6111386a1b304f8bf589d36810d53e3b27ee20 upstream.

We don't want to trigger the change on a read-only filesystem, similar
to what the label handler does.

Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/sysfs.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/fs/btrfs/sysfs.c
+++ b/fs/btrfs/sysfs.c
@@ -120,6 +120,9 @@ static ssize_t btrfs_feature_attr_store(
 	if (!fs_info)
 		return -EPERM;
 
+	if (fs_info->sb->s_flags & MS_RDONLY)
+		return -EROFS;
+
 	ret = kstrtoul(skip_spaces(buf), 0, &val);
 	if (ret)
 		return ret;

[toc] | [prev] | [next] | [standalone]


Page 1 of 2  [1] 2  Next page →

Back to top | Article view | linux.kernel


csiph-web