commit a87463f7420cd33c8cb3ece420468023c16f27b4
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Apr 29 11:33:18 2018 +0200

    Linux 4.14.38

commit 3e4915873cff08e6b02b5807336ef559690ddecf
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Apr 17 18:23:50 2018 +0200

    ACPI / video: Only default only_lcd to true on Win8-ready _desktops_
    
    commit 53fa1f6e8a5958da698a31edf366ffe90596b490 upstream.
    
    Commit 5928c281524f (ACPI / video: Default lcd_only to true on Win8-ready
    and newer machines) made only_lcd default to true on all machines where
    acpi_osi_is_win8() returns true, including laptops.
    
    The purpose of this is to avoid the bogus / non-working acpi backlight
    interface which many newer BIOS-es define on desktop machines.
    
    But this is causing a regression on some laptops, specifically on the
    Dell XPS 13 2013 model, which does not have the LCD flag set for its
    fully functional ACPI backlight interface.
    
    Rather then DMI quirking our way out of this, this commits changes the
    logic for setting only_lcd to true, to only do this on machines with
    a desktop (or server) dmi chassis-type.
    
    Note that we cannot simply only check the chassis-type and not register
    the backlight interface based on that as there are some laptops and
    tablets which have their chassis-type set to "3" aka desktop. Hopefully
    the combination of checking the LCD flag, but only on devices with
    a desktop(ish) chassis-type will avoid the needs for DMI quirks for this,
    or at least limit the amount of DMI quirks which we need to a minimum.
    
    Fixes: 5928c281524f (ACPI / video: Default lcd_only to true on Win8-ready and newer machines)
    Reported-and-tested-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Cc: 4.15+ <stable@vger.kernel.org> # 4.15+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c371fe019001c56ac3d91a8a2c30158c1be5fcc0
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Mon Apr 16 12:22:24 2018 +0200

    s390/uprobes: implement arch_uretprobe_is_alive()
    
    commit 783c3b53b9506db3e05daacfe34e0287eebb09d8 upstream.
    
    Implement s390 specific arch_uretprobe_is_alive() to avoid SIGSEGVs
    observed with uretprobes in combination with setjmp/longjmp.
    
    See commit 2dea1d9c38e4 ("powerpc/uprobes: Implement
    arch_uretprobe_is_alive()") for more details.
    
    With this implemented all test cases referenced in the above commit
    pass.
    
    Reported-by: Ziqian SUN <zsun@redhat.com>
    Cc: <stable@vger.kernel.org> # v4.3+
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5dad51054d8a72117a8601ccfeb76a1086942bfd
Author: Stefan Haberland <sth@linux.vnet.ibm.com>
Date:   Thu Apr 12 13:38:22 2018 +0200

    s390/dasd: fix IO error for newly defined devices
    
    commit 5d27a2bf6e14f5c7d1033ad1e993fcd0eba43e83 upstream.
    
    When a new CKD storage volume is defined at the storage server, Linux
    may be relying on outdated information about that volume, which leads to
    the following errors:
    
    1. Command Reject Errors for minidisk on z/VM:
    
    dasd-eckd.b3193d: 0.0.XXXX: An error occurred in the DASD device driver,
                      reason=09
    dasd(eckd): I/O status report for device 0.0.XXXX:
    dasd(eckd): in req: 00000000XXXXXXXX CC:00 FC:04 AC:00 SC:17 DS:02 CS:00
                RC:0
    dasd(eckd): device 0.0.2046: Failing CCW: 00000000XXXXXXXX
    dasd(eckd): Sense(hex)  0- 7: 80 00 00 00 00 00 00 00
    dasd(eckd): Sense(hex)  8-15: 00 00 00 00 00 00 00 00
    dasd(eckd): Sense(hex) 16-23: 00 00 00 00 e1 00 0f 00
    dasd(eckd): Sense(hex) 24-31: 00 00 40 e2 00 00 00 00
    dasd(eckd): 24 Byte: 0 MSG 0, no MSGb to SYSOP
    
    2. Equipment Check errors on LPAR or for dedicated devices on z/VM:
    
    dasd(eckd): I/O status report for device 0.0.XXXX:
    dasd(eckd): in req: 00000000XXXXXXXX CC:00 FC:04 AC:00 SC:17 DS:0E CS:40
                fcxs:01 schxs:00 RC:0
    dasd(eckd): device 0.0.9713: Failing TCW: 00000000XXXXXXXX
    dasd(eckd): Sense(hex)  0- 7: 10 00 00 00 13 58 4d 0f
    dasd(eckd): Sense(hex)  8-15: 67 00 00 00 00 00 00 04
    dasd(eckd): Sense(hex) 16-23: e5 18 05 33 97 01 0f 0f
    dasd(eckd): Sense(hex) 24-31: 00 00 40 e2 00 04 58 0d
    dasd(eckd): 24 Byte: 0 MSG f, no MSGb to SYSOP
    
    Fix this problem by using the up-to-date information provided during
    online processing via the device specific SNEQ to detect the case of
    outdated LCU data. If there is a difference, perform a re-read of that
    data.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
    Signed-off-by: Stefan Haberland <sth@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b5c2e1d163a500821079938fbfd55afcc82ac55
Author: Sebastian Ott <sebott@linux.ibm.com>
Date:   Wed Apr 11 11:21:17 2018 +0200

    s390/cio: update chpid descriptor after resource accessibility event
    
    commit af2e460ade0b0180d0f3812ca4f4f59cc9597f3e upstream.
    
    Channel path descriptors have been seen as something stable (as
    long as the chpid is configured). Recent tests have shown that the
    descriptor can also be altered when the link state of a channel path
    changes. Thus it is necessary to update the descriptor during
    handling of resource accessibility events.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Sebastian Ott <sebott@linux.ibm.com>
    Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a75bf6f71744ec27db4092a1e9a00536e9c4c1d1
Author: Peter Xu <peterx@redhat.com>
Date:   Thu Mar 15 14:06:39 2018 +0800

    tracing: Fix missing tab for hwlat_detector print format
    
    commit 9a0fd675304d410f3a9586e1b333e16f4658d56c upstream.
    
    It's been missing for a while but no one is touching that up.  Fix it.
    
    Link: http://lkml.kernel.org/r/20180315060639.9578-1-peterx@redhat.com
    
    CC: Ingo Molnar <mingo@kernel.org>
    Cc:stable@vger.kernel.org
    Fixes: 7b2c86250122d ("tracing: Add NMI tracing in hwlat detector")
    Signed-off-by: Peter Xu <peterx@redhat.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d82923c017deeeec73ce871e742de42935f871cf
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Wed Apr 11 20:50:14 2018 -0400

    block/swim: Fix IO error at end of medium
    
    commit 5a13388d7aa1177b98d7168330ecbeeac52f844d upstream.
    
    Reading to the end of a 720K disk results in an IO error instead of EOF
    because the block layer thinks the disk has 2880 sectors. (Partly this
    is a result of inverted logic of the ONEMEG_MEDIA bit that's now fixed.)
    
    Initialize the density and head count in swim_add_floppy() to agree
    with the device size passed to set_capacity() during drive probe.
    
    Call set_capacity() again upon device open, after refreshing the density
    and head count values.
    
    Cc: Laurent Vivier <lvivier@redhat.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: stable@vger.kernel.org # v4.14+
    Tested-by: Stan Johnson <userm57@yahoo.com>
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Acked-by: Laurent Vivier <lvivier@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06dc2e91959344adafbf34071d8c1d23e719c67d
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Wed Apr 11 20:50:14 2018 -0400

    block/swim: Fix array bounds check
    
    commit 7ae6a2b6cc058005ee3d0d2b9ce27688e51afa4b upstream.
    
    In the floppy_find() function in swim.c is a call to
    get_disk(swd->unit[drive].disk). The actual parameter to this call
    can be a NULL pointer when drive == swd->floppy_count. This causes
    an oops in get_disk().
    
    Data read fault at 0x00000198 in Super Data (pc=0x1be5b6)
    BAD KERNEL BUSERR
    Oops: 00000000
    Modules linked in: swim_mod ipv6 mac8390
    PC: [<001be5b6>] get_disk+0xc/0x76
    SR: 2004  SP: 9a078bc1  a2: 0213ed90
    d0: 00000000    d1: 00000000    d2: 00000000    d3: 000000ff
    d4: 00000002    d5: 02983590    a0: 02332e00    a1: 022dfd64
    Process dd (pid: 285, task=020ab25b)
    Frame format=B ssw=074d isc=4a88 isb=6732 daddr=00000198 dobuf=00000000
    baddr=001be5bc dibuf=bfffffff ver=f
    Stack from 022dfca4:
            00000000 0203fc00 0213ed90 022dfcc0 02982936 00000000 00200000 022dfd08
            0020f85a 00200000 022dfd64 02332e00 004040fc 00000014 001be77e 022dfd64
            00334e4a 001be3f8 0800001d 022dfd64 01c04b60 01c04b70 022aba80 029828f8
            02332e00 022dfd2c 001be7ac 0203fc00 00200000 022dfd64 02103a00 01c04b60
            01c04b60 0200e400 022dfd68 000e191a 00200000 022dfd64 02103a00 0800001d
            00000000 00000003 000b89de 00500000 02103a00 01c04b60 02103a08 01c04c2e
    Call Trace: [<02982936>] floppy_find+0x3e/0x4a [swim_mod]
     [<00200000>] uart_remove_one_port+0x1a2/0x260
     [<0020f85a>] kobj_lookup+0xde/0x132
     [<00200000>] uart_remove_one_port+0x1a2/0x260
     [<001be77e>] get_gendisk+0x0/0x130
     [<00334e4a>] mutex_lock+0x0/0x2e
     [<001be3f8>] disk_block_events+0x0/0x6c
     [<029828f8>] floppy_find+0x0/0x4a [swim_mod]
     [<001be7ac>] get_gendisk+0x2e/0x130
     [<00200000>] uart_remove_one_port+0x1a2/0x260
     [<000e191a>] __blkdev_get+0x32/0x45a
     [<00200000>] uart_remove_one_port+0x1a2/0x260
     [<000b89de>] complete_walk+0x0/0x8a
     [<000e1e22>] blkdev_get+0xe0/0x29a
     [<000e1fdc>] blkdev_open+0x0/0xb0
     [<000b89de>] complete_walk+0x0/0x8a
     [<000e1fdc>] blkdev_open+0x0/0xb0
     [<000e01cc>] bd_acquire+0x74/0x8a
     [<000e205c>] blkdev_open+0x80/0xb0
     [<000e1fdc>] blkdev_open+0x0/0xb0
     [<000abf24>] do_dentry_open+0x1a4/0x322
     [<00020000>] __do_proc_douintvec+0x22/0x27e
     [<000b89de>] complete_walk+0x0/0x8a
     [<000baa62>] link_path_walk+0x0/0x48e
     [<000ba3f8>] inode_permission+0x20/0x54
     [<000ac0e4>] vfs_open+0x42/0x78
     [<000bc372>] path_openat+0x2b2/0xeaa
     [<000bc0c0>] path_openat+0x0/0xeaa
     [<0004463e>] __irq_wake_thread+0x0/0x4e
     [<0003a45a>] task_tick_fair+0x18/0xc8
     [<000bd00a>] do_filp_open+0xa0/0xea
     [<000abae0>] do_sys_open+0x11a/0x1ee
     [<00020000>] __do_proc_douintvec+0x22/0x27e
     [<000abbf4>] SyS_open+0x1e/0x22
     [<00020000>] __do_proc_douintvec+0x22/0x27e
     [<00002b40>] syscall+0x8/0xc
     [<00020000>] __do_proc_douintvec+0x22/0x27e
     [<0000c00b>] dyadic+0x1/0x28
    Code: 4e5e 4e75 4e56 fffc 2f0b 2f02 266e 0008 <206b> 0198 4a88 6732 2428 002c 661e 486b 0058 4eb9 0032 0b96 588f 4a88 672c 2008
    Disabling lock debugging due to kernel taint
    
    Fix the array index bounds check to avoid this.
    
    Cc: Laurent Vivier <lvivier@redhat.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: stable@vger.kernel.org # v4.14+
    Fixes: 8852ecd97488 ("[PATCH] m68k: mac - Add SWIM floppy support")
    Tested-by: Stan Johnson <userm57@yahoo.com>
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Acked-by: Laurent Vivier <lvivier@redhat.com>
    Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c37ac3c04e7122843505c7bfd054fbb7f320777
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Wed Apr 11 20:50:14 2018 -0400

    block/swim: Select appropriate drive on device open
    
    commit b3906535ccc6cd04c42f9b1c7e31d1947b3ebc74 upstream.
    
    The driver supports internal and external FDD units so the floppy_open
    function must not hard-code the drive location.
    
    Cc: Laurent Vivier <lvivier@redhat.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: stable@vger.kernel.org # v4.14+
    Tested-by: Stan Johnson <userm57@yahoo.com>
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Acked-by: Laurent Vivier <lvivier@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cdb0d5fa252864dccb223ba5437598c2b1684289
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Wed Apr 11 20:50:14 2018 -0400

    block/swim: Rename macros to avoid inconsistent inverted logic
    
    commit 56a1c5ee54f69dd767fb61d301883dc919ddc259 upstream.
    
    The Sony drive status bits use active-low logic. The swim_readbit()
    function converts that to 'C' logic for readability. Hence, the
    sense of the names of the status bit macros should not be inverted.
    
    Mostly they are correct. However, the TWOMEG_DRIVE, MFM_MODE and
    TWOMEG_MEDIA macros have inverted sense (like MkLinux). Fix this
    inconsistency and make the following patches less confusing.
    
    The same problem affects swim3.c so fix that too.
    
    No functional change.
    
    The FDHD drive status bits are documented in sonydriv.cpp from MAME
    and in swimiii.h from MkLinux.
    
    Cc: Laurent Vivier <lvivier@redhat.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: stable@vger.kernel.org # v4.14+
    Tested-by: Stan Johnson <userm57@yahoo.com>
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Acked-by: Laurent Vivier <lvivier@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f359e87feb8859f687e43bb99f52e566ee82b347
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Wed Apr 11 20:50:14 2018 -0400

    block/swim: Remove extra put_disk() call from error path
    
    commit c1d6207cc0eef2a7f8551f9c7420d8776268f6e1 upstream.
    
    Cc: Laurent Vivier <lvivier@redhat.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: stable@vger.kernel.org # v4.14+
    Fixes: 103db8b2dfa5 ("[PATCH] swim: stop sharing request queue across multiple gendisks")
    Tested-by: Stan Johnson <userm57@yahoo.com>
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Acked-by: Laurent Vivier <lvivier@redhat.com>
    Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7100feb26d21c27a8a75e5351a618bbc94fff49
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Wed Apr 11 20:50:14 2018 -0400

    block/swim: Don't log an error message for an invalid ioctl
    
    commit 8e2ab5a4efaac77fb93e5b5b109d0b3976fdd3a0 upstream.
    
    The 'eject' shell command may send various different ioctl commands.
    This leads to error messages on the console even though the FDEJECT
    ioctl succeeds.
    
    ~# eject floppy
    SWIM floppy_ioctl: unknown cmd 21257
    SWIM floppy_ioctl: unknown cmd 1
    
    Don't log an error message for an invalid ioctl, just do as the
    swim3 driver does and return -ENOTTY.
    
    Cc: Laurent Vivier <lvivier@redhat.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: stable@vger.kernel.org # v4.14+
    Tested-by: Stan Johnson <userm57@yahoo.com>
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Acked-by: Laurent Vivier <lvivier@redhat.com>
    Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0dd9146a229147c526223cb06bf3468261ec79eb
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Wed Apr 11 20:50:14 2018 -0400

    block/swim: Check drive type
    
    commit 8a500df63d07d8aee44b7ee2c54e462e47ce93ec upstream.
    
    The SWIM chip is compatible with GCR-mode Sony 400K/800K drives but
    this driver only supports MFM mode. Therefore only Sony FDHD drives
    are supported. Skip incompatible drives.
    
    Cc: Laurent Vivier <lvivier@redhat.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: stable@vger.kernel.org # v4.14+
    Tested-by: Stan Johnson <userm57@yahoo.com>
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Acked-by: Laurent Vivier <lvivier@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43f8a4f2c8b2d7cd2565f8f455aa9e336ad31df0
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Wed Apr 11 20:50:14 2018 -0400

    m68k/mac: Don't remap SWIM MMIO region
    
    commit b64576cbf36afa5fabf3b31f62a1994c429ef855 upstream.
    
    For reasons I don't understand, calling ioremap() then iounmap() on
    the SWIM MMIO region causes a hang on 68030 (but not on 68040).
    
    ~# modprobe swim_mod
    SWIM floppy driver Version 0.2 (2008-10-30)
    SWIM device not found !
    watchdog: BUG: soft lockup - CPU#0 stuck for 23s! [modprobe:285]
    Modules linked in: swim_mod(+)
    Format 00  Vector: 0064  PC: 000075aa  Status: 2000    Not tainted
    ORIG_D0: ffffffff  D0: d00c0000  A2: 007c2370  A1: 003f810c
    A0: 00040000  D5: d0096800  D4: d0097e00
    D3: 00000001  D2: 00000003  D1: 00000000
    Non-Maskable Interrupt
    Modules linked in: swim_mod(+)
    PC: [<000075ba>] __iounmap+0x24/0x10e
    SR: 2000  SP: 007abc48  a2: 007c2370
    d0: d00c0000    d1: 000001a0    d2: 00000019    d3: 00000001
    d4: d0097e00    d5: d0096800    a0: 00040000    a1: 003f810c
    Process modprobe (pid: 285, task=007c2370)
    Frame format=0
    Stack from 007abc7c:
            ffffffed 00000000 006a4060 004712e0 007abca0 000076ea d0080000 00080000
            010bb4b8 007abcd8 010ba542 d0096000 00000000 00000000 00000001 010bb59c
            00000000 007abf30 010bb4b8 0047760a 0047763c 00477612 00616540 007abcec
            0020a91a 00477600 0047760a 010bb4cc 007abd18 002092f2 0047760a 00333b06
            007abd5c 00000000 0047760a 010bb4cc 00404f90 004776b8 00000001 007abd38
            00209446 010bb4cc 0047760a 010bb4cc 0020938e 0031f8be 00616540 007abd64
    Call Trace: [<000076ea>] iounmap+0x46/0x5a
     [<00080000>] shrink_page_list+0x7f6/0xe06
     [<010ba542>] swim_probe+0xe4/0x496 [swim_mod]
     [<0020a91a>] platform_drv_probe+0x20/0x5e
     [<002092f2>] driver_probe_device+0x21c/0x2b8
     [<00333b06>] mutex_lock+0x0/0x2e
     [<00209446>] __driver_attach+0xb8/0xce
     [<0020938e>] __driver_attach+0x0/0xce
     [<0031f8be>] klist_next+0x0/0xa0
     [<00207562>] bus_for_each_dev+0x74/0xba
     [<000344c0>] blocking_notifier_call_chain+0x0/0x20
     [<00333b06>] mutex_lock+0x0/0x2e
     [<00208e44>] driver_attach+0x1a/0x1e
     [<0020938e>] __driver_attach+0x0/0xce
     [<00207e26>] bus_add_driver+0x188/0x234
     [<000344c0>] blocking_notifier_call_chain+0x0/0x20
     [<00209894>] driver_register+0x58/0x104
     [<000344c0>] blocking_notifier_call_chain+0x0/0x20
     [<010bd000>] swim_init+0x0/0x2c [swim_mod]
     [<0020a7be>] __platform_driver_register+0x38/0x3c
     [<010bd028>] swim_init+0x28/0x2c [swim_mod]
     [<000020dc>] do_one_initcall+0x38/0x196
     [<000344c0>] blocking_notifier_call_chain+0x0/0x20
     [<003331cc>] mutex_unlock+0x0/0x3e
     [<00333b06>] mutex_lock+0x0/0x2e
     [<003331cc>] mutex_unlock+0x0/0x3e
     [<00333b06>] mutex_lock+0x0/0x2e
     [<003331cc>] mutex_unlock+0x0/0x3e
     [<00333b06>] mutex_lock+0x0/0x2e
     [<003331cc>] mutex_unlock+0x0/0x3e
     [<00333b06>] mutex_lock+0x0/0x2e
     [<00075008>] __free_pages+0x0/0x38
     [<000045c0>] mangle_kernel_stack+0x30/0xda
     [<000344c0>] blocking_notifier_call_chain+0x0/0x20
     [<003331cc>] mutex_unlock+0x0/0x3e
     [<00333b06>] mutex_lock+0x0/0x2e
     [<0005ced4>] do_init_module+0x42/0x266
     [<010bd000>] swim_init+0x0/0x2c [swim_mod]
     [<000344c0>] blocking_notifier_call_chain+0x0/0x20
     [<0005eda0>] load_module+0x1a30/0x1e70
     [<0000465d>] mangle_kernel_stack+0xcd/0xda
     [<00331c64>] __generic_copy_from_user+0x0/0x46
     [<0033256e>] _cond_resched+0x0/0x32
     [<00331b9c>] memset+0x0/0x98
     [<0033256e>] _cond_resched+0x0/0x32
     [<0005f25c>] SyS_init_module+0x7c/0x112
     [<00002000>] _start+0x0/0x8
     [<00002000>] _start+0x0/0x8
     [<00331c82>] __generic_copy_from_user+0x1e/0x46
     [<0005f2b2>] SyS_init_module+0xd2/0x112
     [<0000465d>] mangle_kernel_stack+0xcd/0xda
     [<00002b40>] syscall+0x8/0xc
     [<0000465d>] mangle_kernel_stack+0xcd/0xda
     [<0008c00c>] pcpu_balance_workfn+0xb2/0x40e
    Code: 2200 7419 e4a9 e589 2841 d9fc 0000 1000 <2414> 7203 c282 7602 b681 6600 0096 0242 fe00 0482 0000 0000 e9c0 11c3 ed89 2642
    
    There's no need to call ioremap() for the SWIM address range, as it lies
    within the usual IO device region at 0x5000 0000, which has already been
    mapped by head.S.
    
    Remove the redundant ioremap() and iounmap() calls to fix the hang.
    
    Cc: Laurent Vivier <lvivier@redhat.com>
    Cc: stable@vger.kernel.org # v4.14+
    Tested-by: Stan Johnson <userm57@yahoo.com>
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Acked-by: Laurent Vivier <lvivier@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75b98294e09a9a027eecaff448b4c59f521b6b56
Author: Robert Kolchmeyer <rkolchmeyer@google.com>
Date:   Thu Apr 19 10:44:33 2018 -0700

    fsnotify: Fix fsnotify_mark_connector race
    
    commit d90a10e2444ba5a351fa695917258ff4c5709fa5 upstream.
    
    fsnotify() acquires a reference to a fsnotify_mark_connector through
    the SRCU-protected pointer to_tell->i_fsnotify_marks. However, it
    appears that no precautions are taken in fsnotify_put_mark() to
    ensure that fsnotify() drops its reference to this
    fsnotify_mark_connector before assigning a value to its 'destroy_next'
    field. This can result in fsnotify_put_mark() assigning a value
    to a connector's 'destroy_next' field right before fsnotify() tries to
    traverse the linked list referenced by the connector's 'list' field.
    Since these two fields are members of the same union, this behavior
    results in a kernel panic.
    
    This issue is resolved by moving the connector's 'destroy_next' field
    into the object pointer union. This should work since the object pointer
    access is protected by both a spinlock and the value of the 'flags'
    field, and the 'flags' field is cleared while holding the spinlock in
    fsnotify_put_mark() before 'destroy_next' is updated. It shouldn't be
    possible for another thread to accidentally read from the object pointer
    after the 'destroy_next' field is updated.
    
    The offending behavior here is extremely unlikely; since
    fsnotify_put_mark() removes references to a connector (specifically,
    it ensures that the connector is unreachable from the inode it was
    formerly attached to) before updating its 'destroy_next' field, a
    sizeable chunk of code in fsnotify_put_mark() has to execute in the
    short window between when fsnotify() acquires the connector reference
    and saves the value of its 'list' field. On the HEAD kernel, I've only
    been able to reproduce this by inserting a udelay(1) in fsnotify().
    However, I've been able to reproduce this issue without inserting a
    udelay(1) anywhere on older unmodified release kernels, so I believe
    it's worth fixing at HEAD.
    
    References: https://bugzilla.kernel.org/show_bug.cgi?id=199437
    Fixes: 08991e83b7286635167bab40927665a90fb00d81
    CC: stable@vger.kernel.org
    Signed-off-by: Robert Kolchmeyer <rkolchmeyer@google.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 68c09d548bfc61aec99fa9a24e703c3d6fdba9b1
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Apr 18 12:51:31 2018 +0300

    cdrom: information leak in cdrom_ioctl_media_changed()
    
    commit 9de4ee40547fd315d4a0ed1dd15a2fa3559ad707 upstream.
    
    This cast is wrong.  "cdi->capacity" is an int and "arg" is an unsigned
    long.  The way the check is written now, if one of the high 32 bits is
    set then we could read outside the info->slots[] array.
    
    This bug is pretty old and it predates git.
    
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4df47e36ac052e772899b0d141daed1c9b008ae
Author: Martin K. Petersen <martin.petersen@oracle.com>
Date:   Wed Apr 18 22:54:59 2018 -0400

    scsi: mptsas: Disable WRITE SAME
    
    commit 94e5395d2403c8bc2504a7cbe4c4caaacb7b8b84 upstream.
    
    First generation MPT Fusion controllers can not translate WRITE SAME
    when the attached device is a SATA drive. Disable WRITE SAME support.
    
    Reported-by: Nikola Ciprich <nikola.ciprich@linuxbox.cz>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 77df079be9b480fbac36d407e76df4c29d719407
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Tue Apr 10 15:15:16 2018 +0900

    commoncap: Handle memory allocation failure.
    
    commit 1f5781725dcbb026438e77091c91a94f678c3522 upstream.
    
    syzbot is reporting NULL pointer dereference at xattr_getsecurity() [1],
    for cap_inode_getsecurity() is returning sizeof(struct vfs_cap_data) when
    memory allocation failed. Return -ENOMEM if memory allocation failed.
    
    [1] https://syzkaller.appspot.com/bug?id=a55ba438506fe68649a5f50d2d82d56b365e0107
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Fixes: 8db6c34f1dbc8e06 ("Introduce v3 namespaced file capabilities")
    Reported-by: syzbot <syzbot+9369930ca44f29e60e2d@syzkaller.appspotmail.com>
    Cc: stable <stable@vger.kernel.org> # 4.14+
    Acked-by: Serge E. Hallyn <serge@hallyn.com>
    Acked-by: James Morris <james.morris@microsoft.com>
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 540e7b5be492df4aab0ebbd13f658cc096149575
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Apr 27 13:49:00 2018 +0200

    Revert "mm/hmm: fix header file if/else/endif maze"
    
    This reverts commit 25df8b83e867dcfb660123e9589ebf6f094fcdd3 which is
    commit b28b08de436a638c82d0cf3dcdbdbad055baf1fc upstream.
    
    There are still build errors with this patch applied, and the upstream
    patches do not seem to apply anymore, so reverting this patch seems like
    the best thing to do at this point in time.
    
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Михаил Носов <drdeimosnn@gmail.com>
    Cc: Jérôme Glisse <jglisse@redhat.com>
    Cc: Balbir Singh <bsingharora@gmail.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Ralph Campbell <rcampbell@nvidia.com>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Cc: Evgeny Baskakov <ebaskakov@nvidia.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a252b9732243da8f9ff2b761cd020b386e944972
Author: Klaus Goger <klaus.goger@theobroma-systems.com>
Date:   Tue Dec 5 08:11:58 2017 +0100

    arm64: dts: rockchip: remove vdd_log from rk3399-puma
    
    commit 87eba0716011e528f7841026f2cc65683219d0ad upstream.
    
    vdd_log has no consumer and therefore will not be set to a specific
    voltage. Still the PWM output pin gets configured and thence the vdd_log
    output voltage will changed from it's default. Depending on the idle
    state of the PWM this will slightly over or undervoltage the logic supply
    of the RK3399 and cause instability with GbE (undervoltage) and PCIe
    (overvoltage). Since the default value set by a voltage divider is the
    correct supply voltage and we don't need to change it during runtime we
    remove the rail from the devicetree completely so the PWM pin will not
    be configured.
    
    Signed-off-by: Klaus Goger <klaus.goger@theobroma-systems.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Cc: Jakob Unterwurzacher <jakob.unterwurzacher@theobroma-systems.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fcc347bc1e34ef384335438680871e16edc5710d
Author: Michal Simek <michal.simek@xilinx.com>
Date:   Thu Feb 22 15:19:37 2018 +0100

    microblaze: Setup dependencies for ASM optimized lib functions
    
    commit 18ffc0cce4ff947a2acc9b2e06ae5309a6e6fb43 upstream.
    
    The patch:
    "microblaze: Setup proper dependency for optimized lib functions"
    (sha1: 7b6ce52be3f86520524711a6f33f3866f9339694)
    didn't setup all dependencies properly.
    Optimized lib functions in C are also present for little endian
    and optimized library functions in assembler are implemented only for
    big endian version.
    
    Reported-by: kbuild test robot <fengguang.wu@intel.com>
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5787b55b50196ad1e462789acc49d5bcefff57fb
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Apr 27 07:36:43 2018 +0200

    s390: correct module section names for expoline code revert
    
    [ Upstream commit 6cf09958f32b9667bb3ebadf74367c791112771b ]
    
    The main linker script vmlinux.lds.S for the kernel image merges
    the expoline code patch tables into two section ".nospec_call_table"
    and ".nospec_return_table". This is *not* done for the modules,
    there the sections retain their original names as generated by gcc:
    ".s390_indirect_call", ".s390_return_mem" and ".s390_return_reg".
    
    The module_finalize code has to check for the compiler generated
    section names, otherwise no code patching is done. This slows down
    the module code in case of "spectre_v2=off".
    
    Cc: stable@vger.kernel.org # 4.16
    Fixes: f19fbd5ed6 ("s390: introduce execute-trampolines for branches")
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f836b34fb0562cf193a076769a5adf71b030f59f
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Apr 27 07:36:42 2018 +0200

    s390: correct nospec auto detection init order
    
    [ Upstream commit 6a3d1e81a434fc311f224b8be77258bafc18ccc6 ]
    
    With CONFIG_EXPOLINE_AUTO=y the call of spectre_v2_auto_early() via
    early_initcall is done *after* the early_param functions. This
    overwrites any settings done with the nobp/no_spectre_v2/spectre_v2
    parameters. The code patching for the kernel is done after the
    evaluation of the early parameters but before the early_initcall
    is done. The end result is a kernel image that is patched correctly
    but the kernel modules are not.
    
    Make sure that the nospec auto detection function is called before the
    early parameters are evaluated and before the code patching is done.
    
    Fixes: 6e179d64126b ("s390: add automatic detection of the spectre defense")
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fce1bf054f0bc1dec6fef6cf5840c6ad7c662e17
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Apr 27 07:36:41 2018 +0200

    s390: add sysfs attributes for spectre
    
    [ Upstream commit d424986f1d6b16079b3231db0314923f4f8deed1 ]
    
    Set CONFIG_GENERIC_CPU_VULNERABILITIES and provide the two functions
    cpu_show_spectre_v1 and cpu_show_spectre_v2 to report the spectre
    mitigations.
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 68cb884e12288cdbc044895affd528ceb98a815b
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Apr 27 07:36:40 2018 +0200

    s390: report spectre mitigation via syslog
    
    [ Upstream commit bc035599718412cfba9249aa713f90ef13f13ee9 ]
    
    Add a boot message if either of the spectre defenses is active.
    The message is
        "Spectre V2 mitigation: execute trampolines."
    or  "Spectre V2 mitigation: limited branch prediction."
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 719b84c9aec27953da3da75838f50fd89ea950a2
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Apr 27 07:36:39 2018 +0200

    s390: add automatic detection of the spectre defense
    
    [ Upstream commit 6e179d64126b909f0b288fa63cdbf07c531e9b1d ]
    
    Automatically decide between nobp vs. expolines if the spectre_v2=auto
    kernel parameter is specified or CONFIG_EXPOLINE_AUTO=y is set.
    
    The decision made at boot time due to CONFIG_EXPOLINE_AUTO=y being set
    can be overruled with the nobp, nospec and spectre_v2 kernel parameters.
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea1bbd53f0558fa625f07fd69f5dbb58cbb8a95c
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Apr 27 07:36:38 2018 +0200

    s390: move nobp parameter functions to nospec-branch.c
    
    [ Upstream commit b2e2f43a01bace1a25bdbae04c9f9846882b727a ]
    
    Keep the code for the nobp parameter handling with the code for
    expolines. Both are related to the spectre v2 mitigation.
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6cdc4b21d219d47a96317942667339460281959d
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Fri Apr 27 07:36:37 2018 +0200

    s390/entry.S: fix spurious zeroing of r0
    
    [ Upstream commit d3f468963cd6fd6d2aa5e26aed8b24232096d0e1 ]
    
    when a system call is interrupted we might call the critical section
    cleanup handler that re-does some of the operations. When we are between
    .Lsysc_vtime and .Lsysc_do_svc we might also redo the saving of the
    problem state registers r0-r7:
    
    .Lcleanup_system_call:
    [...]
    0:      # update accounting time stamp
            mvc     __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER
            # set up saved register r11
            lg      %r15,__LC_KERNEL_STACK
            la      %r9,STACK_FRAME_OVERHEAD(%r15)
            stg     %r9,24(%r11)            # r11 pt_regs pointer
            # fill pt_regs
            mvc     __PT_R8(64,%r9),__LC_SAVE_AREA_SYNC
    --->    stmg    %r0,%r7,__PT_R0(%r9)
    
    The problem is now, that we might have already zeroed out r0.
    The fix is to move the zeroing of r0 after sysc_do_svc.
    
    Reported-by: Farhan Ali <alifm@linux.vnet.ibm.com>
    Fixes: 7041d28115e91 ("s390: scrub registers on kernel entry and KVM exit")
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 74a93ae5c328da09951990e1fece3382b544616c
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Apr 27 07:36:36 2018 +0200

    s390: do not bypass BPENTER for interrupt system calls
    
    [ Upstream commit d5feec04fe578c8dbd9e2e1439afc2f0af761ed4 ]
    
    The system call path can be interrupted before the switch back to the
    standard branch prediction with BPENTER has been done. The critical
    section cleanup code skips forward to .Lsysc_do_svc and bypasses the
    BPENTER. In this case the kernel and all subsequent code will run with
    the limited branch prediction.
    
    Fixes: eacf67eb9b32 ("s390: run user space and KVM guests with modified branch prediction")
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6288e169a25e416c656604be74f436002fa567a0
Author: Eugeniu Rosca <erosca@de.adit-jv.com>
Date:   Fri Apr 27 07:36:35 2018 +0200

    s390: Replace IS_ENABLED(EXPOLINE_*) with IS_ENABLED(CONFIG_EXPOLINE_*)
    
    [ Upstream commit 2cb370d615e9fbed9e95ed222c2c8f337181aa90 ]
    
    I've accidentally stumbled upon the IS_ENABLED(EXPOLINE_*) lines, which
    obviously always evaluate to false. Fix this.
    
    Fixes: f19fbd5ed642 ("s390: introduce execute-trampolines for branches")
    Signed-off-by: Eugeniu Rosca <erosca@de.adit-jv.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d966a6aded36b2f0d2f4d7a1c88a94f96ea59ac
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Fri Apr 27 07:36:34 2018 +0200

    KVM: s390: force bp isolation for VSIE
    
    [ Upstream commit f315104ad8b0c32be13eac628569ae707c332cb5 ]
    
    If the guest runs with bp isolation when doing a SIE instruction,
    we must also run the nested guest with bp isolation when emulating
    that SIE instruction.
    This is done by activating BPBC in the lpar, which acts as an override
    for lower level guests.
    
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: Janosch Frank <frankja@linux.vnet.ibm.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b609eb65f3158b986e7b80e4fa48665291a50564
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Apr 27 07:36:33 2018 +0200

    s390: introduce execute-trampolines for branches
    
    [ Upstream commit f19fbd5ed642dc31c809596412dab1ed56f2f156 ]
    
    Add CONFIG_EXPOLINE to enable the use of the new -mindirect-branch= and
    -mfunction_return= compiler options to create a kernel fortified against
    the specte v2 attack.
    
    With CONFIG_EXPOLINE=y all indirect branches will be issued with an
    execute type instruction. For z10 or newer the EXRL instruction will
    be used, for older machines the EX instruction. The typical indirect
    call
    
            basr    %r14,%r1
    
    is replaced with a PC relative call to a new thunk
    
            brasl   %r14,__s390x_indirect_jump_r1
    
    The thunk contains the EXRL/EX instruction to the indirect branch
    
    __s390x_indirect_jump_r1:
            exrl    0,0f
            j       .
    0:      br      %r1
    
    The detour via the execute type instruction has a performance impact.
    To get rid of the detour the new kernel parameter "nospectre_v2" and
    "spectre_v2=[on,off,auto]" can be used. If the parameter is specified
    the kernel and module code will be patched at runtime.
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bd4c47c20265763f280bddeabfc3e67b24a26f0
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Apr 27 07:36:32 2018 +0200

    s390: run user space and KVM guests with modified branch prediction
    
    [ Upstream commit 6b73044b2b0081ee3dd1cd6eaab7dee552601efb ]
    
    Define TIF_ISOLATE_BP and TIF_ISOLATE_BP_GUEST and add the necessary
    plumbing in entry.S to be able to run user space and KVM guests with
    limited branch prediction.
    
    To switch a user space process to limited branch prediction the
    s390_isolate_bp() function has to be call, and to run a vCPU of a KVM
    guest associated with the current task with limited branch prediction
    call s390_isolate_bp_guest().
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43cccd87c184dc7414d74fb2deab8dd271129676
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Apr 27 07:36:31 2018 +0200

    s390: add options to change branch prediction behaviour for the kernel
    
    [ Upstream commit d768bd892fc8f066cd3aa000eb1867bcf32db0ee ]
    
    Add the PPA instruction to the system entry and exit path to switch
    the kernel to a different branch prediction behaviour. The instructions
    are added via CPU alternatives and can be disabled with the "nospec"
    or the "nobp=0" kernel parameter. If the default behaviour selected
    with CONFIG_KERNEL_NOBP is set to "n" then the "nobp=1" parameter can be
    used to enable the changed kernel branch prediction.
    
    Acked-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c257f81b6d4557bc1c22972696305d1f397f2030
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Apr 27 07:36:30 2018 +0200

    s390/alternative: use a copy of the facility bit mask
    
    [ Upstream commit cf1489984641369611556bf00c48f945c77bcf02 ]
    
    To be able to switch off specific CPU alternatives with kernel parameters
    make a copy of the facility bit mask provided by STFLE and use the copy
    for the decision to apply an alternative.
    
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ae89b86a77fd96ca9a20236730bf599becc7550
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Apr 27 07:36:29 2018 +0200

    s390: add optimized array_index_mask_nospec
    
    [ Upstream commit e2dd833389cc4069a96b57bdd24227b5f52288f5 ]
    
    Add an optimized version of the array_index_mask_nospec function for
    s390 based on a compare and a subtract with borrow.
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ae8b68382ce0c5e911090b502e0fda14191c730
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Apr 27 07:36:28 2018 +0200

    s390: scrub registers on kernel entry and KVM exit
    
    [ Upstream commit 7041d28115e91f2144f811ffe8a195c696b1e1d0 ]
    
    Clear all user space registers on entry to the kernel and all KVM guest
    registers on KVM guest exit if the register does not contain either a
    parameter or a result value.
    
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea5566fecd035bc5d84d8bd341b655238134deb8
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Fri Apr 27 07:36:27 2018 +0200

    KVM: s390: wire up bpb feature
    
    [ Upstream commit 35b3fde6203b932b2b1a5b53b3d8808abc9c4f60 ]
    
    The new firmware interfaces for branch prediction behaviour changes
    are transparently available for the guest. Nevertheless, there is
    new state attached that should be migrated and properly resetted.
    Provide a mechanism for handling reset, migration and VSIE.
    
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    [Changed capability number to 152. - Radim]
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37e79747128bbabdff0e244a41bdcd4892a4e7cb
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Fri Apr 27 07:36:26 2018 +0200

    s390: enable CPU alternatives unconditionally
    
    [ Upstream commit 049a2c2d486e8cc82c5cd79fa479c5b105b109e9 ]
    
    Remove the CPU_ALTERNATIVES config option and enable the code
    unconditionally. The config option was only added to avoid a conflict
    with the named saved segment support. Since that code is gone there is
    no reason to keep the CPU_ALTERNATIVES config option.
    
    Just enable it unconditionally to also reduce the number of config
    options and make it less likely that something breaks.
    
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b44533a06fd8f50c425c9cfa3cbfa70f62c39a84
Author: Vasily Gorbik <gor@linux.vnet.ibm.com>
Date:   Fri Apr 27 07:36:25 2018 +0200

    s390: introduce CPU alternatives
    
    [ Upstream commit 686140a1a9c41d85a4212a1c26d671139b76404b ]
    
    Implement CPU alternatives, which allows to optionally patch newer
    instructions at runtime, based on CPU facilities availability.
    
    A new kernel boot parameter "noaltinstr" disables patching.
    
    Current implementation is derived from x86 alternatives. Although
    ideal instructions padding (when altinstr is longer then oldinstr)
    is added at compile time, and no oldinstr nops optimization has to be
    done at runtime. Also couple of compile time sanity checks are done:
    1. oldinstr and altinstr must be <= 254 bytes long,
    2. oldinstr and altinstr must not have an odd length.
    
    alternative(oldinstr, altinstr, facility);
    alternative_2(oldinstr, altinstr1, facility1, altinstr2, facility2);
    
    Both compile time and runtime padding consists of either 6/4/2 bytes nop
    or a jump (brcl) + 2 bytes nop filler if padding is longer then 6 bytes.
    
    .altinstructions and .altinstr_replacement sections are part of
    __init_begin : __init_end region and are freed after initialization.
    
    Signed-off-by: Vasily Gorbik <gor@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55c80adf0d0e528f4e4de92cecc5bf7c9201fc8a
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Thu Apr 19 08:30:49 2018 +0300

    virtio_net: fix adding vids on big-endian
    
    
    [ Upstream commit d7fad4c840f33a6bd333dd7fbb3006edbcf0017a ]
    
    Programming vids (adding or removing them) still passes
    guest-endian values in the DMA buffer. That's wrong
    if guest is big-endian and when virtio 1 is enabled.
    
    Note: this is on top of a previous patch:
            virtio_net: split out ctrl buffer
    
    Fixes: 9465a7a6f ("virtio_net: enable v1.0 support")
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d86aacaaf9d2f5f9fc1e96f53173124ce077f140
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Thu Apr 19 08:30:48 2018 +0300

    virtio_net: split out ctrl buffer
    
    
    [ Upstream commit 12e571693837d6164bda61e316b1944972ee0d97 ]
    
    When sending control commands, virtio net sets up several buffers for
    DMA. The buffers are all part of the net device which means it's
    actually allocated by kvmalloc so it's in theory (on extreme memory
    pressure) possible to get a vmalloc'ed buffer which on some platforms
    means we can't DMA there.
    
    Fix up by moving the DMA buffers into a separate structure.
    
    Reported-by: Mikulas Patocka <mpatocka@redhat.com>
    Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16c36a2c763296de03291a1317df376eadb0b09b
Author: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>
Date:   Thu Apr 19 22:49:09 2018 +0300

    net: ethernet: ti: cpsw: fix tx vlan priority mapping
    
    
    [ Upstream commit 5e391dc5a8d801a2410d0032ad4a428d1d61800c ]
    
    The CPDMA_TX_PRIORITY_MAP in real is vlan pcp field priority mapping
    register and basically replaces vlan pcp field for tagged packets.
    So, set it to be 1:1 mapping. Otherwise, it will cause unexpected
    change of egress vlan tagged packets, like prio 2 -> prio 5.
    
    Fixes: e05107e6b747 ("net: ethernet: ti: cpsw: add multi queue support")
    Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7814c479de7ae7b36649cd2644287e47eca46b49
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Thu Apr 19 21:54:34 2018 -0700

    llc: fix NULL pointer deref for SOCK_ZAPPED
    
    
    [ Upstream commit 3a04ce7130a7e5dad4e78d45d50313747f8c830f ]
    
    For SOCK_ZAPPED socket, we don't need to care about llc->sap,
    so we should just skip these refcount functions in this case.
    
    Fixes: f7e43672683b ("llc: hold llc_sap before release_sock()")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 543a60112f019f8968ec6312721f8ccc3f26a0df
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Wed Apr 18 11:51:56 2018 -0700

    llc: hold llc_sap before release_sock()
    
    
    [ Upstream commit f7e43672683b097bb074a8fe7af9bc600a23f231 ]
    
    syzbot reported we still access llc->sap in llc_backlog_rcv()
    after it is freed in llc_sap_remove_socket():
    
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x1b9/0x294 lib/dump_stack.c:113
     print_address_description+0x6c/0x20b mm/kasan/report.c:256
     kasan_report_error mm/kasan/report.c:354 [inline]
     kasan_report.cold.7+0x242/0x2fe mm/kasan/report.c:412
     __asan_report_load1_noabort+0x14/0x20 mm/kasan/report.c:430
     llc_conn_ac_send_sabme_cmd_p_set_x+0x3a8/0x460 net/llc/llc_c_ac.c:785
     llc_exec_conn_trans_actions net/llc/llc_conn.c:475 [inline]
     llc_conn_service net/llc/llc_conn.c:400 [inline]
     llc_conn_state_process+0x4e1/0x13a0 net/llc/llc_conn.c:75
     llc_backlog_rcv+0x195/0x1e0 net/llc/llc_conn.c:891
     sk_backlog_rcv include/net/sock.h:909 [inline]
     __release_sock+0x12f/0x3a0 net/core/sock.c:2335
     release_sock+0xa4/0x2b0 net/core/sock.c:2850
     llc_ui_release+0xc8/0x220 net/llc/af_llc.c:204
    
    llc->sap is refcount'ed and llc_sap_remove_socket() is paired
    with llc_sap_add_socket(). This can be amended by holding its refcount
    before llc_sap_remove_socket() and releasing it after release_sock().
    
    Reported-by: <syzbot+6e181fc95081c2cf9051@syzkaller.appspotmail.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c2c574cf6ed0bbbddaac3d78061116230adea11
Author: Alexander Aring <aring@mojatatu.com>
Date:   Fri Apr 20 15:15:05 2018 -0400

    net: sched: ife: check on metadata length
    
    
    [ Upstream commit d57493d6d1be26c8ac8516a4463bfe24956978eb ]
    
    This patch checks if sk buffer is available to dererence ife header. If
    not then NULL will returned to signal an malformed ife packet. This
    avoids to crashing the kernel from outside.
    
    Signed-off-by: Alexander Aring <aring@mojatatu.com>
    Reviewed-by: Yotam Gigi <yotam.gi@gmail.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 388f3d9708fcc96cea44fe343ffe055e58ba6e6b
Author: Alexander Aring <aring@mojatatu.com>
Date:   Fri Apr 20 15:15:04 2018 -0400

    net: sched: ife: handle malformed tlv length
    
    
    [ Upstream commit cc74eddd0ff325d57373cea99f642b787d7f76f5 ]
    
    There is currently no handling to check on a invalid tlv length. This
    patch adds such handling to avoid killing the kernel with a malformed
    ife packet.
    
    Signed-off-by: Alexander Aring <aring@mojatatu.com>
    Reviewed-by: Yotam Gigi <yotam.gi@gmail.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75020d6319eec226a5829359a23322a69f1d7525
Author: Soheil Hassas Yeganeh <soheil@google.com>
Date:   Sat Apr 14 20:45:20 2018 -0400

    tcp: clear tp->packets_out when purging write queue
    
    
    Clear tp->packets_out when purging the write queue, otherwise
    tcp_rearm_rto() mistakenly assumes TCP write queue is not empty.
    This results in NULL pointer dereference.
    
    Also, remove the redundant `tp->packets_out = 0` from
    tcp_disconnect(), since tcp_disconnect() calls
    tcp_write_queue_purge().
    
    Fixes: a27fd7a8ed38 (tcp: purge write queue upon RST)
    Reported-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
    Reported-by: Sami Farin <hvtaifwkbgefbaei@gmail.com>
    Tested-by: Sami Farin <hvtaifwkbgefbaei@gmail.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da499024f6fe0899af76346abc93542494aa9e05
Author: Alexander Aring <aring@mojatatu.com>
Date:   Fri Apr 20 15:15:03 2018 -0400

    net: sched: ife: signal not finding metaid
    
    
    [ Upstream commit f6cd14537ff9919081be19b9c53b9b19c0d3ea97 ]
    
    We need to record stats for received metadata that we dont know how
    to process. Have find_decode_metaid() return -ENOENT to capture this.
    
    Signed-off-by: Alexander Aring <aring@mojatatu.com>
    Reviewed-by: Yotam Gigi <yotam.gi@gmail.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f781ebfb08ffdc62d3cb82cd9129aba86b8a70e
Author: Doron Roberts-Kedes <doronrk@fb.com>
Date:   Wed Apr 11 15:05:16 2018 -0700

    strparser: Fix incorrect strp->need_bytes value.
    
    
    [ Upstream commit 9d0c75bf6e03d9bf80c55b0f677dc9b982958fd5 ]
    
    strp_data_ready resets strp->need_bytes to 0 if strp_peek_len indicates
    that the remainder of the message has been received. However,
    do_strp_work does not reset strp->need_bytes to 0. If do_strp_work
    completes a partial message, the value of strp->need_bytes will continue
    to reflect the needed bytes of the previous message, causing
    future invocations of strp_data_ready to return early if
    strp->need_bytes is less than strp_peek_len. Resetting strp->need_bytes
    to 0 in __strp_recv on handing a full message to the upper layer solves
    this problem.
    
    __strp_recv also calculates strp->need_bytes using stm->accum_len before
    stm->accum_len has been incremented by cand_len. This can cause
    strp->need_bytes to be equal to the full length of the message instead
    of the full length minus the accumulated length. This, in turn, causes
    strp_data_ready to return early, even when there is sufficient data to
    complete the partial message. Incrementing stm->accum_len before using
    it to calculate strp->need_bytes solves this problem.
    
    Found while testing net/tls_sw recv path.
    
    Fixes: 43a0c6751a322847 ("strparser: Stream parser for messages")
    Signed-off-by: Doron Roberts-Kedes <doronrk@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 109feb04c85152dcff5c9922760dacd1b89b7ddd
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Mon Apr 23 11:43:34 2018 -0500

    amd-xgbe: Only use the SFP supported transceiver signals
    
    
    [ Upstream commit 117df655f8ed51adb6e6b163812a06ebeae9f453 ]
    
    The SFP eeprom indicates the transceiver signals (Rx LOS, Tx Fault, etc.)
    that it supports.  Update the driver to include checking the eeprom data
    when deciding whether to use a transceiver signal.
    
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a66123182a64083b5f8606dcdd7963e48b90d62
Author: Doron Roberts-Kedes <doronrk@fb.com>
Date:   Fri Apr 20 12:11:11 2018 -0700

    strparser: Do not call mod_delayed_work with a timeout of LONG_MAX
    
    
    [ Upstream commit 7c5aba211dd61f41d737a2c51729eb9fdcd3edf4 ]
    
    struct sock's sk_rcvtimeo is initialized to
    LONG_MAX/MAX_SCHEDULE_TIMEOUT in sock_init_data. Calling
    mod_delayed_work with a timeout of LONG_MAX causes spurious execution of
    the work function. timer->expires is set equal to jiffies + LONG_MAX.
    When timer_base->clk falls behind the current value of jiffies,
    the delta between timer_base->clk and jiffies + LONG_MAX causes the
    expiration to be in the past. Returning early from strp_start_timer if
    timeo == LONG_MAX solves this problem.
    
    Found while testing net/tls_sw recv path.
    
    Fixes: 43a0c6751a322847 ("strparser: Stream parser for messages")
    Reviewed-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Doron Roberts-Kedes <doronrk@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 346ba2f22107ad3aa6769cf4abcf564bea920e41
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Mon Apr 23 11:43:17 2018 -0500

    amd-xgbe: Improve KR auto-negotiation and training
    
    
    [ Upstream commit 96f4d430c507ed4856048c2dc9c1a2ea5b5e74e4 ]
    
    Update xgbe-phy-v2.c to make use of the auto-negotiation (AN) phy hooks
    to improve the ability to successfully complete Clause 73 AN when running
    at 10gbps.  Hardware can sometimes have issues with CDR lock when the
    AN DME page exchange is being performed.
    
    The AN and KR training hooks are used as follows:
    - The pre AN hook is used to disable CDR tracking in the PHY so that the
      DME page exchange can be successfully and consistently completed.
    - The post KR training hook is used to re-enable the CDR tracking so that
      KR training can successfully complete.
    - The post AN hook is used to check for an unsuccessful AN which will
      increase a CDR tracking enablement delay (up to a maximum value).
    
    Add two debugfs entries to allow control over use of the CDR tracking
    workaround.  The debugfs entries allow the CDR tracking workaround to
    be disabled and determine whether to re-enable CDR tracking before or
    after link training has been initiated.
    
    Also, with these changes the receiver reset cycle that is performed during
    the link status check can be performed less often.
    
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29b623b60549d5897af0842bf439d897de0560d8
Author: Xin Long <lucien.xin@gmail.com>
Date:   Thu Apr 12 14:24:31 2018 +0800

    sctp: do not check port in sctp_inet6_cmp_addr
    
    
    [ Upstream commit 1071ec9d453a38023579714b64a951a2fb982071 ]
    
    pf->cmp_addr() is called before binding a v6 address to the sock. It
    should not check ports, like in sctp_inet_cmp_addr.
    
    But sctp_inet6_cmp_addr checks the addr by invoking af(6)->cmp_addr,
    sctp_v6_cmp_addr where it also compares the ports.
    
    This would cause that setsockopt(SCTP_SOCKOPT_BINDX_ADD) could bind
    multiple duplicated IPv6 addresses after Commit 40b4f0fd74e4 ("sctp:
    lack the check for ports in sctp_v6_cmp_addr").
    
    This patch is to remove af->cmp_addr called in sctp_inet6_cmp_addr,
    but do the proper check for both v6 addrs and v4mapped addrs.
    
    v1->v2:
      - define __sctp_v6_cmp_addr to do the common address comparison
        used for both pf and af v6 cmp_addr.
    
    Fixes: 40b4f0fd74e4 ("sctp: lack the check for ports in sctp_v6_cmp_addr")
    Reported-by: Jianwen Ji <jiji@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f42036e8051e75e4a74aa4f9bec53631c5981da5
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Mon Apr 23 11:43:08 2018 -0500

    amd-xgbe: Add pre/post auto-negotiation phy hooks
    
    
    [ Upstream commit 4d945663a6a0acf3cbe45940503f2eb9584bfee7 ]
    
    Add hooks to the driver auto-negotiation (AN) flow to allow the different
    phy implementations to perform any steps necessary to improve AN.
    
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd997151740f1abcd13aaa3da719f712cf959759
Author: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Date:   Tue Apr 17 18:46:14 2018 +0900

    vlan: Fix reading memory beyond skb->tail in skb_vlan_tagged_multi
    
    
    [ Upstream commit 7ce2367254e84753bceb07327aaf5c953cfce117 ]
    
    Syzkaller spotted an old bug which leads to reading skb beyond tail by 4
    bytes on vlan tagged packets.
    This is caused because skb_vlan_tagged_multi() did not check
    skb_headlen.
    
    BUG: KMSAN: uninit-value in eth_type_vlan include/linux/if_vlan.h:283 [inline]
    BUG: KMSAN: uninit-value in skb_vlan_tagged_multi include/linux/if_vlan.h:656 [inline]
    BUG: KMSAN: uninit-value in vlan_features_check include/linux/if_vlan.h:672 [inline]
    BUG: KMSAN: uninit-value in dflt_features_check net/core/dev.c:2949 [inline]
    BUG: KMSAN: uninit-value in netif_skb_features+0xd1b/0xdc0 net/core/dev.c:3009
    CPU: 1 PID: 3582 Comm: syzkaller435149 Not tainted 4.16.0+ #82
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
      __dump_stack lib/dump_stack.c:17 [inline]
      dump_stack+0x185/0x1d0 lib/dump_stack.c:53
      kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
      __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
      eth_type_vlan include/linux/if_vlan.h:283 [inline]
      skb_vlan_tagged_multi include/linux/if_vlan.h:656 [inline]
      vlan_features_check include/linux/if_vlan.h:672 [inline]
      dflt_features_check net/core/dev.c:2949 [inline]
      netif_skb_features+0xd1b/0xdc0 net/core/dev.c:3009
      validate_xmit_skb+0x89/0x1320 net/core/dev.c:3084
      __dev_queue_xmit+0x1cb2/0x2b60 net/core/dev.c:3549
      dev_queue_xmit+0x4b/0x60 net/core/dev.c:3590
      packet_snd net/packet/af_packet.c:2944 [inline]
      packet_sendmsg+0x7c57/0x8a10 net/packet/af_packet.c:2969
      sock_sendmsg_nosec net/socket.c:630 [inline]
      sock_sendmsg net/socket.c:640 [inline]
      sock_write_iter+0x3b9/0x470 net/socket.c:909
      do_iter_readv_writev+0x7bb/0x970 include/linux/fs.h:1776
      do_iter_write+0x30d/0xd40 fs/read_write.c:932
      vfs_writev fs/read_write.c:977 [inline]
      do_writev+0x3c9/0x830 fs/read_write.c:1012
      SYSC_writev+0x9b/0xb0 fs/read_write.c:1085
      SyS_writev+0x56/0x80 fs/read_write.c:1082
      do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
      entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x43ffa9
    RSP: 002b:00007fff2cff3948 EFLAGS: 00000217 ORIG_RAX: 0000000000000014
    RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 000000000043ffa9
    RDX: 0000000000000001 RSI: 0000000020000080 RDI: 0000000000000003
    RBP: 00000000006cb018 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000217 R12: 00000000004018d0
    R13: 0000000000401960 R14: 0000000000000000 R15: 0000000000000000
    
    Uninit was created at:
      kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
      kmsan_internal_poison_shadow+0xb8/0x1b0 mm/kmsan/kmsan.c:188
      kmsan_kmalloc+0x94/0x100 mm/kmsan/kmsan.c:314
      kmsan_slab_alloc+0x11/0x20 mm/kmsan/kmsan.c:321
      slab_post_alloc_hook mm/slab.h:445 [inline]
      slab_alloc_node mm/slub.c:2737 [inline]
      __kmalloc_node_track_caller+0xaed/0x11c0 mm/slub.c:4369
      __kmalloc_reserve net/core/skbuff.c:138 [inline]
      __alloc_skb+0x2cf/0x9f0 net/core/skbuff.c:206
      alloc_skb include/linux/skbuff.h:984 [inline]
      alloc_skb_with_frags+0x1d4/0xb20 net/core/skbuff.c:5234
      sock_alloc_send_pskb+0xb56/0x1190 net/core/sock.c:2085
      packet_alloc_skb net/packet/af_packet.c:2803 [inline]
      packet_snd net/packet/af_packet.c:2894 [inline]
      packet_sendmsg+0x6444/0x8a10 net/packet/af_packet.c:2969
      sock_sendmsg_nosec net/socket.c:630 [inline]
      sock_sendmsg net/socket.c:640 [inline]
      sock_write_iter+0x3b9/0x470 net/socket.c:909
      do_iter_readv_writev+0x7bb/0x970 include/linux/fs.h:1776
      do_iter_write+0x30d/0xd40 fs/read_write.c:932
      vfs_writev fs/read_write.c:977 [inline]
      do_writev+0x3c9/0x830 fs/read_write.c:1012
      SYSC_writev+0x9b/0xb0 fs/read_write.c:1085
      SyS_writev+0x56/0x80 fs/read_write.c:1082
      do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
      entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Fixes: 58e998c6d239 ("offloading: Force software GSO for multiple vlan tags.")
    Reported-and-tested-by: syzbot+0bbe42c764feafa82c5a@syzkaller.appspotmail.com
    Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88b7895e7c6ddeec0986ec90d6983d655006b796
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Mon Apr 23 16:38:27 2018 +0200

    pppoe: check sockaddr length in pppoe_connect()
    
    
    [ Upstream commit a49e2f5d5fb141884452ddb428f551b123d436b5 ]
    
    We must validate sockaddr_len, otherwise userspace can pass fewer data
    than we expect and we end up accessing invalid data.
    
    Fixes: 224cf5ad14c0 ("ppp: Move the PPP drivers")
    Reported-by: syzbot+4f03bdf92fdf9ef5ddab@syzkaller.appspotmail.com
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed2ba25f6d509431103ea3916f6db34595d62406
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Apr 16 08:29:42 2018 -0700

    tipc: add policy for TIPC_NLA_NET_ADDR
    
    
    [ Upstream commit ec518f21cb1a1b1f8a516499ea05c60299e04963 ]
    
    Before syzbot/KMSAN bites, add the missing policy for TIPC_NLA_NET_ADDR
    
    Fixes: 27c21416727a ("tipc: add net set to new netlink api")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Jon Maloy <jon.maloy@ericsson.com>
    Cc: Ying Xue <ying.xue@windriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6da813d79cfaa8dbc545e194484185b6b5639c92
Author: Willem de Bruijn <willemb@google.com>
Date:   Mon Apr 23 17:37:03 2018 -0400

    packet: fix bitfield update race
    
    
    [ Upstream commit a6361f0ca4b25460f2cdf3235ebe8115f622901e ]
    
    Updates to the bitfields in struct packet_sock are not atomic.
    Serialize these read-modify-write cycles.
    
    Move po->running into a separate variable. Its writes are protected by
    po->bind_lock (except for one startup case at packet_create). Also
    replace a textual precondition warning with lockdep annotation.
    
    All others are set only in packet_setsockopt. Serialize these
    updates by holding the socket lock. Analogous to other field updates,
    also hold the lock when testing whether a ring is active (pg_vec).
    
    Fixes: 8dc419447415 ("[PACKET]: Add optional checksum computation for recvmsg")
    Reported-by: DaeRyong Jeong <threeearcat@gmail.com>
    Reported-by: Byoungyoung Lee <byoungyoung@purdue.edu>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70a615d7daa04923d9f255307de26819f2f6dbd4
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Apr 24 14:33:37 2018 +0800

    team: fix netconsole setup over team
    
    
    [ Upstream commit 9cf2f437ca5b39828984064fad213e68fc17ef11 ]
    
    The same fix in Commit dbe173079ab5 ("bridge: fix netconsole
    setup over bridge") is also needed for team driver.
    
    While at it, remove the unnecessary parameter *team from
    team_port_enable_netpoll().
    
    v1->v2:
      - fix it in a better way, as does bridge.
    
    Fixes: 0fb52a27a04a ("team: cleanup netpoll clode")
    Reported-by: João Avelino Bellomo Filho <jbellomo@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07cb0b54d7d99d0c67f8f7aebc1bb8f276bdf2b8
Author: Ursula Braun <ubraun@linux.vnet.ibm.com>
Date:   Thu Apr 19 15:56:40 2018 +0200

    net/smc: fix shutdown in state SMC_LISTEN
    
    
    [ Upstream commit 1255fcb2a655f05e02f3a74675a6d6525f187afd ]
    
    Calling shutdown with SHUT_RD and SHUT_RDWR for a listening SMC socket
    crashes, because
       commit 127f49705823 ("net/smc: release clcsock from tcp_listen_worker")
    releases the internal clcsock in smc_close_active() and sets smc->clcsock
    to NULL.
    For SHUT_RD the smc_close_active() call is removed.
    For SHUT_RDWR the kernel_sock_shutdown() call is omitted, since the
    clcsock is already released.
    
    Fixes: 127f49705823 ("net/smc: release clcsock from tcp_listen_worker")
    Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com>
    Reported-by: Stephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b4f4d759c8ea9b4b607d13d3c89c59dd78a6ed7
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Fri Apr 13 13:59:25 2018 +0200

    team: avoid adding twice the same option to the event list
    
    
    [ Upstream commit 4fb0534fb7bbc2346ba7d3a072b538007f4135a5 ]
    
    When parsing the options provided by the user space,
    team_nl_cmd_options_set() insert them in a temporary list to send
    multiple events with a single message.
    While each option's attribute is correctly validated, the code does
    not check for duplicate entries before inserting into the event
    list.
    
    Exploiting the above, the syzbot was able to trigger the following
    splat:
    
    kernel BUG at lib/list_debug.c:31!
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
        (ftrace buffer empty)
    Modules linked in:
    CPU: 0 PID: 4466 Comm: syzkaller556835 Not tainted 4.16.0+ #17
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    RIP: 0010:__list_add_valid+0xaa/0xb0 lib/list_debug.c:29
    RSP: 0018:ffff8801b04bf248 EFLAGS: 00010286
    RAX: 0000000000000058 RBX: ffff8801c8fc7a90 RCX: 0000000000000000
    RDX: 0000000000000058 RSI: ffffffff815fbf41 RDI: ffffed0036097e3f
    RBP: ffff8801b04bf260 R08: ffff8801b0b2a700 R09: ffffed003b604f90
    R10: ffffed003b604f90 R11: ffff8801db027c87 R12: ffff8801c8fc7a90
    R13: ffff8801c8fc7a90 R14: dffffc0000000000 R15: 0000000000000000
    FS:  0000000000b98880(0000) GS:ffff8801db000000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000000000043fc30 CR3: 00000001afe8e000 CR4: 00000000001406f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
      __list_add include/linux/list.h:60 [inline]
      list_add include/linux/list.h:79 [inline]
      team_nl_cmd_options_set+0x9ff/0x12b0 drivers/net/team/team.c:2571
      genl_family_rcv_msg+0x889/0x1120 net/netlink/genetlink.c:599
      genl_rcv_msg+0xc6/0x170 net/netlink/genetlink.c:624
      netlink_rcv_skb+0x172/0x440 net/netlink/af_netlink.c:2448
      genl_rcv+0x28/0x40 net/netlink/genetlink.c:635
      netlink_unicast_kernel net/netlink/af_netlink.c:1310 [inline]
      netlink_unicast+0x58b/0x740 net/netlink/af_netlink.c:1336
      netlink_sendmsg+0x9f0/0xfa0 net/netlink/af_netlink.c:1901
      sock_sendmsg_nosec net/socket.c:629 [inline]
      sock_sendmsg+0xd5/0x120 net/socket.c:639
      ___sys_sendmsg+0x805/0x940 net/socket.c:2117
      __sys_sendmsg+0x115/0x270 net/socket.c:2155
      SYSC_sendmsg net/socket.c:2164 [inline]
      SyS_sendmsg+0x29/0x30 net/socket.c:2162
      do_syscall_64+0x29e/0x9d0 arch/x86/entry/common.c:287
      entry_SYSCALL_64_after_hwframe+0x42/0xb7
    RIP: 0033:0x4458b9
    RSP: 002b:00007ffd1d4a7278 EFLAGS: 00000213 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 000000000000001b RCX: 00000000004458b9
    RDX: 0000000000000010 RSI: 0000000020000d00 RDI: 0000000000000004
    RBP: 00000000004a74ed R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000213 R12: 00007ffd1d4a7348
    R13: 0000000000402a60 R14: 0000000000000000 R15: 0000000000000000
    Code: 75 e8 eb a9 48 89 f7 48 89 75 e8 e8 d1 85 7b fe 48 8b 75 e8 eb bb 48
    89 f2 48 89 d9 4c 89 e6 48 c7 c7 a0 84 d8 87 e8 ea 67 28 fe <0f> 0b 0f 1f
    40 00 48 b8 00 00 00 00 00 fc ff df 55 48 89 e5 41
    RIP: __list_add_valid+0xaa/0xb0 lib/list_debug.c:29 RSP: ffff8801b04bf248
    
    This changeset addresses the avoiding list_add() if the current
    option is already present in the event list.
    
    Reported-and-tested-by: syzbot+4d4af685432dc0e56c91@syzkaller.appspotmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Fixes: 2fcdb2c9e659 ("team: allow to send multiple set events in one message")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 012e5e5b6991c83d96173f643ab1cafb7e38c451
Author: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date:   Thu Apr 12 10:46:55 2018 +0200

    net: fix deadlock while clearing neighbor proxy table
    
    
    [ Upstream commit 53b76cdf7e8fecec1d09e38aad2f8579882591a8 ]
    
    When coming from ndisc_netdev_event() in net/ipv6/ndisc.c,
    neigh_ifdown() is called with &nd_tbl, locking this while
    clearing the proxy neighbor entries when eg. deleting an
    interface. Calling the table's pndisc_destructor() with the
    lock still held, however, can cause a deadlock: When a
    multicast listener is available an IGMP packet of type
    ICMPV6_MGM_REDUCTION may be sent out. When reaching
    ip6_finish_output2(), if no neighbor entry for the target
    address is found, __neigh_create() is called with &nd_tbl,
    which it'll want to lock.
    
    Move the elements into their own list, then unlock the table
    and perform the destruction.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199289
    Fixes: 6fd6ce2056de ("ipv6: Do not depend on rt->n in ip6_finish_output2().")
    Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5387e66388f73152afe7f8e341fccc4469bba10
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Apr 11 14:36:28 2018 -0700

    tcp: md5: reject TCP_MD5SIG or TCP_MD5SIG_EXT on established sockets
    
    
    [ Upstream commit 7212303268918b9a203aebeacfdbd83b5e87b20d ]
    
    syzbot/KMSAN reported an uninit-value in tcp_parse_options() [1]
    
    I believe this was caused by a TCP_MD5SIG being set on live
    flow.
    
    This is highly unexpected, since TCP option space is limited.
    
    For instance, presence of TCP MD5 option automatically disables
    TCP TimeStamp option at SYN/SYNACK time, which we can not do
    once flow has been established.
    
    Really, adding/deleting an MD5 key only makes sense on sockets
    in CLOSE or LISTEN state.
    
    [1]
    BUG: KMSAN: uninit-value in tcp_parse_options+0xd74/0x1a30 net/ipv4/tcp_input.c:3720
    CPU: 1 PID: 6177 Comm: syzkaller192004 Not tainted 4.16.0+ #83
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
     tcp_parse_options+0xd74/0x1a30 net/ipv4/tcp_input.c:3720
     tcp_fast_parse_options net/ipv4/tcp_input.c:3858 [inline]
     tcp_validate_incoming+0x4f1/0x2790 net/ipv4/tcp_input.c:5184
     tcp_rcv_established+0xf60/0x2bb0 net/ipv4/tcp_input.c:5453
     tcp_v4_do_rcv+0x6cd/0xd90 net/ipv4/tcp_ipv4.c:1469
     sk_backlog_rcv include/net/sock.h:908 [inline]
     __release_sock+0x2d6/0x680 net/core/sock.c:2271
     release_sock+0x97/0x2a0 net/core/sock.c:2786
     tcp_sendmsg+0xd6/0x100 net/ipv4/tcp.c:1464
     inet_sendmsg+0x48d/0x740 net/ipv4/af_inet.c:764
     sock_sendmsg_nosec net/socket.c:630 [inline]
     sock_sendmsg net/socket.c:640 [inline]
     SYSC_sendto+0x6c3/0x7e0 net/socket.c:1747
     SyS_sendto+0x8a/0xb0 net/socket.c:1715
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x448fe9
    RSP: 002b:00007fd472c64d38 EFLAGS: 00000216 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 00000000006e5a30 RCX: 0000000000448fe9
    RDX: 000000000000029f RSI: 0000000020a88f88 RDI: 0000000000000004
    RBP: 00000000006e5a34 R08: 0000000020e68000 R09: 0000000000000010
    R10: 00000000200007fd R11: 0000000000000216 R12: 0000000000000000
    R13: 00007fff074899ef R14: 00007fd472c659c0 R15: 0000000000000009
    
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
     kmsan_internal_poison_shadow+0xb8/0x1b0 mm/kmsan/kmsan.c:188
     kmsan_kmalloc+0x94/0x100 mm/kmsan/kmsan.c:314
     kmsan_slab_alloc+0x11/0x20 mm/kmsan/kmsan.c:321
     slab_post_alloc_hook mm/slab.h:445 [inline]
     slab_alloc_node mm/slub.c:2737 [inline]
     __kmalloc_node_track_caller+0xaed/0x11c0 mm/slub.c:4369
     __kmalloc_reserve net/core/skbuff.c:138 [inline]
     __alloc_skb+0x2cf/0x9f0 net/core/skbuff.c:206
     alloc_skb include/linux/skbuff.h:984 [inline]
     tcp_send_ack+0x18c/0x910 net/ipv4/tcp_output.c:3624
     __tcp_ack_snd_check net/ipv4/tcp_input.c:5040 [inline]
     tcp_ack_snd_check net/ipv4/tcp_input.c:5053 [inline]
     tcp_rcv_established+0x2103/0x2bb0 net/ipv4/tcp_input.c:5469
     tcp_v4_do_rcv+0x6cd/0xd90 net/ipv4/tcp_ipv4.c:1469
     sk_backlog_rcv include/net/sock.h:908 [inline]
     __release_sock+0x2d6/0x680 net/core/sock.c:2271
     release_sock+0x97/0x2a0 net/core/sock.c:2786
     tcp_sendmsg+0xd6/0x100 net/ipv4/tcp.c:1464
     inet_sendmsg+0x48d/0x740 net/ipv4/af_inet.c:764
     sock_sendmsg_nosec net/socket.c:630 [inline]
     sock_sendmsg net/socket.c:640 [inline]
     SYSC_sendto+0x6c3/0x7e0 net/socket.c:1747
     SyS_sendto+0x8a/0xb0 net/socket.c:1715
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Fixes: cfb6eeb4c860 ("[TCP]: MD5 Signature Option (RFC2385) support.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c2352520e513dfb4f2a7a84fe3502ec1fd40705
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Apr 15 17:52:04 2018 -0700

    net: af_packet: fix race in PACKET_{R|T}X_RING
    
    
    [ Upstream commit 5171b37d959641bbc619781caf62e61f7b940871 ]
    
    In order to remove the race caught by syzbot [1], we need
    to lock the socket before using po->tp_version as this could
    change under us otherwise.
    
    This means lock_sock() and release_sock() must be done by
    packet_set_ring() callers.
    
    [1] :
    BUG: KMSAN: uninit-value in packet_set_ring+0x1254/0x3870 net/packet/af_packet.c:4249
    CPU: 0 PID: 20195 Comm: syzkaller707632 Not tainted 4.16.0+ #83
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
     packet_set_ring+0x1254/0x3870 net/packet/af_packet.c:4249
     packet_setsockopt+0x12c6/0x5a90 net/packet/af_packet.c:3662
     SYSC_setsockopt+0x4b8/0x570 net/socket.c:1849
     SyS_setsockopt+0x76/0xa0 net/socket.c:1828
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x449099
    RSP: 002b:00007f42b5307ce8 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
    RAX: ffffffffffffffda RBX: 000000000070003c RCX: 0000000000449099
    RDX: 0000000000000005 RSI: 0000000000000107 RDI: 0000000000000003
    RBP: 0000000000700038 R08: 000000000000001c R09: 0000000000000000
    R10: 00000000200000c0 R11: 0000000000000246 R12: 0000000000000000
    R13: 000000000080eecf R14: 00007f42b53089c0 R15: 0000000000000001
    
    Local variable description: ----req_u@packet_setsockopt
    Variable was created at:
     packet_setsockopt+0x13f/0x5a90 net/packet/af_packet.c:3612
     SYSC_setsockopt+0x4b8/0x570 net/socket.c:1849
    
    Fixes: f6fb8f100b80 ("af-packet: TPACKET_V3 flexible buffer implementation.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b76d3f3309cf7d7ae8ef5e4b2c2010ae39189bc6
Author: Jann Horn <jannh@google.com>
Date:   Fri Apr 20 15:57:30 2018 +0200

    tcp: don't read out-of-bounds opsize
    
    
    [ Upstream commit 7e5a206ab686f098367b61aca989f5cdfa8114a3 ]
    
    The old code reads the "opsize" variable from out-of-bounds memory (first
    byte behind the segment) if a broken TCP segment ends directly after an
    opcode that is neither EOL nor NOP.
    
    The result of the read isn't used for anything, so the worst thing that
    could theoretically happen is a pagefault; and since the physmap is usually
    mostly contiguous, even that seems pretty unlikely.
    
    The following C reproducer triggers the uninitialized read - however, you
    can't actually see anything happen unless you put something like a
    pr_warn() in tcp_parse_md5sig_option() to print the opsize.
    
    ====================================
    #define _GNU_SOURCE
    #include <arpa/inet.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <stdarg.h>
    #include <net/if.h>
    #include <linux/if.h>
    #include <linux/ip.h>
    #include <linux/tcp.h>
    #include <linux/in.h>
    #include <linux/if_tun.h>
    #include <err.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <string.h>
    #include <stdio.h>
    #include <unistd.h>
    #include <sys/ioctl.h>
    #include <assert.h>
    
    void systemf(const char *command, ...) {
      char *full_command;
      va_list ap;
      va_start(ap, command);
      if (vasprintf(&full_command, command, ap) == -1)
        err(1, "vasprintf");
      va_end(ap);
      printf("systemf: <<<%s>>>\n", full_command);
      system(full_command);
    }
    
    char *devname;
    
    int tun_alloc(char *name) {
      int fd = open("/dev/net/tun", O_RDWR);
      if (fd == -1)
        err(1, "open tun dev");
      static struct ifreq req = { .ifr_flags = IFF_TUN|IFF_NO_PI };
      strcpy(req.ifr_name, name);
      if (ioctl(fd, TUNSETIFF, &req))
        err(1, "TUNSETIFF");
      devname = req.ifr_name;
      printf("device name: %s\n", devname);
      return fd;
    }
    
    #define IPADDR(a,b,c,d) (((a)<<0)+((b)<<8)+((c)<<16)+((d)<<24))
    
    void sum_accumulate(unsigned int *sum, void *data, int len) {
      assert((len&2)==0);
      for (int i=0; i<len/2; i++) {
        *sum += ntohs(((unsigned short *)data)[i]);
      }
    }
    
    unsigned short sum_final(unsigned int sum) {
      sum = (sum >> 16) + (sum & 0xffff);
      sum = (sum >> 16) + (sum & 0xffff);
      return htons(~sum);
    }
    
    void fix_ip_sum(struct iphdr *ip) {
      unsigned int sum = 0;
      sum_accumulate(&sum, ip, sizeof(*ip));
      ip->check = sum_final(sum);
    }
    
    void fix_tcp_sum(struct iphdr *ip, struct tcphdr *tcp) {
      unsigned int sum = 0;
      struct {
        unsigned int saddr;
        unsigned int daddr;
        unsigned char pad;
        unsigned char proto_num;
        unsigned short tcp_len;
      } fakehdr = {
        .saddr = ip->saddr,
        .daddr = ip->daddr,
        .proto_num = ip->protocol,
        .tcp_len = htons(ntohs(ip->tot_len) - ip->ihl*4)
      };
      sum_accumulate(&sum, &fakehdr, sizeof(fakehdr));
      sum_accumulate(&sum, tcp, tcp->doff*4);
      tcp->check = sum_final(sum);
    }
    
    int main(void) {
      int tun_fd = tun_alloc("inject_dev%d");
      systemf("ip link set %s up", devname);
      systemf("ip addr add 192.168.42.1/24 dev %s", devname);
    
      struct {
        struct iphdr ip;
        struct tcphdr tcp;
        unsigned char tcp_opts[20];
      } __attribute__((packed)) syn_packet = {
        .ip = {
          .ihl = sizeof(struct iphdr)/4,
          .version = 4,
          .tot_len = htons(sizeof(syn_packet)),
          .ttl = 30,
          .protocol = IPPROTO_TCP,
          /* FIXUP check */
          .saddr = IPADDR(192,168,42,2),
          .daddr = IPADDR(192,168,42,1)
        },
        .tcp = {
          .source = htons(1),
          .dest = htons(1337),
          .seq = 0x12345678,
          .doff = (sizeof(syn_packet.tcp)+sizeof(syn_packet.tcp_opts))/4,
          .syn = 1,
          .window = htons(64),
          .check = 0 /*FIXUP*/
        },
        .tcp_opts = {
          /* INVALID: trailing MD5SIG opcode after NOPs */
          1, 1, 1, 1, 1,
          1, 1, 1, 1, 1,
          1, 1, 1, 1, 1,
          1, 1, 1, 1, 19
        }
      };
      fix_ip_sum(&syn_packet.ip);
      fix_tcp_sum(&syn_packet.ip, &syn_packet.tcp);
      while (1) {
        int write_res = write(tun_fd, &syn_packet, sizeof(syn_packet));
        if (write_res != sizeof(syn_packet))
          err(1, "packet write failed");
      }
    }
    ====================================
    
    Fixes: cfb6eeb4c860 ("[TCP]: MD5 Signature Option (RFC2385) support.")
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb225e80c9a3364c43ae4219da05ebb5a4b86c39
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Thu Apr 19 12:25:38 2018 -0700

    llc: delete timers synchronously in llc_sk_free()
    
    
    [ Upstream commit b905ef9ab90115d001c1658259af4b1c65088779 ]
    
    The connection timers of an llc sock could be still flying
    after we delete them in llc_sk_free(), and even possibly
    after we free the sock. We could just wait synchronously
    here in case of troubles.
    
    Note, I leave other call paths as they are, since they may
    not have to wait, at least we can change them to synchronously
    when needed.
    
    Also, move the code to net/llc/llc_conn.c, which is apparently
    a better place.
    
    Reported-by: <syzbot+f922284c18ea23a8e457@syzkaller.appspotmail.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 15efa783286c6f4fb3deeff215c7fb33667b40a9
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Apr 11 14:46:00 2018 -0700

    net: validate attribute sizes in neigh_dump_table()
    
    
    [ Upstream commit 7dd07c143a4b54d050e748bee4b4b9e94a7b1744 ]
    
    Since neigh_dump_table() calls nlmsg_parse() without giving policy
    constraints, attributes can have arbirary size that we must validate
    
    Reported by syzbot/KMSAN :
    
    BUG: KMSAN: uninit-value in neigh_master_filtered net/core/neighbour.c:2292 [inline]
    BUG: KMSAN: uninit-value in neigh_dump_table net/core/neighbour.c:2348 [inline]
    BUG: KMSAN: uninit-value in neigh_dump_info+0x1af0/0x2250 net/core/neighbour.c:2438
    CPU: 1 PID: 3575 Comm: syzkaller268891 Not tainted 4.16.0+ #83
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
     neigh_master_filtered net/core/neighbour.c:2292 [inline]
     neigh_dump_table net/core/neighbour.c:2348 [inline]
     neigh_dump_info+0x1af0/0x2250 net/core/neighbour.c:2438
     netlink_dump+0x9ad/0x1540 net/netlink/af_netlink.c:2225
     __netlink_dump_start+0x1167/0x12a0 net/netlink/af_netlink.c:2322
     netlink_dump_start include/linux/netlink.h:214 [inline]
     rtnetlink_rcv_msg+0x1435/0x1560 net/core/rtnetlink.c:4598
     netlink_rcv_skb+0x355/0x5f0 net/netlink/af_netlink.c:2447
     rtnetlink_rcv+0x50/0x60 net/core/rtnetlink.c:4653
     netlink_unicast_kernel net/netlink/af_netlink.c:1311 [inline]
     netlink_unicast+0x1672/0x1750 net/netlink/af_netlink.c:1337
     netlink_sendmsg+0x1048/0x1310 net/netlink/af_netlink.c:1900
     sock_sendmsg_nosec net/socket.c:630 [inline]
     sock_sendmsg net/socket.c:640 [inline]
     ___sys_sendmsg+0xec0/0x1310 net/socket.c:2046
     __sys_sendmsg net/socket.c:2080 [inline]
     SYSC_sendmsg+0x2a3/0x3d0 net/socket.c:2091
     SyS_sendmsg+0x54/0x80 net/socket.c:2087
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x43fed9
    RSP: 002b:00007ffddbee2798 EFLAGS: 00000213 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 000000000043fed9
    RDX: 0000000000000000 RSI: 0000000020005000 RDI: 0000000000000003
    RBP: 00000000006ca018 R08: 00000000004002c8 R09: 00000000004002c8
    R10: 00000000004002c8 R11: 0000000000000213 R12: 0000000000401800
    R13: 0000000000401890 R14: 0000000000000000 R15: 0000000000000000
    
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:278 [inline]
     kmsan_internal_poison_shadow+0xb8/0x1b0 mm/kmsan/kmsan.c:188
     kmsan_kmalloc+0x94/0x100 mm/kmsan/kmsan.c:314
     kmsan_slab_alloc+0x11/0x20 mm/kmsan/kmsan.c:321
     slab_post_alloc_hook mm/slab.h:445 [inline]
     slab_alloc_node mm/slub.c:2737 [inline]
     __kmalloc_node_track_caller+0xaed/0x11c0 mm/slub.c:4369
     __kmalloc_reserve net/core/skbuff.c:138 [inline]
     __alloc_skb+0x2cf/0x9f0 net/core/skbuff.c:206
     alloc_skb include/linux/skbuff.h:984 [inline]
     netlink_alloc_large_skb net/netlink/af_netlink.c:1183 [inline]
     netlink_sendmsg+0x9a6/0x1310 net/netlink/af_netlink.c:1875
     sock_sendmsg_nosec net/socket.c:630 [inline]
     sock_sendmsg net/socket.c:640 [inline]
     ___sys_sendmsg+0xec0/0x1310 net/socket.c:2046
     __sys_sendmsg net/socket.c:2080 [inline]
     SYSC_sendmsg+0x2a3/0x3d0 net/socket.c:2091
     SyS_sendmsg+0x54/0x80 net/socket.c:2087
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Fixes: 21fdd092acc7 ("net: Add support for filtering neigh dump by master device")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: David Ahern <dsa@cumulusnetworks.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Acked-by: David Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dbf57fd1e05efc0d37503af5f08a532aff2c9823
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Mon Apr 23 16:15:14 2018 +0200

    l2tp: check sockaddr length in pppol2tp_connect()
    
    
    [ Upstream commit eb1c28c05894a4b1f6b56c5bf072205e64cfa280 ]
    
    Check sockaddr_len before dereferencing sp->sa_protocol, to ensure that
    it actually points to valid data.
    
    Fixes: fd558d186df2 ("l2tp: Split pppol2tp patch into separate l2tp and ppp parts")
    Reported-by: syzbot+a70ac890b23b1bf29f5c@syzkaller.appspotmail.com
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7a936b1dd0f75727b776479f739236a05317f7b
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Apr 17 12:07:06 2018 -0700

    KEYS: DNS: limit the length of option strings
    
    
    [ Upstream commit 9c438d7a3a52dcc2b9ed095cb87d3a5e83cf7e60 ]
    
    Adding a dns_resolver key whose payload contains a very long option name
    resulted in that string being printed in full.  This hit the WARN_ONCE()
    in set_precision() during the printk(), because printk() only supports a
    precision of up to 32767 bytes:
    
        precision 1000000 too large
        WARNING: CPU: 0 PID: 752 at lib/vsprintf.c:2189 vsnprintf+0x4bc/0x5b0
    
    Fix it by limiting option strings (combined name + value) to a much more
    reasonable 128 bytes.  The exact limit is arbitrary, but currently the
    only recognized option is formatted as "dnserror=%lu" which fits well
    within this limit.
    
    Also ratelimit the printks.
    
    Reproducer:
    
        perl -e 'print "#", "A" x 1000000, "\x00"' | keyctl padd dns_resolver desc @s
    
    This bug was found using syzkaller.
    
    Reported-by: Mark Rutland <mark.rutland@arm.com>
    Fixes: 4a2d789267e0 ("DNS: If the DNS server returns an error, allow that to be cached [ver #2]")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a370d8a3aaf268896eabaf510e1e8ca4b7ea0a34
Author: Ahmed Abdelsalam <amsalam20@gmail.com>
Date:   Fri Apr 20 15:58:05 2018 +0200

    ipv6: sr: fix NULL pointer dereference in seg6_do_srh_encap()- v4 pkts
    
    
    [ Upstream commit a957fa190aa9d9168b33d460a5241a6d088c6265 ]
    
    In case of seg6 in encap mode, seg6_do_srh_encap() calls set_tun_src()
    in order to set the src addr of outer IPv6 header.
    
    The net_device is required for set_tun_src(). However calling ip6_dst_idev()
    on dst_entry in case of IPv4 traffic results on the following bug.
    
    Using just dst->dev should fix this BUG.
    
    [  196.242461] BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
    [  196.242975] PGD 800000010f076067 P4D 800000010f076067 PUD 10f060067 PMD 0
    [  196.243329] Oops: 0000 [#1] SMP PTI
    [  196.243468] Modules linked in: nfsd auth_rpcgss nfs_acl nfs lockd grace fscache sunrpc crct10dif_pclmul crc32_pclmul ghash_clmulni_intel pcbc aesni_intel aes_x86_64 crypto_simd cryptd input_leds glue_helper led_class pcspkr serio_raw mac_hid video autofs4 hid_generic usbhid hid e1000 i2c_piix4 ahci pata_acpi libahci
    [  196.244362] CPU: 2 PID: 1089 Comm: ping Not tainted 4.16.0+ #1
    [  196.244606] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    [  196.244968] RIP: 0010:seg6_do_srh_encap+0x1ac/0x300
    [  196.245236] RSP: 0018:ffffb2ce00b23a60 EFLAGS: 00010202
    [  196.245464] RAX: 0000000000000000 RBX: ffff8c7f53eea300 RCX: 0000000000000000
    [  196.245742] RDX: 0000f10000000000 RSI: ffff8c7f52085a6c RDI: ffff8c7f41166850
    [  196.246018] RBP: ffffb2ce00b23aa8 R08: 00000000000261e0 R09: ffff8c7f41166800
    [  196.246294] R10: ffffdce5040ac780 R11: ffff8c7f41166828 R12: ffff8c7f41166808
    [  196.246570] R13: ffff8c7f52085a44 R14: ffffffffb73211c0 R15: ffff8c7e69e44200
    [  196.246846] FS:  00007fc448789700(0000) GS:ffff8c7f59d00000(0000) knlGS:0000000000000000
    [  196.247286] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  196.247526] CR2: 0000000000000000 CR3: 000000010f05a000 CR4: 00000000000406e0
    [  196.247804] Call Trace:
    [  196.247972]  seg6_do_srh+0x15b/0x1c0
    [  196.248156]  seg6_output+0x3c/0x220
    [  196.248341]  ? prandom_u32+0x14/0x20
    [  196.248526]  ? ip_idents_reserve+0x6c/0x80
    [  196.248723]  ? __ip_select_ident+0x90/0x100
    [  196.248923]  ? ip_append_data.part.50+0x6c/0xd0
    [  196.249133]  lwtunnel_output+0x44/0x70
    [  196.249328]  ip_send_skb+0x15/0x40
    [  196.249515]  raw_sendmsg+0x8c3/0xac0
    [  196.249701]  ? _copy_from_user+0x2e/0x60
    [  196.249897]  ? rw_copy_check_uvector+0x53/0x110
    [  196.250106]  ? _copy_from_user+0x2e/0x60
    [  196.250299]  ? copy_msghdr_from_user+0xce/0x140
    [  196.250508]  sock_sendmsg+0x36/0x40
    [  196.250690]  ___sys_sendmsg+0x292/0x2a0
    [  196.250881]  ? _cond_resched+0x15/0x30
    [  196.251074]  ? copy_termios+0x1e/0x70
    [  196.251261]  ? _copy_to_user+0x22/0x30
    [  196.251575]  ? tty_mode_ioctl+0x1c3/0x4e0
    [  196.251782]  ? _cond_resched+0x15/0x30
    [  196.251972]  ? mutex_lock+0xe/0x30
    [  196.252152]  ? vvar_fault+0xd2/0x110
    [  196.252337]  ? __do_fault+0x1f/0xc0
    [  196.252521]  ? __handle_mm_fault+0xc1f/0x12d0
    [  196.252727]  ? __sys_sendmsg+0x63/0xa0
    [  196.252919]  __sys_sendmsg+0x63/0xa0
    [  196.253107]  do_syscall_64+0x72/0x200
    [  196.253305]  entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    [  196.253530] RIP: 0033:0x7fc4480b0690
    [  196.253715] RSP: 002b:00007ffde9f252f8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    [  196.254053] RAX: ffffffffffffffda RBX: 0000000000000040 RCX: 00007fc4480b0690
    [  196.254331] RDX: 0000000000000000 RSI: 000000000060a360 RDI: 0000000000000003
    [  196.254608] RBP: 00007ffde9f253f0 R08: 00000000002d1e81 R09: 0000000000000002
    [  196.254884] R10: 00007ffde9f250c0 R11: 0000000000000246 R12: 0000000000b22070
    [  196.255205] R13: 20c49ba5e353f7cf R14: 431bde82d7b634db R15: 00007ffde9f278fe
    [  196.255484] Code: a5 0f b6 45 c0 41 88 41 28 41 0f b6 41 2c 48 c1 e0 04 49 8b 54 01 38 49 8b 44 01 30 49 89 51 20 49 89 41 18 48 8b 83 b0 00 00 00 <48> 8b 30 49 8b 86 08 0b 00 00 48 8b 40 20 48 8b 50 08 48 0b 10
    [  196.256190] RIP: seg6_do_srh_encap+0x1ac/0x300 RSP: ffffb2ce00b23a60
    [  196.256445] CR2: 0000000000000000
    [  196.256676] ---[ end trace 71af7d093603885c ]---
    
    Fixes: 8936ef7604c11 ("ipv6: sr: fix NULL pointer dereference when setting encap source address")
    Signed-off-by: Ahmed Abdelsalam <amsalam20@gmail.com>
    Acked-by: David Lebrun <dlebrun@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d34c67734593fc6b10b92905381c365de2c9ff6
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Apr 22 18:29:23 2018 -0700

    ipv6: add RTA_TABLE and RTA_PREFSRC to rtm_ipv6_policy
    
    
    [ Upstream commit aa8f8778493c85fff480cdf8b349b1e1dcb5f243 ]
    
    KMSAN reported use of uninit-value that I tracked to lack
    of proper size check on RTA_TABLE attribute.
    
    I also believe RTA_PREFSRC lacks a similar check.
    
    Fixes: 86872cb57925 ("[IPv6] route: FIB6 configuration using struct fib6_config")
    Fixes: c3968a857a6b ("ipv6: RTA_PREFSRC support for ipv6 route source address selection")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e0286ea0846c7fb6ebae03f305f6895f7e64b836
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sun Apr 22 19:11:50 2018 +0800

    bonding: do not set slave_dev npinfo before slave_enable_netpoll in bond_enslave
    
    
    [ Upstream commit ddea788c63094f7c483783265563dd5b50052e28 ]
    
    After Commit 8a8efa22f51b ("bonding: sync netpoll code with bridge"), it
    would set slave_dev npinfo in slave_enable_netpoll when enslaving a dev
    if bond->dev->npinfo was set.
    
    However now slave_dev npinfo is set with bond->dev->npinfo before calling
    slave_enable_netpoll. With slave_dev npinfo set, __netpoll_setup called
    in slave_enable_netpoll will not call slave dev's .ndo_netpoll_setup().
    It causes that the lower dev of this slave dev can't set its npinfo.
    
    One way to reproduce it:
    
      # modprobe bonding
      # brctl addbr br0
      # brctl addif br0 eth1
      # ifconfig bond0 192.168.122.1/24 up
      # ifenslave bond0 eth2
      # systemctl restart netconsole
      # ifenslave bond0 br0
      # ifconfig eth2 down
      # systemctl restart netconsole
    
    The netpoll won't really work.
    
    This patch is to remove that slave_dev npinfo setting in bond_enslave().
    
    Fixes: 8a8efa22f51b ("bonding: sync netpoll code with bridge")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f50186dd8106ee83e767225278ebafe8484b4a1
Author: Karthikeyan Periyasamy <periyasa@codeaurora.org>
Date:   Tue Mar 27 11:25:29 2018 +0300

    Revert "ath10k: send (re)assoc peer command when NSS changed"
    
    commit 55cc11da69895a680940c1733caabc37be685f5e upstream.
    
    This reverts commit 55884c045d31a29cf69db8332d1064a1b61dd159.
    
    When Ath10k is in AP mode and an unassociated STA sends a VHT action frame
    (Operating Mode Notification for the NSS change) periodically to AP this causes
    ath10k to call ath10k_station_assoc() which sends WMI_PEER_ASSOC_CMDID during
    NSS update. Over the time (with a certain client it can happen within 15 mins
    when there are over 500 of these VHT action frames) continuous calls of
    WMI_PEER_ASSOC_CMDID cause firmware to assert due to resource exhaust.
    
    To my knowledge setting WMI_PEER_NSS peer param itself enough to handle NSS
    updates and no need to call ath10k_station_assoc(). So revert the original
    commit from 2014 as it's unclear why the change was really needed.
    Now the firmware assert doesn't happen anymore.
    
    Issue observed in QCA9984 platform with firmware version:10.4-3.5.3-00053.
    This Change tested in QCA9984 with firmware version: 10.4-3.5.3-00053 and
    QCA988x platform with firmware version: 10.2.4-1.0-00036.
    
    Firmware Assert log:
    
    ath10k_pci 0002:01:00.0: firmware crashed! (guid e61f1274-9acd-4c5b-bcca-e032ea6e723c)
    ath10k_pci 0002:01:00.0: qca9984/qca9994 hw1.0 target 0x01000000 chip_id 0x00000000 sub 168c:cafe
    ath10k_pci 0002:01:00.0: kconfig debug 1 debugfs 1 tracing 0 dfs 1 testmode 1
    ath10k_pci 0002:01:00.0: firmware ver 10.4-3.5.3-00053 api 5 features no-p2p,mfp,peer-flow-ctrl,btcoex-param,allows-mesh-bcast crc32 4c56a386
    ath10k_pci 0002:01:00.0: board_file api 2 bmi_id 0:4 crc32 c2271344
    ath10k_pci 0002:01:00.0: htt-ver 2.2 wmi-op 6 htt-op 4 cal otp max-sta 512 raw 0 hwcrypto 1
    ath10k_pci 0002:01:00.0: firmware register dump:
    ath10k_pci 0002:01:00.0: [00]: 0x0000000A 0x000015B3 0x00981E5F 0x00975B31
    ath10k_pci 0002:01:00.0: [04]: 0x00981E5F 0x00060530 0x00000011 0x00446C60
    ath10k_pci 0002:01:00.0: [08]: 0x0042F1FC 0x00458080 0x00000017 0x00000000
    ath10k_pci 0002:01:00.0: [12]: 0x00000009 0x00000000 0x00973ABC 0x00973AD2
    ath10k_pci 0002:01:00.0: [16]: 0x00973AB0 0x00960E62 0x009606CA 0x00000000
    ath10k_pci 0002:01:00.0: [20]: 0x40981E5F 0x004066DC 0x00400000 0x00981E34
    ath10k_pci 0002:01:00.0: [24]: 0x80983B48 0x0040673C 0x000000C0 0xC0981E5F
    ath10k_pci 0002:01:00.0: [28]: 0x80993DEB 0x0040676C 0x00431AB8 0x0045D0C4
    ath10k_pci 0002:01:00.0: [32]: 0x80993E5C 0x004067AC 0x004303C0 0x0045D0C4
    ath10k_pci 0002:01:00.0: [36]: 0x80994AAB 0x004067DC 0x00000000 0x0045D0C4
    ath10k_pci 0002:01:00.0: [40]: 0x809971A0 0x0040681C 0x004303C0 0x00441B00
    ath10k_pci 0002:01:00.0: [44]: 0x80991904 0x0040688C 0x004303C0 0x0045D0C4
    ath10k_pci 0002:01:00.0: [48]: 0x80963AD3 0x00406A7C 0x004303C0 0x009918FC
    ath10k_pci 0002:01:00.0: [52]: 0x80960E80 0x00406A9C 0x0000001F 0x00400000
    ath10k_pci 0002:01:00.0: [56]: 0x80960E51 0x00406ACC 0x00400000 0x00000000
    ath10k_pci 0002:01:00.0: Copy Engine register dump:
    ath10k_pci 0002:01:00.0: index: addr: sr_wr_idx: sr_r_idx: dst_wr_idx: dst_r_idx:
    ath10k_pci 0002:01:00.0: [00]: 0x0004a000 15 15 3 3
    ath10k_pci 0002:01:00.0: [01]: 0x0004a400 17 17 212 213
    ath10k_pci 0002:01:00.0: [02]: 0x0004a800 21 21 20 21
    ath10k_pci 0002:01:00.0: [03]: 0x0004ac00 25 25 27 25
    ath10k_pci 0002:01:00.0: [04]: 0x0004b000 515 515 144 104
    ath10k_pci 0002:01:00.0: [05]: 0x0004b400 28 28 155 156
    ath10k_pci 0002:01:00.0: [06]: 0x0004b800 12 12 12 12
    ath10k_pci 0002:01:00.0: [07]: 0x0004bc00 1 1 1 1
    ath10k_pci 0002:01:00.0: [08]: 0x0004c000 0 0 127 0
    ath10k_pci 0002:01:00.0: [09]: 0x0004c400 1 1 1 1
    ath10k_pci 0002:01:00.0: [10]: 0x0004c800 0 0 0 0
    ath10k_pci 0002:01:00.0: [11]: 0x0004cc00 0 0 0 0
    ath10k_pci 0002:01:00.0: CE[1] write_index 212 sw_index 213 hw_index 0 nentries_mask 0x000001ff
    ath10k_pci 0002:01:00.0: CE[2] write_index 20 sw_index 21 hw_index 0 nentries_mask 0x0000007f
    ath10k_pci 0002:01:00.0: CE[5] write_index 155 sw_index 156 hw_index 0 nentries_mask 0x000001ff
    ath10k_pci 0002:01:00.0: DMA addr: nbytes: meta data: byte swap: gather:
    ath10k_pci 0002:01:00.0: [455]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [456]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [457]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [458]: 0x594a0038 0 0 0 1
    ath10k_pci 0002:01:00.0: [459]: 0x580c0a42 0 0 0 0
    ath10k_pci 0002:01:00.0: [460]: 0x594a0060 0 0 0 1
    ath10k_pci 0002:01:00.0: [461]: 0x580c0c42 0 0 0 0
    ath10k_pci 0002:01:00.0: [462]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [463]: 0x580c0c42 0 0 0 0
    ath10k_pci 0002:01:00.0: [464]: 0x594a0038 0 0 0 1
    ath10k_pci 0002:01:00.0: [465]: 0x580c0a42 0 0 0 0
    ath10k_pci 0002:01:00.0: [466]: 0x594a0060 0 0 0 1
    ath10k_pci 0002:01:00.0: [467]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [468]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [469]: 0x580c1c42 0 0 0 0
    ath10k_pci 0002:01:00.0: [470]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [471]: 0x580c1c42 0 0 0 0
    ath10k_pci 0002:01:00.0: [472]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [473]: 0x580c1c42 0 0 0 0
    ath10k_pci 0002:01:00.0: [474]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [475]: 0x580c0642 0 0 0 0
    ath10k_pci 0002:01:00.0: [476]: 0x594a0038 0 0 0 1
    ath10k_pci 0002:01:00.0: [477]: 0x580c0842 0 0 0 0
    ath10k_pci 0002:01:00.0: [478]: 0x594a0060 0 0 0 1
    ath10k_pci 0002:01:00.0: [479]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [480]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [481]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [482]: 0x594a0038 0 0 0 1
    ath10k_pci 0002:01:00.0: [483]: 0x580c0842 0 0 0 0
    ath10k_pci 0002:01:00.0: [484]: 0x594a0060 0 0 0 1
    ath10k_pci 0002:01:00.0: [485]: 0x580c0642 0 0 0 0
    ath10k_pci 0002:01:00.0: [486]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [487]: 0x580c0642 0 0 0 0
    ath10k_pci 0002:01:00.0: [488]: 0x594a0038 0 0 0 1
    ath10k_pci 0002:01:00.0: [489]: 0x580c0842 0 0 0 0
    ath10k_pci 0002:01:00.0: [490]: 0x594a0060 0 0 0 1
    ath10k_pci 0002:01:00.0: [491]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [492]: 0x58174040 0 1 0 0
    ath10k_pci 0002:01:00.0: [493]: 0x5a946040 0 1 0 0
    ath10k_pci 0002:01:00.0: [494]: 0x59909040 0 1 0 0
    ath10k_pci 0002:01:00.0: [495]: 0x5ae5a040 0 1 0 0
    ath10k_pci 0002:01:00.0: [496]: 0x58096040 0 1 0 0
    ath10k_pci 0002:01:00.0: [497]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [498]: 0x580c0642 0 0 0 0
    ath10k_pci 0002:01:00.0: [499]: 0x5c1e0040 0 1 0 0
    ath10k_pci 0002:01:00.0: [500]: 0x58153040 0 1 0 0
    ath10k_pci 0002:01:00.0: [501]: 0x58129040 0 1 0 0
    ath10k_pci 0002:01:00.0: [502]: 0x5952f040 0 1 0 0
    ath10k_pci 0002:01:00.0: [503]: 0x59535040 0 1 0 0
    ath10k_pci 0002:01:00.0: [504]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [505]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [506]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [507]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [508]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [509]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [510]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [511]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [512]: 0x5adcc040 0 1 0 0
    ath10k_pci 0002:01:00.0: [513]: 0x5cf3d040 0 1 0 0
    ath10k_pci 0002:01:00.0: [514]: 0x5c1e9040 64 1 0 0
    ath10k_pci 0002:01:00.0: [515]: 0x00000000 0 0 0 0
    
    Signed-off-by: Karthikeyan Periyasamy <periyasa@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Cc: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 781eeb7af2bdd4e7d0450f7b7cd5c39a04c7a841
Author: James Bottomley <James.Bottomley@HansenPartnership.com>
Date:   Wed Mar 21 11:43:48 2018 -0700

    tpm: add retry logic
    
    commit e2fb992d82c626c43ed0566e07c410e56a087af3 upstream.
    
    TPM2 can return TPM2_RC_RETRY to any command and when it does we get
    unexpected failures inside the kernel that surprise users (this is
    mostly observed in the trusted key handling code).  The UEFI 2.6 spec
    has advice on how to handle this:
    
        The firmware SHALL not return TPM2_RC_RETRY prior to the completion
        of the call to ExitBootServices().
    
        Implementer’s Note: the implementation of this function should check
        the return value in the TPM response and, if it is TPM2_RC_RETRY,
        resend the command. The implementation may abort if a sufficient
        number of retries has been done.
    
    So we follow that advice in our tpm_transmit() code using
    TPM2_DURATION_SHORT as the initial wait duration and
    TPM2_DURATION_LONG as the maximum wait time.  This should fix all the
    in-kernel use cases and also means that user space TSS implementations
    don't have to have their own retry handling.
    
    Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Tested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6891ec29c597405c0223ac20bdaf64f65acba3a
Author: Winkler, Tomas <tomas.winkler@intel.com>
Date:   Mon Mar 5 14:48:25 2018 +0200

    tpm: tpm-interface: fix tpm_transmit/_cmd kdoc
    
    commit 65520d46a4adbf7f23bbb6d9b1773513f7bc7821 upstream.
    
    Fix tmp_ -> tpm_ typo and add reference to 'space' parameter
    in kdoc for tpm_transmit and tpm_transmit_cmd functions.
    
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac5881b7814d53d9834b25f3845d6f18a0f027ba
Author: Tomas Winkler <tomas.winkler@intel.com>
Date:   Mon Mar 5 13:34:49 2018 +0200

    tpm: cmd_ready command can be issued only after granting locality
    
    commit 888d867df4417deffc33927e6fc2c6925736fe92 upstream.
    
    The correct sequence is to first request locality and only after
    that perform cmd_ready handshake, otherwise the hardware will drop
    the subsequent message as from the device point of view the cmd_ready
    handshake wasn't performed. Symmetrically locality has to be relinquished
    only after going idle handshake has completed, this requires that
    go_idle has to poll for the completion and as well locality
    relinquish has to poll for completion so it is not overridden
    in back to back commands flow.
    
    Two wrapper functions are added (request_locality relinquish_locality)
    to simplify the error handling.
    
    The issue is only visible on devices that support multiple localities.
    
    Fixes: 877c57d0d0ca ("tpm_crb: request and relinquish locality 0")
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkine@linux.intel.com>
    Tested-by: Jarkko Sakkinen <jarkko.sakkine@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkine@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b38734ed9fe7e12fa71aa9a99e31e92a7d74f53
Author: Paweł Jabłoński <pawel.jablonski@intel.com>
Date:   Thu Mar 8 14:52:05 2018 -0800

    i40e: Fix attach VF to VM issue
    
    commit 028daf80117376b22909becd9720daaefdfceff4 upstream.
    
    Fix for "Resource temporarily unavailable" problem when virsh is
    trying to attach a device to VM. When the VF driver is loaded on
    host and virsh is trying to attach it to the VM and set a MAC
    address, it ends with a race condition between i40e_reset_vf and
    i40e_ndo_set_vf_mac functions. The bug is fixed by adding polling
    in i40e_ndo_set_vf_mac function For when the VF is in Reset mode.
    
    Signed-off-by: Paweł Jabłoński <pawel.jablonski@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Cc: Sinan Kaya <okaya@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00c54b3544112fa2e19a6c19fb1fa9cc4802b0d4
Author: Neil Armstrong <narmstrong@baylibre.com>
Date:   Fri Feb 23 12:44:37 2018 +0100

    drm: bridge: dw-hdmi: Fix overflow workaround for Amlogic Meson GX SoCs
    
    commit 9c305eb442f3b371fc722ade827bbf673514123e upstream.
    
    The Amlogic Meson GX SoCs, embedded the v2.01a controller, has been also
    identified needing this workaround.
    This patch adds the corresponding version to enable a single iteration for
    this specific version.
    
    Fixes: be41fc55f1aa ("drm: bridge: dw-hdmi: Handle overflow workaround based on device version")
    Acked-by: Archit Taneja <architt@codeaurora.org>
    [narmstrong: s/identifies/identified and rebased against Jernej's change]
    Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/1519386277-25902-1-git-send-email-narmstrong@baylibre.com
    [narmstrong: v4.14 to v4.16 backport]
    Cc: <stable@vger.kernel.org> # 4.14.x
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94c0308279ec7d550a675140e73262cf0732b70a
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Apr 26 17:28:00 2018 +0200

    Revert "pinctrl: intel: Initialize GPIO properly when used through irqchip"
    
    This reverts commit f5a26acf0162477af6ee4c11b4fb9cffe5d3e257
    
    Mike writes:
            It seems that commit f5a26acf0162 ("pinctrl: intel: Initialize GPIO
            properly when used through irqchip") can cause problems on some Skylake
            systems with Sunrisepoint PCH-H. Namely on certain systems it may turn
            the backlight PWM pin from native mode to GPIO which makes the screen
            blank during boot.
    
            There is more information here:
    
              https://bugzilla.redhat.com/show_bug.cgi?id=1543769
    
            The actual reason is that GPIO numbering used in BIOS is using "Windows"
            numbers meaning that they don't match the hardware 1:1 and because of
            this a wrong pin (backlight PWM) is picked and switched to GPIO mode.
    
            There is a proper fix for this but since it has quite many dependencies
            on commits that cannot be considered stable material, I suggest we
            revert commit f5a26acf0162 from stable trees 4.9, 4.14 and 4.15 to
            prevent the backlight issue.
    
    Reported-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Fixes: f5a26acf0162 ("pinctrl: intel: Initialize GPIO properly when used through irqchip")
    Cc: Daniel Drake <drake@endlessm.com>
    Cc: Chris Chiu <chiu@endlessm.com>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>