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


Groups > linux.kernel > #1667083 > unrolled thread

[PATCH 4.9 000/108] 4.9.33-stable review

Started byGreg Kroah-Hartman <gregkh@linuxfoundation.org>
First post2017-06-15 20:30 +0200
Last post2017-06-16 02:50 +0200
Articles 15 — 4 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH 4.9 000/108] 4.9.33-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-06-15 20:30 +0200
    [PATCH 4.9 021/108] i2c: piix4: Request the SMBUS semaphore inside the mutex Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-06-15 20:30 +0200
    [PATCH 4.9 006/108] ibmvnic: Fix endian error when requesting device capabilities Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-06-15 20:30 +0200
    [PATCH 4.9 034/108] log2: make order_base_2() behave correctly on const input value zero Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-06-15 20:30 +0200
    [PATCH 4.9 010/108] ipv6: Handle IPv4-mapped src to in6addr_any dst. Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-06-15 20:30 +0200
    [PATCH 4.9 031/108] jump label: pass kbuild_cflags when checking for asm goto support Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-06-15 20:30 +0200
      Re: [PATCH 4.9 031/108] jump label: pass kbuild_cflags when checking  for asm goto support Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> - 2017-06-19 17:30 +0200
    [PATCH 4.9 007/108] net: xilinx_emaclite: fix freezes due to unordered I/O Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-06-15 20:30 +0200
    [PATCH 4.9 016/108] ibmvnic: Initialize completion variables before starting work Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-06-15 20:30 +0200
    [PATCH 4.9 017/108] NET: mkiss: Fix panic Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-06-15 20:30 +0200
    [PATCH 4.9 004/108] netfilter: nf_conntrack_sip: fix wrong memory initialisation Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-06-15 20:30 +0200
    [PATCH 4.9 040/108] fscache: Clear outstanding writes when disabling a cookie Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-06-15 20:30 +0200
    [PATCH 4.9 066/108] nfs: Fix "Dont increment lock sequence ID after NFS4ERR_MOVED" Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-06-15 20:40 +0200
    Re: [PATCH 4.9 000/108] 4.9.33-stable review Shuah Khan <shuahkh@osg.samsung.com> - 2017-06-16 00:30 +0200
    Re: [PATCH 4.9 000/108] 4.9.33-stable review Guenter Roeck <linux@roeck-us.net> - 2017-06-16 02:50 +0200

#1667083 — [PATCH 4.9 000/108] 4.9.33-stable review

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-06-15 20:30 +0200
Subject[PATCH 4.9 000/108] 4.9.33-stable review
Message-ID<tSHdL-5vC-3@gated-at.bofh.it>
This is the start of the stable review cycle for the 4.9.33 release.
There are 108 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 Sat Jun 17 17:53:15 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.33-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.33-rc1

Dan Carpenter <dan.carpenter@oracle.com>
    sparc64: make string buffers large enough

Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    drm/i915: Always recompute watermarks when distrust_bios_wm is set, v2.

Ville Syrjälä <ville.syrjala@linux.intel.com>
    drm/i915: Workaround VLV/CHV DSI scanline counter hardware fail

Christian Borntraeger <borntraeger@de.ibm.com>
    s390/kvm: do not rely on the ILC on kvm host protection fauls

Max Filippov <jcmvbkbc@gmail.com>
    xtensa: don't use linux IRQ #0

Ram Amrani <Ram.Amrani@Cavium.com>
    RDMA/qedr: Return max inline data in QP query result

Ram Amrani <Ram.Amrani@Cavium.com>
    RDMA/qedr: Don't spam dmesg if QP is in error state

Ram Amrani <Ram.Amrani@Cavium.com>
    RDMA/qedr: Don't reset QP when queues aren't flushed

Ram Amrani <Ram.Amrani@Cavium.com>
    RDMA/qedr: Fix and simplify memory leak in PD alloc

Ram Amrani <Ram.Amrani@Cavium.com>
    RDMA/qedr: Dispatch port active event from qedr_add

Liping Zhang <zlpnobody@gmail.com>
    netfilter: nft_log: restrict the log prefix length to 127

Pablo Neira Ayuso <pablo@netfilter.org>
    netfilter: nf_tables: fix set->nelems counting with no NLM_F_EXCL

Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
    tipc: fix nametbl_lock soft lockup at node/link events

Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
    tipc: add subscription refcount to avoid invalid delete

Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
    tipc: fix connection refcount error

Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
    tipc: ignore requests when the connection state is not CONNECTED

Vineet Gupta <vgupta@synopsys.com>
    ARCv2: smp-boot: wake_flag polling by non-Masters needs to be uncached

Vineet Gupta <vgupta@synopsys.com>
    ARC: smp-boot: Decouple Non masters waiting API from jump to entry point

Stefan Hajnoczi <stefanha@redhat.com>
    vhost/vsock: handle vhost_vq_init_access() error

Don Zickus <dzickus@redhat.com>
    kernel/watchdog: prevent false hardlockup on overloaded system

Babu Moger <babu.moger@oracle.com>
    kernel/watchdog.c: move shared definitions to nmi.h

Babu Moger <babu.moger@oracle.com>
    kernel/watchdog.c: move hardlockup detector to separate file

Andrea Arcangeli <aarcange@redhat.com>
    userfaultfd: fix SIGBUS resulting from false rwsem wakeups

Eric Dumazet <edumazet@google.com>
    proc: add a schedule point in proc_pid_readdir()

Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    frv: add missing atomic64 operations

Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    frv: add atomic64_add_unless()

Coly Li <colyli@suse.de>
    romfs: use different way to generate fsid for BLOCK or MTD

Randy Dunlap <rdunlap@infradead.org>
    mn10300: fix build error of missing fpu_save()

Tony Lindgren <tony@atomide.com>
    usb: musb: Fix external abort on non-linefetch for musb_irq_work()

Xin Long <lucien.xin@gmail.com>
    sctp: sctp_addr_id2transport should verify the addr before looking up assoc

Xin Long <lucien.xin@gmail.com>
    sctp: sctp gso should set feature with NETIF_F_SG when calling skb_segment

Michael Chan <michael.chan@broadcom.com>
    bnxt_en: Fix RTNL lock usage on bnxt_get_port_module_status().

Michael Chan <michael.chan@broadcom.com>
    bnxt_en: Fix RTNL lock usage on bnxt_update_link().

Michael Chan <michael.chan@broadcom.com>
    bnxt_en: Enhance autoneg support.

Michael Chan <michael.chan@broadcom.com>
    bnxt_en: Fix bnxt_reset() in the slow path task.

John Crispin <john@phrozen.org>
    net-next: ethernet: mediatek: change the compatible string

hayeswang <hayeswang@realtek.com>
    r8152: avoid start_xmit to schedule napi when napi is disabled

hayeswang <hayeswang@realtek.com>
    r8152: fix rtl8152_post_reset function

hayeswang <hayeswang@realtek.com>
    r8152: re-schedule napi for tx

hayeswang <hayeswang@realtek.com>
    r8152: check rx after napi is enabled

hayeswang <hayeswang@realtek.com>
    r8152: avoid start_xmit to call napi_schedule during autosuspend

Parav Pandit <parav@mellanox.com>
    nvmet-rdma: Fix missing dma sync to nvme data structures

Chuck Lever <chuck.lever@oracle.com>
    nfs: Fix "Don't increment lock sequence ID after NFS4ERR_MOVED"

Kazuya Mizuguchi <kazuya.mizuguchi.ks@renesas.com>
    ravb: unmap descriptors when freeing rings

Y.C. Chen <yc_chen@aspeedtech.com>
    drm/ast: Fixed system hanged if disable P2A

Peter Ujfalusi <peter.ujfalusi@ti.com>
    drm/nouveau: Fix drm poll_helper handling

Lyude Paul <lyude@redhat.com>
    drm/nouveau: Don't enabling polling twice on runtime resume

Lyude Paul <lyude@redhat.com>
    drm/nouveau: Handle fbcon suspend/resume in seperate worker

Hans de Goede <hdegoede@redhat.com>
    drm/nouveau: Rename acpi_work to hpd_work

Hans de Goede <hdegoede@redhat.com>
    drm/nouveau: Intercept ACPI_VIDEO_NOTIFY_PROBE

Andreas Schultz <aschultz@tpip.net>
    gtp: add genl family modules alias

Sean Nyekjaer <sean.nyekjaer@prevas.dk>
    net: phy: micrel: add support for KSZ8795

Helge Deller <deller@gmx.de>
    parisc, parport_gsc: Fixes for printk continuation lines

Or Gerlitz <ogerlitz@mellanox.com>
    net/mlx5: Return EOPNOTSUPP when failing to get steering name-space

Or Gerlitz <ogerlitz@mellanox.com>
    net/mlx5: E-Switch, Err when retrieving steering name-space fails

Linus Torvalds <torvalds@linux-foundation.org>
    drm/i915: Check for NULL i915_vma in intel_unpin_fb_obj()

Alexey Khoroshilov <khoroshilov@ispras.ru>
    net: adaptec: starfire: add checks for dma mapping errors

Jisheng Zhang <jszhang@marvell.com>
    pinctrl: berlin-bg4ct: fix the value for "sd1a" of pin SCRD0_CRD_PRES

Daniel Vetter <daniel.vetter@ffwll.ch>
    drm: Don't race connector registration

Daniel Vetter <daniel.vetter@ffwll.ch>
    drm: prevent double-(un)registration for connectors

Hans Verkuil <hverkuil@xs4all.nl>
    cec: fix wrong last_la determination

Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    pinctrl: baytrail: Rectify debounce support (part 2)

Arseny Solokha <asolokha@kb.kras.ru>
    gianfar: synchronize DMA API usage by free_skb_rx_queue w/ gfar_new_page

Jack Morgenstein <jackm@dev.mellanox.co.il>
    net/mlx4_core: Avoid command timeouts during VF driver device shutdown

Ben Skeggs <bskeggs@redhat.com>
    drm/nouveau/fence/g84-: protect against concurrent access to semaphore buffers

Ben Skeggs <bskeggs@redhat.com>
    drm/nouveau: prevent userspace from deleting client object

Dimitris Michailidis <dmichail@google.com>
    ipv6: fix flow labels when the traffic class is non-0

David Howells <dhowells@redhat.com>
    FS-Cache: Initialise stores_lock in netfs cookie

David Howells <dhowells@redhat.com>
    fscache: Clear outstanding writes when disabling a cookie

David Howells <dhowells@redhat.com>
    fscache: Fix dead object requeue

Dimitris Michailidis <dmichail@google.com>
    net: fix ndo_features_check/ndo_fix_features comment ordering

Florian Fainelli <f.fainelli@gmail.com>
    net: phy: Fix PHY module checks and NULL deref in phy_attach_direct()

Mao Wenan <maowenan@huawei.com>
    net: phy: Fix lack of reference count on PHY driver

Stanislaw Gruszka <sgruszka@redhat.com>
    ethtool: do not vzalloc(0) on registers dump

Ard Biesheuvel <ard.biesheuvel@linaro.org>
    log2: make order_base_2() behave correctly on const input value zero

Peter Zijlstra <peterz@infradead.org>
    kasan: respect /proc/sys/kernel/traceoff_on_warning

Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    shmem: fix sleeping from atomic context

David Lin <dtwlin@google.com>
    jump label: pass kbuild_cflags when checking for asm goto support

Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    PM / runtime: Avoid false-positive warnings from might_sleep_if()

Arnd Bergmann <arnd@arndb.de>
    ARM: defconfigs: make NF_CT_PROTO_SCTP and NF_CT_PROTO_UDPLITE built-in

Linus Lüssing <linus.luessing@c0d3.blue>
    ipv6: Fix IPv6 packet loss in scenarios involving roaming + snooping switches

Alexey Kardashevskiy <aik@ozlabs.ru>
    vfio/spapr_tce: Set window when adding additional groups to container

Marcus Huewe <suse-tux@gmx.de>
    ipv6: addrconf: fix generation of new temporary addresses

Thanneeru Srinivasulu <tsrinivasulu@cavium.com>
    net: thunderx: Fix PHY autoneg for SGMII QLM mode

Luis R. Rodriguez <mcgrof@kernel.org>
    kernel/ucount.c: mark user_header with kmemleak_ignore()

Benjamin Herrenschmidt <benh@kernel.crashing.org>
    powerpc/powernv: Properly set "host-ipi" on IPIs

Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
    i2c: piix4: Fix request_region size

Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
    i2c: piix4: Request the SMBUS semaphore inside the mutex

Stefan Brüns <stefan.bruens@rwth-aachen.de>
    sierra_net: Add support for IPv6 and Dual-Stack Link Sense Indications

Stefan Brüns <stefan.bruens@rwth-aachen.de>
    sierra_net: Skip validating irrelevant fields for IDLE LSIs

Kejian Yan <yankejian@huawei.com>
    net: hns: Fix the device being used for dma mapping during TX

Ralf Baechle <ralf@linux-mips.org>
    NET: mkiss: Fix panic

Nathan Fontenot <nfont@linux.vnet.ibm.com>
    ibmvnic: Initialize completion variables before starting work

Nathan Fontenot <nfont@linux.vnet.ibm.com>
    ibmvnic: Call napi_disable instead of napi_enable in failure path

Ralf Baechle <ralf@linux-mips.org>
    NET: Fix /proc/net/arp for AX.25

Herbert Xu <herbert@gondor.apana.org.au>
    gfs2: Use rhashtable walk interface in glock_hash_walk

Herbert Xu <herbert@gondor.apana.org.au>
    tipc: Fix tipc_sk_reinit race conditions

Jonathan T. Leighton <jtleight@udel.edu>
    ipv6: Inhibit IPv4-mapped src address on the wire.

Jonathan T. Leighton <jtleight@udel.edu>
    ipv6: Handle IPv4-mapped src to in6addr_any dst.

Eric Dumazet <edumazet@google.com>
    tcp: tcp_probe: use spin_lock_bh()

Anssi Hannula <anssi.hannula@bitwise.fi>
    net: xilinx_emaclite: fix receive buffer overflow

Anssi Hannula <anssi.hannula@bitwise.fi>
    net: xilinx_emaclite: fix freezes due to unordered I/O

Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
    ibmvnic: Fix endian error when requesting device capabilities

Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
    ibmvnic: Fix endian errors in error reporting output

Christophe Leroy <christophe.leroy@c-s.fr>
    netfilter: nf_conntrack_sip: fix wrong memory initialisation

Richard <richard@aaazen.com>
    partitions/msdos: FreeBSD UFS2 file systems are not recognized

Imre Deak <imre.deak@intel.com>
    drm/i915: Prevent the system suspend complete optimization

Imre Deak <imre.deak@intel.com>
    PCI/PM: Add needs_resume flag to avoid suspend complete optimization


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

Diffstat:

 Makefile                                           |   6 +-
 arch/arc/kernel/head.S                             |  14 +-
 arch/arc/kernel/smp.c                              |  25 +-
 arch/arm/configs/ezx_defconfig                     |   4 +-
 arch/arm/configs/imote2_defconfig                  |   4 +-
 arch/frv/include/asm/atomic.h                      |  35 ++-
 arch/mn10300/include/asm/switch_to.h               |   2 +-
 arch/powerpc/sysdev/xics/icp-opal.c                |   6 +-
 arch/s390/kernel/entry.S                           |  19 +-
 arch/sparc/kernel/traps_64.c                       |   4 +-
 arch/xtensa/include/asm/irq.h                      |   3 +-
 arch/xtensa/kernel/irq.c                           |   5 -
 .../platforms/xtfpga/include/platform/hardware.h   |   6 +-
 arch/xtensa/platforms/xtfpga/setup.c               |  10 +-
 block/partitions/msdos.c                           |   2 +
 drivers/base/power/runtime.c                       |  11 +-
 drivers/gpu/drm/ast/ast_drv.h                      |   1 +
 drivers/gpu/drm/ast/ast_main.c                     | 157 ++++++------
 drivers/gpu/drm/ast/ast_post.c                     |  18 +-
 drivers/gpu/drm/drm_connector.c                    |  23 +-
 drivers/gpu/drm/drm_drv.c                          |   4 +
 drivers/gpu/drm/i915/i915_drv.c                    |   9 +
 drivers/gpu/drm/i915/intel_display.c               |  12 +
 drivers/gpu/drm/i915/intel_pm.c                    |   9 +
 drivers/gpu/drm/i915/intel_sprite.c                |  21 ++
 drivers/gpu/drm/nouveau/nouveau_display.c          |  64 ++++-
 drivers/gpu/drm/nouveau/nouveau_drm.c              |   5 +-
 drivers/gpu/drm/nouveau/nouveau_drv.h              |   8 +
 drivers/gpu/drm/nouveau/nouveau_fbcon.c            |  43 +++-
 drivers/gpu/drm/nouveau/nouveau_fence.h            |   1 +
 drivers/gpu/drm/nouveau/nouveau_usif.c             |   3 +-
 drivers/gpu/drm/nouveau/nv84_fence.c               |   6 +
 drivers/i2c/busses/i2c-piix4.c                     |  14 +-
 drivers/infiniband/hw/qedr/main.c                  |  20 +-
 drivers/infiniband/hw/qedr/qedr.h                  |   5 +
 drivers/infiniband/hw/qedr/verbs.c                 |  43 +++-
 drivers/irqchip/irq-xtensa-mx.c                    |   2 +-
 drivers/irqchip/irq-xtensa-pic.c                   |   2 +-
 drivers/net/ethernet/adaptec/starfire.c            |  45 +++-
 drivers/net/ethernet/broadcom/bnxt/bnxt.c          |  77 ++++--
 drivers/net/ethernet/broadcom/bnxt/bnxt.h          |   1 +
 drivers/net/ethernet/cavium/thunder/thunder_bgx.c  | 108 +++++++-
 drivers/net/ethernet/cavium/thunder/thunder_bgx.h  |   5 +
 drivers/net/ethernet/freescale/gianfar.c           |   4 +-
 drivers/net/ethernet/hisilicon/hns/hns_enet.c      |   2 +-
 drivers/net/ethernet/ibm/ibmvnic.c                 |  31 +--
 drivers/net/ethernet/mediatek/mtk_eth_soc.c        |   2 +-
 drivers/net/ethernet/mellanox/mlx4/catas.c         |   2 +-
 drivers/net/ethernet/mellanox/mlx4/intf.c          |  12 +
 drivers/net/ethernet/mellanox/mlx4/mlx4.h          |   1 +
 drivers/net/ethernet/mellanox/mlx5/core/en_fs.c    |   2 +-
 drivers/net/ethernet/mellanox/mlx5/core/eswitch.c  |   6 +-
 .../ethernet/mellanox/mlx5/core/eswitch_offloads.c |   5 +-
 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c  |   2 +-
 drivers/net/ethernet/renesas/ravb_main.c           | 112 +++++----
 drivers/net/ethernet/xilinx/xilinx_emaclite.c      | 126 +++++-----
 drivers/net/gtp.c                                  |   1 +
 drivers/net/hamradio/mkiss.c                       |   4 +-
 drivers/net/phy/micrel.c                           |  14 ++
 drivers/net/phy/phy_device.c                       |  22 +-
 drivers/net/usb/r8152.c                            |  32 ++-
 drivers/net/usb/sierra_net.c                       | 111 +++++---
 drivers/nvme/target/rdma.c                         |  17 ++
 drivers/parport/parport_gsc.c                      |   8 +-
 drivers/pci/pci.c                                  |   3 +-
 drivers/pinctrl/berlin/berlin-bg4ct.c              |   2 +-
 drivers/pinctrl/intel/pinctrl-baytrail.c           |  12 +-
 drivers/staging/media/cec/cec-adap.c               |   2 +-
 drivers/usb/musb/musb_core.c                       |  11 +
 drivers/vfio/vfio_iommu_spapr_tce.c                |  22 ++
 drivers/vhost/vsock.c                              |  13 +-
 fs/fscache/cookie.c                                |   5 +
 fs/fscache/netfs.c                                 |   1 +
 fs/fscache/object.c                                |  32 ++-
 fs/gfs2/glock.c                                    |  28 ++-
 fs/nfs/nfs4state.c                                 |   1 +
 fs/proc/base.c                                     |   2 +
 fs/romfs/super.c                                   |  23 +-
 fs/userfaultfd.c                                   |  37 ++-
 include/drm/drmP.h                                 |   1 +
 include/drm/drm_connector.h                        |  16 +-
 include/linux/fscache-cache.h                      |   1 +
 include/linux/log2.h                               |  13 +-
 include/linux/micrel_phy.h                         |   2 +
 include/linux/netdevice.h                          |  29 +--
 include/linux/nmi.h                                |  25 ++
 include/linux/pci.h                                |   5 +
 include/net/ipv6.h                                 |   5 +
 include/uapi/linux/netfilter/nf_log.h              |   2 +
 kernel/Makefile                                    |   1 +
 kernel/ucount.c                                    |   3 +-
 kernel/watchdog.c                                  | 278 ++-------------------
 kernel/watchdog_hld.c                              | 230 +++++++++++++++++
 mm/kasan/report.c                                  |   3 +
 mm/shmem.c                                         |  11 +-
 net/core/ethtool.c                                 |   9 +-
 net/ipv4/arp.c                                     |  12 +-
 net/ipv4/tcp_probe.c                               |   4 +-
 net/ipv6/addrconf.c                                |  16 +-
 net/ipv6/datagram.c                                |  14 +-
 net/ipv6/ip6_output.c                              |   3 +
 net/ipv6/tcp_ipv6.c                                |  11 +-
 net/ipv6/udp.c                                     |   4 +
 net/netfilter/nf_conntrack_sip.c                   |   2 -
 net/netfilter/nf_log.c                             |   1 -
 net/netfilter/nf_tables_api.c                      |  16 +-
 net/netfilter/nft_log.c                            |   3 +-
 net/sctp/offload.c                                 |   2 +-
 net/sctp/socket.c                                  |   6 +-
 net/tipc/net.c                                     |   4 +
 net/tipc/node.c                                    |   9 +-
 net/tipc/server.c                                  |  32 +--
 net/tipc/socket.c                                  |  30 ++-
 net/tipc/subscr.c                                  | 124 +++++----
 net/tipc/subscr.h                                  |   1 +
 115 files changed, 1691 insertions(+), 809 deletions(-)

[toc] | [next] | [standalone]


#1667085 — [PATCH 4.9 021/108] i2c: piix4: Request the SMBUS semaphore inside the mutex

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-06-15 20:30 +0200
Subject[PATCH 4.9 021/108] i2c: piix4: Request the SMBUS semaphore inside the mutex
Message-ID<tSHGP-5Wn-43@gated-at.bofh.it>
In reply to#1667083
4.9-stable review patch.  If anyone has any objections, please let me know.

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

From: Ricardo Ribalda <ricardo.ribalda@gmail.com>


[ Upstream commit bbb27fc33d44e7b8d96369810654df4ee1837566 ]

SMBSLVCNT must be protected with the piix4_mutex_sb800 in order to avoid
multiple buses accessing to the semaphore at the same time.

Fixes: 701dc207bf55 ("i2c: piix4: Avoid race conditions with IMC")
Reported-by: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/i2c/busses/i2c-piix4.c |   12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

--- a/drivers/i2c/busses/i2c-piix4.c
+++ b/drivers/i2c/busses/i2c-piix4.c
@@ -592,6 +592,8 @@ static s32 piix4_access_sb800(struct i2c
 	u8 port;
 	int retval;
 
+	mutex_lock(&piix4_mutex_sb800);
+
 	/* Request the SMBUS semaphore, avoid conflicts with the IMC */
 	smbslvcnt  = inb_p(SMBSLVCNT);
 	do {
@@ -605,10 +607,10 @@ static s32 piix4_access_sb800(struct i2c
 		usleep_range(1000, 2000);
 	} while (--retries);
 	/* SMBus is still owned by the IMC, we give up */
-	if (!retries)
+	if (!retries) {
+		mutex_unlock(&piix4_mutex_sb800);
 		return -EBUSY;
-
-	mutex_lock(&piix4_mutex_sb800);
+	}
 
 	outb_p(piix4_port_sel_sb800, SB800_PIIX4_SMB_IDX);
 	smba_en_lo = inb_p(SB800_PIIX4_SMB_IDX + 1);
@@ -623,11 +625,11 @@ static s32 piix4_access_sb800(struct i2c
 
 	outb_p(smba_en_lo, SB800_PIIX4_SMB_IDX + 1);
 
-	mutex_unlock(&piix4_mutex_sb800);
-
 	/* Release the semaphore */
 	outb_p(smbslvcnt | 0x20, SMBSLVCNT);
 
+	mutex_unlock(&piix4_mutex_sb800);
+
 	return retval;
 }
 

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


#1667086 — [PATCH 4.9 006/108] ibmvnic: Fix endian error when requesting device capabilities

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-06-15 20:30 +0200
Subject[PATCH 4.9 006/108] ibmvnic: Fix endian error when requesting device capabilities
Message-ID<tSHGP-5Wn-47@gated-at.bofh.it>
In reply to#1667083
4.9-stable review patch.  If anyone has any objections, please let me know.

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

From: Thomas Falcon <tlfalcon@linux.vnet.ibm.com>


[ Upstream commit 28f4d16570dcf440e54a4d72666d5be452f27d0e ]

When a vNIC client driver requests a faulty device setting, the
server returns an acceptable value for the client to request.
This 64 bit value was incorrectly being swapped as a 32 bit value,
resulting in loss of data. This patch corrects that by using
the 64 bit swap function.

Signed-off-by: Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/ethernet/ibm/ibmvnic.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -2400,10 +2400,10 @@ static void handle_request_cap_rsp(union
 	case PARTIALSUCCESS:
 		dev_info(dev, "req=%lld, rsp=%ld in %s queue, retrying.\n",
 			 *req_value,
-			 (long int)be32_to_cpu(crq->request_capability_rsp.
+			 (long int)be64_to_cpu(crq->request_capability_rsp.
 					       number), name);
 		release_sub_crqs_no_irqs(adapter);
-		*req_value = be32_to_cpu(crq->request_capability_rsp.number);
+		*req_value = be64_to_cpu(crq->request_capability_rsp.number);
 		init_sub_crqs(adapter, 1);
 		return;
 	default:

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


#1667089 — [PATCH 4.9 034/108] log2: make order_base_2() behave correctly on const input value zero

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-06-15 20:30 +0200
Subject[PATCH 4.9 034/108] log2: make order_base_2() behave correctly on const input value zero
Message-ID<tSHGP-5Wn-49@gated-at.bofh.it>
In reply to#1667083
4.9-stable review patch.  If anyone has any objections, please let me know.

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

From: Ard Biesheuvel <ard.biesheuvel@linaro.org>

commit 29905b52fad0854351f57bab867647e4982285bf upstream.

The function order_base_2() is defined (according to the comment block)
as returning zero on input zero, but subsequently passes the input into
roundup_pow_of_two(), which is explicitly undefined for input zero.

This has gone unnoticed until now, but optimization passes in GCC 7 may
produce constant folded function instances where a constant value of
zero is passed into order_base_2(), resulting in link errors against the
deliberately undefined '____ilog2_NaN'.

So update order_base_2() to adhere to its own documented interface.

[ See

     http://marc.info/?l=linux-kernel&m=147672952517795&w=2

  and follow-up discussion for more background. The gcc "optimization
  pass" is really just broken, but now the GCC trunk problem seems to
  have escaped out of just specially built daily images, so we need to
  work around it in mainline.    - Linus ]

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 include/linux/log2.h |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

--- a/include/linux/log2.h
+++ b/include/linux/log2.h
@@ -194,6 +194,17 @@ unsigned long __rounddown_pow_of_two(uns
  *  ... and so on.
  */
 
-#define order_base_2(n) ilog2(roundup_pow_of_two(n))
+static inline __attribute_const__
+int __order_base_2(unsigned long n)
+{
+	return n > 1 ? ilog2(n - 1) + 1 : 0;
+}
 
+#define order_base_2(n)				\
+(						\
+	__builtin_constant_p(n) ? (		\
+		((n) == 0 || (n) == 1) ? 0 :	\
+		ilog2((n) - 1) + 1) :		\
+	__order_base_2(n)			\
+)
 #endif /* _LINUX_LOG2_H */

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


#1667090 — [PATCH 4.9 010/108] ipv6: Handle IPv4-mapped src to in6addr_any dst.

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-06-15 20:30 +0200
Subject[PATCH 4.9 010/108] ipv6: Handle IPv4-mapped src to in6addr_any dst.
Message-ID<tSHGP-5Wn-53@gated-at.bofh.it>
In reply to#1667083
4.9-stable review patch.  If anyone has any objections, please let me know.

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

From: "Jonathan T. Leighton" <jtleight@udel.edu>


[ Upstream commit 052d2369d1b479cdbbe020fdd6d057d3c342db74 ]

This patch adds a check on the type of the source address for the case
where the destination address is in6addr_any. If the source is an
IPv4-mapped IPv6 source address, the destination is changed to
::ffff:127.0.0.1, and otherwise the destination is changed to ::1. This
is done in three locations to handle UDP calls to either connect() or
sendmsg() and TCP calls to connect(). Note that udpv6_sendmsg() delays
handling an in6addr_any destination until very late, so the patch only
needs to handle the case where the source is an IPv4-mapped IPv6
address.

Signed-off-by: Jonathan T. Leighton <jtleight@udel.edu>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/ipv6/datagram.c |   14 +++++++++-----
 net/ipv6/tcp_ipv6.c |   11 ++++++++---
 net/ipv6/udp.c      |    4 ++++
 3 files changed, 21 insertions(+), 8 deletions(-)

--- a/net/ipv6/datagram.c
+++ b/net/ipv6/datagram.c
@@ -166,18 +166,22 @@ int __ip6_datagram_connect(struct sock *
 	if (np->sndflow)
 		fl6_flowlabel = usin->sin6_flowinfo & IPV6_FLOWINFO_MASK;
 
-	addr_type = ipv6_addr_type(&usin->sin6_addr);
-
-	if (addr_type == IPV6_ADDR_ANY) {
+	if (ipv6_addr_any(&usin->sin6_addr)) {
 		/*
 		 *	connect to self
 		 */
-		usin->sin6_addr.s6_addr[15] = 0x01;
+		if (ipv6_addr_v4mapped(&sk->sk_v6_rcv_saddr))
+			ipv6_addr_set_v4mapped(htonl(INADDR_LOOPBACK),
+					       &usin->sin6_addr);
+		else
+			usin->sin6_addr = in6addr_loopback;
 	}
 
+	addr_type = ipv6_addr_type(&usin->sin6_addr);
+
 	daddr = &usin->sin6_addr;
 
-	if (addr_type == IPV6_ADDR_MAPPED) {
+	if (addr_type & IPV6_ADDR_MAPPED) {
 		struct sockaddr_in sin;
 
 		if (__ipv6_only_sock(sk)) {
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -148,8 +148,13 @@ static int tcp_v6_connect(struct sock *s
 	 *	connect() to INADDR_ANY means loopback (BSD'ism).
 	 */
 
-	if (ipv6_addr_any(&usin->sin6_addr))
-		usin->sin6_addr.s6_addr[15] = 0x1;
+	if (ipv6_addr_any(&usin->sin6_addr)) {
+		if (ipv6_addr_v4mapped(&sk->sk_v6_rcv_saddr))
+			ipv6_addr_set_v4mapped(htonl(INADDR_LOOPBACK),
+					       &usin->sin6_addr);
+		else
+			usin->sin6_addr = in6addr_loopback;
+	}
 
 	addr_type = ipv6_addr_type(&usin->sin6_addr);
 
@@ -188,7 +193,7 @@ static int tcp_v6_connect(struct sock *s
 	 *	TCP over IPv4
 	 */
 
-	if (addr_type == IPV6_ADDR_MAPPED) {
+	if (addr_type & IPV6_ADDR_MAPPED) {
 		u32 exthdrlen = icsk->icsk_ext_hdr_len;
 		struct sockaddr_in sin;
 
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -1049,6 +1049,10 @@ int udpv6_sendmsg(struct sock *sk, struc
 			if (addr_len < SIN6_LEN_RFC2133)
 				return -EINVAL;
 			daddr = &sin6->sin6_addr;
+			if (ipv6_addr_any(daddr) &&
+			    ipv6_addr_v4mapped(&np->saddr))
+				ipv6_addr_set_v4mapped(htonl(INADDR_LOOPBACK),
+						       daddr);
 			break;
 		case AF_INET:
 			goto do_udp_sendmsg;

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


#1667091 — [PATCH 4.9 031/108] jump label: pass kbuild_cflags when checking for asm goto support

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-06-15 20:30 +0200
Subject[PATCH 4.9 031/108] jump label: pass kbuild_cflags when checking for asm goto support
Message-ID<tSHGP-5Wn-55@gated-at.bofh.it>
In reply to#1667083
4.9-stable review patch.  If anyone has any objections, please let me know.

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

From: David Lin <dtwlin@google.com>


[ Upstream commit 35f860f9ba6aac56cc38e8b18916d833a83f1157 ]

Some versions of ARM GCC compiler such as Android toolchain throws in a
'-fpic' flag by default.  This causes the gcc-goto check script to fail
although some config would have '-fno-pic' flag in the KBUILD_CFLAGS.

This patch passes the KBUILD_CFLAGS to the check script so that the
script does not rely on the default config from different compilers.

Link: http://lkml.kernel.org/r/20170120234329.78868-1-dtwlin@google.com
Signed-off-by: David Lin <dtwlin@google.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Michal Marek <mmarek@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 Makefile |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/Makefile
+++ b/Makefile
@@ -797,7 +797,7 @@ KBUILD_CFLAGS   += $(call cc-option,-Wer
 KBUILD_ARFLAGS := $(call ar-option,D)
 
 # check for 'asm goto'
-ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC)), y)
+ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
 	KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
 	KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
 endif

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


#1669278 — Re: [PATCH 4.9 031/108] jump label: pass kbuild_cflags when checking for asm goto support

FromGleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
Date2017-06-19 17:30 +0200
SubjectRe: [PATCH 4.9 031/108] jump label: pass kbuild_cflags when checking for asm goto support
Message-ID<tU6MR-4pB-97@gated-at.bofh.it>
In reply to#1667091
On Thu, Jun 15, 2017 at 07:52:37PM +0200, Greg Kroah-Hartman wrote:
> 4.9-stable review patch.  If anyone has any objections, please let me know.
> 
> ------------------
> 
> From: David Lin <dtwlin@google.com>
> 
> 
> [ Upstream commit 35f860f9ba6aac56cc38e8b18916d833a83f1157 ]

This commit introduced a regression which was fixed in
7292ae3d5a18fb922be496e6bb687647193569b4.
Backport the fix too, please.

As long as there is no gcc-plugin support in 4.4, 35f860f9ba6a does not
break anything there, AFAICS.

> Some versions of ARM GCC compiler such as Android toolchain throws in a
> '-fpic' flag by default.  This causes the gcc-goto check script to fail
> although some config would have '-fno-pic' flag in the KBUILD_CFLAGS.
> 
> This patch passes the KBUILD_CFLAGS to the check script so that the
> script does not rely on the default config from different compilers.
> 
> Link: http://lkml.kernel.org/r/20170120234329.78868-1-dtwlin@google.com
> Signed-off-by: David Lin <dtwlin@google.com>
> Acked-by: Steven Rostedt <rostedt@goodmis.org>
> Cc: Michal Marek <mmarek@suse.com>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---
>  Makefile |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> --- a/Makefile
> +++ b/Makefile
> @@ -797,7 +797,7 @@ KBUILD_CFLAGS   += $(call cc-option,-Wer
>  KBUILD_ARFLAGS := $(call ar-option,D)
>  
>  # check for 'asm goto'
> -ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC)), y)
> +ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
>  	KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
>  	KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
>  endif
> 

-- 
glebfm

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


#1667093 — [PATCH 4.9 007/108] net: xilinx_emaclite: fix freezes due to unordered I/O

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-06-15 20:30 +0200
Subject[PATCH 4.9 007/108] net: xilinx_emaclite: fix freezes due to unordered I/O
Message-ID<tSHGP-5Wn-63@gated-at.bofh.it>
In reply to#1667083
4.9-stable review patch.  If anyone has any objections, please let me know.

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

From: Anssi Hannula <anssi.hannula@bitwise.fi>


[ Upstream commit acf138f1b00bdd1b7cd9894562ed0c2a1670888e ]

The xilinx_emaclite uses __raw_writel and __raw_readl for register
accesses. Those functions do not imply any kind of memory barriers and
they may be reordered.

The driver does not seem to take that into account, though, and the
driver does not satisfy the ordering requirements of the hardware.
For clear examples, see xemaclite_mdio_write() and xemaclite_mdio_read()
which try to set MDIO address before initiating the transaction.

I'm seeing system freezes with the driver with GCC 5.4 and current
Linux kernels on Zynq-7000 SoC immediately when trying to use the
interface.

In commit 123c1407af87 ("net: emaclite: Do not use microblaze and ppc
IO functions") the driver was switched from non-generic
in_be32/out_be32 (memory barriers, big endian) to
__raw_readl/__raw_writel (no memory barriers, native endian), so
apparently the device follows system endianness and the driver was
originally written with the assumption of memory barriers.

Rather than try to hunt for each case of missing barrier, just switch
the driver to use iowrite32/ioread32/iowrite32be/ioread32be depending
on endianness instead.

Tested on little-endian Zynq-7000 ARM SoC FPGA.

Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
Fixes: 123c1407af87 ("net: emaclite: Do not use microblaze and ppc IO
functions")
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/ethernet/xilinx/xilinx_emaclite.c |  116 +++++++++++++-------------
 1 file changed, 62 insertions(+), 54 deletions(-)

--- a/drivers/net/ethernet/xilinx/xilinx_emaclite.c
+++ b/drivers/net/ethernet/xilinx/xilinx_emaclite.c
@@ -100,6 +100,14 @@
 /* BUFFER_ALIGN(adr) calculates the number of bytes to the next alignment. */
 #define BUFFER_ALIGN(adr) ((ALIGNMENT - ((u32) adr)) % ALIGNMENT)
 
+#ifdef __BIG_ENDIAN
+#define xemaclite_readl		ioread32be
+#define xemaclite_writel	iowrite32be
+#else
+#define xemaclite_readl		ioread32
+#define xemaclite_writel	iowrite32
+#endif
+
 /**
  * struct net_local - Our private per device data
  * @ndev:		instance of the network device
@@ -156,15 +164,15 @@ static void xemaclite_enable_interrupts(
 	u32 reg_data;
 
 	/* Enable the Tx interrupts for the first Buffer */
-	reg_data = __raw_readl(drvdata->base_addr + XEL_TSR_OFFSET);
-	__raw_writel(reg_data | XEL_TSR_XMIT_IE_MASK,
-		     drvdata->base_addr + XEL_TSR_OFFSET);
+	reg_data = xemaclite_readl(drvdata->base_addr + XEL_TSR_OFFSET);
+	xemaclite_writel(reg_data | XEL_TSR_XMIT_IE_MASK,
+			 drvdata->base_addr + XEL_TSR_OFFSET);
 
 	/* Enable the Rx interrupts for the first buffer */
-	__raw_writel(XEL_RSR_RECV_IE_MASK, drvdata->base_addr + XEL_RSR_OFFSET);
+	xemaclite_writel(XEL_RSR_RECV_IE_MASK, drvdata->base_addr + XEL_RSR_OFFSET);
 
 	/* Enable the Global Interrupt Enable */
-	__raw_writel(XEL_GIER_GIE_MASK, drvdata->base_addr + XEL_GIER_OFFSET);
+	xemaclite_writel(XEL_GIER_GIE_MASK, drvdata->base_addr + XEL_GIER_OFFSET);
 }
 
 /**
@@ -179,17 +187,17 @@ static void xemaclite_disable_interrupts
 	u32 reg_data;
 
 	/* Disable the Global Interrupt Enable */
-	__raw_writel(XEL_GIER_GIE_MASK, drvdata->base_addr + XEL_GIER_OFFSET);
+	xemaclite_writel(XEL_GIER_GIE_MASK, drvdata->base_addr + XEL_GIER_OFFSET);
 
 	/* Disable the Tx interrupts for the first buffer */
-	reg_data = __raw_readl(drvdata->base_addr + XEL_TSR_OFFSET);
-	__raw_writel(reg_data & (~XEL_TSR_XMIT_IE_MASK),
-		     drvdata->base_addr + XEL_TSR_OFFSET);
+	reg_data = xemaclite_readl(drvdata->base_addr + XEL_TSR_OFFSET);
+	xemaclite_writel(reg_data & (~XEL_TSR_XMIT_IE_MASK),
+			 drvdata->base_addr + XEL_TSR_OFFSET);
 
 	/* Disable the Rx interrupts for the first buffer */
-	reg_data = __raw_readl(drvdata->base_addr + XEL_RSR_OFFSET);
-	__raw_writel(reg_data & (~XEL_RSR_RECV_IE_MASK),
-		     drvdata->base_addr + XEL_RSR_OFFSET);
+	reg_data = xemaclite_readl(drvdata->base_addr + XEL_RSR_OFFSET);
+	xemaclite_writel(reg_data & (~XEL_RSR_RECV_IE_MASK),
+			 drvdata->base_addr + XEL_RSR_OFFSET);
 }
 
 /**
@@ -321,7 +329,7 @@ static int xemaclite_send_data(struct ne
 		byte_count = ETH_FRAME_LEN;
 
 	/* Check if the expected buffer is available */
-	reg_data = __raw_readl(addr + XEL_TSR_OFFSET);
+	reg_data = xemaclite_readl(addr + XEL_TSR_OFFSET);
 	if ((reg_data & (XEL_TSR_XMIT_BUSY_MASK |
 	     XEL_TSR_XMIT_ACTIVE_MASK)) == 0) {
 
@@ -334,7 +342,7 @@ static int xemaclite_send_data(struct ne
 
 		addr = (void __iomem __force *)((u32 __force)addr ^
 						 XEL_BUFFER_OFFSET);
-		reg_data = __raw_readl(addr + XEL_TSR_OFFSET);
+		reg_data = xemaclite_readl(addr + XEL_TSR_OFFSET);
 
 		if ((reg_data & (XEL_TSR_XMIT_BUSY_MASK |
 		     XEL_TSR_XMIT_ACTIVE_MASK)) != 0)
@@ -345,16 +353,16 @@ static int xemaclite_send_data(struct ne
 	/* Write the frame to the buffer */
 	xemaclite_aligned_write(data, (u32 __force *) addr, byte_count);
 
-	__raw_writel((byte_count & XEL_TPLR_LENGTH_MASK),
-		     addr + XEL_TPLR_OFFSET);
+	xemaclite_writel((byte_count & XEL_TPLR_LENGTH_MASK),
+			 addr + XEL_TPLR_OFFSET);
 
 	/* Update the Tx Status Register to indicate that there is a
 	 * frame to send. Set the XEL_TSR_XMIT_ACTIVE_MASK flag which
 	 * is used by the interrupt handler to check whether a frame
 	 * has been transmitted */
-	reg_data = __raw_readl(addr + XEL_TSR_OFFSET);
+	reg_data = xemaclite_readl(addr + XEL_TSR_OFFSET);
 	reg_data |= (XEL_TSR_XMIT_BUSY_MASK | XEL_TSR_XMIT_ACTIVE_MASK);
-	__raw_writel(reg_data, addr + XEL_TSR_OFFSET);
+	xemaclite_writel(reg_data, addr + XEL_TSR_OFFSET);
 
 	return 0;
 }
@@ -379,7 +387,7 @@ static u16 xemaclite_recv_data(struct ne
 	addr = (drvdata->base_addr + drvdata->next_rx_buf_to_use);
 
 	/* Verify which buffer has valid data */
-	reg_data = __raw_readl(addr + XEL_RSR_OFFSET);
+	reg_data = xemaclite_readl(addr + XEL_RSR_OFFSET);
 
 	if ((reg_data & XEL_RSR_RECV_DONE_MASK) == XEL_RSR_RECV_DONE_MASK) {
 		if (drvdata->rx_ping_pong != 0)
@@ -396,14 +404,14 @@ static u16 xemaclite_recv_data(struct ne
 			return 0;	/* No data was available */
 
 		/* Verify that buffer has valid data */
-		reg_data = __raw_readl(addr + XEL_RSR_OFFSET);
+		reg_data = xemaclite_readl(addr + XEL_RSR_OFFSET);
 		if ((reg_data & XEL_RSR_RECV_DONE_MASK) !=
 		     XEL_RSR_RECV_DONE_MASK)
 			return 0;	/* No data was available */
 	}
 
 	/* Get the protocol type of the ethernet frame that arrived */
-	proto_type = ((ntohl(__raw_readl(addr + XEL_HEADER_OFFSET +
+	proto_type = ((ntohl(xemaclite_readl(addr + XEL_HEADER_OFFSET +
 			XEL_RXBUFF_OFFSET)) >> XEL_HEADER_SHIFT) &
 			XEL_RPLR_LENGTH_MASK);
 
@@ -412,7 +420,7 @@ static u16 xemaclite_recv_data(struct ne
 	if (proto_type > (ETH_FRAME_LEN + ETH_FCS_LEN)) {
 
 		if (proto_type == ETH_P_IP) {
-			length = ((ntohl(__raw_readl(addr +
+			length = ((ntohl(xemaclite_readl(addr +
 					XEL_HEADER_IP_LENGTH_OFFSET +
 					XEL_RXBUFF_OFFSET)) >>
 					XEL_HEADER_SHIFT) &
@@ -434,9 +442,9 @@ static u16 xemaclite_recv_data(struct ne
 				data, length);
 
 	/* Acknowledge the frame */
-	reg_data = __raw_readl(addr + XEL_RSR_OFFSET);
+	reg_data = xemaclite_readl(addr + XEL_RSR_OFFSET);
 	reg_data &= ~XEL_RSR_RECV_DONE_MASK;
-	__raw_writel(reg_data, addr + XEL_RSR_OFFSET);
+	xemaclite_writel(reg_data, addr + XEL_RSR_OFFSET);
 
 	return length;
 }
@@ -463,14 +471,14 @@ static void xemaclite_update_address(str
 
 	xemaclite_aligned_write(address_ptr, (u32 __force *) addr, ETH_ALEN);
 
-	__raw_writel(ETH_ALEN, addr + XEL_TPLR_OFFSET);
+	xemaclite_writel(ETH_ALEN, addr + XEL_TPLR_OFFSET);
 
 	/* Update the MAC address in the EmacLite */
-	reg_data = __raw_readl(addr + XEL_TSR_OFFSET);
-	__raw_writel(reg_data | XEL_TSR_PROG_MAC_ADDR, addr + XEL_TSR_OFFSET);
+	reg_data = xemaclite_readl(addr + XEL_TSR_OFFSET);
+	xemaclite_writel(reg_data | XEL_TSR_PROG_MAC_ADDR, addr + XEL_TSR_OFFSET);
 
 	/* Wait for EmacLite to finish with the MAC address update */
-	while ((__raw_readl(addr + XEL_TSR_OFFSET) &
+	while ((xemaclite_readl(addr + XEL_TSR_OFFSET) &
 		XEL_TSR_PROG_MAC_ADDR) != 0)
 		;
 }
@@ -640,32 +648,32 @@ static irqreturn_t xemaclite_interrupt(i
 	u32 tx_status;
 
 	/* Check if there is Rx Data available */
-	if ((__raw_readl(base_addr + XEL_RSR_OFFSET) &
+	if ((xemaclite_readl(base_addr + XEL_RSR_OFFSET) &
 			 XEL_RSR_RECV_DONE_MASK) ||
-	    (__raw_readl(base_addr + XEL_BUFFER_OFFSET + XEL_RSR_OFFSET)
+	    (xemaclite_readl(base_addr + XEL_BUFFER_OFFSET + XEL_RSR_OFFSET)
 			 & XEL_RSR_RECV_DONE_MASK))
 
 		xemaclite_rx_handler(dev);
 
 	/* Check if the Transmission for the first buffer is completed */
-	tx_status = __raw_readl(base_addr + XEL_TSR_OFFSET);
+	tx_status = xemaclite_readl(base_addr + XEL_TSR_OFFSET);
 	if (((tx_status & XEL_TSR_XMIT_BUSY_MASK) == 0) &&
 		(tx_status & XEL_TSR_XMIT_ACTIVE_MASK) != 0) {
 
 		tx_status &= ~XEL_TSR_XMIT_ACTIVE_MASK;
-		__raw_writel(tx_status, base_addr + XEL_TSR_OFFSET);
+		xemaclite_writel(tx_status, base_addr + XEL_TSR_OFFSET);
 
 		tx_complete = true;
 	}
 
 	/* Check if the Transmission for the second buffer is completed */
-	tx_status = __raw_readl(base_addr + XEL_BUFFER_OFFSET + XEL_TSR_OFFSET);
+	tx_status = xemaclite_readl(base_addr + XEL_BUFFER_OFFSET + XEL_TSR_OFFSET);
 	if (((tx_status & XEL_TSR_XMIT_BUSY_MASK) == 0) &&
 		(tx_status & XEL_TSR_XMIT_ACTIVE_MASK) != 0) {
 
 		tx_status &= ~XEL_TSR_XMIT_ACTIVE_MASK;
-		__raw_writel(tx_status, base_addr + XEL_BUFFER_OFFSET +
-			     XEL_TSR_OFFSET);
+		xemaclite_writel(tx_status, base_addr + XEL_BUFFER_OFFSET +
+				 XEL_TSR_OFFSET);
 
 		tx_complete = true;
 	}
@@ -698,7 +706,7 @@ static int xemaclite_mdio_wait(struct ne
 	/* wait for the MDIO interface to not be busy or timeout
 	   after some time.
 	*/
-	while (__raw_readl(lp->base_addr + XEL_MDIOCTRL_OFFSET) &
+	while (xemaclite_readl(lp->base_addr + XEL_MDIOCTRL_OFFSET) &
 			XEL_MDIOCTRL_MDIOSTS_MASK) {
 		if (time_before_eq(end, jiffies)) {
 			WARN_ON(1);
@@ -734,17 +742,17 @@ static int xemaclite_mdio_read(struct mi
 	 * MDIO Address register. Set the Status bit in the MDIO Control
 	 * register to start a MDIO read transaction.
 	 */
-	ctrl_reg = __raw_readl(lp->base_addr + XEL_MDIOCTRL_OFFSET);
-	__raw_writel(XEL_MDIOADDR_OP_MASK |
-		     ((phy_id << XEL_MDIOADDR_PHYADR_SHIFT) | reg),
-		     lp->base_addr + XEL_MDIOADDR_OFFSET);
-	__raw_writel(ctrl_reg | XEL_MDIOCTRL_MDIOSTS_MASK,
-		     lp->base_addr + XEL_MDIOCTRL_OFFSET);
+	ctrl_reg = xemaclite_readl(lp->base_addr + XEL_MDIOCTRL_OFFSET);
+	xemaclite_writel(XEL_MDIOADDR_OP_MASK |
+			 ((phy_id << XEL_MDIOADDR_PHYADR_SHIFT) | reg),
+			 lp->base_addr + XEL_MDIOADDR_OFFSET);
+	xemaclite_writel(ctrl_reg | XEL_MDIOCTRL_MDIOSTS_MASK,
+			 lp->base_addr + XEL_MDIOCTRL_OFFSET);
 
 	if (xemaclite_mdio_wait(lp))
 		return -ETIMEDOUT;
 
-	rc = __raw_readl(lp->base_addr + XEL_MDIORD_OFFSET);
+	rc = xemaclite_readl(lp->base_addr + XEL_MDIORD_OFFSET);
 
 	dev_dbg(&lp->ndev->dev,
 		"xemaclite_mdio_read(phy_id=%i, reg=%x) == %x\n",
@@ -781,13 +789,13 @@ static int xemaclite_mdio_write(struct m
 	 * Data register. Finally, set the Status bit in the MDIO Control
 	 * register to start a MDIO write transaction.
 	 */
-	ctrl_reg = __raw_readl(lp->base_addr + XEL_MDIOCTRL_OFFSET);
-	__raw_writel(~XEL_MDIOADDR_OP_MASK &
-		     ((phy_id << XEL_MDIOADDR_PHYADR_SHIFT) | reg),
-		     lp->base_addr + XEL_MDIOADDR_OFFSET);
-	__raw_writel(val, lp->base_addr + XEL_MDIOWR_OFFSET);
-	__raw_writel(ctrl_reg | XEL_MDIOCTRL_MDIOSTS_MASK,
-		     lp->base_addr + XEL_MDIOCTRL_OFFSET);
+	ctrl_reg = xemaclite_readl(lp->base_addr + XEL_MDIOCTRL_OFFSET);
+	xemaclite_writel(~XEL_MDIOADDR_OP_MASK &
+			 ((phy_id << XEL_MDIOADDR_PHYADR_SHIFT) | reg),
+			 lp->base_addr + XEL_MDIOADDR_OFFSET);
+	xemaclite_writel(val, lp->base_addr + XEL_MDIOWR_OFFSET);
+	xemaclite_writel(ctrl_reg | XEL_MDIOCTRL_MDIOSTS_MASK,
+			 lp->base_addr + XEL_MDIOCTRL_OFFSET);
 
 	return 0;
 }
@@ -834,8 +842,8 @@ static int xemaclite_mdio_setup(struct n
 	/* Enable the MDIO bus by asserting the enable bit in MDIO Control
 	 * register.
 	 */
-	__raw_writel(XEL_MDIOCTRL_MDIOEN_MASK,
-		     lp->base_addr + XEL_MDIOCTRL_OFFSET);
+	xemaclite_writel(XEL_MDIOCTRL_MDIOEN_MASK,
+			 lp->base_addr + XEL_MDIOCTRL_OFFSET);
 
 	bus = mdiobus_alloc();
 	if (!bus) {
@@ -1140,8 +1148,8 @@ static int xemaclite_of_probe(struct pla
 	}
 
 	/* Clear the Tx CSR's in case this is a restart */
-	__raw_writel(0, lp->base_addr + XEL_TSR_OFFSET);
-	__raw_writel(0, lp->base_addr + XEL_BUFFER_OFFSET + XEL_TSR_OFFSET);
+	xemaclite_writel(0, lp->base_addr + XEL_TSR_OFFSET);
+	xemaclite_writel(0, lp->base_addr + XEL_BUFFER_OFFSET + XEL_TSR_OFFSET);
 
 	/* Set the MAC address in the EmacLite device */
 	xemaclite_update_address(lp, ndev->dev_addr);

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


#1667094 — [PATCH 4.9 016/108] ibmvnic: Initialize completion variables before starting work

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-06-15 20:30 +0200
Subject[PATCH 4.9 016/108] ibmvnic: Initialize completion variables before starting work
Message-ID<tSHGP-5Wn-61@gated-at.bofh.it>
In reply to#1667083
4.9-stable review patch.  If anyone has any objections, please let me know.

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

From: Nathan Fontenot <nfont@linux.vnet.ibm.com>


[ Upstream commit db5d0b597bc27bbddf40f2f8359a73be4eb77104 ]

Initialize condition variables prior to invoking any work that can
mark them complete. This resolves a race in the ibmvnic driver where
the driver faults trying to complete an uninitialized condition
variable.

Signed-off-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/ethernet/ibm/ibmvnic.c |   17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -189,9 +189,10 @@ static int alloc_long_term_buff(struct i
 	}
 	ltb->map_id = adapter->map_id;
 	adapter->map_id++;
+
+	init_completion(&adapter->fw_done);
 	send_request_map(adapter, ltb->addr,
 			 ltb->size, ltb->map_id);
-	init_completion(&adapter->fw_done);
 	wait_for_completion(&adapter->fw_done);
 	return 0;
 }
@@ -1133,10 +1134,10 @@ static void ibmvnic_get_ethtool_stats(st
 	crq.request_statistics.ioba = cpu_to_be32(adapter->stats_token);
 	crq.request_statistics.len =
 	    cpu_to_be32(sizeof(struct ibmvnic_statistics));
-	ibmvnic_send_crq(adapter, &crq);
 
 	/* Wait for data to be written */
 	init_completion(&adapter->stats_done);
+	ibmvnic_send_crq(adapter, &crq);
 	wait_for_completion(&adapter->stats_done);
 
 	for (i = 0; i < ARRAY_SIZE(ibmvnic_stats); i++)
@@ -2809,9 +2810,9 @@ static ssize_t trace_read(struct file *f
 	crq.collect_fw_trace.correlator = adapter->ras_comps[num].correlator;
 	crq.collect_fw_trace.ioba = cpu_to_be32(trace_tok);
 	crq.collect_fw_trace.len = adapter->ras_comps[num].trace_buff_size;
-	ibmvnic_send_crq(adapter, &crq);
 
 	init_completion(&adapter->fw_done);
+	ibmvnic_send_crq(adapter, &crq);
 	wait_for_completion(&adapter->fw_done);
 
 	if (*ppos + len > be32_to_cpu(adapter->ras_comps[num].trace_buff_size))
@@ -3591,9 +3592,9 @@ static int ibmvnic_dump_show(struct seq_
 	memset(&crq, 0, sizeof(crq));
 	crq.request_dump_size.first = IBMVNIC_CRQ_CMD;
 	crq.request_dump_size.cmd = REQUEST_DUMP_SIZE;
-	ibmvnic_send_crq(adapter, &crq);
 
 	init_completion(&adapter->fw_done);
+	ibmvnic_send_crq(adapter, &crq);
 	wait_for_completion(&adapter->fw_done);
 
 	seq_write(seq, adapter->dump_data, adapter->dump_data_size);
@@ -3639,8 +3640,8 @@ static void handle_crq_init_rsp(struct w
 		}
 	}
 
-	send_version_xchg(adapter);
 	reinit_completion(&adapter->init_done);
+	send_version_xchg(adapter);
 	if (!wait_for_completion_timeout(&adapter->init_done, timeout)) {
 		dev_err(dev, "Passive init timeout\n");
 		goto task_failed;
@@ -3650,9 +3651,9 @@ static void handle_crq_init_rsp(struct w
 		if (adapter->renegotiate) {
 			adapter->renegotiate = false;
 			release_sub_crqs_no_irqs(adapter);
-			send_cap_queries(adapter);
 
 			reinit_completion(&adapter->init_done);
+			send_cap_queries(adapter);
 			if (!wait_for_completion_timeout(&adapter->init_done,
 							 timeout)) {
 				dev_err(dev, "Passive init timeout\n");
@@ -3780,9 +3781,9 @@ static int ibmvnic_probe(struct vio_dev
 			adapter->debugfs_dump = ent;
 		}
 	}
-	ibmvnic_send_crq_init(adapter);
 
 	init_completion(&adapter->init_done);
+	ibmvnic_send_crq_init(adapter);
 	if (!wait_for_completion_timeout(&adapter->init_done, timeout))
 		return 0;
 
@@ -3790,9 +3791,9 @@ static int ibmvnic_probe(struct vio_dev
 		if (adapter->renegotiate) {
 			adapter->renegotiate = false;
 			release_sub_crqs_no_irqs(adapter);
-			send_cap_queries(adapter);
 
 			reinit_completion(&adapter->init_done);
+			send_cap_queries(adapter);
 			if (!wait_for_completion_timeout(&adapter->init_done,
 							 timeout))
 				return 0;

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


#1667095 — [PATCH 4.9 017/108] NET: mkiss: Fix panic

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-06-15 20:30 +0200
Subject[PATCH 4.9 017/108] NET: mkiss: Fix panic
Message-ID<tSHGQ-5Wn-65@gated-at.bofh.it>
In reply to#1667083
4.9-stable review patch.  If anyone has any objections, please let me know.

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

From: Ralf Baechle <ralf@linux-mips.org>


[ Upstream commit 7ba1b689038726d34e3244c1ac9e2e18c2ea4787 ]

If a USB-to-serial adapter is unplugged, the driver re-initializes, with
dev->hard_header_len and dev->addr_len set to zero, instead of the correct
values.  If then a packet is sent through the half-dead interface, the
kernel will panic due to running out of headroom in the skb when pushing
for the AX.25 headers resulting in this panic:

[<c0595468>] (skb_panic) from [<c0401f70>] (skb_push+0x4c/0x50)
[<c0401f70>] (skb_push) from [<bf0bdad4>] (ax25_hard_header+0x34/0xf4 [ax25])
[<bf0bdad4>] (ax25_hard_header [ax25]) from [<bf0d05d4>] (ax_header+0x38/0x40 [mkiss])
[<bf0d05d4>] (ax_header [mkiss]) from [<c041b584>] (neigh_compat_output+0x8c/0xd8)
[<c041b584>] (neigh_compat_output) from [<c043e7a8>] (ip_finish_output+0x2a0/0x914)
[<c043e7a8>] (ip_finish_output) from [<c043f948>] (ip_output+0xd8/0xf0)
[<c043f948>] (ip_output) from [<c043f04c>] (ip_local_out_sk+0x44/0x48)

This patch makes mkiss behave like the 6pack driver. 6pack does not
panic.  In 6pack.c sp_setup() (same function name here) the values for
dev->hard_header_len and dev->addr_len are set to the same values as in
my mkiss patch.

[ralf@linux-mips.org: Massages original submission to conform to the usual
standards for patch submissions.]

Signed-off-by: Thomas Osterried <thomas@osterried.de>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/hamradio/mkiss.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/net/hamradio/mkiss.c
+++ b/drivers/net/hamradio/mkiss.c
@@ -648,8 +648,8 @@ static void ax_setup(struct net_device *
 {
 	/* Finish setting up the DEVICE info. */
 	dev->mtu             = AX_MTU;
-	dev->hard_header_len = 0;
-	dev->addr_len        = 0;
+	dev->hard_header_len = AX25_MAX_HEADER_LEN;
+	dev->addr_len        = AX25_ADDR_LEN;
 	dev->type            = ARPHRD_AX25;
 	dev->tx_queue_len    = 10;
 	dev->header_ops      = &ax25_header_ops;

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


#1667096 — [PATCH 4.9 004/108] netfilter: nf_conntrack_sip: fix wrong memory initialisation

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-06-15 20:30 +0200
Subject[PATCH 4.9 004/108] netfilter: nf_conntrack_sip: fix wrong memory initialisation
Message-ID<tSHGQ-5Wn-67@gated-at.bofh.it>
In reply to#1667083
4.9-stable review patch.  If anyone has any objections, please let me know.

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

From: Christophe Leroy <christophe.leroy@c-s.fr>

commit da2f27e9e615d1c799c9582b15262458da61fddc upstream.

In commit 82de0be6862cd ("netfilter: Add helper array
register/unregister functions"),
struct nf_conntrack_helper sip[MAX_PORTS][4] was changed to
sip[MAX_PORTS * 4], so the memory init should have been changed to
memset(&sip[4 * i], 0, 4 * sizeof(sip[i]));

But as the sip[] table is allocated in the BSS, it is already set to 0

Fixes: 82de0be6862cd ("netfilter: Add helper array register/unregister functions")
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/netfilter/nf_conntrack_sip.c |    2 --
 1 file changed, 2 deletions(-)

--- a/net/netfilter/nf_conntrack_sip.c
+++ b/net/netfilter/nf_conntrack_sip.c
@@ -1630,8 +1630,6 @@ static int __init nf_conntrack_sip_init(
 		ports[ports_c++] = SIP_PORT;
 
 	for (i = 0; i < ports_c; i++) {
-		memset(&sip[i], 0, sizeof(sip[i]));
-
 		nf_ct_helper_init(&sip[4 * i], AF_INET, IPPROTO_UDP, "sip",
 				  SIP_PORT, ports[i], i, sip_exp_policy,
 				  SIP_EXPECT_MAX,

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


#1667097 — [PATCH 4.9 040/108] fscache: Clear outstanding writes when disabling a cookie

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-06-15 20:30 +0200
Subject[PATCH 4.9 040/108] fscache: Clear outstanding writes when disabling a cookie
Message-ID<tSHGQ-5Wn-69@gated-at.bofh.it>
In reply to#1667083
4.9-stable review patch.  If anyone has any objections, please let me know.

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

From: David Howells <dhowells@redhat.com>


[ Upstream commit 6bdded59c8933940ac7e5b416448276ac89d1144 ]

fscache_disable_cookie() needs to clear the outstanding writes on the
cookie it's disabling because they cannot be completed after.

Without this, fscache_nfs_open_file() gets stuck because it disables the
cookie when the file is opened for writing but can't uncache the pages till
afterwards - otherwise there's a race between the open routine and anyone
who already has it open R/O and is still reading from it.

Looking in /proc/pid/stack of the offending process shows:

[<ffffffffa0142883>] __fscache_wait_on_page_write+0x82/0x9b [fscache]
[<ffffffffa014336e>] __fscache_uncache_all_inode_pages+0x91/0xe1 [fscache]
[<ffffffffa01740fa>] nfs_fscache_open_file+0x59/0x9e [nfs]
[<ffffffffa01ccf41>] nfs4_file_open+0x17f/0x1b8 [nfsv4]
[<ffffffff8117350e>] do_dentry_open+0x16d/0x2b7
[<ffffffff811743ac>] vfs_open+0x5c/0x65
[<ffffffff81184185>] path_openat+0x785/0x8fb
[<ffffffff81184343>] do_filp_open+0x48/0x9e
[<ffffffff81174710>] do_sys_open+0x13b/0x1cb
[<ffffffff811747b9>] SyS_open+0x19/0x1b
[<ffffffff81001c44>] do_syscall_64+0x80/0x17a
[<ffffffff8165c2da>] return_from_SYSCALL_64+0x0/0x7a
[<ffffffffffffffff>] 0xffffffffffffffff

Reported-by: Jianhong Yin <jiyin@redhat.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Jeff Layton <jlayton@redhat.com>
Acked-by: Steve Dickson <steved@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/fscache/cookie.c |    5 +++++
 fs/fscache/object.c |    6 ++++++
 2 files changed, 11 insertions(+)

--- a/fs/fscache/cookie.c
+++ b/fs/fscache/cookie.c
@@ -542,6 +542,7 @@ void __fscache_disable_cookie(struct fsc
 		hlist_for_each_entry(object, &cookie->backing_objects, cookie_link) {
 			if (invalidate)
 				set_bit(FSCACHE_OBJECT_RETIRED, &object->flags);
+			clear_bit(FSCACHE_OBJECT_PENDING_WRITE, &object->flags);
 			fscache_raise_event(object, FSCACHE_OBJECT_EV_KILL);
 		}
 	} else {
@@ -560,6 +561,10 @@ void __fscache_disable_cookie(struct fsc
 		wait_on_atomic_t(&cookie->n_active, fscache_wait_atomic_t,
 				 TASK_UNINTERRUPTIBLE);
 
+	/* Make sure any pending writes are cancelled. */
+	if (cookie->def->type != FSCACHE_COOKIE_TYPE_INDEX)
+		fscache_invalidate_writes(cookie);
+
 	/* Reset the cookie state if it wasn't relinquished */
 	if (!test_bit(FSCACHE_COOKIE_RELINQUISHED, &cookie->flags)) {
 		atomic_inc(&cookie->n_active);
--- a/fs/fscache/object.c
+++ b/fs/fscache/object.c
@@ -650,6 +650,12 @@ static const struct fscache_state *fscac
 	fscache_mark_object_dead(object);
 	object->oob_event_mask = 0;
 
+	if (test_bit(FSCACHE_OBJECT_RETIRED, &object->flags)) {
+		/* Reject any new read/write ops and abort any that are pending. */
+		clear_bit(FSCACHE_OBJECT_PENDING_WRITE, &object->flags);
+		fscache_cancel_all_ops(object);
+	}
+
 	if (list_empty(&object->dependents) &&
 	    object->n_ops == 0 &&
 	    object->n_children == 0)

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


#1667122 — [PATCH 4.9 066/108] nfs: Fix "Dont increment lock sequence ID after NFS4ERR_MOVED"

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-06-15 20:40 +0200
Subject[PATCH 4.9 066/108] nfs: Fix "Dont increment lock sequence ID after NFS4ERR_MOVED"
Message-ID<tSHQv-5ZL-55@gated-at.bofh.it>
In reply to#1667083
4.9-stable review patch.  If anyone has any objections, please let me know.

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

From: Chuck Lever <chuck.lever@oracle.com>


[ Upstream commit 406dab8450ec76eca88a1af2fc15d18a2b36ca49 ]

Lock sequence IDs are bumped in decode_lock by calling
nfs_increment_seqid(). nfs_increment_sequid() does not use the
seqid_mutating_err() function fixed in commit 059aa7348241 ("Don't
increment lock sequence ID after NFS4ERR_MOVED").

Fixes: 059aa7348241 ("Don't increment lock sequence ID after ...")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Tested-by: Xuan Qi <xuan.qi@oracle.com>
Cc: stable@vger.kernel.org # v3.7+
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/nfs/nfs4state.c |    1 +
 1 file changed, 1 insertion(+)

--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -1079,6 +1079,7 @@ static void nfs_increment_seqid(int stat
 		case -NFS4ERR_BADXDR:
 		case -NFS4ERR_RESOURCE:
 		case -NFS4ERR_NOFILEHANDLE:
+		case -NFS4ERR_MOVED:
 			/* Non-seqid mutating errors */
 			return;
 	};

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


#1667311

FromShuah Khan <shuahkh@osg.samsung.com>
Date2017-06-16 00:30 +0200
Message-ID<tSLr4-8li-13@gated-at.bofh.it>
In reply to#1667083
On 06/15/2017 11:52 AM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.9.33 release.
> There are 108 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 Sat Jun 17 17:53:15 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.33-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] | [next] | [standalone]


#1667361

FromGuenter Roeck <linux@roeck-us.net>
Date2017-06-16 02:50 +0200
Message-ID<tSNCx-1dK-9@gated-at.bofh.it>
In reply to#1667083
On 06/15/2017 10:52 AM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.9.33 release.
> There are 108 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 Sat Jun 17 17:53:15 UTC 2017.
> Anything received after that time might be too late.
> 


Build results:
	total: 145 pass: 145 fail: 0
Qemu test results:
	total: 122 pass: 122 fail: 0

Details are available at http://kerneltests.org/builders.

Guenter

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web