commit 2757e11be64bcfcba65ff885e08a5b6067a8e394
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Nov 27 16:08:03 2018 +0100

    Linux 4.4.165

commit d57a6bb22085ed9bebe300497da8cae1dcb4f266
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon May 14 11:57:23 2018 +0300

    xhci: Fix USB3 NULL pointer dereference at logical disconnect.
    
    commit 2278446e2b7cd33ad894b32e7eb63afc7db6c86e upstream.
    
    Hub driver will try to disable a USB3 device twice at logical disconnect,
    racing with xhci_free_dev() callback from the first port disable.
    
    This can be triggered with "udisksctl power-off --block-device <disk>"
    or by writing "1" to the "remove" sysfs file for a USB3 device
    in 4.17-rc4.
    
    USB3 devices don't have a similar disabled link state as USB2 devices,
    and use a U3 suspended link state instead. In this state the port
    is still enabled and connected.
    
    hub_port_connect() first disconnects the device, then later it notices
    that device is still enabled (due to U3 states) it will try to disable
    the port again (set to U3).
    
    The xhci_free_dev() called during device disable is async, so checking
    for existing xhci->devs[i] when setting link state to U3 the second time
    was successful, even if device was being freed.
    
    The regression was caused by, and whole thing revealed by,
    Commit 44a182b9d177 ("xhci: Fix use-after-free in xhci_free_virt_device")
    which sets xhci->devs[i]->udev to NULL before xhci_virt_dev() returned.
    and causes a NULL pointer dereference the second time we try to set U3.
    
    Fix this by checking xhci->devs[i]->udev exists before setting link state.
    
    The original patch went to stable so this fix needs to be applied there as
    well.
    
    Fixes: 44a182b9d177 ("xhci: Fix use-after-free in xhci_free_virt_device")
    Cc: <stable@vger.kernel.org>
    Reported-by: Jordan Glover <Golden_Miller83@protonmail.ch>
    Tested-by: Jordan Glover <Golden_Miller83@protonmail.ch>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 645cb3965b1d3f841c5318af0807588de4ae9c13
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Nov 14 13:55:09 2018 -0800

    HID: uhid: forbid UHID_CREATE under KERNEL_DS or elevated privileges
    
    commit 8c01db7619f07c85c5cd81ec5eb83608b56c88f5 upstream.
    
    When a UHID_CREATE command is written to the uhid char device, a
    copy_from_user() is done from a user pointer embedded in the command.
    When the address limit is KERNEL_DS, e.g. as is the case during
    sys_sendfile(), this can read from kernel memory.  Alternatively,
    information can be leaked from a setuid binary that is tricked to write
    to the file descriptor.  Therefore, forbid UHID_CREATE in these cases.
    
    No other commands in uhid_char_write() are affected by this bug and
    UHID_CREATE is marked as "obsolete", so apply the restriction to
    UHID_CREATE only rather than to uhid_char_write() entirely.
    
    Thanks to Dmitry Vyukov for adding uhid definitions to syzkaller and to
    Jann Horn for commit 9da3f2b740544 ("x86/fault: BUG() when uaccess
    helpers fault on kernel addresses"), allowing this bug to be found.
    
    Reported-by: syzbot+72473edc9bf4eb1c6556@syzkaller.appspotmail.com
    Fixes: d365c6cfd337 ("HID: uhid: add UHID_CREATE and UHID_DESTROY events")
    Cc: <stable@vger.kernel.org> # v3.6+
    Cc: Jann Horn <jannh@google.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Reviewed-by: Jann Horn <jannh@google.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 342bd595ed72437f76df9177b66a90e40d5119fd
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Mon Mar 20 21:08:07 2017 -0400

    new helper: uaccess_kernel()
    
    commit db68ce10c4f0a27c1ff9fa0e789e5c41f8c4ea63 upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [only take the include/linux/uaccess.h portion - gregkh]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f0052a880242f9bc769b4fe676c1693fc36094e
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Nov 19 19:06:01 2018 +0100

    ACPI / platform: Add SMB0001 HID to forbidden_id_list
    
    commit 2bbb5fa37475d7aa5fa62f34db1623f3da2dfdfa upstream.
    
    Many HP AMD based laptops contain an SMB0001 device like this:
    
    Device (SMBD)
    {
        Name (_HID, "SMB0001")  // _HID: Hardware ID
        Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
        {
            IO (Decode16,
                0x0B20,             // Range Minimum
                0x0B20,             // Range Maximum
                0x20,               // Alignment
                0x20,               // Length
                )
            IRQ (Level, ActiveLow, Shared, )
                {7}
        })
    }
    
    The legacy style IRQ resource here causes acpi_dev_get_irqresource() to
    be called with legacy=true and this message to show in dmesg:
    ACPI: IRQ 7 override to edge, high
    
    This causes issues when later on the AMD0030 GPIO device gets enumerated:
    
    Device (GPIO)
    {
        Name (_HID, "AMDI0030")  // _HID: Hardware ID
        Name (_CID, "AMDI0030")  // _CID: Compatible ID
        Name (_UID, Zero)  // _UID: Unique ID
        Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
        {
            Name (RBUF, ResourceTemplate ()
            {
                Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
                {
                    0x00000007,
                }
                Memory32Fixed (ReadWrite,
                    0xFED81500,         // Address Base
                    0x00000400,         // Address Length
                    )
            })
            Return (RBUF) /* \_SB_.GPIO._CRS.RBUF */
        }
    }
    
    Now acpi_dev_get_irqresource() gets called with legacy=false, but because
    of the earlier override of the trigger-type acpi_register_gsi() returns
    -EBUSY (because we try to register the same interrupt with a different
    trigger-type) and we end up setting IORESOURCE_DISABLED in the flags.
    
    The setting of IORESOURCE_DISABLED causes platform_get_irq() to call
    acpi_irq_get() which is not implemented on x86 and returns -EINVAL.
    resulting in the following in dmesg:
    
    amd_gpio AMDI0030:00: Failed to get gpio IRQ: -22
    amd_gpio: probe of AMDI0030:00 failed with error -22
    
    The SMB0001 is a "virtual" device in the sense that the only way the OS
    interacts with it is through calling a couple of methods to do SMBus
    transfers. As such it is weird that it has IO and IRQ resources at all,
    because the driver for it is not expected to ever access the hardware
    directly.
    
    The Linux driver for the SMB0001 device directly binds to the acpi_device
    through the acpi_bus, so we do not need to instantiate a platform_device
    for this ACPI device. This commit adds the SMB0001 HID to the
    forbidden_id_list, avoiding the instantiating of a platform_device for it.
    Not instantiating a platform_device means we will no longer call
    acpi_dev_get_irqresource() for the legacy IRQ resource fixing the probe of
    the AMDI0030 device failing.
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1644013
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=198715
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=199523
    Reported-by: Lukas Kahnert <openproggerfreak@gmail.com>
    Tested-by: Marc <suaefar@googlemail.com>
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b61865ef9b88adc09188f736b590e54602410ed3
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Tue Oct 16 12:59:44 2018 +0200

    drivers/misc/sgi-gru: fix Spectre v1 vulnerability
    
    commit fee05f455ceb5c670cbe48e2f9454ebc4a388554 upstream.
    
    req.gid can be indirectly controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    vers/misc/sgi-gru/grukdump.c:200 gru_dump_chiplet_request() warn:
    potential spectre issue 'gru_base' [w]
    
    Fix this by sanitizing req.gid before calling macro GID_TO_GRU, which
    uses it to index gru_base.
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b44cb3b63f1b745d6e8e4e382b0131d9d2b480a
Author: Mattias Jacobsson <2pi@mok.nu>
Date:   Sun Oct 21 11:25:37 2018 +0200

    USB: misc: appledisplay: add 20" Apple Cinema Display
    
    commit f6501f49199097b99e4e263644d88c90d1ec1060 upstream.
    
    Add another Apple Cinema Display to the list of supported displays
    
    Signed-off-by: Mattias Jacobsson <2pi@mok.nu>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 285745ac5a5fd1bf7fbb5a7094299e760eaedb05
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Wed Oct 17 10:09:02 2018 -0700

    misc: atmel-ssc: Fix section annotation on atmel_ssc_get_driver_data
    
    commit 7c97301285b62a41d6bceded7d964085fc8cc50f upstream.
    
    After building the kernel with Clang, the following section mismatch
    warning appears:
    
    WARNING: vmlinux.o(.text+0x3bf19a6): Section mismatch in reference from
    the function ssc_probe() to the function
    .init.text:atmel_ssc_get_driver_data()
    The function ssc_probe() references
    the function __init atmel_ssc_get_driver_data().
    This is often because ssc_probe lacks a __init
    annotation or the annotation of atmel_ssc_get_driver_data is wrong.
    
    Remove __init from atmel_ssc_get_driver_data to get rid of the mismatch.
    
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 095ead16032b8285457dd0cd1619b2b8cfdeba97
Author: Emmanuel Pescosta <emmanuelpescosta099@gmail.com>
Date:   Fri Oct 26 14:48:09 2018 +0200

    usb: quirks: Add delay-init quirk for Corsair K70 LUX RGB
    
    commit a77112577667cbda7c6292c52d909636aef31fd9 upstream.
    
    Following on from this patch: https://lkml.org/lkml/2017/11/3/516,
    Corsair K70 LUX RGB keyboards also require the DELAY_INIT quirk to
    start correctly at boot.
    
    Dmesg output:
    usb 1-6: string descriptor 0 read error: -110
    usb 1-6: New USB device found, idVendor=1b1c, idProduct=1b33
    usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    usb 1-6: can't set config #1, error -110
    
    Signed-off-by: Emmanuel Pescosta <emmanuelpescosta099@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f88d08ecc6aa1ef05f40c5f14079a1cdf10df0c8
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Fri Oct 26 13:33:15 2018 +0800

    USB: quirks: Add no-lpm quirk for Raydium touchscreens
    
    commit deefd24228a172d1b27d4a9adbfd2cdacd60ae64 upstream.
    
    Raydium USB touchscreen fails to set config if LPM is enabled:
    [    2.030658] usb 1-8: New USB device found, idVendor=2386, idProduct=3119
    [    2.030659] usb 1-8: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    [    2.030660] usb 1-8: Product: Raydium Touch System
    [    2.030661] usb 1-8: Manufacturer: Raydium Corporation
    [    7.132209] usb 1-8: can't set config #1, error -110
    
    Same behavior can be observed on 2386:3114.
    
    Raydium claims the touchscreen supports LPM under Windows, so I used
    Microsoft USB Test Tools (MUTT) [1] to check its LPM status. MUTT shows
    that the LPM doesn't work under Windows, either. So let's just disable LPM
    for Raydium touchscreens.
    
    [1] https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/usb-test-tools
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b3bf88ef05887b468698b1c7d2f5b8cdf3b4a9c
Author: Maarten Jacobs <maarten256@outlook.com>
Date:   Mon Nov 19 23:18:49 2018 +0000

    usb: cdc-acm: add entry for Hiro (Conexant) modem
    
    commit 63529eaa6164ef7ab4b907b25ac3648177e5e78f upstream.
    
    The cdc-acm kernel module currently does not support the Hiro (Conexant)
    H05228 USB modem. The patch below adds the device specific information:
            idVendor        0x0572
            idProduct       0x1349
    
    Signed-off-by: Maarten Jacobs <maarten256@outlook.com>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1582f07e886d94a2d214b4978de740205f469cdd
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Oct 26 10:19:51 2018 +0300

    uio: Fix an Oops on load
    
    commit 432798195bbce1f8cd33d1c0284d0538835e25fb upstream.
    
    I was trying to solve a double free but I introduced a more serious
    NULL dereference bug.  The problem is that if there is an IRQ which
    triggers immediately, then we need "info->uio_dev" but it's not set yet.
    
    This patch puts the original initialization back to how it was and just
    sets info->uio_dev to NULL on the error path so it should solve both
    the Oops and the double free.
    
    Fixes: f019f07ecf6a ("uio: potential double frees if __uio_register_device() fails")
    Reported-by: Mathias Thore <Mathias.Thore@infinera.com>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: stable <stable@vger.kernel.org>
    Tested-by: Mathias Thore <Mathias.Thore@infinera.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bda4fd0e3a238a79ba0750eb356940b68399017
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Mon Nov 5 09:35:44 2018 -0500

    media: v4l: event: Add subscription to list before calling "add" operation
    
    commit 92539d3eda2c090b382699bbb896d4b54e9bdece upstream.
    
    Patch ad608fbcf166 changed how events were subscribed to address an issue
    elsewhere. As a side effect of that change, the "add" callback was called
    before the event subscription was added to the list of subscribed events,
    causing the first event queued by the add callback (and possibly other
    events arriving soon afterwards) to be lost.
    
    Fix this by adding the subscription to the list before calling the "add"
    callback, and clean up afterwards if that fails.
    
    Fixes: ad608fbcf166 ("media: v4l: event: Prevent freeing event subscriptions while accessed")
    
    Reported-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Tested-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
    Reviewed-by: Hans Verkuil <hans.verkuil@cisco.com>
    Tested-by: Hans Verkuil <hans.verkuil@cisco.com>
    Cc: stable@vger.kernel.org (for 4.14 and up)
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    [Sakari Ailus: Backported to v4.9 stable]
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 549a22b81b04c1b347a75b24c4df3c3d44954f6c
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Nov 26 08:22:30 2018 +0100

    Revert "Bluetooth: h5: Fix missing dependency on BT_HCIUART_SERDEV"
    
    This reverts commit 5824d86b50b8c5f9ecd725f2d74381a23ab1c63b which is
    commit 6c3711ec64fd23a9abc8aaf59a9429569a6282df upstream.
    
    You Ling writes that this config option isn't even in 4.4.y yet, so it
    causes a regression.  Revert the patch because of this.
    
    Reported-by: youling 257 <youling257@gmail.com>
    Cc: Johan Hedberg <johan.hedberg@intel.com>
    Cc: Marcel Holtmann <marcel@holtmann.org>
    Cc: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 411a50501f91da8cf82cb7a8f29a3c5487f4c47f
Author: Hans Verkuil <hverkuil@xs4all.nl>
Date:   Thu Nov 22 12:43:54 2018 +0100

    Revert "media: videobuf2-core: don't call memop 'finish' when queueing"
    
    This reverts commit 46431d9c28f6859f8e568ac7db92137f1da31100.
    
    This commit fixes a bug in upstream commit a136f59c0a1f ("vb2: Move
    buffer cache synchronisation to prepare from queue") which isn't
    present in 4.4.
    
    So as a result you get an UNBALANCED message in the kernel log if
    this patch is applied:
    
    vb2:   counters for queue ffffffc0f3687478, buffer 3: UNBALANCED!
    vb2:     buf_init: 1 buf_cleanup: 1 buf_prepare: 805 buf_finish: 805
    vb2:     buf_queue: 806 buf_done: 806
    vb2:     alloc: 0 put: 0 prepare: 806 finish: 805 mmap: 0
    vb2:     get_userptr: 0 put_userptr: 0
    vb2:     attach_dmabuf: 1 detach_dmabuf: 1 map_dmabuf: 805 unmap_dmabuf: 805
    vb2:     get_dmabuf: 0 num_users: 1609 vaddr: 0 cookie: 805
    
    Reverting this patch solves this regression.
    
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 37944cba362d17a3d8ff1180f9fd2047299e9f57
Author: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Date:   Tue Nov 20 11:25:10 2018 +0800

    btrfs: fix pinned underflow after transaction aborted
    
    commit fcd5e74288f7d36991b1f0fb96b8c57079645e38 upstream.
    
    When running generic/475, we may get the following warning in dmesg:
    
    [ 6902.102154] WARNING: CPU: 3 PID: 18013 at fs/btrfs/extent-tree.c:9776 btrfs_free_block_groups+0x2af/0x3b0 [btrfs]
    [ 6902.109160] CPU: 3 PID: 18013 Comm: umount Tainted: G        W  O      4.19.0-rc8+ #8
    [ 6902.110971] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
    [ 6902.112857] RIP: 0010:btrfs_free_block_groups+0x2af/0x3b0 [btrfs]
    [ 6902.118921] RSP: 0018:ffffc9000459bdb0 EFLAGS: 00010286
    [ 6902.120315] RAX: ffff880175050bb0 RBX: ffff8801124a8000 RCX: 0000000000170007
    [ 6902.121969] RDX: 0000000000000002 RSI: 0000000000170007 RDI: ffffffff8125fb74
    [ 6902.123716] RBP: ffff880175055d10 R08: 0000000000000000 R09: 0000000000000000
    [ 6902.125417] R10: 0000000000000000 R11: 0000000000000000 R12: ffff880175055d88
    [ 6902.127129] R13: ffff880175050bb0 R14: 0000000000000000 R15: dead000000000100
    [ 6902.129060] FS:  00007f4507223780(0000) GS:ffff88017ba00000(0000) knlGS:0000000000000000
    [ 6902.130996] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 6902.132558] CR2: 00005623599cac78 CR3: 000000014b700001 CR4: 00000000003606e0
    [ 6902.134270] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 6902.135981] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 6902.137836] Call Trace:
    [ 6902.138939]  close_ctree+0x171/0x330 [btrfs]
    [ 6902.140181]  ? kthread_stop+0x146/0x1f0
    [ 6902.141277]  generic_shutdown_super+0x6c/0x100
    [ 6902.142517]  kill_anon_super+0x14/0x30
    [ 6902.143554]  btrfs_kill_super+0x13/0x100 [btrfs]
    [ 6902.144790]  deactivate_locked_super+0x2f/0x70
    [ 6902.146014]  cleanup_mnt+0x3b/0x70
    [ 6902.147020]  task_work_run+0x9e/0xd0
    [ 6902.148036]  do_syscall_64+0x470/0x600
    [ 6902.149142]  ? trace_hardirqs_off_thunk+0x1a/0x1c
    [ 6902.150375]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
    [ 6902.151640] RIP: 0033:0x7f45077a6a7b
    [ 6902.157324] RSP: 002b:00007ffd589f3e68 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
    [ 6902.159187] RAX: 0000000000000000 RBX: 000055e8eec732b0 RCX: 00007f45077a6a7b
    [ 6902.160834] RDX: 0000000000000001 RSI: 0000000000000000 RDI: 000055e8eec73490
    [ 6902.162526] RBP: 0000000000000000 R08: 000055e8eec734b0 R09: 00007ffd589f26c0
    [ 6902.164141] R10: 0000000000000000 R11: 0000000000000246 R12: 000055e8eec73490
    [ 6902.165815] R13: 00007f4507ac61a4 R14: 0000000000000000 R15: 00007ffd589f40d8
    [ 6902.167553] irq event stamp: 0
    [ 6902.168998] hardirqs last  enabled at (0): [<0000000000000000>]           (null)
    [ 6902.170731] hardirqs last disabled at (0): [<ffffffff810cd810>] copy_process.part.55+0x3b0/0x1f00
    [ 6902.172773] softirqs last  enabled at (0): [<ffffffff810cd810>] copy_process.part.55+0x3b0/0x1f00
    [ 6902.174671] softirqs last disabled at (0): [<0000000000000000>]           (null)
    [ 6902.176407] ---[ end trace 463138c2986b275c ]---
    [ 6902.177636] BTRFS info (device dm-3): space_info 4 has 273465344 free, is not full
    [ 6902.179453] BTRFS info (device dm-3): space_info total=276824064, used=4685824, pinned=18446744073708158976, reserved=0, may_use=0, readonly=65536
    
    In the above line there's "pinned=18446744073708158976" which is an
    unsigned u64 value of -1392640, an obvious underflow.
    
    When transaction_kthread is running cleanup_transaction(), another
    fsstress is running btrfs_commit_transaction(). The
    btrfs_finish_extent_commit() may get the same range as
    btrfs_destroy_pinned_extent() got, which causes the pinned underflow.
    
    Fixes: d4b450cd4b33 ("Btrfs: fix race between transaction commit and empty block group removal")
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 00112fda0835dda03eb88ad989d735334af9ecbf
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Mon Nov 19 17:24:36 2018 +0100

    gfs2: Put bitmap buffers in put_super
    
    commit 10283ea525d30f2e99828978fd04d8427876a7ad upstream.
    
    gfs2_put_super calls gfs2_clear_rgrpd to destroy the gfs2_rgrpd objects
    attached to the resource group glocks.  That function should release the
    buffers attached to the gfs2_bitmap objects (bi_bh), but the call to
    gfs2_rgrp_brelse for doing that is missing.
    
    When gfs2_releasepage later runs across these buffers which are still
    referenced, it refuses to free them.  This causes the pages the buffers
    are attached to to remain referenced as well.  With enough mount/unmount
    cycles, the system will eventually run out of memory.
    
    Fix this by adding the missing call to gfs2_rgrp_brelse in
    gfs2_clear_rgrpd.
    
    (Also fix a gfs2_rgrp_relse -> gfs2_rgrp_brelse typo in a comment.)
    
    Fixes: 39b0f1e92908 ("GFS2: Don't brelse rgrp buffer_heads every allocation")
    Cc: stable@vger.kernel.org # v4.4
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a2b02eb4ba522283e6ec5123adf8af9e9f30d6b7
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Thu Nov 8 02:04:57 2018 +0000

    SUNRPC: drop pointless static qualifier in xdr_get_next_encode_buffer()
    
    [ Upstream commit 025911a5f4e36955498ed50806ad1b02f0f76288 ]
    
    There is no need to have the '__be32 *p' variable static since new value
    always be assigned before use it.
    
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4036c69bc415ca99d9fb0822db3b15672341a5df
Author: Minchan Kim <minchan@kernel.org>
Date:   Fri Nov 23 15:30:06 2018 +0900

    zram: close udev startup race condition as default groups
    
    commit fef912bf860e upstream.
    commit 98af4d4df889 upstream.
    
    I got a report from Howard Chen that he saw zram and sysfs race(ie,
    zram block device file is created but sysfs for it isn't yet)
    when he tried to create new zram devices via hotadd knob.
    
    v4.20 kernel fixes it by [1, 2] but it's too large size to merge
    into -stable so this patch fixes the problem by registering defualt
    group by Greg KH's approach[3].
    
    This patch should be applied to every stable tree [3.16+] currently
    existing from kernel.org because the problem was introduced at 2.6.37
    by [4].
    
    [1] fef912bf860e, block: genhd: add 'groups' argument to device_add_disk
    [2] 98af4d4df889, zram: register default groups with device_add_disk()
    [3] http://kroah.com/log/blog/2013/06/26/how-to-create-a-sysfs-file-correctly/
    [4] 33863c21e69e9, Staging: zram: Replace ioctls with sysfs interface
    
    Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Cc: Hannes Reinecke <hare@suse.com>
    Tested-by: Howard Chen <howardsoc@google.com>
    Signed-off-by: Minchan Kim <minchan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 971297d275329c9f1f70fd792670e9fe7ffa4518
Author: Jeremy Linton <jeremy.linton@arm.com>
Date:   Mon Nov 5 18:14:41 2018 -0600

    lib/raid6: Fix arm64 test build
    
    [ Upstream commit 313a06e636808387822af24c507cba92703568b1 ]
    
    The lib/raid6/test fails to build the neon objects
    on arm64 because the correct machine type is 'aarch64'.
    
    Once this is correctly enabled, the neon recovery objects
    need to be added to the build.
    
    Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e255a9e001c2c4b93fbd3c0a755b691cf4dd502f
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Sun Oct 28 18:16:51 2018 +0100

    hwmon: (ibmpowernv) Remove bogus __init annotations
    
    [ Upstream commit e3e61f01d755188cb6c2dcf5a244b9c0937c258e ]
    
    If gcc decides not to inline make_sensor_label():
    
        WARNING: vmlinux.o(.text+0x4df549c): Section mismatch in reference from the function .create_device_attrs() to the function .init.text:.make_sensor_label()
        The function .create_device_attrs() references
        the function __init .make_sensor_label().
        This is often because .create_device_attrs lacks a __init
        annotation or the annotation of .make_sensor_label is wrong.
    
    As .probe() can be called after freeing of __init memory, all __init
    annotiations in the driver are bogus, and should be removed.
    
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1fc4be666b3b2ff5c1224144eac5540f56305875
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Sun Oct 21 00:00:08 2018 +0900

    netfilter: xt_IDLETIMER: add sysfs filename checking routine
    
    [ Upstream commit 54451f60c8fa061af9051a53be9786393947367c ]
    
    When IDLETIMER rule is added, sysfs file is created under
    /sys/class/xt_idletimer/timers/
    But some label name shouldn't be used.
    ".", "..", "power", "uevent", "subsystem", etc...
    So that sysfs filename checking routine is needed.
    
    test commands:
       %iptables -I INPUT -j IDLETIMER --timeout 1 --label "power"
    
    splat looks like:
    [95765.423132] sysfs: cannot create duplicate filename '/devices/virtual/xt_idletimer/timers/power'
    [95765.433418] CPU: 0 PID: 8446 Comm: iptables Not tainted 4.19.0-rc6+ #20
    [95765.449755] Call Trace:
    [95765.449755]  dump_stack+0xc9/0x16b
    [95765.449755]  ? show_regs_print_info+0x5/0x5
    [95765.449755]  sysfs_warn_dup+0x74/0x90
    [95765.449755]  sysfs_add_file_mode_ns+0x352/0x500
    [95765.449755]  sysfs_create_file_ns+0x179/0x270
    [95765.449755]  ? sysfs_add_file_mode_ns+0x500/0x500
    [95765.449755]  ? idletimer_tg_checkentry+0x3e5/0xb1b [xt_IDLETIMER]
    [95765.449755]  ? rcu_read_lock_sched_held+0x114/0x130
    [95765.449755]  ? __kmalloc_track_caller+0x211/0x2b0
    [95765.449755]  ? memcpy+0x34/0x50
    [95765.449755]  idletimer_tg_checkentry+0x4e2/0xb1b [xt_IDLETIMER]
    [ ... ]
    
    Fixes: 0902b469bd25 ("netfilter: xtables: idletimer target implementation")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b8ad1323085f3f12353595b631601a1c1a6df21e
Author: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Date:   Fri Oct 19 19:35:19 2018 +0200

    netfilter: ipset: Correct rcu_dereference() call in ip_set_put_comment()
    
    [ Upstream commit 17b8b74c0f8dbf9b9e3301f9ca5b65dd1c079951 ]
    
    The function is called when rcu_read_lock() is held and not
    when rcu_read_lock_bh() is held.
    
    Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2083f1d6f5ef695c1e9edf3c569a291d91c8838c
Author: Justin M. Forbes <jforbes@fedoraproject.org>
Date:   Wed Oct 31 13:02:03 2018 -0500

    s390/mm: Fix ERROR: "__node_distance" undefined!
    
    [ Upstream commit a541f0ebcc08ed8bc0cc492eec9a86cb280a9f24 ]
    
    Fixes:
    ERROR: "__node_distance" [drivers/nvme/host/nvme-core.ko] undefined!
    make[1]: *** [scripts/Makefile.modpost:92: __modpost] Error 1
    make: *** [Makefile:1275: modules] Error 2
    + exit 1
    
    Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 186642845b02e1a7944ef33c3a3ac41eba77517f
Author: Eric Westbrook <eric@westbrook.io>
Date:   Tue Aug 28 15:14:42 2018 -0600

    netfilter: ipset: actually allow allowable CIDR 0 in hash:net,port,net
    
    [ Upstream commit 886503f34d63e681662057448819edb5b1057a97 ]
    
    Allow /0 as advertised for hash:net,port,net sets.
    
    For "hash:net,port,net", ipset(8) says that "either subnet
    is permitted to be a /0 should you wish to match port
    between all destinations."
    
    Make that statement true.
    
    Before:
    
        # ipset create cidrzero hash:net,port,net
        # ipset add cidrzero 0.0.0.0/0,12345,0.0.0.0/0
        ipset v6.34: The value of the CIDR parameter of the IP address is invalid
    
        # ipset create cidrzero6 hash:net,port,net family inet6
        # ipset add cidrzero6 ::/0,12345,::/0
        ipset v6.34: The value of the CIDR parameter of the IP address is invalid
    
    After:
    
        # ipset create cidrzero hash:net,port,net
        # ipset add cidrzero 0.0.0.0/0,12345,0.0.0.0/0
        # ipset test cidrzero 192.168.205.129,12345,172.16.205.129
        192.168.205.129,tcp:12345,172.16.205.129 is in set cidrzero.
    
        # ipset create cidrzero6 hash:net,port,net family inet6
        # ipset add cidrzero6 ::/0,12345,::/0
        # ipset test cidrzero6 fe80::1,12345,ff00::1
        fe80::1,tcp:12345,ff00::1 is in set cidrzero6.
    
    See also:
    
      https://bugzilla.kernel.org/show_bug.cgi?id=200897
      https://github.com/ewestbrook/linux/commit/df7ff6efb0934ab6acc11f003ff1a7580d6c1d9c
    
    Signed-off-by: Eric Westbrook <linux@westbrook.io>
    Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4a3ce6f94bb7452b0b25e2d44fa527d8de96747d
Author: Vasily Gorbik <gor@linux.ibm.com>
Date:   Fri Oct 19 15:37:01 2018 +0200

    s390/vdso: add missing FORCE to build targets
    
    [ Upstream commit b44b136a3773d8a9c7853f8df716bd1483613cbb ]
    
    According to Documentation/kbuild/makefiles.txt all build targets using
    if_changed should use FORCE as well. Add missing FORCE to make sure
    vdso targets are rebuild properly when not just immediate prerequisites
    have changed but also when build command differs.
    
    Reviewed-by: Philipp Rudo <prudo@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 929721249f61224dffdc5e1e26ff6edbe911c6bb
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Tue Sep 25 12:44:59 2018 -0700

    arm64: percpu: Initialize ret in the default case
    
    [ Upstream commit b5bb425871186303e6936fa2581521bdd1964a58 ]
    
    Clang warns that if the default case is taken, ret will be
    uninitialized.
    
    ./arch/arm64/include/asm/percpu.h:196:2: warning: variable 'ret' is used
    uninitialized whenever switch default is taken
    [-Wsometimes-uninitialized]
            default:
            ^~~~~~~
    ./arch/arm64/include/asm/percpu.h:200:9: note: uninitialized use occurs
    here
            return ret;
                   ^~~
    ./arch/arm64/include/asm/percpu.h:157:19: note: initialize the variable
    'ret' to silence this warning
            unsigned long ret, loop;
                             ^
                              = 0
    
    This warning appears several times while building the erofs filesystem.
    While it's not strictly wrong, the BUILD_BUG will prevent this from
    becoming a true problem. Initialize ret to 0 in the default case right
    before the BUILD_BUG to silence all of these warnings.
    
    Reported-by: Prasad Sodagudi <psodagud@codeaurora.org>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Dennis Zhou <dennis@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 09fbe8ad6a3c1e4e48c211300014930b15f694a9
Author: Paul Gortmaker <paul.gortmaker@windriver.com>
Date:   Thu Sep 20 21:44:19 2018 -0400

    platform/x86: acerhdf: Add BIOS entry for Gateway LT31 v1.3307
    
    [ Upstream commit 684238d79ad85c5e19a71bb5818e77e329912fbc ]
    
    To fix:
    
      acerhdf: unknown (unsupported) BIOS version Gateway  /LT31   /v1.3307 , please report, aborting!
    
    As can be seen in the context, the BIOS registers haven't changed in
    the previous versions, so the assumption is they won't have changed
    in this last update for this somewhat older platform either.
    
    Cc: Peter Feuerer <peter@piie.net>
    Cc: Darren Hart <dvhart@infradead.org>
    Cc: Andy Shevchenko <andy@infradead.org>
    Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Peter Feuerer <peter@piie.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b02ce65168c83cd51bb8010aa0a4dadc3bef48ae
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Mon Sep 24 13:01:20 2018 +0200

    clk: samsung: exynos5420: Enable PERIS clocks for suspend
    
    [ Upstream commit b33228029d842269e17bba591609e83ed422005d ]
    
    Ensure that clocks for core SoC modules (including TZPC0..9 modules)
    are enabled for suspend/resume cycle. This fixes suspend/resume
    support on Exynos5422-based Odroid XU3/XU4 boards.
    
    Suggested-by: Joonyoung Shim <jy0922.shim@samsung.com>
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Sylwester Nawrocki <snawrocki@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b45cb18117893965cbe3191f4f308aa7dd3cd689
Author: Chengguang Xu <cgxu519@gmx.com>
Date:   Wed Jun 13 12:05:13 2018 +0800

    fs/exofs: fix potential memory leak in mount option parsing
    
    [ Upstream commit 515f1867addaba49c1c6ac73abfaffbc192c1db4 ]
    
    There are some cases can cause memory leak when parsing
    option 'osdname'.
    
    Signed-off-by: Chengguang Xu <cgxu519@gmx.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6d4c882c4ca1a6457630f62dfe5700365eddc70c
Author: Richard Weinberger <richard@nod.at>
Date:   Fri Jun 15 16:42:56 2018 +0200

    um: Give start_idle_thread() a return code
    
    [ Upstream commit 7ff1e34bbdc15acab823b1ee4240e94623d50ee8 ]
    
    Fixes:
    arch/um/os-Linux/skas/process.c:613:1: warning: control reaches end of
    non-void function [-Wreturn-type]
    
    longjmp() never returns but gcc still warns that the end of the function
    can be reached.
    Add a return code and debug aid to detect this impossible case.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5f427ca479c33907abceb3e767cf1a76a5f5bffd
Author: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
Date:   Tue Oct 30 15:06:00 2018 -0700

    hfsplus: prevent btree data loss on root split
    
    [ Upstream commit 0a3021d4f5295aa073c7bf5c5e4de60a2e292578 ]
    
    Creating, renaming or deleting a file may cause catalog corruption and
    data loss.  This bug is randomly triggered by xfstests generic/027, but
    here is a faster reproducer:
    
      truncate -s 50M fs.iso
      mkfs.hfsplus fs.iso
      mount fs.iso /mnt
      i=100
      while [ $i -le 150 ]; do
        touch /mnt/$i &>/dev/null
        ((++i))
      done
      i=100
      while [ $i -le 150 ]; do
        mv /mnt/$i /mnt/$(perl -e "print $i x82") &>/dev/null
        ((++i))
      done
      umount /mnt
      fsck.hfsplus -n fs.iso
    
    The bug is triggered whenever hfs_brec_update_parent() needs to split the
    root node.  The height of the btree is not increased, which leaves the new
    node orphaned and its records lost.
    
    Link: http://lkml.kernel.org/r/26d882184fc43043a810114258f45277752186c7.1535682461.git.ernesto.mnd.fernandez@gmail.com
    Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
    Cc: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b4cb4ecd6af40b77b39f8028325f36ceff8292fe
Author: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
Date:   Tue Oct 30 15:06:07 2018 -0700

    hfs: prevent btree data loss on root split
    
    [ Upstream commit d057c036672f33d43a5f7344acbb08cf3a8a0c09 ]
    
    This bug is triggered whenever hfs_brec_update_parent() needs to split
    the root node.  The height of the btree is not increased, which leaves
    the new node orphaned and its records lost.  It is not possible for this
    to happen on a valid hfs filesystem because the index nodes have fixed
    length keys.
    
    For reasons I ignore, the hfs module does have support for a number of
    hfsplus features.  A corrupt btree header may report variable length
    keys and trigger this bug, so it's better to fix it.
    
    Link: http://lkml.kernel.org/r/9750b1415685c4adca10766895f6d5ef12babdb0.1535682463.git.ernesto.mnd.fernandez@gmail.com
    Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
    Cc: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 235fbd9c76b5b96bf4b483b65c42e1c2388b3ae8
Author: Jann Horn <jannh@google.com>
Date:   Tue Oct 30 15:06:38 2018 -0700

    reiserfs: propagate errors from fill_with_dentries() properly
    
    [ Upstream commit b10298d56c9623f9b173f19959732d3184b35f4f ]
    
    fill_with_dentries() failed to propagate errors up to
    reiserfs_for_each_xattr() properly.  Plumb them through.
    
    Note that reiserfs_for_each_xattr() is only used by
    reiserfs_delete_xattrs() and reiserfs_chown_xattrs().  The result of
    reiserfs_delete_xattrs() is discarded anyway, the only difference there is
    whether a warning is printed to dmesg.  The result of
    reiserfs_chown_xattrs() does matter because it can block chowning of the
    file to which the xattrs belong; but either way, the resulting state can
    have misaligned ownership, so my patch doesn't improve things greatly.
    
    Credit for making me look at this code goes to Al Viro, who pointed out
    that the ->actor calling convention is suboptimal and should be changed.
    
    Link: http://lkml.kernel.org/r/20180802163335.83312-1-jannh@google.com
    Signed-off-by: Jann Horn <jannh@google.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Jeff Mahoney <jeffm@suse.com>
    Cc: Eric Biggers <ebiggers@google.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 88aead985c3f8f9528b34900c133ad17d76e8d34
Author: Matthias Kaehlcke <mka@chromium.org>
Date:   Thu Aug 17 11:20:47 2017 -0700

    x86/build: Use cc-option to validate stack alignment parameter
    
    commit 9e8730b178a2472fca3123e909d6e69cc8127778 upstream.
    
    With the following commit:
    
      8f91869766c0 ("x86/build: Fix stack alignment for CLang")
    
    cc-option is only used to determine the name of the stack alignment option
    supported by the compiler, but not to verify that the actual parameter
    <option>=N is valid in combination with the other CFLAGS.
    
    This causes problems (as reported by the kbuild robot) with older GCC versions
    which only support stack alignment on a boundary of 16 bytes or higher.
    
    Also use (__)cc_option to add the stack alignment option to CFLAGS to
    make sure only valid options are added.
    
    Reported-by: kbuild test robot <fengguang.wu@intel.com>
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Bernhard.Rosenkranzer@linaro.org
    Cc: Greg Hackmann <ghackmann@google.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: Michael Davidson <md@google.com>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephen Hines <srhines@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: dianders@chromium.org
    Fixes: 8f91869766c0 ("x86/build: Fix stack alignment for CLang")
    Link: http://lkml.kernel.org/r/20170817182047.176752-1-mka@chromium.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b76d79043d0b095864ab09527781c0b4b05fe8e
Author: Matthias Kaehlcke <mka@chromium.org>
Date:   Wed Aug 16 17:47:40 2017 -0700

    x86/build: Fix stack alignment for CLang
    
    commit 8f91869766c00622b2eaa8ee567db4f333b78c1a upstream.
    
    Commit:
    
      d77698df39a5 ("x86/build: Specify stack alignment for clang")
    
    intended to use the same stack alignment for clang as with gcc.
    
    The two compilers use different options to configure the stack alignment
    (gcc: -mpreferred-stack-boundary=n, clang: -mstack-alignment=n).
    
    The above commit assumes that the clang option uses the same parameter
    type as gcc, i.e. that the alignment is specified as 2^n. However clang
    interprets the value of this option literally to use an alignment of n,
    in consequence the stack remains misaligned.
    
    Change the values used with -mstack-alignment to be the actual alignment
    instead of a power of two.
    
    cc-option isn't used here with the typical pattern of KBUILD_CFLAGS +=
    $(call cc-option ...). The reason is that older gcc versions don't
    support the -mpreferred-stack-boundary option, since cc-option doesn't
    verify whether the alternative option is valid it would incorrectly
    select the clang option -mstack-alignment..
    
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Bernhard.Rosenkranzer@linaro.org
    Cc: Greg Hackmann <ghackmann@google.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: Michael Davidson <md@google.com>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephen Hines <srhines@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: dianders@chromium.org
    Link: http://lkml.kernel.org/r/20170817004740.170588-1-mka@chromium.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f9c9bdde17a68dc889a8191020c73f55d2ea7f9
Author: Michael Davidson <md@google.com>
Date:   Mon Jul 24 16:51:55 2017 -0700

    x86/boot: #undef memcpy() et al in string.c
    
    commit 18d5e6c34a8eda438d5ad8b3b15f42dab01bf05d upstream.
    
    undef memcpy() and friends in boot/string.c so that the functions
    defined here will have the correct names, otherwise we end up
    up trying to redefine __builtin_memcpy() etc.
    
    Surprisingly, GCC allows this (and, helpfully, discards the
    __builtin_ prefix from the function name when compiling it),
    but clang does not.
    
    Adding these #undef's appears to preserve what I assume was
    the original intent of the code.
    
    Signed-off-by: Michael Davidson <md@google.com>
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Acked-by: H. Peter Anvin <hpa@zytor.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Bernhard.Rosenkranzer@linaro.org
    Cc: Greg Hackmann <ghackmann@google.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20170724235155.79255-1-mka@chromium.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 397fae4e356f2ebb4baa2fad3c6b170290db5e9c
Author: Matthias Kaehlcke <mka@chromium.org>
Date:   Wed Jun 21 16:28:05 2017 -0700

    x86/build: Specify stack alignment for clang
    
    commit d77698df39a512911586834d303275ea5fda74d0 upstream.
    
    For gcc stack alignment is configured with -mpreferred-stack-boundary=N,
    clang has the option -mstack-alignment=N for that purpose. Use the same
    alignment as with gcc.
    
    If the alignment is not specified clang assumes an alignment of
    16 bytes, as required by the standard ABI. However as mentioned in
    d9b0cde91c60 ("x86-64, gcc: Use -mpreferred-stack-boundary=3 if
    supported") the standard kernel entry on x86-64 leaves the stack
    on an 8-byte boundary, as a consequence clang will keep the stack
    misaligned.
    
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7c98579f935d1308786d2e5bdd85ce7aef42d43
Author: Matthias Kaehlcke <mka@chromium.org>
Date:   Wed Jun 21 16:28:04 2017 -0700

    x86/build: Use __cc-option for boot code compiler options
    
    commit 032a2c4f65a2f81c93e161a11197ba19bc14a909 upstream.
    
    cc-option is used to enable compiler options for the boot code if they
    are available. The macro uses KBUILD_CFLAGS and KBUILD_CPPFLAGS for the
    check, however these flags aren't used to build the boot code, in
    consequence cc-option can yield wrong results. For example
    -mpreferred-stack-boundary=2 is never set with a 64-bit compiler,
    since the setting is only valid for 16 and 32-bit binaries. This
    is also the case for 32-bit kernel builds, because the option -m32 is
    added to KBUILD_CFLAGS after the assignment of REALMODE_CFLAGS.
    
    Use __cc-option instead of cc-option for the boot mode options.
    The macro receives the compiler options as parameter instead of using
    KBUILD_C*FLAGS, for the boot code we pass REALMODE_CFLAGS.
    
    Also use separate statements for the __cc-option checks instead
    of performing them in the initial assignment of REALMODE_CFLAGS since
    the variable is an input of the macro.
    
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf6401610af484e94afdd9534e706e9bef5fbe5c
Author: Matthias Kaehlcke <mka@chromium.org>
Date:   Wed Jun 21 16:28:03 2017 -0700

    kbuild: Add __cc-option macro
    
    commit 9f3f1fd299768782465cb32cdf0dd4528d11f26b upstream.
    
    cc-option uses KBUILD_CFLAGS and KBUILD_CPPFLAGS when it determines
    whether an option is supported or not. This is fine for options used to
    build the kernel itself, however some components like the x86 boot code
    use a different set of flags.
    
    Add the new macro __cc-option which is a more generic version of
    cc-option with additional parameters. One parameter is the compiler
    with which the check should be performed, the other the compiler options
    to be used instead KBUILD_C*FLAGS.
    
    Refactor cc-option and hostcc-option to use __cc-option and move
    hostcc-option to scripts/Kbuild.include.
    
    Suggested-by: Arnd Bergmann <arnd@arndb.de>
    Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Michal Marek <mmarek@suse.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    [nc: Fix conflicts due to lack of CC_OPTION_CFLAGS and hostcc-option
         wasn't added until v4.8 so no point including it in this tree]
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee43aaa95604334e35dba586bbf5910984498d7d
Author: Matthias Kaehlcke <mka@chromium.org>
Date:   Mon May 1 15:47:41 2017 -0700

    x86/mm/kaslr: Use the _ASM_MUL macro for multiplication to work around Clang incompatibility
    
    commit 121843eb02a6e2fa30aefab64bfe183c97230c75 upstream.
    
    The constraint "rm" allows the compiler to put mix_const into memory.
    When the input operand is a memory location then MUL needs an operand
    size suffix, since Clang can't infer the multiplication width from the
    operand.
    
    Add and use the _ASM_MUL macro which determines the operand size and
    resolves to the NUL instruction with the corresponding suffix.
    
    This fixes the following error when building with clang:
    
      CC      arch/x86/lib/kaslr.o
      /tmp/kaslr-dfe1ad.s: Assembler messages:
      /tmp/kaslr-dfe1ad.s:182: Error: no instruction mnemonic suffix given and no register operands; can't size instruction
    
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Cc: Grant Grundler <grundler@chromium.org>
    Cc: Greg Hackmann <ghackmann@google.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Michael Davidson <md@google.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20170501224741.133938-1-mka@chromium.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [nc: Apply to aslr.c in get_random_long as the kaslr shift didn't happen
         until 4.8 in commit d899a7d146a2]
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5039cea07546571f364b6edaefbe86213b593dd8
Author: Michael Davidson <md@google.com>
Date:   Wed Mar 15 15:36:00 2017 -0700

    crypto, x86: aesni - fix token pasting for clang
    
    commit fdb2726f4e61c5e3abc052f547d5a5f6c0dc5504 upstream.
    
    aes_ctrby8_avx-x86_64.S uses the C preprocessor for token pasting
    of character sequences that are not valid preprocessor tokens.
    While this is allowed when preprocessing assembler files it exposes
    an incompatibilty between the clang and gcc preprocessors where
    clang does not strip leading white space from macro parameters,
    leading to the CONCAT(%xmm, i) macro expansion on line 96 resulting
    in a token with a space character embedded in it.
    
    While this could be resolved by deleting the offending space character,
    the assembler is perfectly capable of doing the token pasting correctly
    for itself so we can just get rid of the preprocessor macros.
    
    Signed-off-by: Michael Davidson <md@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 68cb70349a5f87e5083ce6014f1a4e9e7b6a0e18
Author: Matthias Kaehlcke <mka@chromium.org>
Date:   Thu Apr 13 10:26:09 2017 -0700

    x86/kbuild: Use cc-option to enable -falign-{jumps/loops}
    
    commit 2c4fd1ac3ff167c91272dc43c7bfd2269ef61557 upstream.
    
    clang currently does not support these optimizations, only enable them
    when they are available.
    
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Cc: Greg Hackmann <ghackmann@google.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: Michael Davidson <md@google.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: grundler@chromium.org
    Link: http://lkml.kernel.org/r/20170413172609.118122-1-mka@chromium.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b92e27f26f136b9c16a0ccb94a89ff599814675
Author: Matthias Kaehlcke <mka@chromium.org>
Date:   Fri Apr 21 16:00:56 2017 -0700

    arm64: Disable asm-operand-width warning for clang
    
    clang raises 'asm-operand-widths' warnings in inline assembly code when
    the size of an operand is < 64 bits and the operand width is unspecified.
    Most warnings are raised in macros, i.e. the datatype of the operand may
    vary.
    
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    
    nc: I trimmed the original commit message since I'm not a part of CrOS
        and can't speak on their behalf.
    
        To fix these warnings, it requires a fairly intrusive backport of
        the sysreg conversion that Mark Rutland did in 4.9. I think
        disabling the warning is smarter, similar to commit d41d0fe374d4
        ("turn off -Wattribute-alias") in this tree.
    
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c695cffc9f7cac218249dce3c79c030e56b88170
Author: Stefan Agner <stefan@agner.ch>
Date:   Mon Sep 17 19:31:57 2018 -0700

    kbuild: allow to use GCC toolchain not in Clang search path
    
    commit ef8c4ed9db80261f397f0c0bf723684601ae3b52 upstream.
    
    When using a GCC cross toolchain which is not in a compiled in
    Clang search path, Clang reverts to the system assembler and
    linker. This leads to assembler or linker errors, depending on
    which tool is first used for a given architecture.
    
    It seems that Clang is not searching $PATH for a matching
    assembler or linker.
    
    Make sure that Clang picks up the correct assembler or linker by
    passing the cross compilers bin directory as search path.
    
    This allows to use Clang provided by distributions with GCC
    toolchains not in /usr/bin.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/78
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Reviewed-and-tested-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    [nc: Adjust context]
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14e4ca675b1c0a5661bbc9f4ef48c4c1244e6ab3
Author: Stefan Agner <stefan@agner.ch>
Date:   Mon Mar 19 22:12:53 2018 +0100

    kbuild: set no-integrated-as before incl. arch Makefile
    
    commit 0f0e8de334c54c38818a4a5390a39aa09deff5bf upstream.
    
    In order to make sure compiler flag detection for ARM works
    correctly the no-integrated-as flags need to be set before
    including the arch specific Makefile.
    
    Fixes: cfe17c9bbe6a ("kbuild: move cc-option and cc-disable-warning after incl. arch Makefile")
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    [nc: Adjust context]
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cfbabf536f6b3e9f0bdea8cc388906ae90232689
Author: Sodagudi Prasad <psodagud@codeaurora.org>
Date:   Tue Feb 6 15:46:51 2018 -0800

    kbuild: clang: disable unused variable warnings only when constant
    
    commit 0a5f41767444cc3b4fc5573921ab914b4f78baaa upstream.
    
    Currently, GCC disables -Wunused-const-variable, but not
    -Wunused-variable, so warns unused variables if they are
    non-constant.
    
    While, Clang does not warn unused variables at all regardless of
    the const qualifier because -Wno-unused-const-variable is implied
    by the stronger option -Wno-unused-variable.
    
    Disable -Wunused-const-variable instead of -Wunused-variable so that
    GCC and Clang work in the same way.
    
    Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e0ae28ea0a7b769c596107b6297ce6d1122a214
Author: Nick Desaulniers <nick.desaulniers@gmail.com>
Date:   Sat Oct 7 13:23:23 2017 -0700

    kbuild: clang: remove crufty HOSTCFLAGS
    
    commit df16aaac26e92e97ab7234d3f93c953466adc4b5 upstream.
    
    When compiling with `make CC=clang HOSTCC=clang`, I was seeing warnings
    that clang did not recognize -fno-delete-null-pointer-checks for HOSTCC
    targets.  These were added in commit 61163efae020 ("kbuild: LLVMLinux:
    Add Kbuild support for building kernel with Clang").
    
    Clang does not support -fno-delete-null-pointer-checks, so adding it to
    HOSTCFLAGS if HOSTCC is clang does not make sense.
    
    It's not clear why the other warnings were disabled, and just for
    HOSTCFLAGS, but I can remove them, add -Werror to HOSTCFLAGS and compile
    with clang just fine.
    
    Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Nick Desaulniers <nick.desaulniers@gmail.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    [nc: Adjust context]
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03e4b23ec9ab053b6cbf39eca2fd821116022665
Author: David Lin <dtwlin@google.com>
Date:   Fri Oct 20 14:09:13 2017 -0700

    kbuild: clang: fix build failures with sparse check
    
    commit bb3f38c3c5b759163e09b9152629cc789731de47 upstream.
    
    We should avoid using the space character when passing arguments to
    clang, because static code analysis check tool such as sparse may
    misinterpret the arguments followed by spaces as build targets hence
    cause the build to fail.
    
    Signed-off-by: David Lin <dtwlin@google.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0925fe3d2eb6907dd2bf6e6521be6c8d52045c2d
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Mon Nov 27 21:15:13 2017 +0900

    kbuild: move cc-option and cc-disable-warning after incl. arch Makefile
    
    commit cfe17c9bbe6a673fdafdab179c32b355ed447f66 upstream.
    
    Geert reported commit ae6b289a3789 ("kbuild: Set KBUILD_CFLAGS before
    incl. arch Makefile") broke cross-compilation using a cross-compiler
    that supports less compiler options than the host compiler.
    
    For example,
    
      cc1: error: unrecognized command line option "-Wno-unused-but-set-variable"
    
    This problem happens on architectures that setup CROSS_COMPILE in their
    arch/*/Makefile.
    
    Move the cc-option and cc-disable-warning back to the original position,
    but keep the Clang target options untouched.
    
    Fixes: ae6b289a3789 ("kbuild: Set KBUILD_CFLAGS before incl. arch Makefile")
    Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Tested-by: Geert Uytterhoeven <geert@linux-m68k.org>
    [nc: Adjust context]
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c630d13c98062347d2efd3814c0bef170ad5ce65
Author: Chris Fries <cfries@google.com>
Date:   Tue Nov 7 11:46:13 2017 -0800

    kbuild: Set KBUILD_CFLAGS before incl. arch Makefile
    
    commit ae6b289a37890909fea0e4a1666e19377fa0ed2c upstream.
    
    Set the clang KBUILD_CFLAGS up before including arch/ Makefiles,
    so that ld-options (etc.) can work correctly.
    
    This fixes errors with clang such as ld-options trying to CC
    against your host architecture, but LD trying to link against
    your target architecture.
    
    Signed-off-by: Chris Fries <cfries@google.com>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
    Tested-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    [nc: Adjust context]
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 904ccb4cd1e5d4a46d96f008e00bf681b28150cb
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Mon Nov 6 10:47:54 2017 -0800

    kbuild: fix linker feature test macros when cross compiling with Clang
    
    commit 86a9df597cdd564d2d29c65897bcad42519e3678 upstream.
    
    I was not seeing my linker flags getting added when using ld-option when
    cross compiling with Clang. Upon investigation, this seems to be due to
    a difference in how GCC vs Clang handle cross compilation.
    
    GCC is configured at build time to support one backend, that is implicit
    when compiling.  Clang is explicit via the use of `-target <triple>` and
    ships with all supported backends by default.
    
    GNU Make feature test macros that compile then link will always fail
    when cross compiling with Clang unless Clang's triple is passed along to
    the compiler. For example:
    
    $ clang -x c /dev/null -c -o temp.o
    $ aarch64-linux-android/bin/ld -E temp.o
    aarch64-linux-android/bin/ld:
    unknown architecture of input file `temp.o' is incompatible with
    aarch64 output
    aarch64-linux-android/bin/ld:
    warning: cannot find entry symbol _start; defaulting to
    0000000000400078
    $ echo $?
    1
    
    $ clang -target aarch64-linux-android- -x c /dev/null -c -o temp.o
    $ aarch64-linux-android/bin/ld -E temp.o
    aarch64-linux-android/bin/ld:
    warning: cannot find entry symbol _start; defaulting to 00000000004002e4
    $ echo $?
    0
    
    This causes conditional checks that invoke $(CC) without the target
    triple, then $(LD) on the result, to always fail.
    
    Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    [nc: Fix conflicts due to lack of commit 3298b690b21cd in linux-4.4.y
         Use KBUILD_CFLAGS instead of CC_OPTION_FLAGS because commit
         d26e94149276f that introduced that variable isn't in 4.4 either]
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba0523881cac21c5cdc477390ff3e3ef9104437e
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Fri Aug 18 20:49:37 2017 +0100

    efi/libstub/arm64: Set -fpie when building the EFI stub
    
    commit 91ee5b21ee026c49e4e7483de69b55b8b47042be upstream.
    
    Clang may emit absolute symbol references when building in non-PIC mode,
    even when using the default 'small' code model, which is already mostly
    position independent to begin with, due to its use of adrp/add pairs
    that have a relative range of +/- 4 GB. The remedy is to pass the -fpie
    flag, which can be done safely now that the code has been updated to avoid
    GOT indirections (which may be emitted due to the compiler assuming that
    the PIC/PIE code may end up in a shared library that is subject to ELF
    symbol preemption)
    
    Passing -fpie when building code that needs to execute at an a priori
    unknown offset is arguably an improvement in any case, and given that
    the recent visibility changes allow the PIC build to pass with GCC as
    well, let's add -fpie for all arm64 builds rather than only for Clang.
    
    Tested-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20170818194947.19347-5-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2d14540ebbd0522b8226348909d13065544af94
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Fri Aug 18 20:49:36 2017 +0100

    efi/libstub/arm64: Force 'hidden' visibility for section markers
    
    commit 0426a4e68f18d75515414361de9e3e1445d2644e upstream.
    
    To prevent the compiler from emitting absolute references to the section
    markers when running in PIC mode, override the visibility to 'hidden' for
    all contents of asm/sections.h
    
    Tested-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20170818194947.19347-4-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [nc: Fix conflict due to lack of commit 42b55734030c1 in linux-4.4.y]
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c042dd600f4e89b6e7bdffa00aea4d1d3c1e9686
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Wed Apr 26 17:11:32 2017 +0100

    crypto: arm64/sha - avoid non-standard inline asm tricks
    
    commit f4857f4c2ee9aa4e2aacac1a845352b00197fb57 upstream.
    
    Replace the inline asm which exports struct offsets as ELF symbols
    with proper const variables exposing the same values. This works
    around an issue with Clang which does not interpret the "i" (or "I")
    constraints in the same way as GCC.
    
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Tested-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0516e87c1eda7ff6f52a5f6c3e9b962d0b60723f
Author: Matthias Kaehlcke <mka@chromium.org>
Date:   Fri Apr 21 14:39:30 2017 -0700

    kbuild: clang: Disable 'address-of-packed-member' warning
    
    commit bfb38988c51e440fd7062ddf3157f7d8b1dd5d70 upstream.
    
    clang generates plenty of these warnings in different parts of the code,
    to an extent that the warnings are little more than noise. Disable the
    'address-of-packed-member' warning.
    
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 89134f0918ec3bf4614ac2f9258543940e611f01
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Feb 1 18:00:14 2017 +0100

    modules: mark __inittest/__exittest as __maybe_unused
    
    commit 1f318a8bafcfba9f0d623f4870c4e890fd22e659 upstream.
    
    clang warns about unused inline functions by default:
    
    arch/arm/crypto/aes-cipher-glue.c:68:1: warning: unused function '__inittest' [-Wunused-function]
    arch/arm/crypto/aes-cipher-glue.c:69:1: warning: unused function '__exittest' [-Wunused-function]
    
    As these appear in every single module, let's just disable the warnings by marking the
    two functions as __maybe_unused.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Miroslav Benes <mbenes@suse.cz>
    Acked-by: Rusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: Jessica Yu <jeyu@redhat.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0ea0fe278c5b87d637be0cae0680b61c183e7bd
Author: Vinícius Tinti <viniciustinti@gmail.com>
Date:   Mon Apr 24 13:04:58 2017 -0700

    kbuild: Add support to generate LLVM assembly files
    
    commit 433db3e260bc8134d4a46ddf20b3668937e12556 upstream.
    
    Add rules to kbuild in order to generate LLVM assembly files with the .ll
    extension when using clang.
    
      # from c code
      make CC=clang kernel/pid.ll
    
    Signed-off-by: Vinícius Tinti <viniciustinti@gmail.com>
    Signed-off-by: Behan Webster <behanw@converseincode.com>
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    [nc: Fix conflicts due to lack of commit 6b90bd4ba40b3 in linux-4.4.y]
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8250381e987589874ef68223446a5cbebac1076
Author: Behan Webster <behanw@converseincode.com>
Date:   Mon Mar 27 18:19:09 2017 -0700

    kbuild: use -Oz instead of -Os when using clang
    
    commit 6748cb3c299de1ffbe56733647b01dbcc398c419 upstream.
    
    This generates smaller resulting object code when compiled with clang.
    
    Signed-off-by: Behan Webster <behanw@converseincode.com>
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    [nc: Adjust context due to lack of commit a76bcf557ef4 in linux-4.4.y]
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 045812536e46b13d25f2d252819c20a4a7d2079a
Author: Mark Charlebois <charlebm@gmail.com>
Date:   Fri Mar 31 22:38:13 2017 +0200

    kbuild, LLVMLinux: Add -Werror to cc-option to support clang
    
    commit c3f0d0bc5b01ad90c45276952802455750444b4f upstream.
    
    Clang will warn about unknown warnings but will not return false
    unless -Werror is set. GCC will return false if an unknown
    warning is passed.
    
    Adding -Werror make both compiler behave the same.
    
    [arnd: it turns out we need the same patch for testing whether -ffunction-sections
           works right with gcc. I've build tested extensively with this patch
           applied, so let's just merge this one now.]
    
    Signed-off-by: Mark Charlebois <charlebm@gmail.com>
    Signed-off-by: Behan Webster <behanw@converseincode.com>
    Reviewed-by: Jan-Simon Möller <dl9pf@gmx.de>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    [nc: Adjust context due to lack of d26e94149276f]
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f96245c042d6e77b0dd3b48e3a0abb4147f92937
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Thu Apr 13 07:25:21 2017 +0900

    kbuild: drop -Wno-unknown-warning-option from clang options
    
    commit a0ae981eba8f07dbc74bce38fd3a462b69a5bc8e upstream.
    
    Since commit c3f0d0bc5b01 ("kbuild, LLVMLinux: Add -Werror to
    cc-option to support clang"), cc-option and friends work nicely
    for clang.
    
    However, -Wno-unknown-warning-option makes clang happy with any
    unknown warning options even if -Werror is specified.
    
    Once -Wno-unknown-warning-option is added, any succeeding call of
    cc-disable-warning is evaluated positive, then unknown warning
    options are accepted.  This should be dropped.
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57c47840248ca79ce57306d018dce30681c2eab7
Author: Jeroen Hofstee <jeroen@myspectrum.nl>
Date:   Fri Apr 21 15:21:11 2017 +0900

    kbuild: fix asm-offset generation to work with clang
    
    commit cf0c3e68aa81f992b0301f62e341b710d385bf68 upstream.
    
    KBuild abuses the asm statement to write to a file and
    clang chokes about these invalid asm statements. Hack it
    even more by fooling this is actual valid asm code.
    
    [masahiro:
     Import Jeroen's work for U-Boot:
     http://patchwork.ozlabs.org/patch/375026/
     Tweak sed script a little to avoid garbage '#' for GCC case, like
     #define NR_PAGEFLAGS 23 /* __NR_PAGEFLAGS       # */ ]
    
    Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
    Tested-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ee9a0eb53d7c3eec581aacf9b8d24e8467f3e09
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Fri Apr 21 15:21:10 2017 +0900

    kbuild: consolidate redundant sed script ASM offset generation
    
    commit 7dd47b95b0f54f2057d40af6e66d477e3fe95d13 upstream.
    
    This part ended up in redundant code after touched by multiple
    people.
    
    [1] Commit 3234282f33b2 ("x86, asm: Fix CFI macro invocations to
    deal with shortcomings in gas") added parentheses for defined
    expressions to support old gas for x86.
    
    [2] Commit a22dcdb0032c ("x86, asm: Fix ancient-GAS workaround")
    split the pattern into two to avoid parentheses for non-numeric
    expressions.
    
    [3] Commit 95a2f6f72d37 ("Partially revert patch that encloses
    asm-offset.h numbers in brackets") removed parentheses from numeric
    expressions as well because parentheses in MN10300 assembly have a
    special meaning (pointer access).
    
    Apparently, there is a conflict between [1] and [3].  After all,
    [3] took precedence, and a long time has passed since then.
    
    Now, merge the two patterns again because the first one is covered
    by the other.
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7288b457145b8e9a3ffbee1c0fb78afeb9d3693
Author: Matthias Kaehlcke <mka@chromium.org>
Date:   Wed Apr 12 12:43:52 2017 -0700

    kbuild: Consolidate header generation from ASM offset information
    
    commit ebf003f0cfb3705e60d40dedc3ec949176c741af upstream.
    
    Largely redundant code is used in different places to generate C headers
    from offset information extracted from assembly language output.
    Consolidate the code in Makefile.lib and use this instead.
    
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ebd7941d0bdc85ebfc6eaa58fbf53e0f26e00e3
Author: Michael Davidson <md@google.com>
Date:   Tue Apr 25 15:47:35 2017 -0700

    kbuild: clang: add -no-integrated-as to KBUILD_[AC]FLAGS
    
    commit a37c45cd82e62a361706b9688a984a3a63957321 upstream.
    
    The Linux Kernel relies on GCC's acceptance of inline assembly as an
    opaque object which will not have any validation performed on the content.
    The current behaviour in LLVM is to perform validation of the contents by
    means of parsing the input if the MC layer can handle it.
    
    Disable clangs integrated assembler and use the GNU assembler instead.
    
    Wording-mostly-from: Saleem Abdulrasool <compnerd@compnerd.org>
    Signed-off-by: Michael Davidson <md@google.com>
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbb5fc70e499b794741f431443874be6977ac539
Author: Behan Webster <behanw@converseincode.com>
Date:   Fri Apr 21 11:20:01 2017 -0700

    kbuild: Add better clang cross build support
    
    commit 785f11aa595bc3d4e74096cbd598ada54ecc0d81 upstream.
    
    Add cross target to CC if using clang. Also add custom gcc toolchain
    path for fallback gcc tools.
    
    Clang will fallback to using things like ld, as, and libgcc if
    (respectively) one of the llvm linkers isn't available, the integrated
    assembler is turned off, or an appropriately cross-compiled version of
    compiler-rt isn't available. To this end, you can specify the path to
    this fallback gcc toolchain with GCC_TOOLCHAIN.
    
    Signed-off-by: Behan Webster <behanw@converseincode.com>
    Reviewed-by: Jan-Simon Möller <dl9pf@gmx.de>
    Reviewed-by: Mark Charlebois <charlebm@gmail.com>
    Signed-off-by: Greg Hackmann <ghackmann@google.com>
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c37215a94f5ee89ec10575ea28ec20f1e89f3015
Author: David Ahern <dsahern@gmail.com>
Date:   Sun Nov 18 10:45:30 2018 -0800

    ipv6: Fix PMTU updates for UDP/raw sockets in presence of VRF
    
    [ Upstream commit 7ddacfa564870cdd97275fd87decb6174abc6380 ]
    
    Preethi reported that PMTU discovery for UDP/raw applications is not
    working in the presence of VRF when the socket is not bound to a device.
    The problem is that ip6_sk_update_pmtu does not consider the L3 domain
    of the skb device if the socket is not bound. Update the function to
    set oif to the L3 master device if relevant.
    
    Fixes: ca254490c8df ("net: Add VRF support to IPv6 stack")
    Reported-by: Preethi Ramachandra <preethir@juniper.net>
    Signed-off-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 51d258e4c75bbaf1a190564ea70997a8a33570f0
Author: Siva Reddy Kallam <siva.kallam@broadcom.com>
Date:   Tue Nov 20 10:04:04 2018 +0530

    tg3: Add PHY reset for 5717/5719/5720 in change ring and flow control paths
    
    [ Upstream commit 59663e42199c93d1d7314d1446f6782fc4b1eb81 ]
    
    This patch has the fix to avoid PHY lockup with 5717/5719/5720 in change
    ring and flow control paths. This patch solves the RX hang while doing
    continuous ring or flow control parameters with heavy traffic from peer.
    
    Signed-off-by: Siva Reddy Kallam <siva.kallam@broadcom.com>
    Acked-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4dc0c62a488f341fa61458eb415db34bf4723657
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Nov 17 21:57:02 2018 -0800

    net-gro: reset skb->pkt_type in napi_reuse_skb()
    
    [ Upstream commit 33d9a2c72f086cbf1087b2fd2d1a15aa9df14a7f ]
    
    eth_type_trans() assumes initial value for skb->pkt_type
    is PACKET_HOST.
    
    This is indeed the value right after a fresh skb allocation.
    
    However, it is possible that GRO merged a packet with a different
    value (like PACKET_OTHERHOST in case macvlan is used), so
    we need to make sure napi->skb will have pkt_type set back to
    PACKET_HOST.
    
    Otherwise, valid packets might be dropped by the stack because
    their pkt_type is not PACKET_HOST.
    
    napi_reuse_skb() was added in commit 96e93eab2033 ("gro: Add
    internal interfaces for VLAN"), but this bug always has
    been there.
    
    Fixes: 96e93eab2033 ("gro: Add internal interfaces for VLAN")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7876c2d6ced154eb7eff3587d75f02eda3a8f45f
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Fri Nov 16 16:58:19 2018 +0100

    ip_tunnel: don't force DF when MTU is locked
    
    [ Upstream commit 16f7eb2b77b55da816c4e207f3f9440a8cafc00a ]
    
    The various types of tunnels running over IPv4 can ask to set the DF
    bit to do PMTU discovery. However, PMTU discovery is subject to the
    threshold set by the net.ipv4.route.min_pmtu sysctl, and is also
    disabled on routes with "mtu lock". In those cases, we shouldn't set
    the DF bit.
    
    This patch makes setting the DF bit conditional on the route's MTU
    locking state.
    
    This issue seems to be older than git history.
    
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c1741548937903b02e92b6fe2d14d90acedf14d
Author: 배석진 <soukjin.bae@samsung.com>
Date:   Fri Nov 9 16:53:06 2018 -0800

    flow_dissector: do not dissect l4 ports for fragments
    
    [ Upstream commit 62230715fd2453b3ba948c9d83cfb3ada9169169 ]
    
    Only first fragment has the sport/dport information,
    not the following ones.
    
    If we want consistent hash for all fragments, we need to
    ignore ports even for first fragment.
    
    This bug is visible for IPv6 traffic, if incoming fragments
    do not have a flow label, since skb_get_hash() will give
    different results for first fragment and following ones.
    
    It is also visible if any routing rule wants dissection
    and sport or dport.
    
    See commit 5e5d6fed3741 ("ipv6: route: dissect flow
    in input path if fib rules need it") for details.
    
    [edumazet] rewrote the changelog completely.
    
    Fixes: 06635a35d13d ("flow_dissect: use programable dissector in skb_flow_dissect and friends")
    Signed-off-by: 배석진 <soukjin.bae@samsung.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>