commit 2ecaf1d025af0f481d00b3701ffbcc600dcab076
Author: Willy Tarreau <w@1wt.eu>
Date:   Sun Aug 28 12:19:20 2016 +0200

    Linux 3.10.103

commit 51ace2618a8647a2031981b088a91635dc0d3e04
Author: dan.carpenter@oracle.com <dan.carpenter@oracle.com>
Date:   Sun Jun 9 16:07:28 2013 +0300

    spi: spi-xilinx: cleanup a check in xilinx_spi_txrx_bufs()
    
    commit e33d085d11e54bc9fb07b2555cd104d8e7b3089b upstream.
    
    '!' has higher precedence than comparisons so the original condition
    is equivalent to "if (xspi->remaining_bytes == 0)".  This makes the
    static checkers complain.
    
    xspi->remaining_bytes is signed and from looking at the code
    briefly, I think it might be able to go negative.  I suspect that
    going negative may cause a bug, but I don't have the hardware and
    can't test.
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Mark Brown <broonie@linaro.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 78308a4a651d1b6c4851f84d09ba0edb9803df97
Author: Alexander Shiyan <shc_work@mail.ru>
Date:   Tue Feb 25 23:41:14 2014 -0300

    stb6100: fix buffer length check in stb6100_write_reg_range()
    
    commit 7e6bd12fb77b0067df13fb3ba3fadbdff2945396 upstream.
    
    We are checking sizeof() the wrong variable!
    
    Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
    Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
    Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit d55534bf7e5796555a9359fd82872a07ba4ac87c
Author: Antonio Alecrim Jr <antonio.alecrim@gmail.com>
Date:   Sat Sep 14 14:20:40 2013 -0300

    isdn: hfcpci_softirq: get func return to suppress compiler warning
    
    commit d6d6d1bc44362112e10a48d434e5b3c716152003 upstream.
    
    Signed-off-by: Antonio Alecrim Jr <antonio.alecrim@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 9771330fd5decfd1ff4e38fb45ea05bcce1592e5
Author: Luis Henriques <luis.henriques@canonical.com>
Date:   Wed Aug 14 23:10:06 2013 +0100

    net: rfkill: Do not ignore errors from regulator_enable()
    
    commit dee08ab83d0378d922b67e7cf10bbec3e4ea343b upstream.
    
    Function regulator_enable() may return an error that has to be checked.
    This patch changes function rfkill_regulator_set_block() so that it checks
    for the return code.  Also, rfkill_data->reg_enabled is set to 'true' only
    if there is no error.
    
    This fixes the following compilation warning:
    
    net/rfkill/rfkill-regulator.c:43:20: warning: ignoring return value of 'regulator_enable', declared with attribute warn_unused_result [-Wunused-result]
    
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit c5a8b0061e44ebdb48e082d498a635e31c1a4c01
Author: Tomer Barletz <barletz@gmail.com>
Date:   Sun Aug 2 02:08:57 2015 -0700

    ALSA: oxygen: Fix logical-not-parentheses warning
    
    commit 8ec7cfce3762299ae289c384e281b2f4010ae231 upstream.
    
    This fixes the following warning, that is seen with gcc 5.1:
    warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses].
    
    Signed-off-by: Tomer Barletz <barletz@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 2fa2c236c0b448ffe60b141c014654ef18e27dae
Author: James C Boyd <jcboyd.dev@gmail.com>
Date:   Wed May 27 17:09:06 2015 -0500

    HID: hid-input: Add parentheses to quell gcc warning
    
    commit 09a5c34e8d6b05663ec4c3d22b1fbd9fec89aaf9 upstream.
    
    GCC reports a -Wlogical-not-parentheses warning here; therefore
    add parentheses to shut it up and to express our intent more.
    
    Signed-off-by: James C Boyd <jcboyd.dev@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit f7ed93fef079f4e81e87893686b0f3159dd7e507
Author: Willy Tarreau <w@1wt.eu>
Date:   Sun Aug 21 15:55:52 2016 +0200

    squash mm: Export migrate_page_... : also make it non-static
    
    commit ce16887b69e94a8c0305e88c918989f8bc1bd6b7 upstream.
    
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit de3cae1cb2404b224945ba432c7f5cd6c580593d
Author: Tim Gardner <tim.gardner@canonical.com>
Date:   Fri Oct 30 12:22:58 2015 -0600

    be2iscsi: Fix bogus WARN_ON length check
    
    commit dd29dae00d39186890a5eaa2fe4ad8768bfd41a9 upstream.
    
    drivers/scsi/be2iscsi/be_main.c: In function 'be_sgl_create_contiguous':
    drivers/scsi/be2iscsi/be_main.c:3187:18: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
      WARN_ON(!length > 0);
    
    gcc version 5.2.1
    
    Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
    Cc: Jayamohan Kallickal <jayamohan.kallickal@avagotech.com>
    Cc: Minh Tran <minh.tran@avagotech.com>
    Cc: John Soni Jose <sony.john-n@avagotech.com>
    Cc: "James E.J. Bottomley" <JBottomley@odin.com>
    Reported-by: Joel Stanley <joel@jms.id.au>
    Reviewed-by: Manoj Kumar <manoj@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit fa20cb40aa25df36c25f2b8b77c199d720b4a85d
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Thu Apr 28 09:24:01 2016 +0930

    module: Invalidate signatures on force-loaded modules
    
    commit bca014caaa6130e57f69b5bf527967aa8ee70fdd upstream.
    
    Signing a module should only make it trusted by the specific kernel it
    was built for, not anything else.  Loading a signed module meant for a
    kernel with a different ABI could have interesting effects.
    Therefore, treat all signatures as invalid when a module is
    force-loaded.
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 8de0e6a7186bb35a757db8936200715b6b98372e
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Fri Jul 29 13:19:55 2016 -0400

    dm flakey: error READ bios during the down_interval
    
    commit 99f3c90d0d85708e7401a81ce3314e50bf7f2819 upstream.
    
    When the corrupt_bio_byte feature was introduced it caused READ bios to
    no longer be errored with -EIO during the down_interval.  This had to do
    with the complexity of needing to submit READs if the corrupt_bio_byte
    feature was used.
    
    Fix it so READ bios are properly errored with -EIO; doing so early in
    flakey_map() as long as there isn't a match for the corrupt_bio_byte
    feature.
    
    Fixes: a3998799fb4df ("dm flakey: add corrupt_bio_byte feature")
    Reported-by: Akira Hayakawa <ruby.wktk@gmail.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 12f567db822241090b90c5645ea9146f6cf8fa42
Author: Iosif Harutyunov <iharutyunov@SonicWALL.com>
Date:   Fri Jul 22 23:22:42 2016 +0000

    ubi: Fix race condition between ubi device creation and udev
    
    commit 714fb87e8bc05ff78255afc0dca981e8c5242785 upstream.
    
    Install the UBI device object before we arm sysfs.
    Otherwise udev tries to read sysfs attributes before UBI is ready and
    udev rules will not match.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Iosif Harutyunov <iharutyunov@sonicwall.com>
    [rw: massaged commit message]
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 265a87bbbb06d815afdbda6c7f60d03c93393dd4
Author: Richard Weinberger <richard@nod.at>
Date:   Thu Jun 23 19:30:38 2016 +0200

    ubi: Make volume resize power cut aware
    
    commit 4946784bd3924b1374f05eebff2fd68660bae866 upstream.
    
    When the volume resize operation shrinks a volume,
    LEBs will be unmapped. Since unmapping will not erase these
    LEBs immediately we have to wait for that operation to finish.
    Otherwise in case of a power cut right after writing the new
    volume table the UBI attach process can find more LEBs than the
    volume table knows. This will render the UBI image unattachable.
    
    Fix this issue by waiting for erase to complete and write the new
    volume table afterward.
    
    Cc: <stable@vger.kernel.org>
    Reported-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 256dc4c87ab4727a0c9ef3461858ff8571883a6b
Author: James Hogan <james.hogan@imgtec.com>
Date:   Thu Aug 4 17:36:08 2016 +0100

    metag: Fix __cmpxchg_u32 asm constraint for CMP
    
    commit 6154c187b97ee7513046bb4eb317a89f738f13ef upstream.
    
    The LNKGET based atomic sequence in __cmpxchg_u32 has slightly incorrect
    constraints for the return value which under certain circumstances can
    allow an address unit register to be used as the first operand of a CMP
    instruction. This isn't a valid instruction however as the encodings
    only allow a data unit to be specified. This would result in an
    assembler error like the following:
    
      Error: failed to assemble instruction: "CMP A0.2,D0Ar6"
    
    Fix by changing the constraint from "=&da" (assigned, early clobbered,
    data or address unit register) to "=&d" (data unit register only).
    
    The constraint for the second operand, "bd" (an op2 register where op1
    is a data unit register and the instruction supports O2R) is already
    correct assuming the first operand is a data unit register.
    
    Other cases of CMP in inline asm have had their constraints checked, and
    appear to all be fine.
    
    Fixes: 6006c0d8ce94 ("metag: Atomics, locks and bitops")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: linux-metag@vger.kernel.org
    Cc: <stable@vger.kernel.org> # 3.9.x-
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 3e6afa42b576122df172ad1acbd545b85a7d0c7c
Author: Laura Abbott <labbott@redhat.com>
Date:   Fri Jul 8 12:18:50 2016 -0700

    ftrace/recordmcount: Work around for addition of metag magic but not relocations
    
    commit b2e1c26f0b62531636509fbcb6dab65617ed8331 upstream.
    
    glibc recently did a sync up (94e73c95d9b5 "elf.h: Sync with the gabi
    webpage") that added a #define for EM_METAG but did not add relocations
    
    This triggers build errors:
    
    scripts/recordmcount.c: In function 'do_file':
    scripts/recordmcount.c:466:28: error: 'R_METAG_ADDR32' undeclared (first use in this function)
      case EM_METAG:  reltype = R_METAG_ADDR32;
                                ^~~~~~~~~~~~~~
    scripts/recordmcount.c:466:28: note: each undeclared identifier is reported only once for each function it appears in
    scripts/recordmcount.c:468:20: error: 'R_METAG_NONE' undeclared (first use in this function)
         rel_type_nop = R_METAG_NONE;
                        ^~~~~~~~~~~~
    
    Work around this change with some more #ifdefery for the relocations.
    
    Fedora Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1354034
    
    Link: http://lkml.kernel.org/r/1468005530-14757-1-git-send-email-labbott@redhat.com
    
    Cc: stable@vger.kernel.org # v3.9+
    Cc: James Hogan <james.hogan@imgtec.com>
    Fixes: 00512bdd4573 ("metag: ftrace support")
    Reported-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Laura Abbott <labbott@redhat.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 1c72390ed82894cc1c90f4ef581be6c7642f7df2
Author: Konstantin Neumoin <kneumoin@virtuozzo.com>
Date:   Mon Jul 11 15:28:59 2016 +0300

    balloon: check the number of available pages in leak balloon
    
    commit 37cf99e08c6fb4dcea0f9ad2b13b6daa8c76a711 upstream.
    
    The balloon has a special mechanism that is subscribed to the oom
    notification which leads to deflation for a fixed number of pages.
    The number is always fixed even when the balloon is fully deflated.
    But leak_balloon did not expect that the pages to deflate will be more
    than taken, and raise a "BUG" in balloon_page_dequeue when page list
    will be empty.
    
    So, the simplest solution would be to check that the number of releases
    pages is less or equal to the number taken pages.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Konstantin Neumoin <kneumoin@virtuozzo.com>
    Signed-off-by: Denis V. Lunev <den@openvz.org>
    CC: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit fb85c52515a65aa9763c0c480b9bbbb9de6e08ca
Author: Paul Moore <paul@paul-moore.com>
Date:   Mon Jun 6 15:17:20 2016 -0400

    netlabel: add address family checks to netlbl_{sock,req}_delattr()
    
    commit 0e0e36774081534783aa8eeb9f6fbddf98d3c061 upstream.
    
    It seems risky to always rely on the caller to ensure the socket's
    address family is correct before passing it to the NetLabel kAPI,
    especially since we see at least one LSM which didn't. Add address
    family checks to the *_delattr() functions to help prevent future
    problems.
    
    Cc: <stable@vger.kernel.org>
    Reported-by: Maninder Singh <maninder1.s@samsung.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 60a8744f15d8bdcab6dc4f21728d8e9cb5e8880f
Author: Sachin Prabhu <sprabhu@redhat.com>
Date:   Thu Jul 7 21:28:27 2016 +0100

    cifs: Check for existing directory when opening file with O_CREAT
    
    commit 8d9535b6efd86e6c07da59f97e68f44efb7fe080 upstream.
    
    When opening a file with O_CREAT flag, check to see if the file opened
    is an existing directory.
    
    This prevents the directory from being opened which subsequently causes
    a crash when the close function for directories cifs_closedir() is called
    which frees up the file->private_data memory while the file is still
    listed on the open file list for the tcon.
    
    Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    CC: Stable <stable@vger.kernel.org>
    Reported-by: Xiaoli Feng <xifeng@redhat.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 9e10c1166f492b7979a6cf1b71e2ffa19c18e21c
Author: Amadeusz Sławiński <amadeusz.slawinski@tieto.com>
Date:   Thu Jul 14 10:50:23 2016 +0200

    Bluetooth: Fix l2cap_sock_setsockopt() with optname BT_RCVMTU
    
    commit 23bc6ab0a0912146fd674a0becc758c3162baabc upstream.
    
    When we retrieve imtu value from userspace we should use 16 bit pointer
    cast instead of 32 as it's defined that way in headers. Fixes setsockopt
    calls on big-endian platforms.
    
    Signed-off-by: Amadeusz Sławiński <amadeusz.slawinski@tieto.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit e092e4ff8df9e2b5ffe575c29fbb025f363d4925
Author: Javier Martinez Canillas <javier@osg.samsung.com>
Date:   Tue May 3 16:27:17 2016 -0400

    s5p-mfc: Add release callback for memory region devs
    
    commit 6311f1261f59ce5e51fbe5cc3b5e7737197316ac upstream.
    
    When s5p_mfc_remove() calls put_device() for the reserved memory region
    devs, the driver core warns that the dev doesn't have a release callback:
    
    WARNING: CPU: 0 PID: 591 at drivers/base/core.c:251 device_release+0x8c/0x90
    Device 's5p-mfc-l' does not have a release() function, it is broken and must be fixed.
    
    Also, the declared DMA memory using dma_declare_coherent_memory() isn't
    relased so add a dev .release that calls dma_release_declared_memory().
    
    Cc: <stable@vger.kernel.org>
    Fixes: 6e83e6e25eb4 ("[media] s5p-mfc: Fix kernel warning on memory init")
    Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit a249c24517c783f1541e1b213a4c5879cb222bf6
Author: Javier Martinez Canillas <javier@osg.samsung.com>
Date:   Tue May 3 16:27:16 2016 -0400

    s5p-mfc: Set device name for reserved memory region devs
    
    commit 29debab0a94035a390801d1f177d171d014b7765 upstream.
    
    The devices don't have a name set, so makes dev_name() returns NULL which
    makes harder to identify the devices that are causing issues, for example:
    
    WARNING: CPU: 2 PID: 616 at drivers/base/core.c:251 device_release+0x8c/0x90
    Device '(null)' does not have a release() function, it is broken and must be fixed.
    
    And after setting the device name:
    
    WARNING: CPU: 0 PID: 591 at drivers/base/core.c:251 device_release+0x8c/0x90
    Device 's5p-mfc-l' does not have a release() function, it is broken and must be fixed.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 6e83e6e25eb4 ("[media] s5p-mfc: Fix kernel warning on memory init")
    Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 21fc94d75e5e5241ceff5ec8182db1d40d5ccc05
Author: Alex Hung <alex.hung@canonical.com>
Date:   Mon Jun 13 19:44:00 2016 +0800

    hp-wmi: Fix wifi cannot be hard-unblocked
    
    commit fc8a601e1175ae351f662506030f9939cb7fdbfe upstream.
    
    Several users reported wifi cannot be unblocked as discussed in [1].
    This patch removes the use of the 2009 flag by BIOS but uses the actual
    WMI function calls - it will be skipped if WMI reports unsupported.
    
    [1] https://bugzilla.kernel.org/show_bug.cgi?id=69131
    
    Signed-off-by: Alex Hung <alex.hung@canonical.com>
    Tested-by: Evgenii Shatokhin <eugene.shatokhin@yandex.ru>
    Signed-off-by: Darren Hart <dvhart@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 68a444857c7965327f3a4ad79c0b0ddee4de2915
Author: Vignesh R <vigneshr@ti.com>
Date:   Thu Jun 9 11:02:04 2016 +0530

    gpio: pca953x: Fix NBANK calculation for PCA9536
    
    commit a246b8198f776a16d1d3a3bbfc2d437bad766b29 upstream.
    
    NBANK() macro assumes that ngpios is a multiple of 8(BANK_SZ) and
    hence results in 0 banks for PCA9536 which has just 4 gpios. This is
    wrong as PCA9356 has 1 bank with 4 gpios. This results in uninitialized
    PCA953X_INVERT register. Fix this by using DIV_ROUND_UP macro in
    NBANK().
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Vignesh R <vigneshr@ti.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 3787fb664c0ce85a6205e2e852dcc6a270ae23f9
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Sat Jul 23 07:43:50 2016 +0200

    net/irda: fix NULL pointer dereference on memory allocation failure
    
    commit d3e6952cfb7ba5f4bfa29d4803ba91f96ce1204d upstream.
    
    I ran into this:
    
        kasan: CONFIG_KASAN_INLINE enabled
        kasan: GPF could be caused by NULL-ptr deref or user memory access
        general protection fault: 0000 [#1] PREEMPT SMP KASAN
        CPU: 2 PID: 2012 Comm: trinity-c3 Not tainted 4.7.0-rc7+ #19
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
        task: ffff8800b745f2c0 ti: ffff880111740000 task.ti: ffff880111740000
        RIP: 0010:[<ffffffff82bbf066>]  [<ffffffff82bbf066>] irttp_connect_request+0x36/0x710
        RSP: 0018:ffff880111747bb8  EFLAGS: 00010286
        RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000069dd8358
        RDX: 0000000000000009 RSI: 0000000000000027 RDI: 0000000000000048
        RBP: ffff880111747c00 R08: 0000000000000000 R09: 0000000000000000
        R10: 0000000069dd8358 R11: 1ffffffff0759723 R12: 0000000000000000
        R13: ffff88011a7e4780 R14: 0000000000000027 R15: 0000000000000000
        FS:  00007fc738404700(0000) GS:ffff88011af00000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 00007fc737fdfb10 CR3: 0000000118087000 CR4: 00000000000006e0
        Stack:
         0000000000000200 ffff880111747bd8 ffffffff810ee611 ffff880119f1f220
         ffff880119f1f4f8 ffff880119f1f4f0 ffff88011a7e4780 ffff880119f1f232
         ffff880119f1f220 ffff880111747d58 ffffffff82bca542 0000000000000000
        Call Trace:
         [<ffffffff82bca542>] irda_connect+0x562/0x1190
         [<ffffffff825ae582>] SYSC_connect+0x202/0x2a0
         [<ffffffff825b4489>] SyS_connect+0x9/0x10
         [<ffffffff8100334c>] do_syscall_64+0x19c/0x410
         [<ffffffff83295ca5>] entry_SYSCALL64_slow_path+0x25/0x25
        Code: 41 89 ca 48 89 e5 41 57 41 56 41 55 41 54 41 89 d7 53 48 89 fb 48 83 c7 48 48 89 fa 41 89 f6 48 c1 ea 03 48 83 ec 20 4c 8b 65 10 <0f> b6 04 02 84 c0 74 08 84 c0 0f 8e 4c 04 00 00 80 7b 48 00 74
        RIP  [<ffffffff82bbf066>] irttp_connect_request+0x36/0x710
         RSP <ffff880111747bb8>
        ---[ end trace 4cda2588bc055b30 ]---
    
    The problem is that irda_open_tsap() can fail and leave self->tsap = NULL,
    and then irttp_connect_request() almost immediately dereferences it.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 7f92e56587a6e45f5941351b4f54787066408f46
Author: Wei Fang <fangwei1@huawei.com>
Date:   Mon Jul 25 21:17:04 2016 +0800

    fuse: fix wrong assignment of ->flags in fuse_send_init()
    
    commit 9446385f05c9af25fed53dbed3cc75763730be52 upstream.
    
    FUSE_HAS_IOCTL_DIR should be assigned to ->flags, it may be a typo.
    
    Signed-off-by: Wei Fang <fangwei1@huawei.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Fixes: 69fe05c90ed5 ("fuse: add missing INIT flags")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 23cf0b7eeda4777d0bac40f05b3ce3c62e34c957
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Fri Jul 29 10:40:31 2016 +0200

    block: fix use-after-free in seq file
    
    commit 77da160530dd1dc94f6ae15a981f24e5f0021e84 upstream.
    
    I got a KASAN report of use-after-free:
    
        ==================================================================
        BUG: KASAN: use-after-free in klist_iter_exit+0x61/0x70 at addr ffff8800b6581508
        Read of size 8 by task trinity-c1/315
        =============================================================================
        BUG kmalloc-32 (Not tainted): kasan: bad access detected
        -----------------------------------------------------------------------------
    
        Disabling lock debugging due to kernel taint
        INFO: Allocated in disk_seqf_start+0x66/0x110 age=144 cpu=1 pid=315
                ___slab_alloc+0x4f1/0x520
                __slab_alloc.isra.58+0x56/0x80
                kmem_cache_alloc_trace+0x260/0x2a0
                disk_seqf_start+0x66/0x110
                traverse+0x176/0x860
                seq_read+0x7e3/0x11a0
                proc_reg_read+0xbc/0x180
                do_loop_readv_writev+0x134/0x210
                do_readv_writev+0x565/0x660
                vfs_readv+0x67/0xa0
                do_preadv+0x126/0x170
                SyS_preadv+0xc/0x10
                do_syscall_64+0x1a1/0x460
                return_from_SYSCALL_64+0x0/0x6a
        INFO: Freed in disk_seqf_stop+0x42/0x50 age=160 cpu=1 pid=315
                __slab_free+0x17a/0x2c0
                kfree+0x20a/0x220
                disk_seqf_stop+0x42/0x50
                traverse+0x3b5/0x860
                seq_read+0x7e3/0x11a0
                proc_reg_read+0xbc/0x180
                do_loop_readv_writev+0x134/0x210
                do_readv_writev+0x565/0x660
                vfs_readv+0x67/0xa0
                do_preadv+0x126/0x170
                SyS_preadv+0xc/0x10
                do_syscall_64+0x1a1/0x460
                return_from_SYSCALL_64+0x0/0x6a
    
        CPU: 1 PID: 315 Comm: trinity-c1 Tainted: G    B           4.7.0+ #62
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
         ffffea0002d96000 ffff880119b9f918 ffffffff81d6ce81 ffff88011a804480
         ffff8800b6581500 ffff880119b9f948 ffffffff8146c7bd ffff88011a804480
         ffffea0002d96000 ffff8800b6581500 fffffffffffffff4 ffff880119b9f970
        Call Trace:
         [<ffffffff81d6ce81>] dump_stack+0x65/0x84
         [<ffffffff8146c7bd>] print_trailer+0x10d/0x1a0
         [<ffffffff814704ff>] object_err+0x2f/0x40
         [<ffffffff814754d1>] kasan_report_error+0x221/0x520
         [<ffffffff8147590e>] __asan_report_load8_noabort+0x3e/0x40
         [<ffffffff83888161>] klist_iter_exit+0x61/0x70
         [<ffffffff82404389>] class_dev_iter_exit+0x9/0x10
         [<ffffffff81d2e8ea>] disk_seqf_stop+0x3a/0x50
         [<ffffffff8151f812>] seq_read+0x4b2/0x11a0
         [<ffffffff815f8fdc>] proc_reg_read+0xbc/0x180
         [<ffffffff814b24e4>] do_loop_readv_writev+0x134/0x210
         [<ffffffff814b4c45>] do_readv_writev+0x565/0x660
         [<ffffffff814b8a17>] vfs_readv+0x67/0xa0
         [<ffffffff814b8de6>] do_preadv+0x126/0x170
         [<ffffffff814b92ec>] SyS_preadv+0xc/0x10
    
    This problem can occur in the following situation:
    
    open()
     - pread()
        - .seq_start()
           - iter = kmalloc() // succeeds
           - seqf->private = iter
        - .seq_stop()
           - kfree(seqf->private)
     - pread()
        - .seq_start()
           - iter = kmalloc() // fails
        - .seq_stop()
           - class_dev_iter_exit(seqf->private) // boom! old pointer
    
    As the comment in disk_seqf_stop() says, stop is called even if start
    failed, so we need to reinitialise the private pointer to NULL when seq
    iteration stops.
    
    An alternative would be to set the private pointer to NULL when the
    kmalloc() in disk_seqf_start() fails.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit f8f3d2705f0b7aedb888f56520b121cc809205d7
Author: James Bottomley <James.Bottomley@HansenPartnership.com>
Date:   Fri May 13 12:04:06 2016 -0700

    scsi_lib: correctly retry failed zero length REQ_TYPE_FS commands
    
    commit a621bac3044ed6f7ec5fa0326491b2d4838bfa93 upstream.
    
    When SCSI was written, all commands coming from the filesystem
    (REQ_TYPE_FS commands) had data.  This meant that our signal for needing
    to complete the command was the number of bytes completed being equal to
    the number of bytes in the request.  Unfortunately, with the advent of
    flush barriers, we can now get zero length REQ_TYPE_FS commands, which
    confuse this logic because they satisfy the condition every time.  This
    means they never get retried even for retryable conditions, like UNIT
    ATTENTION because we complete them early assuming they're done.  Fix
    this by special casing the early completion condition to recognise zero
    length commands with errors and let them drop through to the retry code.
    
    Reported-by: Sebastian Parschauer <s.parschauer@gmx.de>
    Signed-off-by: James E.J. Bottomley <jejb@linux.vnet.ibm.com>
    Tested-by: Jack Wang <jinpu.wang@profitbricks.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [ jwang: backport from upstream 4.7 to fix scsi resize issue ]
    Signed-off-by: Jack Wang <jinpu.wang@profitbricks.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit f7f15c543ba50623bd064ebdfc11de127a58d59e
Author: David Howells <dhowells@redhat.com>
Date:   Wed Jul 27 11:43:37 2016 +0100

    KEYS: 64-bit MIPS needs to use compat_sys_keyctl for 32-bit userspace
    
    commit 20f06ed9f61a185c6dabd662c310bed6189470df upstream.
    
    MIPS64 needs to use compat_sys_keyctl for 32-bit userspace rather than
    calling sys_keyctl.  The latter will work in a lot of cases, thereby hiding
    the issue.
    
    Reported-by: Stephan Mueller <smueller@chronox.de>
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: stable@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-security-module@vger.kernel.org
    Cc: keyrings@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/13832/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit d5a5d0bcb399e6b275a65226c3b35c2659ecd64c
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Jan 12 12:47:40 2016 -0800

    x86/mm: Improve switch_mm() barrier comments
    
    commit 4eaffdd5a5fe6ff9f95e1ab4de1ac904d5e0fa8b upstream.
    
    My previous comments were still a bit confusing and there was a
    typo. Fix it up.
    
    Reported-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Fixes: 71b3c126e611 ("x86/mm: Add barriers and document switch_mm()-vs-flush synchronization")
    Link: http://lkml.kernel.org/r/0a0b43cdcdd241c5faaaecfbcc91a155ddedc9a1.1452631609.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 1cf7c76efb3c0f5439d2c9461502f33817469371
Author: Karl Heiss <kheiss@gmail.com>
Date:   Thu Sep 24 12:15:07 2015 -0400

    sctp: Prevent soft lockup when sctp_accept() is called during a timeout event
    
    commit 635682a14427d241bab7bbdeebb48a7d7b91638e upstream.
    
    A case can occur when sctp_accept() is called by the user during
    a heartbeat timeout event after the 4-way handshake.  Since
    sctp_assoc_migrate() changes both assoc->base.sk and assoc->ep, the
    bh_sock_lock in sctp_generate_heartbeat_event() will be taken with
    the listening socket but released with the new association socket.
    The result is a deadlock on any future attempts to take the listening
    socket lock.
    
    Note that this race can occur with other SCTP timeouts that take
    the bh_lock_sock() in the event sctp_accept() is called.
    
     BUG: soft lockup - CPU#9 stuck for 67s! [swapper:0]
     ...
     RIP: 0010:[<ffffffff8152d48e>]  [<ffffffff8152d48e>] _spin_lock+0x1e/0x30
     RSP: 0018:ffff880028323b20  EFLAGS: 00000206
     RAX: 0000000000000002 RBX: ffff880028323b20 RCX: 0000000000000000
     RDX: 0000000000000000 RSI: ffff880028323be0 RDI: ffff8804632c4b48
     RBP: ffffffff8100bb93 R08: 0000000000000000 R09: 0000000000000000
     R10: ffff880610662280 R11: 0000000000000100 R12: ffff880028323aa0
     R13: ffff8804383c3880 R14: ffff880028323a90 R15: ffffffff81534225
     FS:  0000000000000000(0000) GS:ffff880028320000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
     CR2: 00000000006df528 CR3: 0000000001a85000 CR4: 00000000000006e0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
     Process swapper (pid: 0, threadinfo ffff880616b70000, task ffff880616b6cab0)
     Stack:
     ffff880028323c40 ffffffffa01c2582 ffff880614cfb020 0000000000000000
     <d> 0100000000000000 00000014383a6c44 ffff8804383c3880 ffff880614e93c00
     <d> ffff880614e93c00 0000000000000000 ffff8804632c4b00 ffff8804383c38b8
     Call Trace:
     <IRQ>
     [<ffffffffa01c2582>] ? sctp_rcv+0x492/0xa10 [sctp]
     [<ffffffff8148c559>] ? nf_iterate+0x69/0xb0
     [<ffffffff814974a0>] ? ip_local_deliver_finish+0x0/0x2d0
     [<ffffffff8148c716>] ? nf_hook_slow+0x76/0x120
     [<ffffffff814974a0>] ? ip_local_deliver_finish+0x0/0x2d0
     [<ffffffff8149757d>] ? ip_local_deliver_finish+0xdd/0x2d0
     [<ffffffff81497808>] ? ip_local_deliver+0x98/0xa0
     [<ffffffff81496ccd>] ? ip_rcv_finish+0x12d/0x440
     [<ffffffff81497255>] ? ip_rcv+0x275/0x350
     [<ffffffff8145cfeb>] ? __netif_receive_skb+0x4ab/0x750
     ...
    
    With lockdep debugging:
    
     =====================================
     [ BUG: bad unlock balance detected! ]
     -------------------------------------
     CslRx/12087 is trying to release lock (slock-AF_INET) at:
     [<ffffffffa01bcae0>] sctp_generate_timeout_event+0x40/0xe0 [sctp]
     but there are no more locks to release!
    
     other info that might help us debug this:
     2 locks held by CslRx/12087:
     #0:  (&asoc->timers[i]){+.-...}, at: [<ffffffff8108ce1f>] run_timer_softirq+0x16f/0x3e0
     #1:  (slock-AF_INET){+.-...}, at: [<ffffffffa01bcac3>] sctp_generate_timeout_event+0x23/0xe0 [sctp]
    
    Ensure the socket taken is also the same one that is released by
    saving a copy of the socket before entering the timeout event
    critical section.
    
    Signed-off-by: Karl Heiss <kheiss@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [wt: adjusted, 3.10 uses sctp_bh_unlock_sock() instead of bh_lock_sock()]
    
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 72d4c3078653e81a9cc8419be6175f42f35bc463
Author: Dmitri Epshtein <dima@marvell.com>
Date:   Wed Jul 6 04:18:58 2016 +0200

    net: mvneta: set real interrupt per packet for tx_done
    
    commit 06708f81528725148473c0869d6af5f809c6824b upstream.
    
    Commit aebea2ba0f74 ("net: mvneta: fix Tx interrupt delay") intended to
    set coalescing threshold to a value guaranteeing interrupt generation
    per each sent packet, so that buffers can be released with no delay.
    
    In fact setting threshold to '1' was wrong, because it causes interrupt
    every two packets. According to the documentation a reason behind it is
    following - interrupt occurs once sent buffers counter reaches a value,
    which is higher than one specified in MVNETA_TXQ_SIZE_REG(q). This
    behavior was confirmed during tests. Also when testing the SoC working
    as a NAS device, better performance was observed with int-per-packet,
    as it strongly depends on the fact that all transmitted packets are
    released immediately.
    
    This commit enables NETA controller work in interrupt per sent packet mode
    by setting coalescing threshold to 0.
    
    Signed-off-by: Dmitri Epshtein <dima@marvell.com>
    Signed-off-by: Marcin Wojtas <mw@semihalf.com>
    Cc: <stable@vger.kernel.org> # v3.10+
    Fixes aebea2ba0f74 ("net: mvneta: fix Tx interrupt delay")
    Acked-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit fbcf1c564cbeeaa584e7b871c4a1b8c65da78f30
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Mon Jun 27 09:09:40 2016 -0500

    ipr: Clear interrupt on croc/crocodile when running with LSI
    
    commit 54e430bbd490e18ab116afa4cd90dcc45787b3df upstream.
    
    If we fall back to using LSI on the Croc or Crocodile chip we need to
    clear the interrupt so we don't hang the system.
    
    Cc: <stable@vger.kernel.org>
    Tested-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit e5a30a7a2b6017130559f78a8765b8ac179b4310
Author: Oliver Hartkopp <socketcan@hartkopp.net>
Date:   Tue Jun 21 15:45:47 2016 +0200

    can: fix oops caused by wrong rtnl dellink usage
    
    commit 25e1ed6e64f52a692ba3191c4fde650aab3ecc07 upstream.
    
    For 'real' hardware CAN devices the netlink interface is used to set CAN
    specific communication parameters. Real CAN hardware can not be created nor
    removed with the ip tool ...
    
    This patch adds a private dellink function for the CAN device driver interface
    that does just nothing.
    
    It's a follow up to commit 993e6f2fd ("can: fix oops caused by wrong rtnl
    newlink usage") but for dellink.
    
    Reported-by: ajneu <ajneu1@gmail.com>
    Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 56a5db827f79ab8ed1161d1b2d6d14d2a4d60624
Author: Wolfgang Grandegger <wg@grandegger.com>
Date:   Mon Jun 13 15:44:19 2016 +0200

    can: at91_can: RX queue could get stuck at high bus load
    
    commit 43200a4480cbbe660309621817f54cbb93907108 upstream.
    
    At high bus load it could happen that "at91_poll()" enters with all RX
    message boxes filled up. If then at the end the "quota" is exceeded as
    well, "rx_next" will not be reset to the first RX mailbox and hence the
    interrupts remain disabled.
    
    Signed-off-by: Wolfgang Grandegger <wg@grandegger.com>
    Tested-by: Amr Bekhit <amrbekhit@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 389ca69d3d92b48340928b592b4d80948e284b4c
Author: Taras Kondratiuk <takondra@cisco.com>
Date:   Wed Jul 13 22:05:38 2016 +0000

    mmc: block: fix packed command header endianness
    
    commit f68381a70bb2b26c31b13fdaf67c778f92fd32b4 upstream.
    
    The code that fills packed command header assumes that CPU runs in
    little-endian mode. Hence the header is malformed in big-endian mode
    and causes MMC data transfer errors:
    
    [  563.200828] mmcblk0: error -110 transferring data, sector 2048, nr 8, cmd response 0x900, card status 0xc40
    [  563.219647] mmcblk0: packed cmd failed, nr 2, sectors 16, failure index: -1
    
    Convert header data to LE.
    
    Signed-off-by: Taras Kondratiuk <takondra@cisco.com>
    Fixes: ce39f9d17c14 ("mmc: support packed write command for eMMC4.5 devices")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 80e90a31236a6e4748a25bb6b6e8812c424f408c
Author: Ursula Braun <ubraun@linux.vnet.ibm.com>
Date:   Mon Jul 4 14:07:16 2016 +0200

    qeth: delete napi struct when removing a qeth device
    
    commit 7831b4ff0d926e0deeaabef9db8800ed069a2757 upstream.
    
    A qeth_card contains a napi_struct linked to the net_device during
    device probing. This struct must be deleted when removing the qeth
    device, otherwise Panic on oops can occur when qeth devices are
    repeatedly removed and added.
    
    Fixes: a1c3ed4c9ca ("qeth: NAPI support for l2 and l3 discipline")
    Cc: stable@vger.kernel.org # v2.6.37+
    Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com>
    Tested-by: Alexander Klein <ALKL@de.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 46d597e212135b8cd6d4752babcfad8f1669dbc1
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Thu Nov 5 09:13:31 2015 +0530

    ARC: use ASL assembler mnemonic
    
    commit a6416f57ce57fb390b6ee30b12c01c29032a26af upstream.
    
    ARCompact and ARCv2 only have ASL, while binutils used to support LSL as
    a alias mnemonic.
    
    Newer binutils (upstream) don't want to do that so replace it.
    
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit e5201134028bd04d5f0fb020a2579605b61a3078
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Tue Jul 5 17:32:30 2016 -0400

    ecryptfs: don't allow mmap when the lower fs doesn't support it
    
    commit f0fe970df3838c202ef6c07a4c2b36838ef0a88b upstream.
    
    There are legitimate reasons to disallow mmap on certain files, notably
    in sysfs or procfs.  We shouldn't emulate mmap support on file systems
    that don't offer support natively.
    
    CVE-2016-1583
    
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    [tyhicks: clean up f_op check by using ecryptfs_file_to_lower()]
    Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 6e47981c293625dae096c6cccbd49e2c4071139d
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Tue Jul 5 17:32:29 2016 -0400

    Revert "ecryptfs: forbid opening files without mmap handler"
    
    commit 78c4e172412de5d0456dc00d2b34050aa0b683b5 upstream.
    
    This reverts commit 2f36db71009304b3f0b95afacd8eba1f9f046b87.
    
    It fixed a local root exploit but also introduced a dependency on
    the lower file system implementing an mmap operation just to open a file,
    which is a bit of a heavy hammer.  The right fix is to have mmap depend
    on the existence of the mmap handler instead.
    
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 655a7f19458bbdaa0143aace9e3f878295850b83
Author: Andrey Grodzovsky <andrey2805@gmail.com>
Date:   Tue Jun 21 14:26:36 2016 -0400

    xen/pciback: Fix conf_space read/write overlap check.
    
    commit 02ef871ecac290919ea0c783d05da7eedeffc10e upstream.
    
    Current overlap check is evaluating to false a case where a filter
    field is fully contained (proper subset) of a r/w request.  This
    change applies classical overlap check instead to include all the
    scenarios.
    
    More specifically, for (Hilscher GmbH CIFX 50E-DP(M/S)) device driver
    the logic is such that the entire confspace is read and written in 4
    byte chunks. In this case as an example, CACHE_LINE_SIZE,
    LATENCY_TIMER and PCI_BIST are arriving together in one call to
    xen_pcibk_config_write() with offset == 0xc and size == 4.  With the
    exsisting overlap check the LATENCY_TIMER field (offset == 0xd, length
    == 1) is fully contained in the write request and hence is excluded
    from write, which is incorrect.
    
    Signed-off-by: Andrey Grodzovsky <andrey2805@gmail.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Reviewed-by: Jan Beulich <JBeulich@suse.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 6b03918b1d1df7d831a4a546d2b044258e641aa6
Author: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
Date:   Thu Jun 23 11:00:39 2016 +0300

    arc: unwind: warn only once if DW2_UNWIND is disabled
    
    commit 9bd54517ee86cb164c734f72ea95aeba4804f10b upstream.
    
    If CONFIG_ARC_DW2_UNWIND is disabled every time arc_unwind_core()
    gets called following message gets printed in debug console:
    ----------------->8---------------
    CONFIG_ARC_DW2_UNWIND needs to be enabled
    ----------------->8---------------
    
    That message makes sense if user indeed wants to see a backtrace or
    get nice function call-graphs in perf but what if user disabled
    unwinder for the purpose? Why pollute his debug console?
    
    So instead we'll warn user about possibly missing feature once and
    let him decide if that was what he or she really wanted.
    
    Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit e1e78c062e8786e93e9d0e07bf42c618d9fd09c8
Author: Torsten Hilbrich <torsten.hilbrich@secunet.com>
Date:   Fri Jun 24 14:50:18 2016 -0700

    fs/nilfs2: fix potential underflow in call to crc32_le
    
    commit 63d2f95d63396059200c391ca87161897b99e74a upstream.
    
    The value `bytes' comes from the filesystem which is about to be
    mounted.  We cannot trust that the value is always in the range we
    expect it to be.
    
    Check its value before using it to calculate the length for the crc32_le
    call.  It value must be larger (or equal) sumoff + 4.
    
    This fixes a kernel bug when accidentially mounting an image file which
    had the nilfs2 magic value 0x3434 at the right offset 0x406 by chance.
    The bytes 0x01 0x00 were stored at 0x408 and were interpreted as a
    s_bytes value of 1.  This caused an underflow when substracting sumoff +
    4 (20) in the call to crc32_le.
    
      BUG: unable to handle kernel paging request at ffff88021e600000
      IP:  crc32_le+0x36/0x100
      ...
      Call Trace:
        nilfs_valid_sb.part.5+0x52/0x60 [nilfs2]
        nilfs_load_super_block+0x142/0x300 [nilfs2]
        init_nilfs+0x60/0x390 [nilfs2]
        nilfs_mount+0x302/0x520 [nilfs2]
        mount_fs+0x38/0x160
        vfs_kern_mount+0x67/0x110
        do_mount+0x269/0xe00
        SyS_mount+0x9f/0x100
        entry_SYSCALL_64_fastpath+0x16/0x71
    
    Link: http://lkml.kernel.org/r/1466778587-5184-2-git-send-email-konishi.ryusuke@lab.ntt.co.jp
    Signed-off-by: Torsten Hilbrich <torsten.hilbrich@secunet.com>
    Tested-by: Torsten Hilbrich <torsten.hilbrich@secunet.com>
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 884c6beca31ef639a7002f461efbe036c22006de
Author: Jan Willeke <willeke@de.ibm.com>
Date:   Tue Jul 22 16:50:57 2014 +0200

    s390/seccomp: fix error return for filtered system calls
    
    commit dc295880c6752076f8b94ba3885d0bfff09e3e82 upstream.
    
    The syscall_set_return_value function of s390 negates the error argument
    before storing the value to the return register gpr2. This is incorrect,
    the seccomp code already passes the negative error value.
    Store the unmodified error value to gpr2.
    
    Signed-off-by: Jan Willeke <willeke@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 12f63d9dba9e36a1a0176df42e53ae6167cdae09
Author: Jan Beulich <JBeulich@suse.com>
Date:   Fri Jul 8 06:15:07 2016 -0600

    xen/acpi: allow xen-acpi-processor driver to load on Xen 4.7
    
    commit 6f2d9d99213514360034c6d52d2c3919290b3504 upstream.
    
    As of Xen 4.7 PV CPUID doesn't expose either of CPUID[1].ECX[7] and
    CPUID[0x80000007].EDX[7] anymore, causing the driver to fail to load on
    both Intel and AMD systems. Doing any kind of hardware capability
    checks in the driver as a prerequisite was wrong anyway: With the
    hypervisor being in charge, all such checking should be done by it. If
    ACPI data gets uploaded despite some missing capability, the hypervisor
    is free to ignore part or all of that data.
    
    Ditch the entire check_prereq() function, and do the only valid check
    (xen_initial_domain()) in the caller in its place.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 655e0c067f0e02ece03fd0591dabe3db2ae27552
Author: Steve French <smfrench@gmail.com>
Date:   Wed Jun 22 20:12:05 2016 -0500

    Fix reconnect to not defer smb3 session reconnect long after socket reconnect
    
    commit 4fcd1813e6404dd4420c7d12fb483f9320f0bf93 upstream.
    
    Azure server blocks clients that open a socket and don't do anything on it.
    In our reconnect scenarios, we can reconnect the tcp session and
    detect the socket is available but we defer the negprot and SMB3 session
    setup and tree connect reconnection until the next i/o is requested, but
    this looks suspicous to some servers who expect SMB3 negprog and session
    setup soon after a socket is created.
    
    In the echo thread, reconnect SMB3 sessions and tree connections
    that are disconnected.  A later patch will replay persistent (and
    resilient) handle opens.
    
    Signed-off-by: Steve French <steve.french@primarydata.com>
    Acked-by: Pavel Shilovsky <pshilovsky@samba.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 75b319d68655ff8790f9c03f294c31d81de3b08c
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu May 1 16:51:03 2014 +0200

    scsi: remove scsi_end_request
    
    commit bc85dc500f9df9b2eec15077e5046672c46adeaa upstream.
    
    By folding scsi_end_request into its only caller we can significantly clean
    up the completion logic.  We can use simple goto labels now to only have
    a single place to finish or requeue command there instead of the previous
    convoluted logic.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    [jwang: backport to 3.12]
    Signed-off-by: Jack Wang <jinpu.wang@profitbricks.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit ec032b74164fab3dabeceb37362f2a58227c51b8
Author: Wei Fang <fangwei1@huawei.com>
Date:   Tue Jun 7 14:53:56 2016 +0800

    scsi: fix race between simultaneous decrements of ->host_failed
    
    commit 72d8c36ec364c82bf1bf0c64dfa1041cfaf139f7 upstream.
    
    sas_ata_strategy_handler() adds the works of the ata error handler to
    system_unbound_wq. This workqueue asynchronously runs work items, so the
    ata error handler will be performed concurrently on different CPUs. In
    this case, ->host_failed will be decreased simultaneously in
    scsi_eh_finish_cmd() on different CPUs, and become abnormal.
    
    It will lead to permanently inequality between ->host_failed and
    ->host_busy, and scsi error handler thread won't start running. IO
    errors after that won't be handled.
    
    Since all scmds must have been handled in the strategy handler, just
    remove the decrement in scsi_eh_finish_cmd() and zero ->host_busy after
    the strategy handler to fix this race.
    
    Fixes: 50824d6c5657 ("[SCSI] libsas: async ata-eh")
    Cc: stable@vger.kernel.org
    Signed-off-by: Wei Fang <fangwei1@huawei.com>
    Reviewed-by: James Bottomley <jejb@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit ed82c388d45df9dbc456864ff31da433c4566316
Author: Kangjie Lu <kangjielu@gmail.com>
Date:   Tue May 3 16:44:32 2016 -0400

    ALSA: timer: Fix leak in events via snd_timer_user_tinterrupt
    
    commit e4ec8cc8039a7063e24204299b462bd1383184a5 upstream.
    
    The stack object “r1” has a total size of 32 bytes. Its field
    “event” and “val” both contain 4 bytes padding. These 8 bytes
    padding bytes are sent to user without being initialized.
    
    Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 9bad15dba640ca854d97aec78e050f70a33d0508
Author: Kangjie Lu <kangjielu@gmail.com>
Date:   Tue May 3 16:44:20 2016 -0400

    ALSA: timer: Fix leak in events via snd_timer_user_ccallback
    
    commit 9a47e9cff994f37f7f0dbd9ae23740d0f64f9fe6 upstream.
    
    The stack object “r1” has a total size of 32 bytes. Its field
    “event” and “val” both contain 4 bytes padding. These 8 bytes
    padding bytes are sent to user without being initialized.
    
    Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 77a13dd0d162a0f569d16c9210b585120f870a45
Author: Kangjie Lu <kangjielu@gmail.com>
Date:   Tue May 3 16:44:07 2016 -0400

    ALSA: timer: Fix leak in SNDRV_TIMER_IOCTL_PARAMS
    
    commit cec8f96e49d9be372fdb0c3836dcf31ec71e457e upstream.
    
    The stack object “tread” has a total size of 32 bytes. Its field
    “event” and “val” both contain 4 bytes padding. These 8 bytes
    padding bytes are sent to user without being initialized.
    
    Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 34abd998cd244b5f53cfe2e9f26ab3c6289a362b
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Jul 8 08:05:19 2016 +0200

    ALSA: ctl: Stop notification after disconnection
    
    commit f388cdcdd160687c6650833f286b9c89c50960ff upstream.
    
    snd_ctl_remove() has a notification for the removal event.  It's
    superfluous when done during the device got disconnected.  Although
    the notification itself is mostly harmless, it may potentially be
    harmful, and should be suppressed.  Actually some components PCM may
    free ctl elements during the disconnect or free callbacks, thus it's
    no theoretical issue.
    
    This patch adds the check of card->shutdown flag for avoiding
    unnecessary notifications after (or during) the disconnect.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit b753d79cc246a290c7b64d38091d47acfc577e0c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jun 29 15:23:08 2016 +0200

    ALSA: au88x0: Fix calculation in vortex_wtdma_bufshift()
    
    commit 62db7152c924e4c060e42b34a69cd39658e8a0dc upstream.
    
    vortex_wtdma_bufshift() function does calculate the page index
    wrongly, first masking then shift, which always results in zero.
    The proper computation is to first shift, then mask.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit c3fdd7d30a36cb393b0a2c09bb693dfa6a3b04a5
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Jun 24 15:15:26 2016 +0200

    ALSA: dummy: Fix a use-after-free at closing
    
    commit d5dbbe6569481bf12dcbe3e12cff72c5f78d272c upstream.
    
    syzkaller fuzzer spotted a potential use-after-free case in snd-dummy
    driver when hrtimer is used as backend:
    > ==================================================================
    > BUG: KASAN: use-after-free in rb_erase+0x1b17/0x2010 at addr ffff88005e5b6f68
    >  Read of size 8 by task syz-executor/8984
    > =============================================================================
    > BUG kmalloc-192 (Not tainted): kasan: bad access detected
    > -----------------------------------------------------------------------------
    >
    > Disabling lock debugging due to kernel taint
    > INFO: Allocated in 0xbbbbbbbbbbbbbbbb age=18446705582212484632
    > ....
    > [<      none      >] dummy_hrtimer_create+0x49/0x1a0 sound/drivers/dummy.c:464
    > ....
    > INFO: Freed in 0xfffd8e09 age=18446705496313138713 cpu=2164287125 pid=-1
    > [<      none      >] dummy_hrtimer_free+0x68/0x80 sound/drivers/dummy.c:481
    > ....
    > Call Trace:
    >  [<ffffffff8179e59e>] __asan_report_load8_noabort+0x3e/0x40 mm/kasan/report.c:333
    >  [<     inline     >] rb_set_parent include/linux/rbtree_augmented.h:111
    >  [<     inline     >] __rb_erase_augmented include/linux/rbtree_augmented.h:218
    >  [<ffffffff82ca5787>] rb_erase+0x1b17/0x2010 lib/rbtree.c:427
    >  [<ffffffff82cb02e8>] timerqueue_del+0x78/0x170 lib/timerqueue.c:86
    >  [<ffffffff814d0c80>] __remove_hrtimer+0x90/0x220 kernel/time/hrtimer.c:903
    >  [<     inline     >] remove_hrtimer kernel/time/hrtimer.c:945
    >  [<ffffffff814d23da>] hrtimer_try_to_cancel+0x22a/0x570 kernel/time/hrtimer.c:1046
    >  [<ffffffff814d2742>] hrtimer_cancel+0x22/0x40 kernel/time/hrtimer.c:1066
    >  [<ffffffff85420531>] dummy_hrtimer_stop+0x91/0xb0 sound/drivers/dummy.c:417
    >  [<ffffffff854228bf>] dummy_pcm_trigger+0x17f/0x1e0 sound/drivers/dummy.c:507
    >  [<ffffffff85392170>] snd_pcm_do_stop+0x160/0x1b0 sound/core/pcm_native.c:1106
    >  [<ffffffff85391b26>] snd_pcm_action_single+0x76/0x120 sound/core/pcm_native.c:956
    >  [<ffffffff85391e01>] snd_pcm_action+0x231/0x290 sound/core/pcm_native.c:974
    >  [<     inline     >] snd_pcm_stop sound/core/pcm_native.c:1139
    >  [<ffffffff8539754d>] snd_pcm_drop+0x12d/0x1d0 sound/core/pcm_native.c:1784
    >  [<ffffffff8539d3be>] snd_pcm_common_ioctl1+0xfae/0x2150 sound/core/pcm_native.c:2805
    >  [<ffffffff8539ee91>] snd_pcm_capture_ioctl1+0x2a1/0x5e0 sound/core/pcm_native.c:2976
    >  [<ffffffff8539f2ec>] snd_pcm_kernel_ioctl+0x11c/0x160 sound/core/pcm_native.c:3020
    >  [<ffffffff853d9a44>] snd_pcm_oss_sync+0x3a4/0xa30 sound/core/oss/pcm_oss.c:1693
    >  [<ffffffff853da27d>] snd_pcm_oss_release+0x1ad/0x280 sound/core/oss/pcm_oss.c:2483
    >  .....
    
    A workaround is to call hrtimer_cancel() in dummy_hrtimer_sync() which
    is called certainly before other blocking ops.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 074ed3fd042d2a8bebef38147ce4de3ac6933da3
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Mon Jun 27 14:12:34 2016 -0700

    tty/vt/keyboard: fix OOB access in do_compute_shiftstate()
    
    commit 510cccb5b0c8868a2b302a0ab524da7912da648b upstream.
    
    The size of individual keymap in drivers/tty/vt/keyboard.c is NR_KEYS,
    which is currently 256, whereas number of keys/buttons in input device (and
    therefor in key_down) is much larger - KEY_CNT - 768, and that can cause
    out-of-bound access when we do
    
            sym = U(key_maps[0][k]);
    
    with large 'k'.
    
    To fix it we should not attempt iterating beyond smaller of NR_KEYS and
    KEY_CNT.
    
    Also while at it let's switch to for_each_set_bit() instead of open-coding
    it.
    
    Reported-by: Sasha Levin <sasha.levin@oracle.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 585ec8b505e68995bd54e9812e1ea68d196a4a2f
Author: Mark Brown <broonie@kernel.org>
Date:   Mon Jun 20 13:53:34 2016 +0100

    iio:ad7266: Fix probe deferral for vref
    
    commit 68b356eb3d9f5e38910fb62e22a78e2a18d544ae upstream.
    
    Currently the ad7266 driver treats any failure to get vref as though the
    regulator were not present but this means that if probe deferral is
    triggered the driver will act as though the regulator were not present.
    Instead only use the internal reference if we explicitly got -ENODEV which
    is what is returned for absent regulators.
    
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 0ff80acdf9a8179dcaf361c1ff5375b50c3dd6d6
Author: Mark Brown <broonie@kernel.org>
Date:   Mon Jun 20 13:53:32 2016 +0100

    iio:ad7266: Fix broken regulator error handling
    
    commit 6b7f4e25f3309f106a5c7ff42c8231494cf285d3 upstream.
    
    All regulator_get() variants return either a pointer to a regulator or an
    ERR_PTR() so testing for NULL makes no sense and may lead to bugs if we
    use NULL as a valid regulator. Fix this by using IS_ERR() as expected.
    
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit bb29eeb462f11a922405aedb0a6ca9f5a1f86d44
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Fri Jun 17 15:22:24 2016 +0200

    iio: accel: kxsd9: fix the usage of spi_w8r8()
    
    commit 0c1f91b98552da49d9d8eed32b3132a58d2f4598 upstream.
    
    These two spi_w8r8() calls return a value with is used by the code
    following the error check. The dubious use was caused by a cleanup
    patch.
    
    Fixes: d34dbee8ac8e ("staging:iio:accel:kxsd9 cleanup and conversion to iio_chan_spec.")
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 56d7f3422d209a1b56650d4d61305bec21c6dcd6
Author: Luis de Bethencourt <luisbg@osg.samsung.com>
Date:   Wed Jun 22 20:43:30 2016 +0100

    staging: iio: accel: fix error check
    
    commit ef3149eb3ddb7f9125e11c90f8330e371b55cffd upstream.
    
    sca3000_read_ctrl_reg() returns a negative number on failure, check for
    this instead of zero.
    
    Signed-off-by: Luis de Bethencourt <luisbg@osg.samsung.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit c24113843be9eb9ac27e8b2d9bbce6d2c8d01e6c
Author: Crestez Dan Leonard <leonard.crestez@intel.com>
Date:   Tue May 3 15:27:09 2016 +0300

    iio: Fix error handling in iio_trigger_attach_poll_func
    
    commit 99543823357966ac938d9a310947e731b67338e6 upstream.
    
    When attaching a pollfunc iio_trigger_attach_poll_func will allocate a
    virtual irq and call the driver's set_trigger_state function. Fix error
    handling to undo previous steps if any fails.
    
    In particular this fixes handling errors from a driver's
    set_trigger_state function. When using triggered buffers a failure to
    enable the trigger used to make the buffer unusable.
    
    Signed-off-by: Crestez Dan Leonard <leonard.crestez@intel.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 19a98b0bd8783be5bfabddb8dec11b1fe42a28ef
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Fri Jun 10 10:54:32 2016 +0200

    base: make module_create_drivers_dir race-free
    
    commit 7e1b1fc4dabd6ec8e28baa0708866e13fa93c9b3 upstream.
    
    Modules which register drivers via standard path (driver_register) in
    parallel can cause a warning:
    WARNING: CPU: 2 PID: 3492 at ../fs/sysfs/dir.c:31 sysfs_warn_dup+0x62/0x80
    sysfs: cannot create duplicate filename '/module/saa7146/drivers'
    Modules linked in: hexium_gemini(+) mxb(+) ...
    ...
    Call Trace:
    ...
     [<ffffffff812e63a2>] sysfs_warn_dup+0x62/0x80
     [<ffffffff812e6487>] sysfs_create_dir_ns+0x77/0x90
     [<ffffffff8140f2c4>] kobject_add_internal+0xb4/0x340
     [<ffffffff8140f5b8>] kobject_add+0x68/0xb0
     [<ffffffff8140f631>] kobject_create_and_add+0x31/0x70
     [<ffffffff8157a703>] module_add_driver+0xc3/0xd0
     [<ffffffff8155e5d4>] bus_add_driver+0x154/0x280
     [<ffffffff815604c0>] driver_register+0x60/0xe0
     [<ffffffff8145bed0>] __pci_register_driver+0x60/0x70
     [<ffffffffa0273e14>] saa7146_register_extension+0x64/0x90 [saa7146]
     [<ffffffffa0033011>] hexium_init_module+0x11/0x1000 [hexium_gemini]
    ...
    
    As can be (mostly) seen, driver_register causes this call sequence:
      -> bus_add_driver
        -> module_add_driver
          -> module_create_drivers_dir
    The last one creates "drivers" directory in /sys/module/<...>. When
    this is done in parallel, the directory is attempted to be created
    twice at the same time.
    
    This can be easily reproduced by loading mxb and hexium_gemini in
    parallel:
    while :; do
      modprobe mxb &
      modprobe hexium_gemini
      wait
      rmmod mxb hexium_gemini saa7146_vv saa7146
    done
    
    saa7146 calls pci_register_driver for both mxb and hexium_gemini,
    which means /sys/module/saa7146/drivers is to be created for both of
    them.
    
    Fix this by a new mutex in module_create_drivers_dir which makes the
    test-and-create "drivers" dir atomic.
    
    I inverted the condition and removed 'return' to avoid multiple
    unlocks or a goto.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Fixes: fe480a2675ed (Modules: only add drivers/ direcory if needed)
    Cc: v2.6.21+ <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit a836c42ecad68bb4ee74010201fbcef7a77f0f68
Author: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
Date:   Fri Jun 17 16:10:42 2016 -0400

    tracing: Handle NULL formats in hold_module_trace_bprintk_format()
    
    commit 70c8217acd4383e069fe1898bbad36ea4fcdbdcc upstream.
    
    If a task uses a non constant string for the format parameter in
    trace_printk(), then the trace_printk_fmt variable is set to NULL. This
    variable is then saved in the __trace_printk_fmt section.
    
    The function hold_module_trace_bprintk_format() checks to see if duplicate
    formats are used by modules, and reuses them if so (saves them to the list
    if it is new). But this function calls lookup_format() that does a strcmp()
    to the value (which is now NULL) and can cause a kernel oops.
    
    This wasn't an issue till 3debb0a9ddb ("tracing: Fix trace_printk() to print
    when not using bprintk()") which added "__used" to the trace_printk_fmt
    variable, and before that, the kernel simply optimized it out (no NULL value
    was saved).
    
    The fix is simply to handle the NULL pointer in lookup_format() and have the
    caller ignore the value if it was NULL.
    
    Link: http://lkml.kernel.org/r/1464769870-18344-1-git-send-email-zhengjun.xing@intel.com
    
    Reported-by: xingzhen <zhengjun.xing@intel.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Fixes: 3debb0a9ddb ("tracing: Fix trace_printk() to print when not using bprintk()")
    Cc: stable@vger.kernel.org # v3.5+
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 01fcef2cad3cbc8e5ce6b3d0a6b05bce95c73475
Author: Xiubo Li <lixiubo@cmss.chinamobile.com>
Date:   Wed Jun 15 18:00:33 2016 +0800

    kvm: Fix irq route entries exceeding KVM_MAX_IRQ_ROUTES
    
    commit caf1ff26e1aa178133df68ac3d40815fed2187d9 upstream.
    
    These days, we experienced one guest crash with 8 cores and 3 disks,
    with qemu error logs as bellow:
    
    qemu-system-x86_64: /build/qemu-2.0.0/kvm-all.c:984:
    kvm_irqchip_commit_routes: Assertion `ret == 0' failed.
    
    And then we found one patch(bdf026317d) in qemu tree, which said
    could fix this bug.
    
    Execute the following script will reproduce the BUG quickly:
    
    irq_affinity.sh
    ========================================================================
    
    vda_irq_num=25
    vdb_irq_num=27
    while [ 1 ]
    do
        for irq in {1,2,4,8,10,20,40,80}
            do
                echo $irq > /proc/irq/$vda_irq_num/smp_affinity
                echo $irq > /proc/irq/$vdb_irq_num/smp_affinity
                dd if=/dev/vda of=/dev/zero bs=4K count=100 iflag=direct
                dd if=/dev/vdb of=/dev/zero bs=4K count=100 iflag=direct
            done
    done
    ========================================================================
    
    The following qemu log is added in the qemu code and is displayed when
    this bug reproduced:
    
    kvm_irqchip_commit_routes: max gsi: 1008, nr_allocated_irq_routes: 1024,
    irq_routes->nr: 1024, gsi_count: 1024.
    
    That's to say when irq_routes->nr == 1024, there are 1024 routing entries,
    but in the kernel code when routes->nr >= 1024, will just return -EINVAL;
    
    The nr is the number of the routing entries which is in of
    [1 ~ KVM_MAX_IRQ_ROUTES], not the index in [0 ~ KVM_MAX_IRQ_ROUTES - 1].
    
    This patch fix the BUG above.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Xiubo Li <lixiubo@cmss.chinamobile.com>
    Signed-off-by: Wei Tang <tangwei@cmss.chinamobile.com>
    Signed-off-by: Zhang Zhuoyu <zhangzhuoyu@cmss.chinamobile.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 21e5755c75ed7354866b35c1cc100ea323e15602
Author: Bjørn Mork <bjorn@mork.no>
Date:   Sun Jul 3 22:24:50 2016 +0200

    cdc_ncm: workaround for EM7455 "silent" data interface
    
    commit c086e7096170390594c425114d98172bc9aceb8a upstream.
    
    Several Lenovo users have reported problems with their Sierra
    Wireless EM7455 modem. The driver has loaded successfully and
    the MBIM management channel has appeared to work, including
    establishing a connection to the mobile network. But no frames
    have been received over the data interface.
    
    The problem affects all EM7455 and MC7455, and is assumed to
    affect other modems based on the same Qualcomm chipset and
    baseband firmware.
    
    Testing narrowed the problem down to what seems to be a
    firmware timing bug during initialization. Adding a short sleep
    while probing is sufficient to make the problem disappear.
    Experiments have shown that 1-2 ms is too little to have any
    effect, while 10-20 ms is enough to reliably succeed.
    
    Reported-by: Stefan Armbruster <ml001@armbruster-it.de>
    Reported-by: Ralph Plawetzki <ralph@purejava.org>
    Reported-by: Andreas Fett <andreas.fett@secunet.com>
    Reported-by: Rasmus Lerdorf <rasmus@lerdorf.com>
    Reported-by: Samo Ratnik <samo.ratnik@gmail.com>
    Reported-and-tested-by: Aleksander Morgado <aleksander@aleksander.es>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit eed1a4028c96cabb79747ee01e17b1057b01027c
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Thu Jun 16 23:26:15 2016 +0200

    UBIFS: Implement ->migratepage()
    
    commit 4ac1c17b2044a1b4b2fbed74451947e905fc2992 upstream.
    
    During page migrations UBIFS might get confused
    and the following assert triggers:
    [  213.480000] UBIFS assert failed in ubifs_set_page_dirty at 1451 (pid 436)
    [  213.490000] CPU: 0 PID: 436 Comm: drm-stress-test Not tainted 4.4.4-00176-geaa802524636-dirty #1008
    [  213.490000] Hardware name: Allwinner sun4i/sun5i Families
    [  213.490000] [<c0015e70>] (unwind_backtrace) from [<c0012cdc>] (show_stack+0x10/0x14)
    [  213.490000] [<c0012cdc>] (show_stack) from [<c02ad834>] (dump_stack+0x8c/0xa0)
    [  213.490000] [<c02ad834>] (dump_stack) from [<c0236ee8>] (ubifs_set_page_dirty+0x44/0x50)
    [  213.490000] [<c0236ee8>] (ubifs_set_page_dirty) from [<c00fa0bc>] (try_to_unmap_one+0x10c/0x3a8)
    [  213.490000] [<c00fa0bc>] (try_to_unmap_one) from [<c00fadb4>] (rmap_walk+0xb4/0x290)
    [  213.490000] [<c00fadb4>] (rmap_walk) from [<c00fb1bc>] (try_to_unmap+0x64/0x80)
    [  213.490000] [<c00fb1bc>] (try_to_unmap) from [<c010dc28>] (migrate_pages+0x328/0x7a0)
    [  213.490000] [<c010dc28>] (migrate_pages) from [<c00d0cb0>] (alloc_contig_range+0x168/0x2f4)
    [  213.490000] [<c00d0cb0>] (alloc_contig_range) from [<c010ec00>] (cma_alloc+0x170/0x2c0)
    [  213.490000] [<c010ec00>] (cma_alloc) from [<c001a958>] (__alloc_from_contiguous+0x38/0xd8)
    [  213.490000] [<c001a958>] (__alloc_from_contiguous) from [<c001ad44>] (__dma_alloc+0x23c/0x274)
    [  213.490000] [<c001ad44>] (__dma_alloc) from [<c001ae08>] (arm_dma_alloc+0x54/0x5c)
    [  213.490000] [<c001ae08>] (arm_dma_alloc) from [<c035cecc>] (drm_gem_cma_create+0xb8/0xf0)
    [  213.490000] [<c035cecc>] (drm_gem_cma_create) from [<c035cf20>] (drm_gem_cma_create_with_handle+0x1c/0xe8)
    [  213.490000] [<c035cf20>] (drm_gem_cma_create_with_handle) from [<c035d088>] (drm_gem_cma_dumb_create+0x3c/0x48)
    [  213.490000] [<c035d088>] (drm_gem_cma_dumb_create) from [<c0341ed8>] (drm_ioctl+0x12c/0x444)
    [  213.490000] [<c0341ed8>] (drm_ioctl) from [<c0121adc>] (do_vfs_ioctl+0x3f4/0x614)
    [  213.490000] [<c0121adc>] (do_vfs_ioctl) from [<c0121d30>] (SyS_ioctl+0x34/0x5c)
    [  213.490000] [<c0121d30>] (SyS_ioctl) from [<c000f2c0>] (ret_fast_syscall+0x0/0x34)
    
    UBIFS is using PagePrivate() which can have different meanings across
    filesystems. Therefore the generic page migration code cannot handle this
    case correctly.
    We have to implement our own migration function which basically does a
    plain copy but also duplicates the page private flag.
    UBIFS is not a block device filesystem and cannot use buffer_migrate_page().
    
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    [rw: Massaged changelog, build fixes, etc...]
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Acked-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 31f476515df016bc1c9c119a7c7ebc1d274f04ad
Author: Richard Weinberger <richard@nod.at>
Date:   Thu Jun 16 23:26:14 2016 +0200

    mm: Export migrate_page_move_mapping and migrate_page_copy
    
    commit 1118dce773d84f39ebd51a9fe7261f9169cb056e upstream.
    
    Export these symbols such that UBIFS can implement
    ->migratepage.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Acked-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [wt: also add the prototype to include/linux/migrate.h]
    
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 1e766c1750165734c3030f9639a52230d4ea94e3
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Sat Jun 25 19:19:28 2016 -0400

    NFS: Fix another OPEN_DOWNGRADE bug
    
    commit e547f2628327fec6afd2e03b46f113f614cca05b upstream.
    
    Olga Kornievskaia reports that the following test fails to trigger
    an OPEN_DOWNGRADE on the wire, and only triggers the final CLOSE.
    
            fd0 = open(foo, RDRW)   -- should be open on the wire for "both"
            fd1 = open(foo, RDONLY)  -- should be open on the wire for "read"
            close(fd0) -- should trigger an open_downgrade
            read(fd1)
            close(fd1)
    
    The issue is that we're missing a check for whether or not the current
    state transitioned from an O_RDWR state as opposed to having transitioned
    from a combination of O_RDONLY and O_WRONLY.
    
    Reported-by: Olga Kornievskaia <aglo@umich.edu>
    Fixes: cd9288ffaea4 ("NFSv4: Fix another bug in the close/open_downgrade code")
    Cc: stable@vger.kernel.org # 2.6.33+
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 583e3ee15bf87946667d30f238bcd78585b208da
Author: Borislav Petkov <bp@suse.de>
Date:   Thu Jun 16 19:13:49 2016 +0200

    x86/amd_nb: Fix boot crash on non-AMD systems
    
    commit 1ead852dd88779eda12cb09cc894a03d9abfe1ec upstream.
    
    Fix boot crash that triggers if this driver is built into a kernel and
    run on non-AMD systems.
    
    AMD northbridges users call amd_cache_northbridges() and it returns
    a negative value to signal that we weren't able to cache/detect any
    northbridges on the system.
    
    At least, it should do so as all its callers expect it to do so. But it
    does return a negative value only when kmalloc() fails.
    
    Fix it to return -ENODEV if there are no NBs cached as otherwise, amd_nb
    users like amd64_edac, for example, which relies on it to know whether
    it should load or not, gets loaded on systems like Intel Xeons where it
    shouldn't.
    
    Reported-and-tested-by: Tony Battersby <tonyb@cybernetics.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: <stable@vger.kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1466097230-5333-2-git-send-email-bp@alien8.de
    Link: https://lkml.kernel.org/r/5761BEB0.9000807@cybernetics.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit b92e992e592b68fa7a7b3e3ba19c473d3d396292
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sat Jun 11 23:06:53 2016 +0900

    kprobes/x86: Clear TF bit in fault on single-stepping
    
    commit dcfc47248d3f7d28df6f531e6426b933de94370d upstream.
    
    Fix kprobe_fault_handler() to clear the TF (trap flag) bit of
    the flags register in the case of a fault fixup on single-stepping.
    
    If we put a kprobe on the instruction which caused a
    page fault (e.g. actual mov instructions in copy_user_*),
    that fault happens on the single-stepping buffer. In this
    case, kprobes resets running instance so that the CPU can
    retry execution on the original ip address.
    
    However, current code forgets to reset the TF bit. Since this
    fault happens with TF bit set for enabling single-stepping,
    when it retries, it causes a debug exception and kprobes
    can not handle it because it already reset itself.
    
    On the most of x86-64 platform, it can be easily reproduced
    by using kprobe tracer. E.g.
    
      # cd /sys/kernel/debug/tracing
      # echo p copy_user_enhanced_fast_string+5 > kprobe_events
      # echo 1 > events/kprobes/enable
    
    And you'll see a kernel panic on do_debug(), since the debug
    trap is not handled by kprobes.
    
    To fix this problem, we just need to clear the TF bit when
    resetting running kprobe.
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Reviewed-by: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
    Acked-by: Steven Rostedt <rostedt@goodmis.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: systemtap@sourceware.org
    Cc: stable@vger.kernel.org # All the way back to ancient kernels
    Link: http://lkml.kernel.org/r/20160611140648.25885.37482.stgit@devbox
    [ Updated the comments. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 970e17c2f8384cf7330deecfe85d555a0c3bff7a
Author: H. Peter Anvin <hpa@zytor.com>
Date:   Tue Apr 5 17:01:33 2016 -0700

    x86, build: copy ldlinux.c32 to image.iso
    
    commit 9c77679cadb118c0aa99e6f88533d91765a131ba upstream.
    
    For newer versions of Syslinux, we need ldlinux.c32 in addition to
    isolinux.bin to reside on the boot disk, so if the latter is found,
    copy it, too, to the isoimage tree.
    
    Signed-off-by: H. Peter Anvin <hpa@zytor.com>
    Cc: Linux Stable Tree <stable@vger.kernel.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 9a7edde8c09d96b1f79b128a8a7c182afc674cc1
Author: Yishai Hadas <yishaih@mellanox.com>
Date:   Wed Jun 22 17:27:28 2016 +0300

    IB/mlx4: Fix the SQ size of an RC QP
    
    commit f2940e2c76bb554a7fbdd28ca5b90904117a9e96 upstream.
    
    When calculating the required size of an RC QP send queue, leave
    enough space for masked atomic operations, which require more space than
    "regular" atomic operation.
    
    Fixes: 6fa8f719844b ("IB/mlx4: Add support for masked atomic operations")
    Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
    Reviewed-by: Jack Morgenstein <jackm@mellanox.co.il>
    Reviewed-by: Eran Ben Elisha <eranbe@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 0c3c7f4ca967fffa78c53a3ba154aed20fb60048
Author: Erez Shitrit <erezsh@mellanox.com>
Date:   Sat Jun 4 15:15:19 2016 +0300

    IB/IPoIB: Don't update neigh validity for unresolved entries
    
    commit 61c78eea9516a921799c17b4c20558e2aa780fd3 upstream.
    
    ipoib_neigh_get unconditionally updates the "alive" variable member on
    any packet send.  This prevents the neighbor garbage collection from
    cleaning out a dead neighbor entry if we are still queueing packets
    for it.  If the queue for this neighbor is full, then don't update the
    alive timestamp.  That way the neighbor can time out even if packets
    are still being queued as long as none of them are being sent.
    
    Fixes: b63b70d87741 ("IPoIB: Use a private hash table for path lookup in xmit path")
    Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 55ac348c6481882218cc2ba6713bc8fb972dcf3d
Author: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Date:   Sun Apr 10 19:13:13 2016 -0600

    IB/security: Restrict use of the write() interface
    
    commit e6bd18f57aad1a2d1ef40e646d03ed0f2515c9e3 upstream.
    
    The drivers/infiniband stack uses write() as a replacement for
    bi-directional ioctl().  This is not safe. There are ways to
    trigger write calls that result in the return structure that
    is normally written to user space being shunted off to user
    specified kernel memory instead.
    
    For the immediate repair, detect and deny suspicious accesses to
    the write API.
    
    For long term, update the user space libraries and the kernel API
    to something that doesn't present the same security vulnerabilities
    (likely a structured ioctl() interface).
    
    The impacted uAPI interfaces are generally only available if
    hardware from drivers/infiniband is installed in the system.
    
    Reported-by: Jann Horn <jann@thejh.net>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
    [ Expanded check to all known write() entry points ]
    Cc: stable@vger.kernel.org
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [wt: no hfi1 subdir in 3.10. A minimal rdma/ib.h had to be created
     from 3.11 sources to keep the code similar to mainline]
    
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit f40b2f17ede436c060c596799a7660cbb7462ed8
Author: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Date:   Wed Jun 8 17:28:29 2016 -0600

    IB/mlx4: Properly initialize GRH TClass and FlowLabel in AHs
    
    commit 8c5122e45a10a9262f872b53f151a592e870f905 upstream.
    
    When this code was reworked for IBoE support the order of assignments
    for the sl_tclass_flowlabel got flipped around resulting in
    TClass & FlowLabel being permanently set to 0 in the packet headers.
    
    This breaks IB routers that rely on these headers, but only affects
    kernel users - libmlx4 does this properly for user space.
    
    Cc: stable@vger.kernel.org
    Fixes: fa417f7b520e ("IB/mlx4: Add support for IBoE")
    Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 62cfca041862f31200f61ef28077ff07cd9c48b5
Author: Martin Willi <martin@strongswan.org>
Date:   Fri May 13 12:41:48 2016 +0200

    mac80211_hwsim: Add missing check for HWSIM_ATTR_SIGNAL
    
    commit 62397da50bb20a6b812c949ef465d7e69fe54bb6 upstream.
    
    A wmediumd that does not send this attribute causes a NULL pointer
    dereference, as the attribute is accessed even if it does not exist.
    
    The attribute was required but never checked ever since userspace frame
    forwarding has been introduced. The issue gets more problematic once we
    allow wmediumd registration from user namespaces.
    
    Fixes: 7882513bacb1 ("mac80211_hwsim driver support userspace frame tx/rx")
    Signed-off-by: Martin Willi <martin@strongswan.org>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 11d714992e62a6ae6c415757239cde6aad47f358
Author: Bob Copeland <me@bobcopeland.com>
Date:   Sun May 15 13:19:16 2016 -0400

    mac80211: mesh: flush mesh paths unconditionally
    
    commit fe7a7c57629e8dcbc0e297363a9b2366d67a6dc5 upstream.
    
    Currently, the mesh paths associated with a nexthop station are cleaned
    up in the following code path:
    
        __sta_info_destroy_part1
        synchronize_net()
        __sta_info_destroy_part2
         -> cleanup_single_sta
           -> mesh_sta_cleanup
             -> mesh_plink_deactivate
               -> mesh_path_flush_by_nexthop
    
    However, there are a couple of problems here:
    
    1) the paths aren't flushed at all if the MPM is running in userspace
       (e.g. when using wpa_supplicant or authsae)
    
    2) there is no synchronize_rcu between removing the path and readers
       accessing the nexthop, which means the following race is possible:
    
    CPU0                            CPU1
    ~~~~                            ~~~~
                                    sta_info_destroy_part1()
                                    synchronize_net()
    rcu_read_lock()
    mesh_nexthop_resolve()
      mpath = mesh_path_lookup()
                                    [...] -> mesh_path_flush_by_nexthop()
      sta = rcu_dereference(
        mpath->next_hop)
                                    kfree(sta)
      access sta <-- CRASH
    
    Fix both of these by unconditionally flushing paths before destroying
    the sta, and by adding a synchronize_net() after path flush to ensure
    no active readers can still dereference the sta.
    
    Fixes this crash:
    
    [  348.529295] BUG: unable to handle kernel paging request at 00020040
    [  348.530014] IP: [<f929245d>] ieee80211_mps_set_frame_flags+0x40/0xaa [mac80211]
    [  348.530014] *pde = 00000000
    [  348.530014] Oops: 0000 [#1] PREEMPT
    [  348.530014] Modules linked in: drbg ansi_cprng ctr ccm ppp_generic slhc ipt_MASQUERADE nf_nat_masquerade_ipv4 8021q ]
    [  348.530014] CPU: 0 PID: 20597 Comm: wget Tainted: G           O 4.6.0-rc5-wt=V1 #1
    [  348.530014] Hardware name: To Be Filled By O.E.M./To be filled by O.E.M., BIOS 080016  11/07/2014
    [  348.530014] task: f64fa280 ti: f4f9c000 task.ti: f4f9c000
    [  348.530014] EIP: 0060:[<f929245d>] EFLAGS: 00010246 CPU: 0
    [  348.530014] EIP is at ieee80211_mps_set_frame_flags+0x40/0xaa [mac80211]
    [  348.530014] EAX: f4ce63e0 EBX: 00000088 ECX: f3788416 EDX: 00020008
    [  348.530014] ESI: 00000000 EDI: 00000088 EBP: f6409a4c ESP: f6409a40
    [  348.530014]  DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
    [  348.530014] CR0: 80050033 CR2: 00020040 CR3: 33190000 CR4: 00000690
    [  348.530014] Stack:
    [  348.530014]  00000000 f4ce63e0 f5f9bd80 f6409a64 f9291d80 0000ce67 f5d51e00 f4ce63e0
    [  348.530014]  f3788416 f6409a80 f9291dc1 f4ce8320 f4ce63e0 f5d51e00 f4ce63e0 f4ce8320
    [  348.530014]  f6409a98 f9277f6f 00000000 00000000 0000007c 00000000 f6409b2c f9278dd1
    [  348.530014] Call Trace:
    [  348.530014]  [<f9291d80>] mesh_nexthop_lookup+0xbb/0xc8 [mac80211]
    [  348.530014]  [<f9291dc1>] mesh_nexthop_resolve+0x34/0xd8 [mac80211]
    [  348.530014]  [<f9277f6f>] ieee80211_xmit+0x92/0xc1 [mac80211]
    [  348.530014]  [<f9278dd1>] __ieee80211_subif_start_xmit+0x807/0x83c [mac80211]
    [  348.530014]  [<c04df012>] ? sch_direct_xmit+0xd7/0x1b3
    [  348.530014]  [<c022a8c6>] ? __local_bh_enable_ip+0x5d/0x7b
    [  348.530014]  [<f956870c>] ? nf_nat_ipv4_out+0x4c/0xd0 [nf_nat_ipv4]
    [  348.530014]  [<f957e036>] ? iptable_nat_ipv4_fn+0xf/0xf [iptable_nat]
    [  348.530014]  [<c04c6f45>] ? netif_skb_features+0x14d/0x30a
    [  348.530014]  [<f9278e10>] ieee80211_subif_start_xmit+0xa/0xe [mac80211]
    [  348.530014]  [<c04c769c>] dev_hard_start_xmit+0x1f8/0x267
    [  348.530014]  [<c04c7261>] ?  validate_xmit_skb.isra.120.part.121+0x10/0x253
    [  348.530014]  [<c04defc6>] sch_direct_xmit+0x8b/0x1b3
    [  348.530014]  [<c04c7a9c>] __dev_queue_xmit+0x2c8/0x513
    [  348.530014]  [<c04c7cfb>] dev_queue_xmit+0xa/0xc
    [  348.530014]  [<f91bfc7a>] batadv_send_skb_packet+0xd6/0xec [batman_adv]
    [  348.530014]  [<f91bfdc4>] batadv_send_unicast_skb+0x15/0x4a [batman_adv]
    [  348.530014]  [<f91b5938>] batadv_dat_send_data+0x27e/0x310 [batman_adv]
    [  348.530014]  [<f91c30b5>] ? batadv_tt_global_hash_find.isra.11+0x8/0xa [batman_adv]
    [  348.530014]  [<f91b63f3>] batadv_dat_snoop_outgoing_arp_request+0x208/0x23d [batman_adv]
    [  348.530014]  [<f91c0cd9>] batadv_interface_tx+0x206/0x385 [batman_adv]
    [  348.530014]  [<c04c769c>] dev_hard_start_xmit+0x1f8/0x267
    [  348.530014]  [<c04c7261>] ?  validate_xmit_skb.isra.120.part.121+0x10/0x253
    [  348.530014]  [<c04defc6>] sch_direct_xmit+0x8b/0x1b3
    [  348.530014]  [<c04c7a9c>] __dev_queue_xmit+0x2c8/0x513
    [  348.530014]  [<f80cbd2a>] ? igb_xmit_frame+0x57/0x72 [igb]
    [  348.530014]  [<c04c7cfb>] dev_queue_xmit+0xa/0xc
    [  348.530014]  [<f843a326>] br_dev_queue_push_xmit+0xeb/0xfb [bridge]
    [  348.530014]  [<f843a35f>] br_forward_finish+0x29/0x74 [bridge]
    [  348.530014]  [<f843a23b>] ? deliver_clone+0x3b/0x3b [bridge]
    [  348.530014]  [<f843a714>] __br_forward+0x89/0xe7 [bridge]
    [  348.530014]  [<f843a336>] ? br_dev_queue_push_xmit+0xfb/0xfb [bridge]
    [  348.530014]  [<f843a234>] deliver_clone+0x34/0x3b [bridge]
    [  348.530014]  [<f843a68b>] ? br_flood+0x95/0x95 [bridge]
    [  348.530014]  [<f843a66d>] br_flood+0x77/0x95 [bridge]
    [  348.530014]  [<f843a809>] br_flood_forward+0x13/0x1a [bridge]
    [  348.530014]  [<f843a68b>] ? br_flood+0x95/0x95 [bridge]
    [  348.530014]  [<f843b877>] br_handle_frame_finish+0x392/0x3db [bridge]
    [  348.530014]  [<c04e9b2b>] ? nf_iterate+0x2b/0x6b
    [  348.530014]  [<f843baa6>] br_handle_frame+0x1e6/0x240 [bridge]
    [  348.530014]  [<f843b4e5>] ? br_handle_local_finish+0x6a/0x6a [bridge]
    [  348.530014]  [<c04c4ba0>] __netif_receive_skb_core+0x43a/0x66b
    [  348.530014]  [<f843b8c0>] ? br_handle_frame_finish+0x3db/0x3db [bridge]
    [  348.530014]  [<c023cea4>] ? resched_curr+0x19/0x37
    [  348.530014]  [<c0240707>] ? check_preempt_wakeup+0xbf/0xfe
    [  348.530014]  [<c0255dec>] ? ktime_get_with_offset+0x5c/0xfc
    [  348.530014]  [<c04c4fc1>] __netif_receive_skb+0x47/0x55
    [  348.530014]  [<c04c57ba>] netif_receive_skb_internal+0x40/0x5a
    [  348.530014]  [<c04c61ef>] napi_gro_receive+0x3a/0x94
    [  348.530014]  [<f80ce8d5>] igb_poll+0x6fd/0x9ad [igb]
    [  348.530014]  [<c0242bd8>] ? swake_up_locked+0x14/0x26
    [  348.530014]  [<c04c5d29>] net_rx_action+0xde/0x250
    [  348.530014]  [<c022a743>] __do_softirq+0x8a/0x163
    [  348.530014]  [<c022a6b9>] ? __hrtimer_tasklet_trampoline+0x19/0x19
    [  348.530014]  [<c021100f>] do_softirq_own_stack+0x26/0x2c
    [  348.530014]  <IRQ>
    [  348.530014]  [<c022a957>] irq_exit+0x31/0x6f
    [  348.530014]  [<c0210eb2>] do_IRQ+0x8d/0xa0
    [  348.530014]  [<c058152c>] common_interrupt+0x2c/0x40
    [  348.530014] Code: e7 8c 00 66 81 ff 88 00 75 12 85 d2 75 0e b2 c3 b8 83 e9 29 f9 e8 a7 5f f9 c6 eb 74 66 81 e3 8c 005
    [  348.530014] EIP: [<f929245d>] ieee80211_mps_set_frame_flags+0x40/0xaa [mac80211] SS:ESP 0068:f6409a40
    [  348.530014] CR2: 0000000000020040
    [  348.530014] ---[ end trace 48556ac26779732e ]---
    [  348.530014] Kernel panic - not syncing: Fatal exception in interrupt
    [  348.530014] Kernel Offset: disabled
    
    Reported-by: Fred Veldini <fred.veldini@gmail.com>
    Tested-by: Fred Veldini <fred.veldini@gmail.com>
    Signed-off-by: Bob Copeland <me@bobcopeland.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 5bccf7715a1d5c2a9f6d1b9301d6619429a34319
Author: Feng Tang <feng.tang@intel.com>
Date:   Fri Jun 24 15:26:05 2016 +0800

    net: alx: Work around the DMA RX overflow issue
    
    commit 881d0327db37ad917a367c77aff1afa1ee41e0a9 upstream.
    
    Note: This is a verified backported patch for stable 4.4 kernel, and it
    could also be applied to 4.3/4.2/4.1/3.18/3.16
    
    There is a problem with alx devices, that the network link will be
    lost in 1-5 minutes after the device is up.
    
    >From debugging without datasheet, we found the error always
    happen when the DMA RX address is set to 0x....fc0, which is very
    likely to be a HW/silicon problem.
    
    This patch will apply rx skb with 64 bytes longer space, and if the
    allocated skb has a 0x...fc0 address, it will use skb_resever(skb, 64)
    to advance the address, so that the RX overflow can be avoided.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70761
    Signed-off-by: Feng Tang <feng.tang@intel.com>
    Suggested-by: Eric Dumazet <edumazet@google.com>
    Tested-by: Ole Lukoie <olelukoie@mail.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 23f2a4ce4fc03e4f37f6fe341bbb1baace1b097e
Author: Tom Goff <thomas.goff@ll.mit.edu>
Date:   Thu Jun 23 16:11:57 2016 -0400

    ipmr/ip6mr: Initialize the last assert time of mfc entries.
    
    commit 70a0dec45174c976c64b4c8c1d0898581f759948 upstream.
    
    This fixes wrong-interface signaling on 32-bit platforms for entries
    created when jiffies > 2^31 + MFC_ASSERT_THRESH.
    
    Signed-off-by: Tom Goff <thomas.goff@ll.mit.edu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit d09f7f9a7b70ce6cf3439a5b6c953e057c157dd7
Author: Simon Horman <simon.horman@netronome.com>
Date:   Thu Jun 16 17:06:19 2016 +0900

    sit: correct IP protocol used in ipip6_err
    
    commit d5d8760b78d0cfafe292f965f599988138b06a70 upstream.
    
    Since 32b8a8e59c9c ("sit: add IPv4 over IPv4 support")
    ipip6_err() may be called for packets whose IP protocol is
    IPPROTO_IPIP as well as those whose IP protocol is IPPROTO_IPV6.
    
    In the case of IPPROTO_IPIP packets the correct protocol value is not
    passed to ipv4_update_pmtu() or ipv4_redirect().
    
    This patch resolves this problem by using the IP protocol of the packet
    rather than a hard-coded value. This appears to be consistent
    with the usage of the protocol of a packet by icmp_socket_deliver()
    the caller of ipip6_err().
    
    I was able to exercise the redirect case by using a setup where an ICMP
    redirect was received for the destination of the encapsulated packet.
    However, it appears that although incorrect the protocol field is not used
    in this case and thus no problem manifests.  On inspection it does not
    appear that a problem will manifest in the fragmentation needed/update pmtu
    case either.
    
    In short I believe this is a cosmetic fix. None the less, the use of
    IPPROTO_IPV6 seems wrong and confusing.
    
    Reviewed-by: Dinan Gunawardena <dinan.gunawardena@netronome.com>
    Signed-off-by: Simon Horman <simon.horman@netronome.com>
    Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 801b100b137e407e036c282be0191db9f9887e3f
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Tue Jul 12 13:17:57 2016 +0800

    crypto: scatterwalk - Fix test in scatterwalk_done
    
    commit 5f070e81bee35f1b7bd1477bb223a873ff657803 upstream.
    
    When there is more data to be processed, the current test in
    scatterwalk_done may prevent us from calling pagedone even when
    we should.
    
    In particular, if we're on an SG entry spanning multiple pages
    where the last page is not a full page, we will incorrectly skip
    calling pagedone on the second last page.
    
    This patch fixes this by adding a separate test for whether we've
    reached the end of a page.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit ef15fd6c8acbadcf4be663b7a504aa6b191d8182
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Wed Jun 15 22:27:05 2016 +0800

    crypto: gcm - Filter out async ghash if necessary
    
    commit b30bdfa86431afbafe15284a3ad5ac19b49b88e3 upstream.
    
    As it is if you ask for a sync gcm you may actually end up with
    an async one because it does not filter out async implementations
    of ghash.
    
    This patch fixes this by adding the necessary filter when looking
    for ghash.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 7e2e2115ed370d58c3835136f4a7914906964925
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Wed Jun 8 14:56:39 2016 +0200

    crypto: ux500 - memmove the right size
    
    commit 19ced623db2fe91604d69f7d86b03144c5107739 upstream.
    
    The hash buffer is really HASH_BLOCK_SIZE bytes, someone
    must have thought that memmove takes n*u32 words by mistake.
    Tests work as good/bad as before after this patch.
    
    Cc: Joakim Bech <joakim.bech@linaro.org>
    Cc: stable@vger.kernel.org
    Reported-by: David Binderman <linuxdev.baldrick@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 742d555a529c3dbbf7d326620082f7cbb510ac7e
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Tue Jun 7 21:26:55 2016 -0400

    fix d_walk()/non-delayed __d_free() race
    
    commit 3d56c25e3bb0726a5c5e16fc2d9e38f8ed763085 upstream.
    
    Ascend-to-parent logics in d_walk() depends on all encountered child
    dentries not getting freed without an RCU delay.  Unfortunately, in
    quite a few cases it is not true, with hard-to-hit oopsable race as
    the result.
    
    Fortunately, the fix is simiple; right now the rule is "if it ever
    been hashed, freeing must be delayed" and changing it to "if it
    ever had a parent, freeing must be delayed" closes that hole and
    covers all cases the old rule used to cover.  Moreover, pipes and
    sockets remain _not_ covered, so we do not introduce RCU delay in
    the cases which are the reason for having that delay conditional
    in the first place.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [wt: add the required change to __d_materialise_dentry() for kernels
      older than v3.17]
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 88ac3837703b3dbe8fdb8b8b8f41143202867aa6
Author: Jann Horn <jannh@google.com>
Date:   Wed Jun 1 11:55:06 2016 +0200

    ecryptfs: forbid opening files without mmap handler
    
    commit 2f36db71009304b3f0b95afacd8eba1f9f046b87 upstream.
    
    This prevents users from triggering a stack overflow through a recursive
    invocation of pagefault handling that involves mapping procfs files into
    virtual memory.
    
    Signed-off-by: Jann Horn <jannh@google.com>
    Acked-by: Tyler Hicks <tyhicks@canonical.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit fcf55035f9cf155d2d63a07af15522bfafb54951
Author: Helge Deller <deller@gmx.de>
Date:   Sat Jun 4 17:21:33 2016 +0200

    parisc: Fix pagefault crash in unaligned __get_user() call
    
    commit 8b78f260887df532da529f225c49195d18fef36b upstream.
    
    One of the debian buildd servers had this crash in the syslog without
    any other information:
    
     Unaligned handler failed, ret = -2
     clock_adjtime (pid 22578): Unaligned data reference (code 28)
     CPU: 1 PID: 22578 Comm: clock_adjtime Tainted: G  E  4.5.0-2-parisc64-smp #1 Debian 4.5.4-1
     task: 000000007d9960f8 ti: 00000001bde7c000 task.ti: 00000001bde7c000
    
          YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI
     PSW: 00001000000001001111100000001111 Tainted: G            E
     r00-03  000000ff0804f80f 00000001bde7c2b0 00000000402d2be8 00000001bde7c2b0
     r04-07  00000000409e1fd0 00000000fa6f7fff 00000001bde7c148 00000000fa6f7fff
     r08-11  0000000000000000 00000000ffffffff 00000000fac9bb7b 000000000002b4d4
     r12-15  000000000015241c 000000000015242c 000000000000002d 00000000fac9bb7b
     r16-19  0000000000028800 0000000000000001 0000000000000070 00000001bde7c218
     r20-23  0000000000000000 00000001bde7c210 0000000000000002 0000000000000000
     r24-27  0000000000000000 0000000000000000 00000001bde7c148 00000000409e1fd0
     r28-31  0000000000000001 00000001bde7c320 00000001bde7c350 00000001bde7c218
     sr00-03  0000000001200000 0000000001200000 0000000000000000 0000000001200000
     sr04-07  0000000000000000 0000000000000000 0000000000000000 0000000000000000
    
     IASQ: 0000000000000000 0000000000000000 IAOQ: 00000000402d2e84 00000000402d2e88
      IIR: 0ca0d089    ISR: 0000000001200000  IOR: 00000000fa6f7fff
      CPU:        1   CR30: 00000001bde7c000 CR31: ffffffffffffffff
      ORIG_R28: 00000002369fe628
      IAOQ[0]: compat_get_timex+0x2dc/0x3c0
      IAOQ[1]: compat_get_timex+0x2e0/0x3c0
      RP(r2): compat_get_timex+0x40/0x3c0
     Backtrace:
      [<00000000402d4608>] compat_SyS_clock_adjtime+0x40/0xc0
      [<0000000040205024>] syscall_exit+0x0/0x14
    
    This means the userspace program clock_adjtime called the clock_adjtime()
    syscall and then crashed inside the compat_get_timex() function.
    Syscalls should never crash programs, but instead return EFAULT.
    
    The IIR register contains the executed instruction, which disassebles
    into "ldw 0(sr3,r5),r9".
    This load-word instruction is part of __get_user() which tried to read the word
    at %r5/IOR (0xfa6f7fff). This means the unaligned handler jumped in.  The
    unaligned handler is able to emulate all ldw instructions, but it fails if it
    fails to read the source e.g. because of page fault.
    
    The following program reproduces the problem:
    
    #define _GNU_SOURCE
    #include <unistd.h>
    #include <sys/syscall.h>
    #include <sys/mman.h>
    
    int main(void) {
            /* allocate 8k */
            char *ptr = mmap(NULL, 2*4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
            /* free second half (upper 4k) and make it invalid. */
            munmap(ptr+4096, 4096);
            /* syscall where first int is unaligned and clobbers into invalid memory region */
            /* syscall should return EFAULT */
            return syscall(__NR_clock_adjtime, 0, ptr+4095);
    }
    
    To fix this issue we simply need to check if the faulting instruction address
    is in the exception fixup table when the unaligned handler failed. If it
    is, call the fixup routine instead of crashing.
    
    While looking at the unaligned handler I found another issue as well: The
    target register should not be modified if the handler was unsuccessful.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit d948109df11c8485e972b4cc0eb4820d4b754615
Author: Dave Weinstein <olorin@google.com>
Date:   Thu Jul 28 11:55:41 2016 -0700

    arm: oabi compat: add missing access checks
    
    commit 7de249964f5578e67b99699c5f0b405738d820a2 upstream.
    
    Add access checks to sys_oabi_epoll_wait() and sys_oabi_semtimedop().
    This fixes CVE-2016-3857, a local privilege escalation under
    CONFIG_OABI_COMPAT.
    
    Cc: stable@vger.kernel.org
    Reported-by: Chiachih Wu <wuchiachih@gmail.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Nicolas Pitre <nico@linaro.org>
    Signed-off-by: Dave Weinstein <olorin@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 951b391d266e93a56559d28817663a10128e0159
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Mon May 30 23:14:56 2016 +0100

    ARM: fix PTRACE_SETVFPREGS on SMP systems
    
    commit e2dfb4b880146bfd4b6aa8e138c0205407cebbaf upstream.
    
    PTRACE_SETVFPREGS fails to properly mark the VFP register set to be
    reloaded, because it undoes one of the effects of vfp_flush_hwstate().
    
    Specifically vfp_flush_hwstate() sets thread->vfpstate.hard.cpu to
    an invalid CPU number, but vfp_set() overwrites this with the original
    CPU number, thereby rendering the hardware state as apparently "valid",
    even though the software state is more recent.
    
    Fix this by reverting the previous change.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 8130b9d7b9d8 ("ARM: 7308/1: vfp: flush thread hwstate before copying ptrace registers")
    Acked-by: Will Deacon <will.deacon@arm.com>
    Tested-by: Simon Marchi <simon.marchi@ericsson.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 42bc57b6a75b5242f2103b368be0693fecf292d2
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Wed Jun 1 14:09:23 2016 +0200

    KVM: x86: fix OOPS after invalid KVM_SET_DEBUGREGS
    
    commit d14bdb553f9196169f003058ae1cdabe514470e6 upstream.
    
    MOV to DR6 or DR7 causes a #GP if an attempt is made to write a 1 to
    any of bits 63:32.  However, this is not detected at KVM_SET_DEBUGREGS
    time, and the next KVM_RUN oopses:
    
       general protection fault: 0000 [#1] SMP
       CPU: 2 PID: 14987 Comm: a.out Not tainted 4.4.9-300.fc23.x86_64 #1
       Hardware name: LENOVO 2325F51/2325F51, BIOS G2ET32WW (1.12 ) 05/30/2012
       [...]
       Call Trace:
        [<ffffffffa072c93d>] kvm_arch_vcpu_ioctl_run+0x141d/0x14e0 [kvm]
        [<ffffffffa071405d>] kvm_vcpu_ioctl+0x33d/0x620 [kvm]
        [<ffffffff81241648>] do_vfs_ioctl+0x298/0x480
        [<ffffffff812418a9>] SyS_ioctl+0x79/0x90
        [<ffffffff817a0f2e>] entry_SYSCALL_64_fastpath+0x12/0x71
       Code: 55 83 ff 07 48 89 e5 77 27 89 ff ff 24 fd 90 87 80 81 0f 23 fe 5d c3 0f 23 c6 5d c3 0f 23 ce 5d c3 0f 23 d6 5d c3 0f 23 de 5d c3 <0f> 23 f6 5d c3 0f 0b 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00
       RIP  [<ffffffff810639eb>] native_set_debugreg+0x2b/0x40
        RSP <ffff88005836bd50>
    
    Testcase (beautified/reduced from syzkaller output):
    
        #include <unistd.h>
        #include <sys/syscall.h>
        #include <string.h>
        #include <stdint.h>
        #include <linux/kvm.h>
        #include <fcntl.h>
        #include <sys/ioctl.h>
    
        long r[8];
    
        int main()
        {
            struct kvm_debugregs dr = { 0 };
    
            r[2] = open("/dev/kvm", O_RDONLY);
            r[3] = ioctl(r[2], KVM_CREATE_VM, 0);
            r[4] = ioctl(r[3], KVM_CREATE_VCPU, 7);
    
            memcpy(&dr,
                   "\x5d\x6a\x6b\xe8\x57\x3b\x4b\x7e\xcf\x0d\xa1\x72"
                   "\xa3\x4a\x29\x0c\xfc\x6d\x44\x00\xa7\x52\xc7\xd8"
                   "\x00\xdb\x89\x9d\x78\xb5\x54\x6b\x6b\x13\x1c\xe9"
                   "\x5e\xd3\x0e\x40\x6f\xb4\x66\xf7\x5b\xe3\x36\xcb",
                   48);
            r[7] = ioctl(r[4], KVM_SET_DEBUGREGS, &dr);
            r[6] = ioctl(r[4], KVM_RUN, 0);
        }
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 9eccedc413f809916ea82c7e0d11c0fd31e00383
Author: Dave Chinner <dchinner@redhat.com>
Date:   Wed May 18 13:54:23 2016 +1000

    xfs: skip stale inodes in xfs_iflush_cluster
    
    commit 7d3aa7fe970791f1a674b14572a411accf2f4d4e upstream.
    
    We don't write back stale inodes so we should skip them in
    xfs_iflush_cluster, too.
    
    cc: <stable@vger.kernel.org> # 3.10.x-
    Signed-off-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 360914d619705b62f974492658e96f3d111232a8
Author: Dave Chinner <dchinner@redhat.com>
Date:   Wed May 18 13:54:22 2016 +1000

    xfs: fix inode validity check in xfs_iflush_cluster
    
    commit 51b07f30a71c27405259a0248206ed4e22adbee2 upstream.
    
    Some careless idiot(*) wrote crap code in commit 1a3e8f3 ("xfs:
    convert inode cache lookups to use RCU locking") back in late 2010,
    and so xfs_iflush_cluster checks the wrong inode for whether it is
    still valid under RCU protection. Fix it to lock and check the
    correct inode.
    
    (*) Careless-idiot: Dave Chinner <dchinner@redhat.com>
    
    cc: <stable@vger.kernel.org> # 3.10.x-
    Discovered-by: Brain Foster <bfoster@redhat.com>
    Signed-off-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 01ee4801e26c15e5bf3d0a9b563d125bbbd2ed66
Author: Dave Chinner <dchinner@redhat.com>
Date:   Wed May 18 13:53:42 2016 +1000

    xfs: xfs_iflush_cluster fails to abort on error
    
    commit b1438f477934f5a4d5a44df26f3079a7575d5946 upstream.
    
    When a failure due to an inode buffer occurs, the error handling
    fails to abort the inode writeback correctly. This can result in the
    inode being reclaimed whilst still in the AIL, leading to
    use-after-free situations as well as filesystems that cannot be
    unmounted as the inode log items left in the AIL never get removed.
    
    Fix this by ensuring fatal errors from xfs_imap_to_bp() result in
    the inode flush being aborted correctly.
    
    Reported-by: Shyam Kaushik <shyam@zadarastorage.com>
    Diagnosed-by: Shyam Kaushik <shyam@zadarastorage.com>
    Tested-by: Shyam Kaushik <shyam@zadarastorage.com>
    Signed-off-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [wt: in kernels < 3.17, the error sign is positive, not negative]
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 0ed4547f527c1410ff2a35af766ce5c3a29405c4
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu May 26 15:16:25 2016 -0700

    dma-debug: avoid spinlock recursion when disabling dma-debug
    
    commit 3017cd63f26fc655d56875aaf497153ba60e9edf upstream.
    
    With netconsole (at least) the pr_err("...  disablingn") call can
    recurse back into the dma-debug code, where it'll try to grab
    free_entries_lock again.  Avoid the problem by doing the printk after
    dropping the lock.
    
    Link: http://lkml.kernel.org/r/1463678421-18683-1-git-send-email-ville.syrjala@linux.intel.com
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit e7dcdba7d680b021538ecd93cee1954291558399
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Thu Jul 14 23:02:47 2016 -0400

    ext4: fix reference counting bug on block allocation error
    
    commit 554a5ccc4e4a20c5f3ec859de0842db4b4b9c77e upstream.
    
    If we hit this error when mounted with errors=continue or
    errors=remount-ro:
    
        EXT4-fs error (device loop0): ext4_mb_mark_diskspace_used:2940: comm ext4.exe: Allocating blocks 5090-6081 which overlap fs metadata
    
    then ext4_mb_new_blocks() will call ext4_mb_release_context() and try to
    continue. However, ext4_mb_release_context() is the wrong thing to call
    here since we are still actually using the allocation context.
    
    Instead, just error out. We could retry the allocation, but there is a
    possibility of getting stuck in an infinite loop instead, so this seems
    safer.
    
    [ Fixed up so we don't return EAGAIN to userspace. --tytso ]
    
    Fixes: 8556e8f3b6 ("ext4: Don't allow new groups to be added during block allocation")
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    Cc: stable@vger.kernel.org
    [wt: 3.10 doesn't have EFSCORRUPTED, but XFS uses EUCLEAN as does 3.14
         on this patch so use this instead]
    
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit bf86199bfadda49f1e6d2880dc58a891a47890c6
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Thu Jul 14 23:21:35 2016 -0400

    ext4: short-cut orphan cleanup on error
    
    commit c65d5c6c81a1f27dec5f627f67840726fcd146de upstream.
    
    If we encounter a filesystem error during orphan cleanup, we should stop.
    Otherwise, we may end up in an infinite loop where the same inode is
    processed again and again.
    
        EXT4-fs (loop0): warning: checktime reached, running e2fsck is recommended
        EXT4-fs error (device loop0): ext4_mb_generate_buddy:758: group 2, block bitmap and bg descriptor inconsistent: 6117 vs 0 free clusters
        Aborting journal on device loop0-8.
        EXT4-fs (loop0): Remounting filesystem read-only
        EXT4-fs error (device loop0) in ext4_free_blocks:4895: Journal has aborted
        EXT4-fs error (device loop0) in ext4_do_update_inode:4893: Journal has aborted
        EXT4-fs error (device loop0) in ext4_do_update_inode:4893: Journal has aborted
        EXT4-fs error (device loop0) in ext4_ext_remove_space:3068: IO failure
        EXT4-fs error (device loop0) in ext4_ext_truncate:4667: Journal has aborted
        EXT4-fs error (device loop0) in ext4_orphan_del:2927: Journal has aborted
        EXT4-fs error (device loop0) in ext4_do_update_inode:4893: Journal has aborted
        EXT4-fs (loop0): Inode 16 (00000000618192a0): orphan list check failed!
        [...]
        EXT4-fs (loop0): Inode 16 (0000000061819748): orphan list check failed!
        [...]
        EXT4-fs (loop0): Inode 16 (0000000061819bf0): orphan list check failed!
        [...]
    
    See-also: c9eb13a9105 ("ext4: fix hang when processing corrupted orphaned inode list")
    Cc: Jan Kara <jack@suse.cz>
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@vger.kernel.org
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 8b6ab35cbc581ab0eb74425d92e35e9522382121
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Mon Jul 4 11:03:00 2016 -0400

    ext4: don't call ext4_should_journal_data() on the journal inode
    
    commit 6a7fd522a7c94cdef0a3b08acf8e6702056e635c upstream.
    
    If ext4_fill_super() fails early, it's possible for ext4_evict_inode()
    to call ext4_should_journal_data() before superblock options and flags
    are fully set up.  In that case, the iput() on the journal inode can
    end up causing a BUG().
    
    Work around this problem by reordering the tests so we only call
    ext4_should_journal_data() after we know it's not the journal inode.
    
    Fixes: 2d859db3e4 ("ext4: fix data corruption in inodes with journalled data")
    Fixes: 2b405bfa84 ("ext4: fix data=journal fast mount/umount hang")
    Cc: Jan Kara <jack@suse.cz>
    Cc: stable@vger.kernel.org
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 6dc68acbb65e2336d6f8b35c2f0c9a4219d3adf2
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Thu Jun 30 11:53:46 2016 -0400

    ext4: check for extents that wrap around
    
    commit f70749ca42943faa4d4dcce46dfdcaadb1d0c4b6 upstream.
    
    An extent with lblock = 4294967295 and len = 1 will pass the
    ext4_valid_extent() test:
    
            ext4_lblk_t last = lblock + len - 1;
    
            if (len == 0 || lblock > last)
                    return 0;
    
    since last = 4294967295 + 1 - 1 = 4294967295. This would later trigger
    the BUG_ON(es->es_lblk + es->es_len < es->es_lblk) in ext4_es_end().
    
    We can simplify it by removing the - 1 altogether and changing the test
    to use lblock + len <= lblock, since now if len = 0, then lblock + 0 ==
    lblock and it fails, and if len > 0 then lblock + len > lblock in order
    to pass (i.e. it doesn't overflow).
    
    Fixes: 5946d0893 ("ext4: check for overlapping extents in ext4_valid_extent_entries()")
    Fixes: 2f974865f ("ext4: check for zero length extent explicitly")
    Cc: Eryu Guan <guaneryu@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Phil Turnbull <phil.turnbull@oracle.com>
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit ea8f8498b39a4e9ef9c55f5b3eb25efea85a6ffb
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Fri Jul 15 00:22:07 2016 -0400

    ext4: verify extent header depth
    
    commit 7bc9491645118c9461bd21099c31755ff6783593 upstream.
    
    Although the extent tree depth of 5 should enough be for the worst
    case of 2*32 extents of length 1, the extent tree code does not
    currently to merge nodes which are less than half-full with a sibling
    node, or to shrink the tree depth if possible.  So it's possible, at
    least in theory, for the tree depth to be greater than 5.  However,
    even in the worst case, a tree depth of 32 is highly unlikely, and if
    the file system is maliciously corrupted, an insanely large eh_depth
    can cause memory allocation failures that will trigger kernel warnings
    (here, eh_depth = 65280):
    
        JBD2: ext4.exe wants too many credits credits:195849 rsv_credits:0 max:256
        ------------[ cut here ]------------
        WARNING: CPU: 0 PID: 50 at fs/jbd2/transaction.c:293 start_this_handle+0x569/0x580
        CPU: 0 PID: 50 Comm: ext4.exe Not tainted 4.7.0-rc5+ #508
        Stack:
         604a8947 625badd8 0002fd09 00000000
         60078643 00000000 62623910 601bf9bc
         62623970 6002fc84 626239b0 900000125
        Call Trace:
         [<6001c2dc>] show_stack+0xdc/0x1a0
         [<601bf9bc>] dump_stack+0x2a/0x2e
         [<6002fc84>] __warn+0x114/0x140
         [<6002fdff>] warn_slowpath_null+0x1f/0x30
         [<60165829>] start_this_handle+0x569/0x580
         [<60165d4e>] jbd2__journal_start+0x11e/0x220
         [<60146690>] __ext4_journal_start_sb+0x60/0xa0
         [<60120a81>] ext4_truncate+0x131/0x3a0
         [<60123677>] ext4_setattr+0x757/0x840
         [<600d5d0f>] notify_change+0x16f/0x2a0
         [<600b2b16>] do_truncate+0x76/0xc0
         [<600c3e56>] path_openat+0x806/0x1300
         [<600c55c9>] do_filp_open+0x89/0xf0
         [<600b4074>] do_sys_open+0x134/0x1e0
         [<600b4140>] SyS_open+0x20/0x30
         [<6001ea68>] handle_syscall+0x88/0x90
         [<600295fd>] userspace+0x3fd/0x500
         [<6001ac55>] fork_handler+0x85/0x90
    
        ---[ end trace 08b0b88b6387a244 ]---
    
    [ Commit message modified and the extent tree depath check changed
    from 5 to 32 -- tytso ]
    
    Cc: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit cb0b53ed47f7e7a893b58f9becf4ea48e6ca7d43
Author: Nicolai Stange <nicstange@gmail.com>
Date:   Thu May 5 19:46:19 2016 -0400

    ext4: silence UBSAN in ext4_mb_init()
    
    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
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Nicolai Stange <nicstange@gmail.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 58e32a8d4e8eb5e034b9e092430e9ee138d8f0dc
Author: Nicolai Stange <nicstange@gmail.com>
Date:   Thu May 5 17:38:03 2016 -0400

    ext4: address UBSAN warning in mb_find_order_for_block()
    
    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
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Nicolai Stange <nicstange@gmail.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 3d1658bb0a72683b0e22f04420eae260295d8237
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Sat Apr 30 00:48:54 2016 -0400

    ext4: fix hang when processing corrupted orphaned inode list
    
    commit c9eb13a9105e2e418f72e46a2b6da3f49e696902 upstream.
    
    If the orphaned inode list contains inode #5, ext4_iget() returns a
    bad inode (since the bootloader inode should never be referenced
    directly).  Because of the bad inode, we end up processing the inode
    repeatedly and this hangs the machine.
    
    This can be reproduced via:
    
       mke2fs -t ext4 /tmp/foo.img 100
       debugfs -w -R "ssv last_orphan 5" /tmp/foo.img
       mount -o loop /tmp/foo.img /mnt
    
    (But don't do this if you are using an unpatched kernel if you care
    about the system staying functional.  :-)
    
    This bug was found by the port of American Fuzzy Lop into the kernel
    to find file system problems[1].  (Since it *only* happens if inode #5
    shows up on the orphan list --- 3, 7, 8, etc. won't do it, it's not
    surprising that AFL needed two hours before it found it.)
    
    [1] http://events.linuxfoundation.org/sites/events/files/slides/AFL%20filesystem%20fuzzing%2C%20Vault%202016_0.pdf
    
    Cc: stable@vger.kernel.org
    Reported by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 015378466167e49a2370c95e4e15607ff27f6e7a
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Jul 27 15:28:56 2016 -0400

    drm/radeon: fix firmware info version checks
    
    commit 3edc38a0facef45ee22af8afdce3737f421f36ab upstream.
    
    Some of the checks didn't handle frev 2 tables properly.
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 14a039bc47b8958d1517204cba4a339794b49990
Author: Lyude <cpaul@redhat.com>
Date:   Fri Jun 24 17:54:31 2016 -0400

    drm/radeon: Poll for both connect/disconnect on analog connectors
    
    commit 14ff8d48f2235295dfb3117693008e367b49cdb5 upstream.
    
    DRM_CONNECTOR_POLL_CONNECT only enables polling for connections, not
    disconnections. Because of this, we end up losing hotplug polling for
    analog connectors once they get connected.
    
    Easy way to reproduce:
     - Grab a machine with a radeon GPU and a VGA port
     - Plug a monitor into the VGA port, wait for it to update the connector
       from disconnected to connected
     - Disconnect the monitor on VGA, a hotplug event is never sent for the
       removal of the connector.
    
    Originally, only using DRM_CONNECTOR_POLL_CONNECT might have been a good
    idea since doing VGA polling can sometimes result in having to mess with
    the DAC voltages to figure out whether or not there's actually something
    there since VGA doesn't have HPD. Doing this would have the potential of
    showing visible artifacts on the screen every time we ran a poll while a
    VGA display was connected. Luckily, radeon_vga_detect() only resorts to
    this sort of polling if the poll is forced, and DRM's polling helper
    doesn't force it's polls.
    
    Additionally, this removes some assignments to connector->polled that
    weren't actually doing anything.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Lyude <cpaul@redhat.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 6f78f4c51cea9f7667484dc21f52078e3f6175f6
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Jun 1 12:58:36 2016 -0400

    drm/radeon: add a delay after ATPX dGPU power off
    
    commit d814b24fb74cb9797d70cb8053961447c5879a5c upstream.
    
    ATPX dGPU power control requires a 200ms delay between
    power off and on.  This should fix dGPU failures on
    resume from power off.
    
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Acked-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit fee154e5b3b1a6eb6e92b4dd75cc41fbe4181fe5
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Jun 13 15:37:34 2016 -0400

    drm/radeon: fix asic initialization for virtualized environments
    
    commit 05082b8bbd1a0ffc74235449c4b8930a8c240f85 upstream.
    
    When executing in a PCI passthrough based virtuzliation environment, the
    hypervisor will usually attempt to send a PCIe bus reset signal to the
    ASIC when the VM reboots. In this scenario, the card is not correctly
    initialized, but we still consider it to be posted. Therefore, in a
    passthrough based environemnt we should always post the card to guarantee
    it is in a good state for driver initialization.
    
    Ported from amdgpu commit:
    amdgpu: fix asic initialization for virtualized environments
    
    Cc: Andres Rodriguez <andres.rodriguez@amd.com>
    Cc: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 30e00cbd5f24d3f9724cee5ce7221d9baaa67391
Author: Lyude <cpaul@redhat.com>
Date:   Thu May 12 10:56:59 2016 -0400

    drm/fb_helper: Fix references to dev->mode_config.num_connector
    
    commit 255f0e7c418ad95a4baeda017ae6182ba9b3c423 upstream.
    
    During boot, MST hotplugs are generally expected (even if no physical
    hotplugging occurs) and result in DRM's connector topology changing.
    This means that using num_connector from the current mode configuration
    can lead to the number of connectors changing under us. This can lead to
    some nasty scenarios in fbcon:
    
    - We allocate an array to the size of dev->mode_config.num_connectors.
    - MST hotplug occurs, dev->mode_config.num_connectors gets incremented.
    - We try to loop through each element in the array using the new value
      of dev->mode_config.num_connectors, and end up going out of bounds
      since dev->mode_config.num_connectors is now larger then the array we
      allocated.
    
    fb_helper->connector_count however, will always remain consistent while
    we do a modeset in fb_helper.
    
    Note: This is just polish for 4.7, Dave Airlie's drm_connector
    refcounting fixed these bugs for real. But it's good enough duct-tape
    for stable kernel backporting, since backporting the refcounting
    changes is way too invasive.
    
    Signed-off-by: Lyude <cpaul@redhat.com>
    [danvet: Clarify why we need this. Also remove the now unused "dev"
    local variable to appease gcc.]
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/1463065021-18280-3-git-send-email-cpaul@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 184f1f0125bfd71d5deb86f58f72270f4b9661c7
Author: Itai Handler <itai_handler@hotmail.com>
Date:   Tue Nov 3 00:20:56 2015 +0200

    drm/gma500: Fix possible out of bounds read
    
    commit 7ccca1d5bf69fdd1d3c5fcf84faf1659a6e0ad11 upstream.
    
    Fix possible out of bounds read, by adding missing comma.
    The code may read pass the end of the dsi_errors array
    when the most significant bit (bit #31) in the intr_stat register
    is set.
    This bug has been detected using CppCheck (static analysis tool).
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Itai Handler <itai_handler@hotmail.com>
    Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit b3feb52602655d533109f4aadfc1090fa5759a7b
Author: Tomáš Trnka <ttrnka@mail.muni.cz>
Date:   Fri May 20 16:41:10 2016 +0200

    sunrpc: fix stripping of padded MIC tokens
    
    commit c0cb8bf3a8e4bd82e640862cdd8891400405cb89 upstream.
    
    The length of the GSS MIC token need not be a multiple of four bytes.
    It is then padded by XDR to a multiple of 4 B, but unwrap_integ_data()
    would previously only trim mic.len + 4 B. The remaining up to three
    bytes would then trigger a check in nfs4svc_decode_compoundargs(),
    leading to a "garbage args" error and mount failure:
    
    nfs4svc_decode_compoundargs: compound not properly padded!
    nfsd: failed to decode arguments!
    
    This would prevent older clients using the pre-RFC 4121 MIC format
    (37-byte MIC including a 9-byte OID) from mounting exports from v3.9+
    servers using krb5i.
    
    The trimming was introduced by commit 4c190e2f913f ("sunrpc: trim off
    trailing checksum before returning decrypted or integrity authenticated
    buffer").
    
    Fixes: 4c190e2f913f "unrpc: trim off trailing checksum..."
    Signed-off-by: Tomáš Trnka <ttrnka@mail.muni.cz>
    Cc: stable@vger.kernel.org
    Acked-by: Jeff Layton <jlayton@poochiereds.net>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 8110080dc53335d5dd99b123144a6174f19ffc65
Author: Cyril Bur <cyrilbur@gmail.com>
Date:   Fri Jun 17 14:58:34 2016 +1000

    powerpc/tm: Always reclaim in start_thread() for exec() class syscalls
    
    commit 8e96a87c5431c256feb65bcfc5aec92d9f7839b6 upstream.
    
    Userspace can quite legitimately perform an exec() syscall with a
    suspended transaction. exec() does not return to the old process, rather
    it load a new one and starts that, the expectation therefore is that the
    new process starts not in a transaction. Currently exec() is not treated
    any differently to any other syscall which creates problems.
    
    Firstly it could allow a new process to start with a suspended
    transaction for a binary that no longer exists. This means that the
    checkpointed state won't be valid and if the suspended transaction were
    ever to be resumed and subsequently aborted (a possibility which is
    exceedingly likely as exec()ing will likely doom the transaction) the
    new process will jump to invalid state.
    
    Secondly the incorrect attempt to keep the transactional state while
    still zeroing state for the new process creates at least two TM Bad
    Things. The first triggers on the rfid to return to userspace as
    start_thread() has given the new process a 'clean' MSR but the suspend
    will still be set in the hardware MSR. The second TM Bad Thing triggers
    in __switch_to() as the processor is still transactionally suspended but
    __switch_to() wants to zero the TM sprs for the new process.
    
    This is an example of the outcome of calling exec() with a suspended
    transaction. Note the first 700 is likely the first TM bad thing
    decsribed earlier only the kernel can't report it as we've loaded
    userspace registers. c000000000009980 is the rfid in
    fast_exception_return()
    
      Bad kernel stack pointer 3fffcfa1a370 at c000000000009980
      Oops: Bad kernel stack pointer, sig: 6 [#1]
      CPU: 0 PID: 2006 Comm: tm-execed Not tainted
      NIP: c000000000009980 LR: 0000000000000000 CTR: 0000000000000000
      REGS: c00000003ffefd40 TRAP: 0700   Not tainted
      MSR: 8000000300201031 <SF,ME,IR,DR,LE,TM[SE]>  CR: 00000000  XER: 00000000
      CFAR: c0000000000098b4 SOFTE: 0
      PACATMSCRATCH: b00000010000d033
      GPR00: 0000000000000000 00003fffcfa1a370 0000000000000000 0000000000000000
      GPR04: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
      GPR08: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
      GPR12: 00003fff966611c0 0000000000000000 0000000000000000 0000000000000000
      NIP [c000000000009980] fast_exception_return+0xb0/0xb8
      LR [0000000000000000]           (null)
      Call Trace:
      Instruction dump:
      f84d0278 e9a100d8 7c7b03a6 e84101a0 7c4ff120 e8410170 7c5a03a6 e8010070
      e8410080 e8610088 e8810090 e8210078 <4c000024> 48000000 e8610178 88ed023b
    
      Kernel BUG at c000000000043e80 [verbose debug info unavailable]
      Unexpected TM Bad Thing exception at c000000000043e80 (msr 0x201033)
      Oops: Unrecoverable exception, sig: 6 [#2]
      CPU: 0 PID: 2006 Comm: tm-execed Tainted: G      D
      task: c0000000fbea6d80 ti: c00000003ffec000 task.ti: c0000000fb7ec000
      NIP: c000000000043e80 LR: c000000000015a24 CTR: 0000000000000000
      REGS: c00000003ffef7e0 TRAP: 0700   Tainted: G      D
      MSR: 8000000300201033 <SF,ME,IR,DR,RI,LE,TM[SE]>  CR: 28002828  XER: 00000000
      CFAR: c000000000015a20 SOFTE: 0
      PACATMSCRATCH: b00000010000d033
      GPR00: 0000000000000000 c00000003ffefa60 c000000000db5500 c0000000fbead000
      GPR04: 8000000300001033 2222222222222222 2222222222222222 00000000ff160000
      GPR08: 0000000000000000 800000010000d033 c0000000fb7e3ea0 c00000000fe00004
      GPR12: 0000000000002200 c00000000fe00000 0000000000000000 0000000000000000
      GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
      GPR20: 0000000000000000 0000000000000000 c0000000fbea7410 00000000ff160000
      GPR24: c0000000ffe1f600 c0000000fbea8700 c0000000fbea8700 c0000000fbead000
      GPR28: c000000000e20198 c0000000fbea6d80 c0000000fbeab680 c0000000fbea6d80
      NIP [c000000000043e80] tm_restore_sprs+0xc/0x1c
      LR [c000000000015a24] __switch_to+0x1f4/0x420
      Call Trace:
      Instruction dump:
      7c800164 4e800020 7c0022a6 f80304a8 7c0222a6 f80304b0 7c0122a6 f80304b8
      4e800020 e80304a8 7c0023a6 e80304b0 <7c0223a6> e80304b8 7c0123a6 4e800020
    
    This fixes CVE-2016-5828.
    
    Fixes: bc2a9408fa65 ("powerpc: Hook in new transactional memory code")
    Cc: stable@vger.kernel.org # v3.9+
    Signed-off-by: Cyril Bur <cyrilbur@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit cc80e5c914b0534f6dcaf8d45031c73a6ea2ae7b
Author: Gavin Shan <gwshan@linux.vnet.ibm.com>
Date:   Thu May 26 09:56:07 2016 +1000

    powerpc/pseries: Fix PCI config address for DDW
    
    commit 8a934efe94347eee843aeea65bdec8077a79e259 upstream.
    
    In commit 8445a87f7092 "powerpc/iommu: Remove the dependency on EEH
    struct in DDW mechanism", the PE address was replaced with the PCI
    config address in order to remove dependency on EEH. According to PAPR
    spec, firmware (pHyp or QEMU) should accept "xxBBSSxx" format PCI config
    address, not "xxxxBBSS" provided by the patch. Note that "BB" is PCI bus
    number and "SS" is the combination of slot and function number.
    
    This fixes the PCI address passed to DDW RTAS calls.
    
    Fixes: 8445a87f7092 ("powerpc/iommu: Remove the dependency on EEH struct in DDW mechanism")
    Cc: stable@vger.kernel.org # v3.4+
    Reported-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
    Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Tested-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit b738ed81a859e1185d2c9b54ef15456c8117f306
Author: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
Date:   Mon Apr 11 16:17:23 2016 -0300

    powerpc/iommu: Remove the dependency on EEH struct in DDW mechanism
    
    commit 8445a87f7092bc8336ea1305be9306f26b846d93 upstream.
    
    Commit 39baadbf36ce ("powerpc/eeh: Remove eeh information from pci_dn")
    changed the pci_dn struct by removing its EEH-related members.
    As part of this clean-up, DDW mechanism was modified to read the device
    configuration address from eeh_dev struct.
    
    As a consequence, now if we disable EEH mechanism on kernel command-line
    for example, the DDW mechanism will fail, generating a kernel oops by
    dereferencing a NULL pointer (which turns to be the eeh_dev pointer).
    
    This patch just changes the configuration address calculation on DDW
    functions to a manual calculation based on pci_dn members instead of
    using eeh_dev-based address.
    
    No functional changes were made. This was tested on pSeries, both
    in PHyp and qemu guest.
    
    Fixes: 39baadbf36ce ("powerpc/eeh: Remove eeh information from pci_dn")
    Cc: stable@vger.kernel.org # v3.4+
    Reviewed-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 628cb1780bca2d899d76b29fd6884fa73d243c7c
Author: Russell Currey <ruscur@russell.cc>
Date:   Thu Apr 7 16:28:26 2016 +1000

    powerpc/pseries/eeh: Handle RTAS delay requests in configure_bridge
    
    commit 871e178e0f2c4fa788f694721a10b4758d494ce1 upstream.
    
    In the "ibm,configure-pe" and "ibm,configure-bridge" RTAS calls, the
    spec states that values of 9900-9905 can be returned, indicating that
    software should delay for 10^x (where x is the last digit, i.e. 990x)
    milliseconds and attempt the call again. Currently, the kernel doesn't
    know about this, and respecting it fixes some PCI failures when the
    hypervisor is busy.
    
    The delay is capped at 0.2 seconds.
    
    Cc: <stable@vger.kernel.org> # 3.10+
    Signed-off-by: Russell Currey <ruscur@russell.cc>
    Acked-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 0d330892ab7d7e1c0f1969250659deb11fe967b7
Author: Thomas Huth <thuth@redhat.com>
Date:   Thu May 12 13:29:11 2016 +0200

    powerpc: Use privileged SPR number for MMCR2
    
    commit 8dd75ccb571f3c92c48014b3dabd3d51a115ab41 upstream.
    
    We are already using the privileged versions of MMCR0, MMCR1
    and MMCRA in the kernel, so for MMCR2, we should better use
    the privileged versions, too, to be consistent.
    
    Fixes: 240686c13687 ("powerpc: Initialise PMU related regs on Power8")
    Suggested-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Thomas Huth <thuth@redhat.com>
    Acked-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit aeadb93a16d400f837d0c19e68cf22a884b182a6
Author: Thomas Huth <thuth@redhat.com>
Date:   Thu May 12 13:26:44 2016 +0200

    powerpc: Fix definition of SIAR and SDAR registers
    
    commit d23fac2b27d94aeb7b65536a50d32bfdc21fe01e upstream.
    
    The SIAR and SDAR registers are available twice, one time as SPRs
    780 / 781 (unprivileged, but read-only), and one time as the SPRs
    796 / 797 (privileged, but read and write). The Linux kernel code
    currently uses the unprivileged  SPRs - while this is OK for reading,
    writing to that register of course does not work.
    Since the KVM code tries to write to this register, too (see the mtspr
    in book3s_hv_rmhandlers.S), the contents of this register sometimes get
    lost for the guests, e.g. during migration of a VM.
    To fix this issue, simply switch to the privileged SPR numbers instead.
    
    Signed-off-by: Thomas Huth <thuth@redhat.com>
    Acked-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit be925e7ad222afd656ce8a2f9249939fa94b8699
Author: Hari Bathini <hbathini@linux.vnet.ibm.com>
Date:   Fri Apr 15 22:48:02 2016 +1000

    powerpc/book3s64: Fix branching to OOL handlers in relocatable kernel
    
    commit 8ed8ab40047a570fdd8043a40c104a57248dd3fd upstream.
    
    Some of the interrupt vectors on 64-bit POWER server processors are only
    32 bytes long (8 instructions), which is not enough for the full
    first-level interrupt handler. For these we need to branch to an
    out-of-line (OOL) handler. But when we are running a relocatable kernel,
    interrupt vectors till __end_interrupts marker are copied down to real
    address 0x100. So, branching to labels (ie. OOL handlers) outside this
    section must be handled differently (see LOAD_HANDLER()), considering
    relocatable kernel, which would need at least 4 instructions.
    
    However, branching from interrupt vector means that we corrupt the
    CFAR (come-from address register) on POWER7 and later processors as
    mentioned in commit 1707dd16. So, EXCEPTION_PROLOG_0 (6 instructions)
    that contains the part up to the point where the CFAR is saved in the
    PACA should be part of the short interrupt vectors before we branch out
    to OOL handlers.
    
    But as mentioned already, there are interrupt vectors on 64-bit POWER
    server processors that are only 32 bytes long (like vectors 0x4f00,
    0x4f20, etc.), which cannot accomodate the above two cases at the same
    time owing to space constraint. Currently, in these interrupt vectors,
    we simply branch out to OOL handlers, without using LOAD_HANDLER(),
    which leaves us vulnerable when running a relocatable kernel (eg. kdump
    case). While this has been the case for sometime now and kdump is used
    widely, we were fortunate not to see any problems so far, for three
    reasons:
    
      1. In almost all cases, production kernel (relocatable) is used for
         kdump as well, which would mean that crashed kernel's OOL handler
         would be at the same place where we end up branching to, from short
         interrupt vector of kdump kernel.
      2. Also, OOL handler was unlikely the reason for crash in almost all
         the kdump scenarios, which meant we had a sane OOL handler from
         crashed kernel that we branched to.
      3. On most 64-bit POWER server processors, page size is large enough
         that marking interrupt vector code as executable (see commit
         429d2e83) leads to marking OOL handler code from crashed kernel,
         that sits right below interrupt vector code from kdump kernel, as
         executable as well.
    
    Let us fix this by moving the __end_interrupts marker down past OOL
    handlers to make sure that we also copy OOL handlers to real address
    0x100 when running a relocatable kernel.
    
    This fix has been tested successfully in kdump scenario, on an LPAR with
    4K page size by using different default/production kernel and kdump
    kernel.
    
    Also tested by manually corrupting the OOL handlers in the first kernel
    and then kdump'ing, and then causing the OOL handlers to fire - mpe.
    
    Fixes: c1fb6816fb1b ("powerpc: Add relocation on exception vector handlers")
    Signed-off-by: Hari Bathini <hbathini@linux.vnet.ibm.com>
    Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 3ba97d7ea6afb1427ddc635550c75b20b7dfd1cd
Author: wang yanqing <udknight@gmail.com>
Date:   Tue May 3 00:38:36 2016 +0800

    rtlwifi: Fix logic error in enter/exit power-save mode
    
    commit 873ffe154ae074c46ed2d72dbd9a2a99f06f55b4 upstream.
    
    In commit a269913c52ad ("rtlwifi: Rework rtl_lps_leave() and
    rtl_lps_enter() to use work queue"), the tests for enter/exit
    power-save mode were inverted. With this change applied, the
    wifi connection becomes much more stable.
    
    Fixes: a269913c52ad ("rtlwifi: Rework rtl_lps_leave() and rtl_lps_enter() to use work queue")
    Signed-off-by: Wang YanQing <udknight@gmail.com>
    Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit f1fa6f726649b39f26449bb34e592c53f26e11ab
Author: Prarit Bhargava <prarit@redhat.com>
Date:   Wed May 11 12:27:16 2016 -0400

    PCI: Disable all BAR sizing for devices with non-compliant BARs
    
    commit ad67b437f187ea818b2860524d10f878fadfdd99 upstream.
    
    b84106b4e229 ("PCI: Disable IO/MEM decoding for devices with non-compliant
    BARs") disabled BAR sizing for BARs 0-5 of devices that don't comply with
    the PCI spec.  But it didn't do anything for expansion ROM BARs, so we
    still try to size them, resulting in warnings like this on Broadwell-EP:
    
      pci 0000:ff:12.0: BAR 6: failed to assign [mem size 0x00000001 pref]
    
    Move the non-compliant BAR check from __pci_read_base() up to
    pci_read_bases() so it applies to the expansion ROM BAR as well as
    to BARs 0-5.
    
    Note that direct callers of __pci_read_base(), like sriov_init(), will now
    bypass this check.  We haven't had reports of devices with broken SR-IOV
    BARs yet.
    
    [bhelgaas: changelog]
    Fixes: b84106b4e229 ("PCI: Disable IO/MEM decoding for devices with non-compliant BARs")
    Signed-off-by: Prarit Bhargava <prarit@redhat.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    CC: Thomas Gleixner <tglx@linutronix.de>
    CC: Ingo Molnar <mingo@redhat.com>
    CC: "H. Peter Anvin" <hpa@zytor.com>
    CC: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit d67794f3e8a417e0bde31ed56f47a10146aabab9
Author: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
Date:   Mon Apr 25 23:31:57 2016 -0700

    aacraid: Fix for aac_command_thread hang
    
    commit fc4bf75ea300a5e62a2419f89dd0e22189dd7ab7 upstream.
    
    Typically under error conditions, it is possible for aac_command_thread()
    to miss the wakeup from kthread_stop() and go back to sleep, causing it
    to hang aac_shutdown.
    
    In the observed scenario, the adapter is not functioning correctly and so
    aac_fib_send() never completes (or time-outs depending on how it was
    called). Shortly after aac_command_thread() starts it performs
    aac_fib_send(SendHostTime) which hangs. When aac_probe_one
    /aac_get_adapter_info send time outs, kthread_stop is called which breaks
    the command thread out of it's hang.
    
    The code will still go back to sleep in schedule_timeout() without
    checking kthread_should_stop() so it causes aac_probe_one to hang until
    the schedule_timeout() which is 30 minutes.
    
    Fixed by: Adding another kthread_should_stop() before schedule_timeout()
    Cc: stable@vger.kernel.org
    Signed-off-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 4f362654ca19157b9191143823061d963a0318d7
Author: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
Date:   Mon Apr 25 23:31:26 2016 -0700

    aacraid: Relinquish CPU during timeout wait
    
    commit 07beca2be24cc710461c0b131832524c9ee08910 upstream.
    
    aac_fib_send has a special function case for initial commands during
    driver initialization using wait < 0(pseudo sync mode). In this case,
    the command does not sleep but rather spins checking for timeout.This
    loop is calls cpu_relax() in an attempt to allow other processes/threads
    to use the CPU, but this function does not relinquish the CPU and so the
    command will hog the processor. This was observed in a KDUMP
    "crashkernel" and that prevented the "command thread" (which is
    responsible for completing the command from being timed out) from
    starting because it could not get the CPU.
    
    Fixed by replacing "cpu_relax()" call with "schedule()"
    Cc: stable@vger.kernel.org
    Signed-off-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 5b26ade36bce58a17e2411082e8e45db213bdd28
Author: Joseph Salisbury <joseph.salisbury@canonical.com>
Date:   Mon Mar 14 14:51:48 2016 -0400

    ath5k: Change led pin configuration for compaq c700 laptop
    
    commit 7b9bc799a445aea95f64f15e0083cb19b5789abe upstream.
    
    BugLink: http://bugs.launchpad.net/bugs/972604
    
    Commit 09c9bae26b0d3c9472cb6ae45010460a2cee8b8d ("ath5k: add led pin
    configuration for compaq c700 laptop") added a pin configuration for the Compaq
    c700 laptop.  However, the polarity of the led pin is reversed.  It should be
    red for wifi off and blue for wifi on, but it is the opposite.  This bug was
    reported in the following bug report:
    http://pad.lv/972604
    
    Fixes: 09c9bae26b0d3c9472cb6ae45010460a2cee8b8d ("ath5k: add led pin configuration for compaq c700 laptop")
    Signed-off-by: Joseph Salisbury <joseph.salisbury@canonical.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 0378ecf174b4e7f9d1a263bd07c38fbf2c627e6b
Author: Cameron Gutman <aicommander@gmail.com>
Date:   Wed Jun 29 09:51:35 2016 -0700

    Input: xpad - validate USB endpoint count during probe
    
    commit caca925fca4fb30c67be88cacbe908eec6721e43 upstream.
    
    This prevents a malicious USB device from causing an oops.
    
    Signed-off-by: Cameron Gutman <aicommander@gmail.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 2ae02f03721136e1b8ceef84a3926fc006ff2c8b
Author: Ping Cheng <pinglinux@gmail.com>
Date:   Thu Jun 23 10:54:17 2016 -0700

    Input: wacom_w8001 - w8001_MAX_LENGTH should be 13
    
    commit 12afb34400eb2b301f06b2aa3535497d14faee59 upstream.
    
    Somehow the patch that added two-finger touch support forgot to update
    W8001_MAX_LENGTH from 11 to 13.
    
    Signed-off-by: Ping Cheng <pingc@wacom.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit b82f3ee1d0ae76034452183ad26384a53519a33d
Author: Ricky Liang <jcliang@chromium.org>
Date:   Fri May 20 10:58:59 2016 -0700

    Input: uinput - handle compat ioctl for UI_SET_PHYS
    
    commit affa80bd97f7ca282d1faa91667b3ee9e4c590e6 upstream.
    
    When running a 32-bit userspace on a 64-bit kernel, the UI_SET_PHYS
    ioctl needs to be treated with special care, as it has the pointer
    size encoded in the command.
    
    Signed-off-by: Ricky Liang <jcliang@chromium.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 9338ba336a8a48c7644cac5502fa99faaad0e003
Author: James Hogan <james.hogan@imgtec.com>
Date:   Thu Jun 9 10:50:43 2016 +0100

    MIPS: KVM: Fix modular KVM under QEMU
    
    commit 797179bc4fe06c89e47a9f36f886f68640b423f8 upstream.
    
    Copy __kvm_mips_vcpu_run() into unmapped memory, so that we can never
    get a TLB refill exception in it when KVM is built as a module.
    
    This was observed to happen with the host MIPS kernel running under
    QEMU, due to a not entirely transparent optimisation in the QEMU TLB
    handling where TLB entries replaced with TLBWR are copied to a separate
    part of the TLB array. Code in those pages continue to be executable,
    but those mappings persist only until the next ASID switch, even if they
    are marked global.
    
    An ASID switch happens in __kvm_mips_vcpu_run() at exception level after
    switching to the guest exception base. Subsequent TLB mapped kernel
    instructions just prior to switching to the guest trigger a TLB refill
    exception, which enters the guest exception handlers without updating
    EPC. This appears as a guest triggered TLB refill on a host kernel
    mapped (host KSeg2) address, which is not handled correctly as user
    (guest) mode accesses to kernel (host) segments always generate address
    error exceptions.
    
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: kvm@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Cc: <stable@vger.kernel.org> # 3.10.x-
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [james.hogan@imgtec.com: backported for stable 3.14]
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit ce7222fcf118bb835ed6f0b1699fe14e47f2b461
Author: Ralf Baechle <ralf@linux-mips.org>
Date:   Thu Feb 4 01:24:40 2016 +0100

    MIPS: Fix 64k page support for 32 bit kernels.
    
    commit d7de413475f443957a0c1d256e405d19b3a2cb22 upstream.
    
    TASK_SIZE was defined as 0x7fff8000UL which for 64k pages is not a
    multiple of the page size.  Somewhere further down the math fails
    such that executing an ELF binary fails.
    
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Tested-by: Joshua Henderson <joshua.henderson@microchip.com>
    Cc: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 13f004c0ac440bf6b6272648f679759dd4ca89af
Author: Matthias Schiffer <mschiffer@universe-factory.net>
Date:   Thu Mar 24 16:02:52 2016 +0100

    MIPS: ath79: make bootconsole wait for both THRE and TEMT
    
    commit f5b556c94c8490d42fea79d7b4ae0ecbc291e69d upstream.
    
    This makes the ath79 bootconsole behave the same way as the generic 8250
    bootconsole.
    
    Also waiting for TEMT (transmit buffer is empty) instead of just THRE
    (transmit buffer is not full) ensures that all characters have been
    transmitted before the real serial driver starts reconfiguring the serial
    controller (which would sometimes result in garbage being transmitted.)
    This change does not cause a visible performance loss.
    
    In addition, this seems to fix a hang observed in certain configurations on
    many AR7xxx/AR9xxx SoCs during autoconfig of the real serial driver.
    
    A more complete follow-up patch will disable 8250 autoconfig for ath79
    altogether (the serial controller is detected as a 16550A, which is not
    fully compatible with the ath79 serial, and the autoconfig may lead to
    undefined behavior on ath79.)
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit f8141132c564c36806b128e865d9b918ef2e791e
Author: James Hogan <james.hogan@imgtec.com>
Date:   Mon Feb 8 18:43:49 2016 +0000

    MIPS: Fix siginfo.h to use strict posix types
    
    commit 5daebc477da4dfeb31ae193d83084def58fd2697 upstream.
    
    Commit 85efde6f4e0d ("make exported headers use strict posix types")
    changed the asm-generic siginfo.h to use the __kernel_* types, and
    commit 3a471cbc081b ("remove __KERNEL_STRICT_NAMES") make the internal
    types accessible only to the kernel, but the MIPS implementation hasn't
    been updated to match.
    
    Switch to proper types now so that the exported asm/siginfo.h won't
    produce quite so many compiler errors when included alone by a user
    program.
    
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Christopher Ferris <cferris@google.com>
    Cc: linux-mips@linux-mips.org
    Cc: <stable@vger.kernel.org> # 2.6.30-
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/12477/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 2c767daebacb87a6b308f86f2112fc7b4793cbf0
Author: Paul Burton <paul.burton@imgtec.com>
Date:   Thu Apr 21 14:04:55 2016 +0100

    MIPS: math-emu: Fix jalr emulation when rd == $0
    
    commit ab4a92e66741b35ca12f8497896bafbe579c28a1 upstream.
    
    When emulating a jalr instruction with rd == $0, the code in
    isBranchInstr was incorrectly writing to GPR $0 which should actually
    always remain zeroed. This would lead to any further instructions
    emulated which use $0 operating on a bogus value until the task is next
    context switched, at which point the value of $0 in the task context
    would be restored to the correct zero by a store in SAVE_SOME. Fix this
    by not writing to rd if it is $0.
    
    Fixes: 102cedc32a6e ("MIPS: microMIPS: Floating point support.")
    Signed-off-by: Paul Burton <paul.burton@imgtec.com>
    Cc: Maciej W. Rozycki <macro@imgtec.com>
    Cc: James Hogan <james.hogan@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/13160/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 5928125348d6d78867bc5a5171cc13a958eb6e01
Author: James Hogan <james.hogan@imgtec.com>
Date:   Thu Aug 18 10:22:55 2016 +0100

    MIPS: KVM: Propagate kseg0/mapped tlb fault errors
    
    commit 9b731bcfdec4c159ad2e4312e25d69221709b96a upstream.
    
    Propagate errors from kvm_mips_handle_kseg0_tlb_fault() and
    kvm_mips_handle_mapped_seg_tlb_fault(), usually triggering an internal
    error since they normally indicate the guest accessed bad physical
    memory or the commpage in an unexpected way.
    
    Fixes: 858dd5d45733 ("KVM/MIPS32: MMU/TLB operations for the Guest.")
    Fixes: e685c689f3a8 ("KVM/MIPS32: Privileged instruction/target branch emulation.")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: "Radim Krčmář" <rkrcmar@redhat.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: kvm@vger.kernel.org
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    [james.hogan@imgtec.com: Backport to v3.10.y - v3.15.y]
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 8cee00e93cb1b7bedd6e4bf56e964ac315437013
Author: James Hogan <james.hogan@imgtec.com>
Date:   Thu Aug 18 10:22:54 2016 +0100

    MIPS: KVM: Fix gfn range check in kseg0 tlb faults
    
    commit 0741f52d1b980dbeb290afe67d88fc2928edd8ab upstream.
    
    Two consecutive gfns are loaded into host TLB, so ensure the range check
    isn't off by one if guest_pmap_npages is odd.
    
    Fixes: 858dd5d45733 ("KVM/MIPS32: MMU/TLB operations for the Guest.")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: "Radim Krčmář" <rkrcmar@redhat.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: kvm@vger.kernel.org
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    [james.hogan@imgtec.com: Backport to v3.10.y - v3.15.y]
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 2336de8d713a4b5986b809906e172f35e466d048
Author: James Hogan <james.hogan@imgtec.com>
Date:   Thu Aug 18 10:22:53 2016 +0100

    MIPS: KVM: Add missing gfn range check
    
    commit 8985d50382359e5bf118fdbefc859d0dbf6cebc7 upstream.
    
    kvm_mips_handle_mapped_seg_tlb_fault() calculates the guest frame number
    based on the guest TLB EntryLo values, however it is not range checked
    to ensure it lies within the guest_pmap. If the physical memory the
    guest refers to is out of range then dump the guest TLB and emit an
    internal error.
    
    Fixes: 858dd5d45733 ("KVM/MIPS32: MMU/TLB operations for the Guest.")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: "Radim Krčmář" <rkrcmar@redhat.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: kvm@vger.kernel.org
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    [james.hogan@imgtec.com: Backport to v3.10.y - v3.15.y]
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 828e4e161f96b244c82d6a0b5909e798c8424549
Author: James Hogan <james.hogan@imgtec.com>
Date:   Thu Aug 18 10:22:52 2016 +0100

    MIPS: KVM: Fix mapped fault broken commpage handling
    
    commit c604cffa93478f8888bec62b23d6073dad03d43a upstream.
    
    kvm_mips_handle_mapped_seg_tlb_fault() appears to map the guest page at
    virtual address 0 to PFN 0 if the guest has created its own mapping
    there. The intention is unclear, but it may have been an attempt to
    protect the zero page from being mapped to anything but the comm page in
    code paths you wouldn't expect from genuine commpage accesses (guest
    kernel mode cache instructions on that address, hitting trapping
    instructions when executing from that address with a coincidental TLB
    eviction during the KVM handling, and guest user mode accesses to that
    address).
    
    Fix this to check for mappings exactly at KVM_GUEST_COMMPAGE_ADDR (it
    may not be at address 0 since commit 42aa12e74e91 ("MIPS: KVM: Move
    commpage so 0x0 is unmapped")), and set the corresponding EntryLo to be
    interpreted as 0 (invalid).
    
    Fixes: 858dd5d45733 ("KVM/MIPS32: MMU/TLB operations for the Guest.")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: "Radim Krčmář" <rkrcmar@redhat.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: kvm@vger.kernel.org
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    [james.hogan@imgtec.com: Backport to v3.10.y - v3.15.y]
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit aadf1c479d9a894293298086be0ef73db8cda2c3
Author: Soheil Hassas Yeganeh <soheil@google.com>
Date:   Fri Jul 29 09:34:02 2016 -0400

    tcp: consider recv buf for the initial window scale
    
    commit f626300a3e776ccc9671b0dd94698fb3aa315966 upstream.
    
    tcp_select_initial_window() intends to advertise a window
    scaling for the maximum possible window size. To do so,
    it considers the maximum of net.ipv4.tcp_rmem[2] and
    net.core.rmem_max as the only possible upper-bounds.
    However, users with CAP_NET_ADMIN can use SO_RCVBUFFORCE
    to set the socket's receive buffer size to values
    larger than net.ipv4.tcp_rmem[2] and net.core.rmem_max.
    Thus, SO_RCVBUFFORCE is effectively ignored by
    tcp_select_initial_window().
    
    To fix this, consider the maximum of net.ipv4.tcp_rmem[2],
    net.core.rmem_max and socket's initial buffer space.
    
    Fixes: b0573dea1fb3 ("[NET]: Introduce SO_{SND,RCV}BUFFORCE socket options")
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Suggested-by: Neal Cardwell <ncardwell@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 4f6b16928f80440995960c646de25da69a801ed0
Author: Yuchung Cheng <ycheng@google.com>
Date:   Mon Jun 6 15:07:18 2016 -0700

    tcp: record TLP and ER timer stats in v6 stats
    
    commit ce3cf4ec0305919fc69a972f6c2b2efd35d36abc upstream.
    
    The v6 tcp stats scan do not provide TLP and ER timer information
    correctly like the v4 version . This patch fixes that.
    
    Fixes: 6ba8a3b19e76 ("tcp: Tail loss probe (TLP)")
    Fixes: eed530b6c676 ("tcp: early retransmit")
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit b1f32b94ac6760f04d548b4d15e0c1f3b3c52720
Author: Charles (Chas) Williams <ciwillia@brocade.com>
Date:   Tue Aug 16 16:50:11 2016 -0400

    tcp: make challenge acks less predictable
    
    commit 75ff39ccc1bd5d3c455b6822ab09e533c551f758 upstream.
    
    From: Eric Dumazet <edumazet@google.com>
    
    Yue Cao claims that current host rate limiting of challenge ACKS
    (RFC 5961) could leak enough information to allow a patient attacker
    to hijack TCP sessions. He will soon provide details in an academic
    paper.
    
    This patch increases the default limit from 100 to 1000, and adds
    some randomization so that the attacker can no longer hijack
    sessions without spending a considerable amount of probes.
    
    Based on initial analysis and patch from Linus.
    
    Note that we also have per socket rate limiting, so it is tempting
    to remove the host limit in the future.
    
    v2: randomize the count of challenge acks per second, not the period.
    
    Fixes: 282f23c6ee34 ("tcp: implement RFC 5961 3.2")
    Reported-by: Yue Cao <ycao009@ucr.edu>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Yuchung Cheng <ycheng@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [ ciwillia: backport to 3.10-stable ]
    Signed-off-by: Chas Williams <ciwillia@brocade.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 24fc11a9879ee6f6ed244fc7dd1507d4a5db64bc
Author: Hugh Dickins <hughd@google.com>
Date:   Sun Jul 10 16:46:32 2016 -0700

    tmpfs: fix regression hang in fallocate undo
    
    commit 7f556567036cb7f89aabe2f0954b08566b4efb53 upstream.
    
    The well-spotted fallocate undo fix is good in most cases, but not when
    fallocate failed on the very first page.  index 0 then passes lend -1
    to shmem_undo_range(), and that has two bad effects: (a) that it will
    undo every fallocation throughout the file, unrestricted by the current
    range; but more importantly (b) it can cause the undo to hang, because
    lend -1 is treated as truncation, which makes it keep on retrying until
    every page has gone, but those already fully instantiated will never go
    away.  Big thank you to xfstests generic/269 which demonstrates this.
    
    Fixes: b9b4bb26af01 ("tmpfs: don't undo fallocate past its last page")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 6d2eb0f1168c709a7c8fd62f2c90f6643e39609c
Author: Anthony Romano <anthony.romano@coreos.com>
Date:   Fri Jun 24 14:48:43 2016 -0700

    tmpfs: don't undo fallocate past its last page
    
    commit b9b4bb26af017dbe930cd4df7f9b2fc3a0497bfe upstream.
    
    When fallocate is interrupted it will undo a range that extends one byte
    past its range of allocated pages.  This can corrupt an in-use page by
    zeroing out its first byte.  Instead, undo using the inclusive byte
    range.
    
    Fixes: 1635f6a74152f1d ("tmpfs: undo fallocation on failure")
    Link: http://lkml.kernel.org/r/1462713387-16724-1-git-send-email-anthony.romano@coreos.com
    Signed-off-by: Anthony Romano <anthony.romano@coreos.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Brandon Philips <brandon@ifup.co>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 1196c36fd53c3b1615eb02f986cb727b1dfc1047
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Sun Jul 24 18:32:16 2016 +0200

    libceph: apply new_state before new_up_client on incrementals
    
    commit 930c532869774ebf8af9efe9484c597f896a7d46 upstream.
    
    Currently, osd_weight and osd_state fields are updated in the encoding
    order.  This is wrong, because an incremental map may look like e.g.
    
        new_up_client: { osd=6, addr=... } # set osd_state and addr
        new_state: { osd=6, xorstate=EXISTS } # clear osd_state
    
    Suppose osd6's current osd_state is EXISTS (i.e. osd6 is down).  After
    applying new_up_client, osd_state is changed to EXISTS | UP.  Carrying
    on with the new_state update, we flip EXISTS and leave osd6 in a weird
    "!EXISTS but UP" state.  A non-existent OSD is considered down by the
    mapping code
    
    2087    for (i = 0; i < pg->pg_temp.len; i++) {
    2088            if (ceph_osd_is_down(osdmap, pg->pg_temp.osds[i])) {
    2089                    if (ceph_can_shift_osds(pi))
    2090                            continue;
    2091
    2092                    temp->osds[temp->size++] = CRUSH_ITEM_NONE;
    
    and so requests get directed to the second OSD in the set instead of
    the first, resulting in OSD-side errors like:
    
    [WRN] : client.4239 192.168.122.21:0/2444980242 misdirected client.4239.1:2827 pg 2.5df899f2 to osd.4 not [1,4,6] in e680/680
    
    and hung rbds on the client:
    
    [  493.566367] rbd: rbd0: write 400000 at 11cc00000 (0)
    [  493.566805] rbd: rbd0:   result -6 xferred 400000
    [  493.567011] blk_update_request: I/O error, dev rbd0, sector 9330688
    
    The fix is to decouple application from the decoding and:
    - apply new_weight first
    - apply new_state before new_up_client
    - twiddle osd_state flags if marking in
    - clear out some of the state if osd is destroyed
    
    Fixes: http://tracker.ceph.com/issues/14901
    
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Josh Durgin <jdurgin@redhat.com>
    [idryomov@gmail.com: backport to 3.10-3.14: strip primary-affinity]
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit ba293572f4a824d995216914d2d0ce655a604dbc
Author: Scott Bauer <sbauer@plzdonthack.me>
Date:   Fri Jul 15 15:08:21 2016 -0400

    HID: hiddev: validate num_values for HIDIOCGUSAGES, HIDIOCSUSAGES commands
    
    commit 93a2001bdfd5376c3dc2158653034c20392d15c5 upstream.
    
    This patch validates the num_values parameter from userland during the
    HIDIOCGUSAGES and HIDIOCSUSAGES commands. Previously, if the report id was set
    to HID_REPORT_ID_UNKNOWN, we would fail to validate the num_values parameter
    leading to a heap overflow.
    
    CVE-2016-5829
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Scott Bauer <sbauer@plzdonthack.me>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Chas Williams <ciwillia@brocade.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 0ba4f4bb1aaf7e36cd8efb820691c9bceb487859
Author: Tejun Heo <tj@kernel.org>
Date:   Fri Jul 15 15:08:20 2016 -0400

    printk: do cond_resched() between lines while outputting to consoles
    
    commit 8d91f8b15361dfb438ab6eb3b319e2ded43458ff upstream.
    
    @console_may_schedule tracks whether console_sem was acquired through
    lock or trylock.  If the former, we're inside a sleepable context and
    console_conditional_schedule() performs cond_resched().  This allows
    console drivers which use console_lock for synchronization to yield
    while performing time-consuming operations such as scrolling.
    
    However, the actual console outputting is performed while holding
    irq-safe logbuf_lock, so console_unlock() clears @console_may_schedule
    before starting outputting lines.  Also, only a few drivers call
    console_conditional_schedule() to begin with.  This means that when a
    lot of lines need to be output by console_unlock(), for example on a
    console registration, the task doing console_unlock() may not yield for
    a long time on a non-preemptible kernel.
    
    If this happens with a slow console devices, for example a serial
    console, the outputting task may occupy the cpu for a very long time.
    Long enough to trigger softlockup and/or RCU stall warnings, which in
    turn pile more messages, sometimes enough to trigger the next cycle of
    warnings incapacitating the system.
    
    Fix it by making console_unlock() insert cond_resched() between lines if
    @console_may_schedule.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Calvin Owens <calvinowens@fb.com>
    Acked-by: Jan Kara <jack@suse.com>
    Cc: Dave Jones <davej@codemonkey.org.uk>
    Cc: Kyle McMartin <kyle@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [ciwillia@brocade.com: adjust context for 3.10.y]
    Signed-off-by: Chas Williams <ciwillia@brocade.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit af110cc4b24250faafd4f3b9879cf51e350d7799
Author: Hugh Dickins <hughd@google.com>
Date:   Fri Jul 15 15:08:19 2016 -0400

    mm: migrate dirty page without clear_page_dirty_for_io etc
    
    commit 42cb14b110a5698ccf26ce59c4441722605a3743 upstream.
    
    clear_page_dirty_for_io() has accumulated writeback and memcg subtleties
    since v2.6.16 first introduced page migration; and the set_page_dirty()
    which completed its migration of PageDirty, later had to be moderated to
    __set_page_dirty_nobuffers(); then PageSwapBacked had to skip that too.
    
    No actual problems seen with this procedure recently, but if you look into
    what the clear_page_dirty_for_io(page)+set_page_dirty(newpage) is actually
    achieving, it turns out to be nothing more than moving the PageDirty flag,
    and its NR_FILE_DIRTY stat from one zone to another.
    
    It would be good to avoid a pile of irrelevant decrementations and
    incrementations, and improper event counting, and unnecessary descent of
    the radix_tree under tree_lock (to set the PAGECACHE_TAG_DIRTY which
    radix_tree_replace_slot() left in place anyway).
    
    Do the NR_FILE_DIRTY movement, like the other stats movements, while
    interrupts still disabled in migrate_page_move_mapping(); and don't even
    bother if the zone is the same.  Do the PageDirty movement there under
    tree_lock too, where old page is frozen and newpage not yet visible:
    bearing in mind that as soon as newpage becomes visible in radix_tree, an
    un-page-locked set_page_dirty() might interfere (or perhaps that's just
    not possible: anything doing so should already hold an additional
    reference to the old page, preventing its migration; but play safe).
    
    But we do still need to transfer PageDirty in migrate_page_copy(), for
    those who don't go the mapping route through migrate_page_move_mapping().
    
    CVE-2016-3070
    
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [ciwillia@brocade.com: backported to 3.10: adjusted context]
    Signed-off-by: Charles (Chas) Williams <ciwillia@brocade.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 273e07f96b37bb9ee3594ce2dfe07b2a9608f941
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Jul 15 15:08:17 2016 -0400

    KEYS: potential uninitialized variable
    
    commit 38327424b40bcebe2de92d07312c89360ac9229a upstream.
    
    If __key_link_begin() failed then "edit" would be uninitialized.  I've
    added a check to fix that.
    
    This allows a random user to crash the kernel, though it's quite
    difficult to achieve.  There are three ways it can be done as the user
    would have to cause an error to occur in __key_link():
    
     (1) Cause the kernel to run out of memory.  In practice, this is difficult
         to achieve without ENOMEM cropping up elsewhere and aborting the
         attempt.
    
     (2) Revoke the destination keyring between the keyring ID being looked up
         and it being tested for revocation.  In practice, this is difficult to
         time correctly because the KEYCTL_REJECT function can only be used
         from the request-key upcall process.  Further, users can only make use
         of what's in /sbin/request-key.conf, though this does including a
         rejection debugging test - which means that the destination keyring
         has to be the caller's session keyring in practice.
    
     (3) Have just enough key quota available to create a key, a new session
         keyring for the upcall and a link in the session keyring, but not then
         sufficient quota to create a link in the nominated destination keyring
         so that it fails with EDQUOT.
    
    The bug can be triggered using option (3) above using something like the
    following:
    
            echo 80 >/proc/sys/kernel/keys/root_maxbytes
            keyctl request2 user debug:fred negate @t
    
    The above sets the quota to something much lower (80) to make the bug
    easier to trigger, but this is dependent on the system.  Note also that
    the name of the keyring created contains a random number that may be
    between 1 and 10 characters in size, so may throw the test off by
    changing the amount of quota used.
    
    Assuming the failure occurs, something like the following will be seen:
    
            kfree_debugcheck: out of range ptr 6b6b6b6b6b6b6b68h
            ------------[ cut here ]------------
            kernel BUG at ../mm/slab.c:2821!
            ...
            RIP: 0010:[<ffffffff811600f9>] kfree_debugcheck+0x20/0x25
            RSP: 0018:ffff8804014a7de8  EFLAGS: 00010092
            RAX: 0000000000000034 RBX: 6b6b6b6b6b6b6b68 RCX: 0000000000000000
            RDX: 0000000000040001 RSI: 00000000000000f6 RDI: 0000000000000300
            RBP: ffff8804014a7df0 R08: 0000000000000001 R09: 0000000000000000
            R10: ffff8804014a7e68 R11: 0000000000000054 R12: 0000000000000202
            R13: ffffffff81318a66 R14: 0000000000000000 R15: 0000000000000001
            ...
            Call Trace:
              kfree+0xde/0x1bc
              assoc_array_cancel_edit+0x1f/0x36
              __key_link_end+0x55/0x63
              key_reject_and_link+0x124/0x155
              keyctl_reject_key+0xb6/0xe0
              keyctl_negate_key+0x10/0x12
              SyS_keyctl+0x9f/0xe7
              do_syscall_64+0x63/0x13a
              entry_SYSCALL64_slow_path+0x25/0x25
    
    CVE-2016-4470
    
    Fixes: f70e2e06196a ('KEYS: Do preallocation for __key_link()')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [ciwillia@brocade.com: backported to 3.10: adjusted context]
    Signed-off-by: Charles (Chas) Williams <ciwillia@brocade.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 82365cf607366c401a29bd19a4b0fb30783b1691
Author: Bjørn Mork <bjorn@mork.no>
Date:   Fri Jul 15 15:08:16 2016 -0400

    cdc_ncm: do not call usbnet_link_change from cdc_ncm_bind
    
    commit 4d06dd537f95683aba3651098ae288b7cbff8274 upstream.
    
    usbnet_link_change will call schedule_work and should be
    avoided if bind is failing. Otherwise we will end up with
    scheduled work referring to a netdev which has gone away.
    
    Instead of making the call conditional, we can just defer
    it to usbnet_probe, using the driver_info flag made for
    this purpose.
    
    CVE-2016-3951
    
    Fixes: 8a34b0ae8778 ("usbnet: cdc_ncm: apply usbnet_link_change")
    Reported-by: Andrey Konovalov <andreyknvl@gmail.com>
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [ciwillia@brocade.com: backported to 3.10: adjusted context]
    Signed-off-by: Charles (Chas) Williams <ciwillia@brocade.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit f474c525b4f412522cd092b6c8bffb6a0fd9a4de
Author: Willy Tarreau <w@1wt.eu>
Date:   Fri Jul 15 14:26:27 2016 -0400

    pipe: limit the per-user amount of pages allocated in pipes
    
    commit 759c01142a5d0f364a462346168a56de28a80f52 upstream.
    
    On no-so-small systems, it is possible for a single process to cause an
    OOM condition by filling large pipes with data that are never read. A
    typical process filling 4000 pipes with 1 MB of data will use 4 GB of
    memory. On small systems it may be tricky to set the pipe max size to
    prevent this from happening.
    
    This patch makes it possible to enforce a per-user soft limit above
    which new pipes will be limited to a single page, effectively limiting
    them to 4 kB each, as well as a hard limit above which no new pipes may
    be created for this user. This has the effect of protecting the system
    against memory abuse without hurting other users, and still allowing
    pipes to work correctly though with less data at once.
    
    The limit are controlled by two new sysctls : pipe-user-pages-soft, and
    pipe-user-pages-hard. Both may be disabled by setting them to zero. The
    default soft limit allows the default number of FDs per process (1024)
    to create pipes of the default size (64kB), thus reaching a limit of 64MB
    before starting to create only smaller pipes. With 256 processes limited
    to 1024 FDs each, this results in 1024*64kB + (256*1024 - 1024) * 4kB =
    1084 MB of memory allocated for a user. The hard limit is disabled by
    default to avoid breaking existing applications that make intensive use
    of pipes (eg: for splicing).
    
    CVE-2016-2847
    
    Reported-by: socketpair@gmail.com
    Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Mitigates: CVE-2013-4312 (Linux 2.0+)
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    Signed-off-by: Chas Williams <3chas3@gmail.com>

commit b1b4becf713431393006d95bbba9b6b3586255f0
Author: Andy Lutomirski <luto@kernel.org>
Date:   Fri Jul 15 14:26:26 2016 -0400

    x86/mm: Add barriers and document switch_mm()-vs-flush synchronization
    
    commit 71b3c126e61177eb693423f2e18a1914205b165e upstream.
    
    When switch_mm() activates a new PGD, it also sets a bit that
    tells other CPUs that the PGD is in use so that TLB flush IPIs
    will be sent.  In order for that to work correctly, the bit
    needs to be visible prior to loading the PGD and therefore
    starting to fill the local TLB.
    
    Document all the barriers that make this work correctly and add
    a couple that were missing.
    
    CVE-2016-2069
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [ luis: backported to 3.16:
      - dropped N/A comment in flush_tlb_mm_range()
      - adjusted context ]
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    [ciwillia@brocade.com: backported to 3.10: adjusted context]
    Signed-off-by: Charles (Chas) Williams <ciwillia@brocade.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit a2fe08508d196b95e72576beda3017cfbb135176
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Wed Jun 8 16:32:50 2016 +0900

    usb: renesas_usbhs: protect the CFIFOSEL setting in usbhsg_ep_enable()
    
    commit 15e4292a2d21e9997fdb2b8c014cc461b3f268f0 upstream.
    
    This patch fixes an issue that the CFIFOSEL register value is possible
    to be changed by usbhsg_ep_enable() wrongly. And then, a data transfer
    using CFIFO may not work correctly.
    
    For example:
     # modprobe g_multi file=usb-storage.bin
     # ifconfig usb0 192.168.1.1 up
     (During the USB host is sending file to the mass storage)
     # ifconfig usb0 down
    
    In this case, since the u_ether.c may call usb_ep_enable() in
    eth_stop(), if the renesas_usbhs driver is also using CFIFO for
    mass storage, the mass storage may not work correctly.
    
    So, this patch adds usbhs_lock() and usbhs_unlock() calling in
    usbhsg_ep_enable() to protect CFIFOSEL register. This is because:
     - CFIFOSEL.CURPIPE = 0 is also needed for the pipe configuration
     - The CFIFOSEL (fifo->sel) is already protected by usbhs_lock()
    
    Fixes: 97664a207bc2 ("usb: renesas_usbhs: shrink spin lock area")
    Cc: <stable@vger.kernel.org> # v3.1+
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 664133ce7f5392e75d59c81da1c4b4069a68d5c5
Author: Andrew Goodbody <andrew.goodbody@cambrionix.com>
Date:   Tue May 31 10:05:26 2016 -0500

    usb: musb: Ensure rx reinit occurs for shared_fifo endpoints
    
    commit f3eec0cf784e0d6c47822ca6b66df3d5812af7e6 upstream.
    
    shared_fifo endpoints would only get a previous tx state cleared
    out, the rx state was only cleared for non shared_fifo endpoints
    Change this so that the rx state is cleared for all endpoints.
    This addresses an issue that resulted in rx packets being dropped
    silently.
    
    Signed-off-by: Andrew Goodbody <andrew.goodbody@cambrionix.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 788d2a8d062f123a1914f51606e4f2f9be149985
Author: Andrew Goodbody <andrew.goodbody@cambrionix.com>
Date:   Tue May 31 10:05:27 2016 -0500

    usb: musb: Stop bulk endpoint while queue is rotated
    
    commit 7b2c17f829545df27a910e8d82e133c21c9a8c9c upstream.
    
    Ensure that the endpoint is stopped by clearing REQPKT before
    clearing DATAERR_NAKTIMEOUT before rotating the queue on the
    dedicated bulk endpoint.
    This addresses an issue where a race could result in the endpoint
    receiving data before it was reprogrammed resulting in a warning
    about such data from musb_rx_reinit before it was thrown away.
    The data thrown away was a valid packet that had been correctly
    ACKed which meant the host and device got out of sync.
    
    Signed-off-by: Andrew Goodbody <andrew.goodbody@cambrionix.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 1883edde34d586fca99033e88f074239041cf7b6
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Mon Jun 6 12:38:17 2016 +0200

    USB: serial: option: add support for Telit LE910 PID 0x1206
    
    commit 3c0415fa08548e3bc63ef741762664497ab187ed upstream.
    
    This patch adds support for 0x1206 PID of Telit LE910.
    
    Since the interfaces positions are the same than the ones for
    0x1043 PID of Telit LE922, telit_le922_blacklist_usbcfg3 is used.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 122ac0bd1d6385759bd8a8b052f5b4e3afba82af
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Jun 23 14:54:37 2016 -0400

    USB: EHCI: declare hostpc register as zero-length array
    
    commit 7e8b3dfef16375dbfeb1f36a83eb9f27117c51fd upstream.
    
    The HOSTPC extension registers found in some EHCI implementations form
    a variable-length array, with one element for each port.  Therefore
    the hostpc field in struct ehci_regs should be declared as a
    zero-length array, not a single-element array.
    
    This fixes a problem reported by UBSAN.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Wilfried Klaebe <linux-kernel@lebenslange-mailadresse.de>
    Tested-by: Wilfried Klaebe <linux-kernel@lebenslange-mailadresse.de>
    CC: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 903c5a46a861244e7fc5ddf6101963b6a4c9b88f
Author: Willy Tarreau <w@1wt.eu>
Date:   Sun Aug 21 10:47:12 2016 +0200

    USB: fix up faulty backports
    
    Ben Hutchings reported that two patches were incorrectly backported
    to 3.10 :
    
    - ddbe1fca0bcb ("USB: Add device quirk for ASUS T100 Base Station keyboard")
    - ad87e03213b5 ("USB: add quirk for devices with broken LPM")
    
    These two patches introduce quirks which must be in usb_quirk_list and
    not in usb_interface_quirk_list. These last one must only contain the
    Logitech UVC camera.
    
    Reported-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit ba3904ee86cb7072c2435883421b165dc1684bce
Author: Kangjie Lu <kangjielu@gmail.com>
Date:   Fri Jul 15 15:08:18 2016 -0400

    USB: usbfs: fix potential infoleak in devio
    
    commit 681fef8380eb818c0b845fca5d2ab1dcbab114ee upstream.
    
    The stack object "ci" has a total size of 8 bytes. Its last 3 bytes
    are padding bytes which are not initialized and leaked to userland
    via "copy_to_user".
    
    CVE-2016-4482
    
    Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [ciwillia@brocade.com: backported to 3.10: adjusted context]
    Signed-off-by: Charles (Chas) Williams <ciwillia@brocade.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit bbb094201689b833910a5753fad2f46be2c78b67
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Jul 15 14:26:25 2016 -0400

    USB: fix invalid memory access in hub_activate()
    
    commit e50293ef9775c5f1cf3fcc093037dd6a8c5684ea upstream.
    
    Commit 8520f38099cc ("USB: change hub initialization sleeps to
    delayed_work") changed the hub_activate() routine to make part of it
    run in a workqueue.  However, the commit failed to take a reference to
    the usb_hub structure or to lock the hub interface while doing so.  As
    a result, if a hub is plugged in and quickly unplugged before the work
    routine can run, the routine will try to access memory that has been
    deallocated.  Or, if the hub is unplugged while the routine is
    running, the memory may be deallocated while it is in active use.
    
    This patch fixes the problem by taking a reference to the usb_hub at
    the start of hub_activate() and releasing it at the end (when the work
    is finished), and by locking the hub interface while the work routine
    is running.  It also adds a check at the start of the routine to see
    if the hub has already been disconnected, in which nothing should be
    done.
    
    CVE-2015-8816
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Alexandru Cornea <alexandru.cornea@intel.com>
    Tested-by: Alexandru Cornea <alexandru.cornea@intel.com>
    Fixes: 8520f38099cc ("USB: change hub initialization sleeps to delayed_work")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [ luis: backported to 3.16:
      - Added forward declaration of hub_release() which mainline had with commit
        32a6958998c5 ("usb: hub: convert khubd into workqueue") ]
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    Signed-off-by: Charles (Chas) Williams <ciwillia@brocade.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 98f57e42cab062608cf3dce2b8eecbb2a0780ac4
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jul 15 14:26:24 2016 -0400

    udp: properly support MSG_PEEK with truncated buffers
    
    commit 197c949e7798fbf28cfadc69d9ca0c2abbf93191 upstream.
    
    Backport of this upstream commit into stable kernels :
    89c22d8c3b27 ("net: Fix skb csum races when peeking")
    exposed a bug in udp stack vs MSG_PEEK support, when user provides
    a buffer smaller than skb payload.
    
    In this case,
    skb_copy_and_csum_datagram_iovec(skb, sizeof(struct udphdr),
                                     msg->msg_iov);
    returns -EFAULT.
    
    This bug does not happen in upstream kernels since Al Viro did a great
    job to replace this into :
    skb_copy_and_csum_datagram_msg(skb, sizeof(struct udphdr), msg);
    This variant is safe vs short buffers.
    
    For the time being, instead reverting Herbert Xu patch and add back
    skb->ip_summed invalid changes, simply store the result of
    udp_lib_checksum_complete() so that we avoid computing the checksum a
    second time, and avoid the problematic
    skb_copy_and_csum_datagram_iovec() call.
    
    This patch can be applied on recent kernels as it avoids a double
    checksumming, then backported to stable kernels as a bug fix.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [ luis: backported to 3.16: adjusted context ]
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    Signed-off-by: Charles (Chas) Williams <ciwillia@brocade.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 6aaf5d4c50f75bfb633e1883d69421ef0593b508
Author: Neil Horman <nhorman@tuxdriver.com>
Date:   Fri Jul 15 14:26:23 2016 -0400

    PCI/ACPI: Fix _OSC ordering to allow PCIe hotplug use when available
    
    commit 3dc48af310709b85d07c8b0d3aa8f1ead02829d3 upstream.
    
    This fixes the problem of acpiphp claiming slots that should be managed
    by pciehp, which may keep ExpressCard slots from working.
    
    The acpiphp driver claims PCIe slots unless the BIOS has granted us
    control of PCIe native hotplug via _OSC.  Prior to v3.10, the acpiphp
    .add method (add_bridge()) was always called *after* we had requested
    native hotplug control with _OSC.
    
    But after 3b63aaa70e ("PCI: acpiphp: Do not use ACPI PCI subdriver
    mechanism"), which appeared in v3.10, acpiphp initialization is done
    during the bus scan via the pcibios_add_bus() hook, and this happens
    *before* we request native hotplug control.
    
    Therefore, acpiphp doesn't know yet whether the BIOS will grant control,
    and it claims slots that we should be handling with native hotplug.
    
    This patch requests native hotplug control earlier, so we know whether
    the BIOS granted it to us before we initialize acpiphp.
    
    To avoid reintroducing the ASPM issue fixed by b8178f130e ('Revert
    "PCI/ACPI: Request _OSC control before scanning PCI root bus"'), we run
    _OSC earlier but defer the actual ASPM calls until after the bus scan is
    complete.
    
    Tested successfully by myself.
    
    [bhelgaas: changelog, mark for stable]
    Reference: https://bugzilla.kernel.org/show_bug.cgi?id=60736
    Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Yinghai Lu <yinghai@kernel.org>
    CC: stable@vger.kernel.org      # v3.10+
    CC: Len Brown <lenb@kernel.org>
    CC: "Rafael J. Wysocki" <rjw@sisk.pl>
    [ciwillia@brocade.com: backported to 3.10: adjusted context]
    Signed-off-by: Charles (Chas) Williams <ciwillia@brocade.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 15db6bf1002c974b80cfcb274c21efa06d6d6c9f
Author: Vladimir Davydov <vdavydov@parallels.com>
Date:   Thu Apr 16 12:47:35 2015 -0700

    signal: remove warning about using SI_TKILL in rt_[tg]sigqueueinfo
    
    commit 69828dce7af2cb6d08ef5a03de687d422fb7ec1f upstream.
    
    Sending SI_TKILL from rt_[tg]sigqueueinfo was deprecated, so now we issue
    a warning on the first attempt of doing it.  We use WARN_ON_ONCE, which is
    not informative and, what is worse, taints the kernel, making the trinity
    syscall fuzzer complain false-positively from time to time.
    
    It does not look like we need this warning at all, because the behaviour
    changed quite a long time ago (2.6.39), and if an application relies on
    the old API, it gets EPERM anyway and can issue a warning by itself.
    
    So let us zap the warning in kernel.
    
    Signed-off-by: Vladimir Davydov <vdavydov@parallels.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Cc: Richard Weinberger <richard@nod.at>
    Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Vinson Lee <vlee@freedesktop.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 55e1f395ceb2d6e26ae8e3699eb756abc394fbbe
Author: Andrey Ryabinin <aryabinin@virtuozzo.com>
Date:   Wed May 11 16:51:51 2016 +0300

    perf/x86: Fix undefined shift on 32-bit kernels
    
    commit 6d6f2833bfbf296101f9f085e10488aef2601ba5 upstream.
    
    Jim reported:
    
            UBSAN: Undefined behaviour in arch/x86/events/intel/core.c:3708:12
            shift exponent 35 is too large for 32-bit type 'long unsigned int'
    
    The use of 'unsigned long' type obviously is not correct here, make it
    'unsigned long long' instead.
    
    Reported-by: Jim Cromie <jim.cromie@gmail.com>
    Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <stable@vger.kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Imre Palik <imrep@amazon.de>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Fixes: 2c33645d366d ("perf/x86: Honor the architectural performance monitoring version")
    Link: http://lkml.kernel.org/r/1462974711-10037-1-git-send-email-aryabinin@virtuozzo.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Kevin Christopher <kevinc@vmware.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit ad0fd1a5f8441837568a0e0c0b3e8ed14ce5969f
Author: Palik, Imre <imrep@amazon.de>
Date:   Mon Jun 8 14:46:49 2015 +0200

    perf/x86: Honor the architectural performance monitoring version
    
    commit 2c33645d366d13b969d936b68b9f4875b1fdddea upstream.
    
    Architectural performance monitoring, version 1, doesn't support fixed counters.
    
    Currently, even if a hypervisor advertises support for architectural
    performance monitoring version 1, perf may still try to use the fixed
    counters, as the constraints are set up based on the CPU model.
    
    This patch ensures that perf honors the architectural performance monitoring
    version returned by CPUID, and it only uses the fixed counters for version 2
    and above.
    
    (Some of the ideas in this patch came from Peter Zijlstra.)
    
    Signed-off-by: Imre Palik <imrep@amazon.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Anthony Liguori <aliguori@amazon.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1433767609-1039-1-git-send-email-imrep.amz@gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [wt: FIXED_EVENT_FLAGS was X86_RAW_EVENT_MASK in 3.10]
    Cc: Kevin Christopher <kevinc@vmware.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 0a0523382f1a1e95799311648f0267177d752ea4
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 15:37:59 2016 +0200

    netfilter: x_tables: introduce and use xt_copy_counters_from_user
    
    commit 63ecb81aadf1c823c85c70a2bfd1ec9df3341a72 upstream.
    
    commit d7591f0c41ce3e67600a982bab6989ef0f07b3ce upstream
    
    The three variants use same copy&pasted code, condense this into a
    helper and use that.
    
    Make sure info.name is 0-terminated.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit eb4a7d671bb54008039dfd99bc45a39e4f73a516
Author: Bernhard Thaler <bernhard.thaler@wvnet.at>
Date:   Thu May 28 10:26:18 2015 +0200

    Revert "netfilter: ensure number of counters is >0 in do_replace()"
    
    commit d26e2c9ffa385dd1b646f43c1397ba12af9ed431 upstream.
    
    This partially reverts commit 1086bbe97a07 ("netfilter: ensure number of
    counters is >0 in do_replace()") in net/bridge/netfilter/ebtables.c.
    
    Setting rules with ebtables does not work any more with 1086bbe97a07 place.
    
    There is an error message and no rules set in the end.
    
    e.g.
    
    ~# ebtables -t nat -A POSTROUTING --src 12:34:56:78:9a:bc -j DROP
    Unable to update the kernel. Two possible causes:
    1. Multiple ebtables programs were executing simultaneously. The ebtables
       userspace tool doesn't by default support multiple ebtables programs
    running
    
    Reverting the ebtables part of 1086bbe97a07 makes this work again.
    
    Signed-off-by: Bernhard Thaler <bernhard.thaler@wvnet.at>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 151cc2f5e35f3babc90a1a3cf23d2ac80c7b5803
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:34 2016 +0200

    netfilter: x_tables: do compat validation via translate_table
    
    commit 09d9686047dbbe1cf4faa558d3ecc4aae2046054 upstream.
    
    This looks like refactoring, but its also a bug fix.
    
    Problem is that the compat path (32bit iptables, 64bit kernel) lacks a few
    sanity tests that are done in the normal path.
    
    For example, we do not check for underflows and the base chain policies.
    
    While its possible to also add such checks to the compat path, its more
    copy&pastry, for instance we cannot reuse check_underflow() helper as
    e->target_offset differs in the compat case.
    
    Other problem is that it makes auditing for validation errors harder; two
    places need to be checked and kept in sync.
    
    At a high level 32 bit compat works like this:
    1- initial pass over blob:
       validate match/entry offsets, bounds checking
       lookup all matches and targets
       do bookkeeping wrt. size delta of 32/64bit structures
       assign match/target.u.kernel pointer (points at kernel
       implementation, needed to access ->compatsize etc.)
    
    2- allocate memory according to the total bookkeeping size to
       contain the translated ruleset
    
    3- second pass over original blob:
       for each entry, copy the 32bit representation to the newly allocated
       memory.  This also does any special match translations (e.g.
       adjust 32bit to 64bit longs, etc).
    
    4- check if ruleset is free of loops (chase all jumps)
    
    5-first pass over translated blob:
       call the checkentry function of all matches and targets.
    
    The alternative implemented by this patch is to drop steps 3&4 from the
    compat process, the translation is changed into an intermediate step
    rather than a full 1:1 translate_table replacement.
    
    In the 2nd pass (step #3), change the 64bit ruleset back to a kernel
    representation, i.e. put() the kernel pointer and restore ->u.user.name .
    
    This gets us a 64bit ruleset that is in the format generated by a 64bit
    iptables userspace -- we can then use translate_table() to get the
    'native' sanity checks.
    
    This has two drawbacks:
    
    1. we re-validate all the match and target entry structure sizes even
    though compat translation is supposed to never generate bogus offsets.
    2. we put and then re-lookup each match and target.
    
    THe upside is that we get all sanity tests and ruleset validations
    provided by the normal path and can remove some duplicated compat code.
    
    iptables-restore time of autogenerated ruleset with 300k chains of form
    -A CHAIN0001 -m limit --limit 1/s -j CHAIN0002
    -A CHAIN0002 -m limit --limit 1/s -j CHAIN0003
    
    shows no noticeable differences in restore times:
    old:   0m30.796s
    new:   0m31.521s
    64bit: 0m25.674s
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit bb5605936e4f62e89e314ad49421f69cf23ebff8
Author: Dave Jones <davej@codemonkey.org.uk>
Date:   Tue May 19 20:55:17 2015 -0400

    netfilter: ensure number of counters is >0 in do_replace()
    
    commit 1086bbe97a074844188c6c988fa0b1a98c3ccbb9 upstream.
    
    After improving setsockopt() coverage in trinity, I started triggering
    vmalloc failures pretty reliably from this code path:
    
    warn_alloc_failed+0xe9/0x140
    __vmalloc_node_range+0x1be/0x270
    vzalloc+0x4b/0x50
    __do_replace+0x52/0x260 [ip_tables]
    do_ipt_set_ctl+0x15d/0x1d0 [ip_tables]
    nf_setsockopt+0x65/0x90
    ip_setsockopt+0x61/0xa0
    raw_setsockopt+0x16/0x60
    sock_common_setsockopt+0x14/0x20
    SyS_setsockopt+0x71/0xd0
    
    It turns out we don't validate that the num_counters field in the
    struct we pass in from userspace is initialized.
    
    The same problem also exists in ebtables, arptables, ipv6, and the
    compat variants.
    
    Signed-off-by: Dave Jones <davej@codemonkey.org.uk>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit fbe426f822a42ca6759448185e4933069f46d822
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:33 2016 +0200

    netfilter: x_tables: xt_compat_match_from_user doesn't need a retval
    
    commit 0188346f21e6546498c2a0f84888797ad4063fc5 upstream.
    
    Always returned 0.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit b560137e0fbba392045f8be120e69a0439a84029
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:31 2016 +0200

    netfilter: ip6_tables: simplify translate_compat_table args
    
    commit 329a0807124f12fe1c8032f95d8a8eb47047fb0e upstream.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit f9e9232546c17d4fc96d87fd1b3e9a69a5603f1b
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:30 2016 +0200

    netfilter: ip_tables: simplify translate_compat_table args
    
    commit 7d3f843eed29222254c9feab481f55175a1afcc9 upstream.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit b6694fc658ebf550b870fd4528f0b3711457da73
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:32 2016 +0200

    netfilter: arp_tables: simplify translate_compat_table args
    
    commit 8dddd32756f6fe8e4e82a63361119b7e2384e02f upstream.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 1a10388eed94b55a77b1984f14f265f3f07cf20a
Author: Florian Westphal <fw@strlen.de>
Date:   Wed Jun 1 02:04:44 2016 +0200

    netfilter: x_tables: don't reject valid target size on some architectures
    
    commit 7b7eba0f3515fca3296b8881d583f7c1042f5226 upstream.
    
    Quoting John Stultz:
      In updating a 32bit arm device from 4.6 to Linus' current HEAD, I
      noticed I was having some trouble with networking, and realized that
      /proc/net/ip_tables_names was suddenly empty.
      Digging through the registration process, it seems we're catching on the:
    
       if (strcmp(t->u.user.name, XT_STANDARD_TARGET) == 0 &&
           target_offset + sizeof(struct xt_standard_target) != next_offset)
             return -EINVAL;
    
      Where next_offset seems to be 4 bytes larger then the
      offset + standard_target struct size.
    
    next_offset needs to be aligned via XT_ALIGN (so we can access all members
    of ip(6)t_entry struct).
    
    This problem didn't show up on i686 as it only needs 4-byte alignment for
    u64, but iptables userspace on other 32bit arches does insert extra padding.
    
    Reported-by: John Stultz <john.stultz@linaro.org>
    Tested-by: John Stultz <john.stultz@linaro.org>
    Fixes: 7ed2abddd20cf ("netfilter: x_tables: check standard target size too")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 1b507b9259b31b83303a1787bb88473ebee04402
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:29 2016 +0200

    netfilter: x_tables: validate all offsets and sizes in a rule
    
    commit 13631bfc604161a9d69cd68991dff8603edd66f9 upstream.
    
    Validate that all matches (if any) add up to the beginning of
    the target and that each match covers at least the base structure size.
    
    The compat path should be able to safely re-use the function
    as the structures only differ in alignment; added a
    BUILD_BUG_ON just in case we have an arch that adds padding as well.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 71f72bbf29981206b98845c7ac8b8d1d7d44fa55
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:28 2016 +0200

    netfilter: x_tables: check for bogus target offset
    
    commit ce683e5f9d045e5d67d1312a42b359cb2ab2a13c upstream.
    
    We're currently asserting that targetoff + targetsize <= nextoff.
    
    Extend it to also check that targetoff is >= sizeof(xt_entry).
    Since this is generic code, add an argument pointing to the start of the
    match/target, we can then derive the base structure size from the delta.
    
    We also need the e->elems pointer in a followup change to validate matches.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 5366deb60a8c3673af8cce77cd137cd96eadf3a6
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:27 2016 +0200

    netfilter: x_tables: check standard target size too
    
    commit 7ed2abddd20cf8f6bd27f65bd218f26fa5bf7f44 upstream.
    
    We have targets and standard targets -- the latter carries a verdict.
    
    The ip/ip6tables validation functions will access t->verdict for the
    standard targets to fetch the jump offset or verdict for chainloop
    detection, but this happens before the targets get checked/validated.
    
    Thus we also need to check for verdict presence here, else t->verdict
    can point right after a blob.
    
    Spotted with UBSAN while testing malformed blobs.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 305323325e044e78afe63dfd4444a21b21ecb804
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:26 2016 +0200

    netfilter: x_tables: add compat version of xt_check_entry_offsets
    
    commit fc1221b3a163d1386d1052184202d5dc50d302d1 upstream.
    
    32bit rulesets have different layout and alignment requirements, so once
    more integrity checks get added to xt_check_entry_offsets it will reject
    well-formed 32bit rulesets.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 6b9f8b74d347c956239e4538b1c3427cc5ea3ede
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:25 2016 +0200

    netfilter: x_tables: assert minimum target size
    
    commit a08e4e190b866579896c09af59b3bdca821da2cd upstream.
    
    The target size includes the size of the xt_entry_target struct.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit ea878a4401096f67851ee631f670fdeb73ae8f98
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:24 2016 +0200

    netfilter: x_tables: kill check_entry helper
    
    commit aa412ba225dd3bc36d404c28cdc3d674850d80d0 upstream.
    
    Once we add more sanity testing to xt_check_entry_offsets it
    becomes relvant if we're expecting a 32bit 'config_compat' blob
    or a normal one.
    
    Since we already have a lot of similar-named functions (check_entry,
    compat_check_entry, find_and_check_entry, etc.) and the current
    incarnation is short just fold its contents into the callers.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit ff9be2063c1c029e9ee4951882fb64387fa21ede
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Apr 1 14:17:23 2016 +0200

    netfilter: x_tables: add and use xt_check_entry_offsets
    
    commit 7d35812c3214afa5b37a675113555259cfd67b98 upstream.
    
    Currently arp/ip and ip6tables each implement a short helper to check that
    the target offset is large enough to hold one xt_entry_target struct and
    that t->u.target_size fits within the current rule.
    
    Unfortunately these checks are not sufficient.
    
    To avoid adding new tests to all of ip/ip6/arptables move the current
    checks into a helper, then extend this helper in followup patches.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 82e2616ad251a3f72991036d6e8acebbd0aceb80
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Jul 15 15:08:15 2016 -0400

    netfilter: x_tables: don't move to non-existent next rule
    
    commit f24e230d257af1ad7476c6e81a8dc3127a74204e upstream.
    
    Ben Hawkes says:
    
     In the mark_source_chains function (net/ipv4/netfilter/ip_tables.c) it
     is possible for a user-supplied ipt_entry structure to have a large
     next_offset field. This field is not bounds checked prior to writing a
     counter value at the supplied offset.
    
    Base chains enforce absolute verdict.
    
    User defined chains are supposed to end with an unconditional return,
    xtables userspace adds them automatically.
    
    But if such return is missing we will move to non-existent next rule.
    
    CVE-2016-3134
    
    Reported-by: Ben Hawkes <hawkes@google.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Chas Williams <3chas3@gmail.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 1ee858dd54d3c88dc4331cc401524d94989cba61
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Mar 22 18:02:52 2016 +0100

    netfilter: x_tables: fix unconditional helper
    
    commit 54d83fc74aa9ec72794373cb47432c5f7fb1a309 upstream.
    
    Ben Hawkes says:
    
     In the mark_source_chains function (net/ipv4/netfilter/ip_tables.c) it
     is possible for a user-supplied ipt_entry structure to have a large
     next_offset field. This field is not bounds checked prior to writing a
     counter value at the supplied offset.
    
    Problem is that mark_source_chains should not have been called --
    the rule doesn't have a next entry, so its supposed to return
    an absolute verdict of either ACCEPT or DROP.
    
    However, the function conditional() doesn't work as the name implies.
    It only checks that the rule is using wildcard address matching.
    
    However, an unconditional rule must also not be using any matches
    (no -m args).
    
    The underflow validator only checked the addresses, therefore
    passing the 'unconditional absolute verdict' test, while
    mark_source_chains also tested for presence of matches, and thus
    proceeeded to the next (not-existent) rule.
    
    Unify this so that all the callers have same idea of 'unconditional rule'.
    
    Reported-by: Ben Hawkes <hawkes@google.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 74afad874aaeef7ef5b500366a0e271fb5b265c3
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Mar 22 18:02:50 2016 +0100

    netfilter: x_tables: make sure e->next_offset covers remaining blob size
    
    commit 6e94e0cfb0887e4013b3b930fa6ab1fe6bb6ba91 upstream.
    
    Otherwise this function may read data beyond the ruleset blob.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 0608074c2c1fd874b10117c07b2751d2477bec14
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Mar 22 18:02:49 2016 +0100

    netfilter: x_tables: validate e->target_offset early
    
    commit bdf533de6968e9686df777dc178486f600c6e617 upstream.
    
    We should check that e->target_offset is sane before
    mark_source_chains gets called since it will fetch the target entry
    for loop detection.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit 2d2bec8f2fc546020e9b15d388ce23d6a00b0b38
Author: Andi Kleen <ak@linux.intel.com>
Date:   Mon Aug 5 15:02:45 2013 -0700

    x86, asmlinkage, apm: Make APM data structure used from assembler visible
    
    commit 54c2f3fdb941204cad136024c7b854b7ad112ab6 upstream.
    
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Link: http://lkml.kernel.org/r/1375740170-7446-12-git-send-email-andi@firstfloor.org
    Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>

commit ba3e6eaa3d72c9be90c8294e6d1f15cfa8885cc1
Author: Antonio Alecrim Jr <antonio.alecrim@gmail.com>
Date:   Mon Sep 16 11:04:54 2013 -0300

    X.509: remove possible code fragility: enumeration values not handled
    
    commit eb8948a03704f3dbbfc7e83090e20e93c6c476d2 upstream.
    
    Signed-off-by: Antonio Alecrim Jr <antonio.alecrim@gmail.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>