commit 03028e068a1f75d3b2e0989d7a452e701df0727b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Dec 25 14:22:16 2017 +0100

    Linux 4.4.108

commit 1cfeaadfd1b45388f8b957cb58d8df3cb1e5509c
Author: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Date:   Tue Oct 3 16:14:15 2017 -0700

    alpha: fix build failures
    
    commit 8ee912dab95f1483156b6e994004bfcc3158d798 upstream.
    
    The build of alpha allmodconfig is giving error:
    
      arch/alpha/include/asm/mmu_context.h: In function 'ev5_switch_mm':
      arch/alpha/include/asm/mmu_context.h:160:2: error:
            implicit declaration of function 'task_thread_info';
            did you mean 'init_thread_info'? [-Werror=implicit-function-declaration]
    
    The file 'mmu_context.h' needed an extra header file.
    
    Link: http://lkml.kernel.org/r/1505668810-7497-1-git-send-email-sudipm.mukherjee@gmail.com
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: Matt Turner <mattst88@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d126c47656da7ca0c7921eea931e871642c90fb7
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 29 18:48:07 2016 +0200

    ALSA: hda - Fix yet another i915 pointer leftover in error path
    
    commit 97cc2ed27e5a168cf423f67c3bc7c6cc41d12f82 upstream.
    
    The hdac_acomp object in hdac_i915.c is left as assigned even after
    binding with i915 actually fails, and this leads to the WARN_ON() at
    the next load of the module.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94736
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Cc: Kouta Okamoto <kouta.okamoto@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b67b56ea7703b6c5253c42d036e2aaae7aede73
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 20 15:00:26 2016 +0100

    ALSA: hda - Degrade i915 binding failure message
    
    commit bed2e98e1f4db8b827df507abc30be7b11b0613d upstream.
    
    Currently HD-audio driver on Intel Skylake or Broxteon gives an error
    message when binding with i915 audio component fails.  However, this
    isn't any serious error on a system without Intel graphics.  Indeed
    there are such systems, where a third-party codec (e.g. Creative) is
    put on the mobo while using other discrete GPU (e.g. Nvidia).
    Printing a kernel "error" message is overreaction in such a case.
    
    This patch downgrades the print level for that message.  For systems
    that mandate the i915 binding (e.g. Haswell or Broadwell HDMI/DP),
    another kernel error message is shown in addition to make clear what
    went wrong.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=111021
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Cc: Kouta Okamoto <kouta.okamoto@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef24d642e92ad2216bb0f70a4307c582f9400732
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 29 12:29:24 2016 +0200

    ALSA: hda - Clear the leftover component assignment at snd_hdac_i915_exit()
    
    commit faafd03d23c913633d2ef7e6ffebdce01b164409 upstream.
    
    The commit [d745f5e7b8b2: ALSA: hda - Add the pin / port mapping on
    Intel ILK and VLV] introduced a WARN_ON() to check the pointer for
    avoiding the double initializations.  But hdac_acomp pointer wasn't
    cleared at snd_hdac_i915_exit(), thus after reloading the HD-audio
    driver, it may result in the false positive warning.  This patch makes
    sure to clear the leftover pointer at exit.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94736
    Reported-by: Daniela Doras-prodan <daniela.doras-prodan@intel.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Cc: Kouta Okamoto <kouta.okamoto@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f3e85d820fd170f9cb94a8a036c824cf1b29832
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Dec 22 08:43:23 2017 +0100

    Revert "Bluetooth: btusb: driver to enable the usb-wakeup feature"
    
    This reverts commit ffc7565746bb2fc063fc0f484c55ef6d8951a6ee which is
    commit a0085f2510e8976614ad8f766b209448b385492f upstream.
    
    It causes problems with working systems, as noted by a number of the
    ChromeOS developers.
    
    Cc: Sukumar Ghorai <sukumar.ghorai@intel.com>
    Cc: Amit K Bag <amit.k.bag@intel.com>
    Cc: Oliver Neukum <oneukum@suse.com>
    Cc: Marcel Holtmann <marcel@holtmann.org>
    Cc: Matthias Kaehlcke <mka@chromium.org>
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Reported-by: Brian Norris <briannorris@chromium.org>
    Acked-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c631278a9c6eadebadcd4ee6efbb4edfe2f1c61
Author: Aleksandar Markovic <aleksandar.markovic@mips.com>
Date:   Thu Nov 2 12:13:58 2017 +0100

    MIPS: math-emu: Fix final emulation phase for certain instructions
    
    commit 409fcace9963c1e8d2cb0f7ac62e8b34d47ef979 upstream.
    
    Fix final phase of <CLASS|MADDF|MSUBF|MAX|MIN|MAXA|MINA>.<D|S>
    emulation. Provide proper generation of SIGFPE signal and updating
    debugfs FP exception stats in cases of any exception flags set in
    preceding phases of emulation.
    
    CLASS.<D|S> instruction may generate "Unimplemented Operation" FP
    exception. <MADDF|MSUBF>.<D|S> instructions may generate "Inexact",
    "Unimplemented Operation", "Invalid Operation", "Overflow", and
    "Underflow" FP exceptions. <MAX|MIN|MAXA|MINA>.<D|S> instructions
    can generate "Unimplemented Operation" and "Invalid Operation" FP
    exceptions.
    
    The proper final processing of the cases when any FP exception
    flag is set is achieved by replacing "break" statement with "goto
    copcsr" statement. With such solution, this patch brings the final
    phase of emulation of the above instructions consistent with the
    one corresponding to the previously implemented emulation of other
    related FPU instructions (ADD, SUB, etc.).
    
    Fixes: 38db37ba069f ("MIPS: math-emu: Add support for the MIPS R6 CLASS FPU instruction")
    Fixes: e24c3bec3e8e ("MIPS: math-emu: Add support for the MIPS R6 MADDF FPU instruction")
    Fixes: 83d43305a1df ("MIPS: math-emu: Add support for the MIPS R6 MSUBF FPU instruction")
    Fixes: a79f5f9ba508 ("MIPS: math-emu: Add support for the MIPS R6 MAX{, A} FPU instruction")
    Fixes: 4e9561b20e2f ("MIPS: math-emu: Add support for the MIPS R6 MIN{, A} FPU instruction")
    Signed-off-by: Aleksandar Markovic <aleksandar.markovic@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Douglas Leung <douglas.leung@mips.com>
    Cc: Goran Ferenc <goran.ferenc@mips.com>
    Cc: "Maciej W. Rozycki" <macro@imgtec.com>
    Cc: Miodrag Dinic <miodrag.dinic@mips.com>
    Cc: Paul Burton <paul.burton@mips.com>
    Cc: Petar Jovanovic <petar.jovanovic@mips.com>
    Cc: Raghu Gandham <raghu.gandham@mips.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/17581/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69dd89a1f919df7ab2e38f6f73fca0735d620205
Author: Arvind Yadav <arvind.yadav.cs@gmail.com>
Date:   Tue Jun 6 15:04:46 2017 +0530

    thermal: hisilicon: Handle return value of clk_prepare_enable
    
    commit 919054fdfc8adf58c5512fe9872eb53ea0f5525d upstream.
    
    clk_prepare_enable() can fail here and we must check its return value.
    
    Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
    Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
    Signed-off-by: Kevin Wangtao <kevin.wangtao@hisilicon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0303e4ffd3a9822801869f075b8bbf0610151ee
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Fri Sep 1 14:29:56 2017 +1000

    cpuidle: fix broadcast control when broadcast can not be entered
    
    
    [ Upstream commit f187851b9b4a76952b1158b86434563dd2031103 ]
    
    When failing to enter broadcast timer mode for an idle state that
    requires it, a new state is selected that does not require broadcast,
    but the broadcast variable remains set. This causes
    tick_broadcast_exit to be called despite not having entered broadcast
    mode.
    
    This causes the WARN_ON_ONCE(!irqs_disabled()) to trigger in some
    cases. It does not appear to cause problems for code today, but seems
    to violate the interface so should be fixed.
    
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e6e8ec18d95dc29058f707b218a658062550a4f
Author: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Date:   Thu Sep 28 13:53:27 2017 +0200

    rtc: set the alarm to the next expiring timer
    
    
    [ Upstream commit 74717b28cb32e1ad3c1042cafd76b264c8c0f68d ]
    
    If there is any non expired timer in the queue, the RTC alarm is never set.
    This is an issue when adding a timer that expires before the next non
    expired timer.
    
    Ensure the RTC alarm is set in that case.
    
    Fixes: 2b2f5ff00f63 ("rtc: interface: ignore expired timers when enqueuing new timers")
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e52ede8e1ed95aec3cd3acaea48066cb34c238b
Author: Hoang Tran <tranviethoang.vn@gmail.com>
Date:   Wed Sep 27 18:30:58 2017 +0200

    tcp: fix under-evaluated ssthresh in TCP Vegas
    
    
    [ Upstream commit cf5d74b85ef40c202c76d90959db4d850f301b95 ]
    
    With the commit 76174004a0f19785 (tcp: do not slow start when cwnd equals
    ssthresh), the comparison to the reduced cwnd in tcp_vegas_ssthresh() would
    under-evaluate the ssthresh.
    
    Signed-off-by: Hoang Tran <hoang.tran@uclouvain.be>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab8e096eed2f2a98e5200672720d5d46db50c80b
Author: Jacob Keller <jacob.e.keller@intel.com>
Date:   Mon Oct 2 07:17:50 2017 -0700

    fm10k: ensure we process SM mbx when processing VF mbx
    
    
    [ Upstream commit 17a91809942ca32c70026d2d5ba3348a2c4fdf8f ]
    
    When we process VF mailboxes, the driver is likely going to also queue
    up messages to the switch manager. This process merely queues up the
    FIFO, but doesn't actually begin the transmission process. Because we
    hold the mailbox lock during this VF processing, the PF<->SM mailbox is
    not getting processed at this time. Ensure that we actually process the
    PF<->SM mailbox in between each PF<->VF mailbox.
    
    This should ensure prompt transmission of the messages queued up after
    each VF message is received and handled.
    
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Tested-by: Krishneil Singh <krishneil.k.singh@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0705d3b83699f69bbd383534bb59a1ecea5b305f
Author: Dick Kennedy <dick.kennedy@broadcom.com>
Date:   Fri Sep 29 17:34:32 2017 -0700

    scsi: lpfc: PLOGI failures during NPIV testing
    
    
    [ Upstream commit e8bcf0ae4c0346fdc78ebefe0eefcaa6a6622d38 ]
    
    Local Reject/Invalid RPI errors seen during discovery.
    
    Temporary RPI cleanup was occurring regardless of SLI rev. It's only
    necessary on SLI-4.
    
    Adjust the test for whether cleanup is necessary.
    
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4dff872fe97f6e48a26aebddec3ff57ddd43398
Author: Dick Kennedy <dick.kennedy@broadcom.com>
Date:   Fri Sep 29 17:34:42 2017 -0700

    scsi: lpfc: Fix secure firmware updates
    
    
    [ Upstream commit 184fc2b9a8bcbda9c14d0a1e7fbecfc028c7702e ]
    
    Firmware update fails with: status x17 add_status x56 on the final write
    
    If multiple DMA buffers are used for the download, some firmware revs
    have difficulty with signatures and crcs split across the dma buffer
    boundaries.  Resolve by making all writes be a single 4k page in length.
    
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb7b86ec94a48f697f11e23a0ccfe08ee1277aad
Author: Gabriele Paoloni <gabriele.paoloni@huawei.com>
Date:   Thu Sep 28 15:33:05 2017 +0100

    PCI/AER: Report non-fatal errors only to the affected endpoint
    
    
    [ Upstream commit 86acc790717fb60fb51ea3095084e331d8711c74 ]
    
    Previously, if an non-fatal error was reported by an endpoint, we
    called report_error_detected() for the endpoint, every sibling on the
    bus, and their descendents.  If any of them did not implement the
    .error_detected() method, do_recovery() failed, leaving all these
    devices unrecovered.
    
    For example, the system described in the bugzilla below has two devices:
    
      0000:74:02.0 [19e5:a230] SAS controller, driver has .error_detected()
      0000:74:03.0 [19e5:a235] SATA controller, driver lacks .error_detected()
    
    When a device such as 74:02.0 reported a non-fatal error, do_recovery()
    failed because 74:03.0 lacked an .error_detected() method.  But per PCIe
    r3.1, sec 6.2.2.2.2, such an error does not compromise the Link and
    does not affect 74:03.0:
    
      Non-fatal errors are uncorrectable errors which cause a particular
      transaction to be unreliable but the Link is otherwise fully functional.
      Isolating Non-fatal from Fatal errors provides Requester/Receiver logic
      in a device or system management software the opportunity to recover from
      the error without resetting the components on the Link and disturbing
      other transactions in progress.  Devices not associated with the
      transaction in error are not impacted by the error.
    
    Report non-fatal errors only to the endpoint that reported them.  We really
    want to check for AER_NONFATAL here, but the current code structure doesn't
    allow that.  Looking for pci_channel_io_normal is the best we can do now.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=197055
    Fixes: 6c2b374d7485 ("PCI-Express AER implemetation: AER core and aerdriver")
    Signed-off-by: Gabriele Paoloni <gabriele.paoloni@huawei.com>
    Signed-off-by: Dongdong Liu <liudongdong3@huawei.com>
    [bhelgaas: changelog]
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa6d09cea6df98a907e13a7d95083d114d8d4413
Author: Emil Tantilov <emil.s.tantilov@intel.com>
Date:   Mon Sep 11 14:21:31 2017 -0700

    ixgbe: fix use of uninitialized padding
    
    
    [ Upstream commit dcfd6b839c998bc9838e2a47f44f37afbdf3099c ]
    
    This patch is resolving Coverity hits where padding in a structure could
    be used uninitialized.
    
    - Initialize fwd_cmd.pad/2 before ixgbe_calculate_checksum()
    
    - Initialize buffer.pad2/3 before ixgbe_hic_unlocked()
    
    Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cffbf0ffc47c5a3a438bd9d792fa541b3069b380
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sun Aug 27 08:39:51 2017 +0200

    igb: check memory allocation failure
    
    
    [ Upstream commit 18eb86362a52f0af933cc0fd5e37027317eb2d1c ]
    
    Check memory allocation failures and return -ENOMEM in such cases, as
    already done for other memory allocations in this function.
    
    This avoids NULL pointers dereference.
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com
    Acked-by: PJ Waskiewicz <peter.waskiewicz.jr@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e91b0d64e921678b8c98f7a4980b169181a9bad
Author: Stuart Hayes <stuart.w.hayes@gmail.com>
Date:   Wed Oct 4 10:57:52 2017 -0500

    PCI: Create SR-IOV virtfn/physfn links before attaching driver
    
    
    [ Upstream commit 27d6162944b9b34c32cd5841acd21786637ee743 ]
    
    When creating virtual functions, create the "virtfn%u" and "physfn" links
    in sysfs *before* attaching the driver instead of after.  When we attach
    the driver to the new virtual network interface first, there is a race when
    the driver attaches to the new sends out an "add" udev event, and the
    network interface naming software (biosdevname or systemd, for example)
    tries to look at these links.
    
    Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a916c4152a4ba0c42cd2350dc04251417ca73507
Author: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Date:   Tue Oct 10 18:41:18 2017 +0530

    scsi: mpt3sas: Fix IO error occurs on pulling out a drive from RAID1 volume created on two SATA drive
    
    
    [ Upstream commit 2ce9a3645299ba1752873d333d73f67620f4550b ]
    
    Whenever an I/O for a RAID volume fails with IOCStatus
    MPI2_IOCSTATUS_SCSI_IOC_TERMINATED and SCSIStatus equal to
    (MPI2_SCSI_STATE_TERMINATED | MPI2_SCSI_STATE_NO_SCSI_STATUS) then
    return the I/O to SCSI midlayer with "DID_RESET" (i.e. retry the IO
    infinite times) set in the host byte.
    
    Previously, the driver was completing the I/O with "DID_SOFT_ERROR"
    which causes the I/O to be quickly retried. However, firmware needed
    more time and hence I/Os were failing.
    
    Signed-off-by: Sreekanth Reddy <Sreekanth.Reddy@broadcom.com>
    Reviewed-by: Tomas Henzl <thenzl@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9151f9d4b6f1504fd2bfa2244d940058a2407e6
Author: Varun Prakash <varun@chelsio.com>
Date:   Wed Oct 11 19:33:07 2017 +0530

    scsi: cxgb4i: fix Tx skb leak
    
    
    [ Upstream commit 9b3a081fb62158b50bcc90522ca2423017544367 ]
    
    In case of connection reset Tx skb queue can have some skbs which are
    not transmitted so purge Tx skb queue in release_offload_resources() to
    avoid skb leak.
    
    Signed-off-by: Varun Prakash <varun@chelsio.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8f376337c6379af927e1a44bbe5b311f033ab1ad
Author: David Daney <david.daney@cavium.com>
Date:   Fri Sep 8 10:10:31 2017 +0200

    PCI: Avoid bus reset if bridge itself is broken
    
    
    [ Upstream commit 357027786f3523d26f42391aa4c075b8495e5d28 ]
    
    When checking to see if a PCI bus can safely be reset, we previously
    checked to see if any of the children had their PCI_DEV_FLAGS_NO_BUS_RESET
    flag set.  Children marked with that flag are known not to behave well
    after a bus reset.
    
    Some PCIe root port bridges also do not behave well after a bus reset,
    sometimes causing the devices behind the bridge to become unusable.
    
    Add a check for PCI_DEV_FLAGS_NO_BUS_RESET being set in the bridge device
    to allow these bridges to be flagged, and prevent their secondary buses
    from being reset.
    
    Signed-off-by: David Daney <david.daney@cavium.com>
    [jglauber@cavium.com: fixed typo]
    Signed-off-by: Jan Glauber <jglauber@cavium.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Alex Williamson <alex.williamson@redhat.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3190a0623c583b1cc29770a4004036c20b146c35
Author: Dan Murphy <dmurphy@ti.com>
Date:   Tue Oct 10 12:42:56 2017 -0500

    net: phy: at803x: Change error to EINVAL for invalid MAC
    
    
    [ Upstream commit fc7556877d1748ac00958822a0a3bba1d4bd9e0d ]
    
    Change the return error code to EINVAL if the MAC
    address is not valid in the set_wol function.
    
    Signed-off-by: Dan Murphy <dmurphy@ti.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0ca85d4895a8d66f722588fb741dd6f2834406c
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Fri Sep 29 11:22:15 2017 +0100

    rtc: pl031: make interrupt optional
    
    
    [ Upstream commit 5b64a2965dfdfca8039e93303c64e2b15c19ff0c ]
    
    On some platforms, the interrupt for the PL031 is optional.  Avoid
    trying to claim the interrupt if it's not specified.
    
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7ae9928a25d52b90216a474e07a30065220340e
Author: Christian Lamparter <chunkeey@gmail.com>
Date:   Wed Oct 4 01:00:08 2017 +0200

    crypto: crypto4xx - increase context and scatter ring buffer elements
    
    
    [ Upstream commit 778f81d6cdb7d25360f082ac0384d5103f04eca5 ]
    
    If crypto4xx is used in conjunction with dm-crypt, the available
    ring buffer elements are not enough to handle the load properly.
    
    On an aes-cbc-essiv:sha256 encrypted swap partition the read
    performance is abyssal: (tested with hdparm -t)
    
    /dev/mapper/swap_crypt:
     Timing buffered disk reads:  14 MB in  3.68 seconds =   3.81 MB/sec
    
    The patch increases both PPC4XX_NUM_SD and PPC4XX_NUM_PD to 256.
    This improves the performance considerably:
    
    /dev/mapper/swap_crypt:
     Timing buffered disk reads: 104 MB in  3.03 seconds =  34.31 MB/sec
    
    Furthermore, PPC4XX_LAST_SD, PPC4XX_LAST_GD and PPC4XX_LAST_PD
    can be easily calculated from their respective PPC4XX_NUM_*
    constant.
    
    Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78ffab9744ad1e94fca50f914f8574ecac310d30
Author: Derek Basehore <dbasehore@chromium.org>
Date:   Tue Aug 29 13:34:34 2017 -0700

    backlight: pwm_bl: Fix overflow condition
    
    
    [ Upstream commit 5d0c49acebc9488e37db95f1d4a55644e545ffe7 ]
    
    This fixes an overflow condition that can happen with high max
    brightness and period values in compute_duty_cycle. This fixes it by
    using a 64 bit variable for computing the duty cycle.
    
    Signed-off-by: Derek Basehore <dbasehore@chromium.org>
    Acked-by: Thierry Reding <thierry.reding@gmail.com>
    Reviewed-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ec5f7a3c9b6968c8041b8d3db8797d4e076d72a
Author: Sankar Patchineelam <sankar.patchineelam@broadcom.com>
Date:   Tue Mar 28 19:47:29 2017 -0400

    bnxt_en: Fix NULL pointer dereference in reopen failure path
    
    
    [ Upstream commit 2247925f0942dc4e7c09b1cde45ca18461d94c5f ]
    
    Net device reset can fail when the h/w or f/w is in a bad state.
    Subsequent netdevice open fails in bnxt_hwrm_stat_ctx_alloc().
    The cleanup invokes bnxt_hwrm_resource_free() which inturn
    calls bnxt_disable_int().  In this routine, the code segment
    
    if (ring->fw_ring_id != INVALID_HW_RING_ID)
       BNXT_CP_DB(cpr->cp_doorbell, cpr->cp_raw_cons);
    
    results in NULL pointer dereference as cpr->cp_doorbell is not yet
    initialized, and fw_ring_id is zero.
    
    The fix is to initialize cpr fw_ring_id to INVALID_HW_RING_ID before
    bnxt_init_chip() is invoked.
    
    Signed-off-by: Sankar Patchineelam <sankar.patchineelam@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7432a60515da37ee9a510c26502e18994c65b6f1
Author: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Date:   Thu Mar 23 20:52:46 2017 +0530

    cpuidle: powernv: Pass correct drv->cpumask for registration
    
    
    [ Upstream commit 293d264f13cbde328d5477f49e3103edbc1dc191 ]
    
    drv->cpumask defaults to cpu_possible_mask in __cpuidle_driver_init().
    On PowerNV platform cpu_present could be less than cpu_possible in cases
    where firmware detects the cpu, but it is not available to the OS.  When
    CONFIG_HOTPLUG_CPU=n, such cpus are not hotplugable at runtime and hence
    we skip creating cpu_device.
    
    This breaks cpuidle on powernv where register_cpu() is not called for
    cpus in cpu_possible_mask that cannot be hot-added at runtime.
    
    Trying cpuidle_register_device() on cpu without cpu_device will cause
    crash like this:
    
    cpu 0xf: Vector: 380 (Data SLB Access) at [c000000ff1503490]
        pc: c00000000022c8bc: string+0x34/0x60
        lr: c00000000022ed78: vsnprintf+0x284/0x42c
        sp: c000000ff1503710
       msr: 9000000000009033
       dar: 6000000060000000
      current = 0xc000000ff1480000
      paca    = 0xc00000000fe82d00   softe: 0        irq_happened: 0x01
        pid   = 1, comm = swapper/8
    Linux version 4.11.0-rc2 (sv@sagarika) (gcc version 4.9.4
    (Buildroot 2017.02-00004-gc28573e) ) #15 SMP Fri Mar 17 19:32:02 IST 2017
    enter ? for help
    [link register   ] c00000000022ed78 vsnprintf+0x284/0x42c
    [c000000ff1503710] c00000000022ebb8 vsnprintf+0xc4/0x42c (unreliable)
    [c000000ff1503800] c00000000022ef40 vscnprintf+0x20/0x44
    [c000000ff1503830] c0000000000ab61c vprintk_emit+0x94/0x2cc
    [c000000ff15038a0] c0000000000acc9c vprintk_func+0x60/0x74
    [c000000ff15038c0] c000000000619694 printk+0x38/0x4c
    [c000000ff15038e0] c000000000224950 kobject_get+0x40/0x60
    [c000000ff1503950] c00000000022507c kobject_add_internal+0x60/0x2c4
    [c000000ff15039e0] c000000000225350 kobject_init_and_add+0x70/0x78
    [c000000ff1503a60] c00000000053c288 cpuidle_add_sysfs+0x9c/0xe0
    [c000000ff1503ae0] c00000000053aeac cpuidle_register_device+0xd4/0x12c
    [c000000ff1503b30] c00000000053b108 cpuidle_register+0x98/0xcc
    [c000000ff1503bc0] c00000000085eaf0 powernv_processor_idle_init+0x140/0x1e0
    [c000000ff1503c60] c00000000000cd60 do_one_initcall+0xc0/0x15c
    [c000000ff1503d20] c000000000833e84 kernel_init_freeable+0x1a0/0x25c
    [c000000ff1503dc0] c00000000000d478 kernel_init+0x24/0x12c
    [c000000ff1503e30] c00000000000b564 ret_from_kernel_thread+0x5c/0x78
    
    This patch fixes the bug by passing correct cpumask from
    powernv-cpuidle driver.
    
    Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
    Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
    Acked-by: Michael Ellerman <mpe@ellerman.id.au>
    [ rjw: Comment massage ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1779b33294dab3e3a08afa5196d01848acfbe40c
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Wed Mar 29 17:12:47 2017 +0100

    ARM: dma-mapping: disallow dma_get_sgtable() for non-kernel managed memory
    
    
    [ Upstream commit 916a008b4b8ecc02fbd035cfb133773dba1ff3d7 ]
    
    dma_get_sgtable() tries to create a scatterlist table containing valid
    struct page pointers for the coherent memory allocation passed in to it.
    
    However, memory can be declared via dma_declare_coherent_memory(), or
    via other reservation schemes which means that coherent memory is not
    guaranteed to be backed by struct pages.  In such cases, the resulting
    scatterlist table contains pointers to invalid pages, which causes
    kernel oops later.
    
    This patch adds detection of such memory, and refuses to create a
    scatterlist table for such memory.
    
    Reported-by: Shuah Khan <shuahkhan@gmail.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bec60b446b526c3b11c92eeaa3e2c4b8edb8a51f
Author: Liping Zhang <zlpnobody@gmail.com>
Date:   Tue Mar 28 22:59:25 2017 +0800

    netfilter: nfnetlink_queue: fix secctx memory leak
    
    
    [ Upstream commit 77c1c03c5b8ef28e55bb0aff29b1e006037ca645 ]
    
    We must call security_release_secctx to free the memory returned by
    security_secid_to_secctx, otherwise memory may be leaked forever.
    
    Fixes: ef493bd930ae ("netfilter: nfnetlink_queue: add security context information")
    Signed-off-by: Liping Zhang <zlpnobody@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff1ddbb38b1916a03a31080f34d7d42257c5c5ac
Author: Adam Wallis <awallis@codeaurora.org>
Date:   Tue Mar 28 15:55:28 2017 +0300

    xhci: plat: Register shutdown for xhci_plat
    
    
    [ Upstream commit b07c12517f2aed0add8ce18146bb426b14099392 ]
    
    Shutdown should be called for xhci_plat devices especially for
    situations where kexec might be used by stopping DMA
    transactions.
    
    Signed-off-by: Adam Wallis <awallis@codeaurora.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea9e1ca4093975a0ce346b60cfc18030c965006c
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Mar 28 12:11:07 2017 +0200

    isdn: kcapi: avoid uninitialized data
    
    
    [ Upstream commit af109a2cf6a9a6271fa420ae2d64d72d86c92b7d ]
    
    gcc-7 points out that the AVMB1_ADDCARD ioctl results in an unintialized
    value ending up in the cardnr parameter:
    
    drivers/isdn/capi/kcapi.c: In function 'old_capi_manufacturer':
    drivers/isdn/capi/kcapi.c:1042:24: error: 'cdef.cardnr' may be used uninitialized in this function [-Werror=maybe-uninitialized]
       cparams.cardnr = cdef.cardnr;
    
    This has been broken since before the start of the git history, so
    either the value is not used for anything important, or the ioctl
    command doesn't get called in practice.
    
    Setting the cardnr to zero avoids the warning and makes sure
    we have consistent behavior.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f15394085d11c01a9b2a362068182b47b17e2fbe
Author: Herongguang (Stephen) <herongguang.he@huawei.com>
Date:   Mon Mar 27 15:21:17 2017 +0800

    KVM: pci-assign: do not map smm memory slot pages in vt-d page tables
    
    
    [ Upstream commit 0292e169b2d9c8377a168778f0b16eadb1f578fd ]
    
    or VM memory are not put thus leaked in kvm_iommu_unmap_memslots() when
    destroy VM.
    
    This is consistent with current vfio implementation.
    
    Signed-off-by: herongguang <herongguang.he@huawei.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27c2fa1ae0ea735b32376777f012ab92c4ee8650
Author: Reizer, Eyal <eyalr@ti.com>
Date:   Sun Mar 26 08:53:10 2017 +0000

    ARM: dts: am335x-evmsk: adjust mmc2 param to allow suspend
    
    
    [ Upstream commit 9bcf53f34a2c1cebc45cc12e273dcd5f51fbc099 ]
    
    mmc2 used for wl12xx was missing the keep-power-in suspend
    parameter. As a result the board couldn't reach suspend state.
    
    Signed-off-by: Eyal Reizer <eyalr@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 17b1ff10a1fc73967a420cc2c6f9819980bc120a
Author: Gao Feng <fgao@ikuai8.com>
Date:   Sat Mar 25 18:24:36 2017 +0800

    netfilter: nf_nat_snmp: Fix panic when snmp_trap_helper fails to register
    
    
    [ Upstream commit 75c689dca98851d65ef5a27e5ce26b625b68751c ]
    
    In the commit 93557f53e1fb ("netfilter: nf_conntrack: nf_conntrack snmp
    helper"), the snmp_helper is replaced by nf_nat_snmp_hook. So the
    snmp_helper is never registered. But it still tries to unregister the
    snmp_helper, it could cause the panic.
    
    Now remove the useless snmp_helper and the unregister call in the
    error handler.
    
    Fixes: 93557f53e1fb ("netfilter: nf_conntrack: nf_conntrack snmp helper")
    Signed-off-by: Gao Feng <fgao@ikuai8.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c9316d2f263d616bdf88e8b9fbfd76096236d7c
Author: Liping Zhang <zlpnobody@gmail.com>
Date:   Sat Mar 25 12:09:15 2017 +0800

    netfilter: nfnl_cthelper: fix a race when walk the nf_ct_helper_hash table
    
    
    [ Upstream commit 83d90219a5df8d950855ce73229a97b63605c317 ]
    
    The nf_ct_helper_hash table is protected by nf_ct_helper_mutex, while
    nfct_helper operation is protected by nfnl_lock(NFNL_SUBSYS_CTHELPER).
    So it's possible that one CPU is walking the nf_ct_helper_hash for
    cthelper add/get/del, another cpu is doing nf_conntrack_helpers_unregister
    at the same time. This is dangrous, and may cause use after free error.
    
    Note, delete operation will flush all cthelpers added via nfnetlink, so
    using rcu to do protect is not easy.
    
    Now introduce a dummy list to record all the cthelpers added via
    nfnetlink, then we can walk the dummy list instead of walking the
    nf_ct_helper_hash. Also, keep nfnl_cthelper_dump_table unchanged, it
    may be invoked without nfnl_lock(NFNL_SUBSYS_CTHELPER) held.
    
    Signed-off-by: Liping Zhang <zlpnobody@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3af547339068ce25c67b3c29844f966dfdaaa50e
Author: Alexey Khoroshilov <khoroshilov@ispras.ru>
Date:   Sat Mar 25 01:48:08 2017 +0300

    irda: vlsi_ir: fix check for DMA mapping errors
    
    
    [ Upstream commit 6ac3b77a6ffff7513ff86b684aa256ea01c0e5b5 ]
    
    vlsi_alloc_ring() checks for DMA mapping errors by comparing
    returned address with zero, while pci_dma_mapping_error() should be used.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52cd7920b7ac2617ffbfd6912e6488a0d3e34042
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Mon Feb 27 20:16:33 2017 +0200

    RDMA/iser: Fix possible mr leak on device removal event
    
    
    [ Upstream commit ea174c9573b0e0c8bc1a7a90fe9360ccb7aa9cbb ]
    
    When the rdma device is removed, we must cleanup all
    the rdma resources within the DEVICE_REMOVAL event
    handler to let the device teardown gracefully. When
    this happens with live I/O, some memory regions are
    occupied. Thus, track them too and dereg all the mr's.
    
    We are safe with mr access by iscsi_iser_cleanup_task.
    
    Reported-by: Raju Rangoju <rajur@chelsio.com>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
    Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85e54ef781b63796e1abfc3bfc3a765f87734fd4
Author: Alexander Duyck <alexander.h.duyck@intel.com>
Date:   Fri Mar 24 15:01:42 2017 -0700

    i40e: Do not enable NAPI on q_vectors that have no rings
    
    
    [ Upstream commit 13a8cd191a2b470cfd435b3b57dbd21aa65ff78c ]
    
    When testing the epoll w/ busy poll code I found that I could get into a
    state where the i40e driver had q_vectors w/ active NAPI that had no rings.
    This was resulting in a divide by zero error.  To correct it I am updating
    the driver code so that we only support NAPI on q_vectors that have 1 or
    more rings allocated to them.
    
    Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a04a7798a3e609a4a01596cbf4433fd095863b6
Author: Alexander Duyck <alexander.h.duyck@intel.com>
Date:   Fri Mar 24 09:38:03 2017 -0700

    net: Do not allow negative values for busy_read and busy_poll sysctl interfaces
    
    
    [ Upstream commit 95f255211396958c718aef8c45e3923b5211ea7b ]
    
    This change basically codifies what I think was already the limitations on
    the busy_poll and busy_read sysctl interfaces.  We weren't checking the
    lower bounds and as such could input negative values. The behavior when
    that was used was dependent on the architecture. In order to prevent any
    issues with that I am just disabling support for values less than 0 since
    this way we don't have to worry about any odd behaviors.
    
    By limiting the sysctl values this way it also makes it consistent with how
    we handle the SO_BUSY_POLL socket option since the value appears to be
    reported as a signed integer value and negative values are rejected.
    
    Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 359f7020464f22686fd0d64911ab4c91c0fb9566
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Mar 23 17:07:26 2017 +0100

    bna: avoid writing uninitialized data into hw registers
    
    
    [ Upstream commit a5af83925363eb85d467933e3d6ec5a87001eb7c ]
    
    The latest gcc-7 snapshot warns about bfa_ioc_send_enable/bfa_ioc_send_disable
    writing undefined values into the hardware registers:
    
    drivers/net/ethernet/brocade/bna/bfa_ioc.c: In function 'bfa_iocpf_sm_disabling_entry':
    arch/arm/include/asm/io.h:109:22: error: '*((void *)&disable_req+4)' is used uninitialized in this function [-Werror=uninitialized]
    arch/arm/include/asm/io.h:109:22: error: '*((void *)&disable_req+8)' is used uninitialized in this function [-Werror=uninitialized]
    
    The two functions look like they should do the same thing, but only one
    of them initializes the time stamp and clscode field. The fact that we
    only get a warning for one of the two functions seems to be arbitrary,
    based on the inlining decisions in the compiler.
    
    To address this, I'm making both functions do the same thing:
    
    - set the clscode from the ioc structure in both
    - set the time stamp from ktime_get_real_seconds (which also
      avoids the signed-integer overflow in 2038 and extends the
      well-defined behavior until 2106).
    - zero-fill the reserved field
    
    Fixes: 8b230ed8ec96 ("bna: Brocade 10Gb Ethernet device driver")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8acee491cfbd47a36cc5329fd8ee4aeb7f21cd8d
Author: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Date:   Thu Mar 23 14:55:09 2017 +0100

    s390/qeth: no ETH header for outbound AF_IUCV
    
    
    [ Upstream commit acd9776b5c45ef02d1a210969a6fcc058afb76e3 ]
    
    With AF_IUCV traffic, the skb passed to hard_start_xmit() has a 14 byte
    slot at skb->data, intended for an ETH header. qeth_l3_fill_af_iucv_hdr()
    fills this ETH header... and then immediately moves it to the
    skb's headroom, where it disappears and is never seen again.
    
    But it's still possible for us to return NETDEV_TX_BUSY after the skb has
    been modified. Since we didn't get a private copy of the skb, the next
    time the skb is delivered to hard_start_xmit() it no longer has the
    expected layout (we moved the ETH header to the headroom, so skb->data
    now starts at the IUCV_TRANS header). So when qeth_l3_fill_af_iucv_hdr()
    does another round of rebuilding, the resulting qeth header ends up
    all wrong. On transmission, the buffer is then rejected by
    the HiperSockets device with SBALF15 = x'04'.
    When this error is passed back to af_iucv as TX_NOTIFY_UNREACHABLE, it
    tears down the offending socket.
    
    As the ETH header for AF_IUCV serves no purpose, just align the code to
    what we do for IP traffic on L3 HiperSockets: keep the ETH header at
    skb->data, and pass down data_offset = ETH_HLEN to qeth_fill_buffer().
    When mapping the payload into the SBAL elements, the ETH header is then
    stripped off. This avoids the skb manipulations in
    qeth_l3_fill_af_iucv_hdr(), and any buffer re-entering hard_start_xmit()
    after NETDEV_TX_BUSY is now processed properly.
    
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ce4313f1279ce5aaa55ebb401a00efff9e299f6
Author: hayeswang <hayeswang@realtek.com>
Date:   Thu Mar 23 19:14:19 2017 +0800

    r8152: prevent the driver from transmitting packets with carrier off
    
    
    [ Upstream commit 2f25abe6bac573928a990ccbdac75873add8127e ]
    
    The linking status may be changed when autosuspend. And, after
    autoresume, the driver may try to transmit packets when the device
    is carrier off, because the interrupt transfer doesn't update the
    linking status, yet. And, if the device is in ALDPS mode, the device
    would stop working.
    
    The another similar case is
     1. unplug the cable.
     2. interrupt transfer queue a work_queue for linking change.
     3. device enters the ALDPS mode.
     4. a tx occurs before the work_queue is called.
    
    Signed-off-by: Hayes Wang <hayeswang@realtek.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19b1ad3a2e682a78f6bd734350465c44e1d5c99b
Author: Peter Stein <peter@stuntstein.dk>
Date:   Fri Feb 17 00:00:50 2017 -0800

    HID: xinmo: fix for out of range for THT 2P arcade controller.
    
    
    [ Upstream commit 9257821c5a1dc57ef3a37f7cbcebaf548395c964 ]
    
    There is a new clone of the XIN MO arcade controller which has same issue with
    out of range like the original.  This fix will solve the issue where 2
    directions on the joystick are not recognized by the new THT 2P arcade
    controller with device ID 0x75e1.  In details the new device ID is added the
    hid-id list and the hid-xinmo source code.
    
    Signed-off-by: Peter Stein <peter@stuntstein.dk>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ebfb08395800fa655b03cfdd76232aef0497b430
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Mar 23 16:03:11 2017 +0100

    hwmon: (asus_atk0110) fix uninitialized data access
    
    
    [ Upstream commit a2125d02443e9a4e68bcfd9f8004fa23239e8329 ]
    
    The latest gcc-7 snapshot adds a warning to point out that when
    atk_read_value_old or atk_read_value_new fails, we copy
    uninitialized data into sensor->cached_value:
    
    drivers/hwmon/asus_atk0110.c: In function 'atk_input_show':
    drivers/hwmon/asus_atk0110.c:651:26: error: 'value' may be used uninitialized in this function [-Werror=maybe-uninitialized]
    
    Adding an error check avoids this. All versions of the driver
    are affected.
    
    Fixes: 2c03d07ad54d ("hwmon: Add Asus ATK0110 support")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Luca Tettamanti <kronos.it@gmail.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e114c7b45625f6db6a30529f5d89b1b8dd0a367
Author: Rob Herring <robh@kernel.org>
Date:   Tue Mar 21 21:03:01 2017 -0500

    ARM: dts: ti: fix PCI bus dtc warnings
    
    
    [ Upstream commit 7d79f6098d82f8c09914d7799bc96891ad9c3baf ]
    
    dtc recently added PCI bus checks. Fix these warnings.
    
    Signed-off-by: Rob Herring <robh@kernel.org>
    Cc: "Benoît Cousson" <bcousson@baylibre.com>
    Cc: Tony Lindgren <tony@atomide.com>
    Cc: linux-omap@vger.kernel.org
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1fdf68b4f947be85d96ac835d86bbf063b454b4
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Thu Mar 23 05:30:08 2017 -0700

    KVM: VMX: Fix enable VPID conditions
    
    
    [ Upstream commit 08d839c4b134b8328ec42f2157a9ca4b93227c03 ]
    
    This can be reproduced by running L2 on L1, and disable VPID on L0
    if w/o commit "KVM: nVMX: Fix nested VPID vmx exec control", the L2
    crash as below:
    
    KVM: entry failed, hardware error 0x7
    EAX=00000000 EBX=00000000 ECX=00000000 EDX=000306c3
    ESI=00000000 EDI=00000000 EBP=00000000 ESP=00000000
    EIP=0000fff0 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
    ES =0000 00000000 0000ffff 00009300
    CS =f000 ffff0000 0000ffff 00009b00
    SS =0000 00000000 0000ffff 00009300
    DS =0000 00000000 0000ffff 00009300
    FS =0000 00000000 0000ffff 00009300
    GS =0000 00000000 0000ffff 00009300
    LDT=0000 00000000 0000ffff 00008200
    TR =0000 00000000 0000ffff 00008b00
    GDT=     00000000 0000ffff
    IDT=     00000000 0000ffff
    CR0=60000010 CR2=00000000 CR3=00000000 CR4=00000000
    DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
    DR6=00000000ffff0ff0 DR7=0000000000000400
    EFER=0000000000000000
    
    Reference SDM 30.3 INVVPID:
    
    Protected Mode Exceptions
    - #UD
      - If not in VMX operation.
      - If the logical processor does not support VPIDs (IA32_VMX_PROCBASED_CTLS2[37]=0).
      - If the logical processor supports VPIDs (IA32_VMX_PROCBASED_CTLS2[37]=1) but does
        not support the INVVPID instruction (IA32_VMX_EPT_VPID_CAP[32]=0).
    
    So we should check both VPID enable bit in vmx exec control and INVVPID support bit
    in vmx capability MSRs to enable VPID. This patch adds the guarantee to not enable
    VPID if either INVVPID or single-context/all-context invalidation is not exposed in
    vmx capability MSRs.
    
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit caa4cfd173b76b0b4a9ae894d438980daa235016
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Mon Mar 20 21:18:55 2017 -0700

    KVM: x86: correct async page present tracepoint
    
    
    [ Upstream commit 24dccf83a121b8a4ad5c2ad383a8184ef6c266ee ]
    
    After async pf setup successfully, there is a broadcast wakeup w/ special
    token 0xffffffff which tells vCPU that it should wake up all processes
    waiting for APFs though there is no real process waiting at the moment.
    
    The async page present tracepoint print prematurely and fails to catch the
    special token setup. This patch fixes it by moving the async page present
    tracepoint after the special token setup.
    
    Before patch:
    
    qemu-system-x86-8499  [006] ...1  5973.473292: kvm_async_pf_ready: token 0x0 gva 0x0
    
    After patch:
    
    qemu-system-x86-8499  [006] ...1  5973.473292: kvm_async_pf_ready: token 0xffffffff gva 0x0
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2849ef5dcefd73d7421fe6953c8f61bae2c208d4
Author: Dick Kennedy <dick.kennedy@broadcom.com>
Date:   Thu Mar 23 08:47:18 2017 -0400

    scsi: lpfc: Fix PT2PT PRLI reject
    
    
    [ Upstream commit a71e3cdcfce4880a4578915e110e3eaed1659765 ]
    
    lpfc cannot establish connection with targets that send PRLI in P2P
    configurations.
    
    If lpfc rejects a PRLI that is sent from a target the target will not
    resend and will reject the PRLI send from the initiator.
    
    [mkp: applied by hand]
    
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc9aec2faddfea6d217e062cde0e6b221dfc521a
Author: Patrice Chotard <patrice.chotard@st.com>
Date:   Thu Mar 16 18:26:02 2017 +0100

    pinctrl: st: add irq_request/release_resources callbacks
    
    
    [ Upstream commit e855fa9a65c40788b5069abb0d094537daa22e05 ]
    
    When using GPIO as IRQ source, the GPIO must be configured
    in INPUT. Callbacks dedicated for this was missing in
    pinctrl-st driver.
    
    This fix the following kernel error when trying to lock a gpio
    as IRQ:
    
    [    7.521095] gpio gpiochip7: (PIO11): gpiochip_lock_as_irq: tried to flag a GPIO set as output for IRQ
    [    7.526018] gpio gpiochip7: (PIO11): unable to lock HW IRQ 6 for IRQ
    [    7.529405] genirq: Failed to request resources for 0-0053 (irq 81) on irqchip GPIO
    
    Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d75c214cebc2c97894288da3b279ae118d4d59e
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Mar 22 08:57:15 2017 -0700

    inet: frag: release spinlock before calling icmp_send()
    
    
    [ Upstream commit ec4fbd64751de18729eaa816ec69e4b504b5a7a2 ]
    
    Dmitry reported a lockdep splat [1] (false positive) that we can fix
    by releasing the spinlock before calling icmp_send() from ip_expire()
    
    This is a false positive because sending an ICMP message can not
    possibly re-enter the IP frag engine.
    
    [1]
    [ INFO: possible circular locking dependency detected ]
    4.10.0+ #29 Not tainted
    -------------------------------------------------------
    modprobe/12392 is trying to acquire lock:
     (_xmit_ETHER#2){+.-...}, at: [<ffffffff837a8182>] spin_lock
    include/linux/spinlock.h:299 [inline]
     (_xmit_ETHER#2){+.-...}, at: [<ffffffff837a8182>] __netif_tx_lock
    include/linux/netdevice.h:3486 [inline]
     (_xmit_ETHER#2){+.-...}, at: [<ffffffff837a8182>]
    sch_direct_xmit+0x282/0x6d0 net/sched/sch_generic.c:180
    
    but task is already holding lock:
     (&(&q->lock)->rlock){+.-...}, at: [<ffffffff8389a4d1>] spin_lock
    include/linux/spinlock.h:299 [inline]
     (&(&q->lock)->rlock){+.-...}, at: [<ffffffff8389a4d1>]
    ip_expire+0x51/0x6c0 net/ipv4/ip_fragment.c:201
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #1 (&(&q->lock)->rlock){+.-...}:
           validate_chain kernel/locking/lockdep.c:2267 [inline]
           __lock_acquire+0x2149/0x3430 kernel/locking/lockdep.c:3340
           lock_acquire+0x2a1/0x630 kernel/locking/lockdep.c:3755
           __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
           _raw_spin_lock+0x33/0x50 kernel/locking/spinlock.c:151
           spin_lock include/linux/spinlock.h:299 [inline]
           ip_defrag+0x3a2/0x4130 net/ipv4/ip_fragment.c:669
           ip_check_defrag+0x4e3/0x8b0 net/ipv4/ip_fragment.c:713
           packet_rcv_fanout+0x282/0x800 net/packet/af_packet.c:1459
           deliver_skb net/core/dev.c:1834 [inline]
           dev_queue_xmit_nit+0x294/0xa90 net/core/dev.c:1890
           xmit_one net/core/dev.c:2903 [inline]
           dev_hard_start_xmit+0x16b/0xab0 net/core/dev.c:2923
           sch_direct_xmit+0x31f/0x6d0 net/sched/sch_generic.c:182
           __dev_xmit_skb net/core/dev.c:3092 [inline]
           __dev_queue_xmit+0x13e5/0x1e60 net/core/dev.c:3358
           dev_queue_xmit+0x17/0x20 net/core/dev.c:3423
           neigh_resolve_output+0x6b9/0xb10 net/core/neighbour.c:1308
           neigh_output include/net/neighbour.h:478 [inline]
           ip_finish_output2+0x8b8/0x15a0 net/ipv4/ip_output.c:228
           ip_do_fragment+0x1d93/0x2720 net/ipv4/ip_output.c:672
           ip_fragment.constprop.54+0x145/0x200 net/ipv4/ip_output.c:545
           ip_finish_output+0x82d/0xe10 net/ipv4/ip_output.c:314
           NF_HOOK_COND include/linux/netfilter.h:246 [inline]
           ip_output+0x1f0/0x7a0 net/ipv4/ip_output.c:404
           dst_output include/net/dst.h:486 [inline]
           ip_local_out+0x95/0x170 net/ipv4/ip_output.c:124
           ip_send_skb+0x3c/0xc0 net/ipv4/ip_output.c:1492
           ip_push_pending_frames+0x64/0x80 net/ipv4/ip_output.c:1512
           raw_sendmsg+0x26de/0x3a00 net/ipv4/raw.c:655
           inet_sendmsg+0x164/0x5b0 net/ipv4/af_inet.c:761
           sock_sendmsg_nosec net/socket.c:633 [inline]
           sock_sendmsg+0xca/0x110 net/socket.c:643
           ___sys_sendmsg+0x4a3/0x9f0 net/socket.c:1985
           __sys_sendmmsg+0x25c/0x750 net/socket.c:2075
           SYSC_sendmmsg net/socket.c:2106 [inline]
           SyS_sendmmsg+0x35/0x60 net/socket.c:2101
           do_syscall_64+0x2e8/0x930 arch/x86/entry/common.c:281
           return_from_SYSCALL_64+0x0/0x7a
    
    -> #0 (_xmit_ETHER#2){+.-...}:
           check_prev_add kernel/locking/lockdep.c:1830 [inline]
           check_prevs_add+0xa8f/0x19f0 kernel/locking/lockdep.c:1940
           validate_chain kernel/locking/lockdep.c:2267 [inline]
           __lock_acquire+0x2149/0x3430 kernel/locking/lockdep.c:3340
           lock_acquire+0x2a1/0x630 kernel/locking/lockdep.c:3755
           __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
           _raw_spin_lock+0x33/0x50 kernel/locking/spinlock.c:151
           spin_lock include/linux/spinlock.h:299 [inline]
           __netif_tx_lock include/linux/netdevice.h:3486 [inline]
           sch_direct_xmit+0x282/0x6d0 net/sched/sch_generic.c:180
           __dev_xmit_skb net/core/dev.c:3092 [inline]
           __dev_queue_xmit+0x13e5/0x1e60 net/core/dev.c:3358
           dev_queue_xmit+0x17/0x20 net/core/dev.c:3423
           neigh_hh_output include/net/neighbour.h:468 [inline]
           neigh_output include/net/neighbour.h:476 [inline]
           ip_finish_output2+0xf6c/0x15a0 net/ipv4/ip_output.c:228
           ip_finish_output+0xa29/0xe10 net/ipv4/ip_output.c:316
           NF_HOOK_COND include/linux/netfilter.h:246 [inline]
           ip_output+0x1f0/0x7a0 net/ipv4/ip_output.c:404
           dst_output include/net/dst.h:486 [inline]
           ip_local_out+0x95/0x170 net/ipv4/ip_output.c:124
           ip_send_skb+0x3c/0xc0 net/ipv4/ip_output.c:1492
           ip_push_pending_frames+0x64/0x80 net/ipv4/ip_output.c:1512
           icmp_push_reply+0x372/0x4d0 net/ipv4/icmp.c:394
           icmp_send+0x156c/0x1c80 net/ipv4/icmp.c:754
           ip_expire+0x40e/0x6c0 net/ipv4/ip_fragment.c:239
           call_timer_fn+0x241/0x820 kernel/time/timer.c:1268
           expire_timers kernel/time/timer.c:1307 [inline]
           __run_timers+0x960/0xcf0 kernel/time/timer.c:1601
           run_timer_softirq+0x21/0x80 kernel/time/timer.c:1614
           __do_softirq+0x31f/0xbe7 kernel/softirq.c:284
           invoke_softirq kernel/softirq.c:364 [inline]
           irq_exit+0x1cc/0x200 kernel/softirq.c:405
           exiting_irq arch/x86/include/asm/apic.h:657 [inline]
           smp_apic_timer_interrupt+0x76/0xa0 arch/x86/kernel/apic/apic.c:962
           apic_timer_interrupt+0x93/0xa0 arch/x86/entry/entry_64.S:707
           __read_once_size include/linux/compiler.h:254 [inline]
           atomic_read arch/x86/include/asm/atomic.h:26 [inline]
           rcu_dynticks_curr_cpu_in_eqs kernel/rcu/tree.c:350 [inline]
           __rcu_is_watching kernel/rcu/tree.c:1133 [inline]
           rcu_is_watching+0x83/0x110 kernel/rcu/tree.c:1147
           rcu_read_lock_held+0x87/0xc0 kernel/rcu/update.c:293
           radix_tree_deref_slot include/linux/radix-tree.h:238 [inline]
           filemap_map_pages+0x6d4/0x1570 mm/filemap.c:2335
           do_fault_around mm/memory.c:3231 [inline]
           do_read_fault mm/memory.c:3265 [inline]
           do_fault+0xbd5/0x2080 mm/memory.c:3370
           handle_pte_fault mm/memory.c:3600 [inline]
           __handle_mm_fault+0x1062/0x2cb0 mm/memory.c:3714
           handle_mm_fault+0x1e2/0x480 mm/memory.c:3751
           __do_page_fault+0x4f6/0xb60 arch/x86/mm/fault.c:1397
           do_page_fault+0x54/0x70 arch/x86/mm/fault.c:1460
           page_fault+0x28/0x30 arch/x86/entry/entry_64.S:1011
    
    other info that might help us debug this:
    
     Possible unsafe locking scenario:
    
           CPU0                    CPU1
           ----                    ----
      lock(&(&q->lock)->rlock);
                                   lock(_xmit_ETHER#2);
                                   lock(&(&q->lock)->rlock);
      lock(_xmit_ETHER#2);
    
     *** DEADLOCK ***
    
    10 locks held by modprobe/12392:
     #0:  (&mm->mmap_sem){++++++}, at: [<ffffffff81329758>]
    __do_page_fault+0x2b8/0xb60 arch/x86/mm/fault.c:1336
     #1:  (rcu_read_lock){......}, at: [<ffffffff8188cab6>]
    filemap_map_pages+0x1e6/0x1570 mm/filemap.c:2324
     #2:  (&(ptlock_ptr(page))->rlock#2){+.+...}, at: [<ffffffff81984a78>]
    spin_lock include/linux/spinlock.h:299 [inline]
     #2:  (&(ptlock_ptr(page))->rlock#2){+.+...}, at: [<ffffffff81984a78>]
    pte_alloc_one_map mm/memory.c:2944 [inline]
     #2:  (&(ptlock_ptr(page))->rlock#2){+.+...}, at: [<ffffffff81984a78>]
    alloc_set_pte+0x13b8/0x1b90 mm/memory.c:3072
     #3:  (((&q->timer))){+.-...}, at: [<ffffffff81627e72>]
    lockdep_copy_map include/linux/lockdep.h:175 [inline]
     #3:  (((&q->timer))){+.-...}, at: [<ffffffff81627e72>]
    call_timer_fn+0x1c2/0x820 kernel/time/timer.c:1258
     #4:  (&(&q->lock)->rlock){+.-...}, at: [<ffffffff8389a4d1>] spin_lock
    include/linux/spinlock.h:299 [inline]
     #4:  (&(&q->lock)->rlock){+.-...}, at: [<ffffffff8389a4d1>]
    ip_expire+0x51/0x6c0 net/ipv4/ip_fragment.c:201
     #5:  (rcu_read_lock){......}, at: [<ffffffff8389a633>]
    ip_expire+0x1b3/0x6c0 net/ipv4/ip_fragment.c:216
     #6:  (slock-AF_INET){+.-...}, at: [<ffffffff839b3313>] spin_trylock
    include/linux/spinlock.h:309 [inline]
     #6:  (slock-AF_INET){+.-...}, at: [<ffffffff839b3313>] icmp_xmit_lock
    net/ipv4/icmp.c:219 [inline]
     #6:  (slock-AF_INET){+.-...}, at: [<ffffffff839b3313>]
    icmp_send+0x803/0x1c80 net/ipv4/icmp.c:681
     #7:  (rcu_read_lock_bh){......}, at: [<ffffffff838ab9a1>]
    ip_finish_output2+0x2c1/0x15a0 net/ipv4/ip_output.c:198
     #8:  (rcu_read_lock_bh){......}, at: [<ffffffff836d1dee>]
    __dev_queue_xmit+0x23e/0x1e60 net/core/dev.c:3324
     #9:  (dev->qdisc_running_key ?: &qdisc_running_key){+.....}, at:
    [<ffffffff836d3a27>] dev_queue_xmit+0x17/0x20 net/core/dev.c:3423
    
    stack backtrace:
    CPU: 0 PID: 12392 Comm: modprobe Not tainted 4.10.0+ #29
    Hardware name: Google Google Compute Engine/Google Compute Engine,
    BIOS Google 01/01/2011
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:16 [inline]
     dump_stack+0x2ee/0x3ef lib/dump_stack.c:52
     print_circular_bug+0x307/0x3b0 kernel/locking/lockdep.c:1204
     check_prev_add kernel/locking/lockdep.c:1830 [inline]
     check_prevs_add+0xa8f/0x19f0 kernel/locking/lockdep.c:1940
     validate_chain kernel/locking/lockdep.c:2267 [inline]
     __lock_acquire+0x2149/0x3430 kernel/locking/lockdep.c:3340
     lock_acquire+0x2a1/0x630 kernel/locking/lockdep.c:3755
     __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
     _raw_spin_lock+0x33/0x50 kernel/locking/spinlock.c:151
     spin_lock include/linux/spinlock.h:299 [inline]
     __netif_tx_lock include/linux/netdevice.h:3486 [inline]
     sch_direct_xmit+0x282/0x6d0 net/sched/sch_generic.c:180
     __dev_xmit_skb net/core/dev.c:3092 [inline]
     __dev_queue_xmit+0x13e5/0x1e60 net/core/dev.c:3358
     dev_queue_xmit+0x17/0x20 net/core/dev.c:3423
     neigh_hh_output include/net/neighbour.h:468 [inline]
     neigh_output include/net/neighbour.h:476 [inline]
     ip_finish_output2+0xf6c/0x15a0 net/ipv4/ip_output.c:228
     ip_finish_output+0xa29/0xe10 net/ipv4/ip_output.c:316
     NF_HOOK_COND include/linux/netfilter.h:246 [inline]
     ip_output+0x1f0/0x7a0 net/ipv4/ip_output.c:404
     dst_output include/net/dst.h:486 [inline]
     ip_local_out+0x95/0x170 net/ipv4/ip_output.c:124
     ip_send_skb+0x3c/0xc0 net/ipv4/ip_output.c:1492
     ip_push_pending_frames+0x64/0x80 net/ipv4/ip_output.c:1512
     icmp_push_reply+0x372/0x4d0 net/ipv4/icmp.c:394
     icmp_send+0x156c/0x1c80 net/ipv4/icmp.c:754
     ip_expire+0x40e/0x6c0 net/ipv4/ip_fragment.c:239
     call_timer_fn+0x241/0x820 kernel/time/timer.c:1268
     expire_timers kernel/time/timer.c:1307 [inline]
     __run_timers+0x960/0xcf0 kernel/time/timer.c:1601
     run_timer_softirq+0x21/0x80 kernel/time/timer.c:1614
     __do_softirq+0x31f/0xbe7 kernel/softirq.c:284
     invoke_softirq kernel/softirq.c:364 [inline]
     irq_exit+0x1cc/0x200 kernel/softirq.c:405
     exiting_irq arch/x86/include/asm/apic.h:657 [inline]
     smp_apic_timer_interrupt+0x76/0xa0 arch/x86/kernel/apic/apic.c:962
     apic_timer_interrupt+0x93/0xa0 arch/x86/entry/entry_64.S:707
    RIP: 0010:__read_once_size include/linux/compiler.h:254 [inline]
    RIP: 0010:atomic_read arch/x86/include/asm/atomic.h:26 [inline]
    RIP: 0010:rcu_dynticks_curr_cpu_in_eqs kernel/rcu/tree.c:350 [inline]
    RIP: 0010:__rcu_is_watching kernel/rcu/tree.c:1133 [inline]
    RIP: 0010:rcu_is_watching+0x83/0x110 kernel/rcu/tree.c:1147
    RSP: 0000:ffff8801c391f120 EFLAGS: 00000a03 ORIG_RAX: ffffffffffffff10
    RAX: dffffc0000000000 RBX: ffff8801c391f148 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: 000055edd4374000 RDI: ffff8801dbe1ae0c
    RBP: ffff8801c391f1a0 R08: 0000000000000002 R09: 0000000000000000
    R10: dffffc0000000000 R11: 0000000000000002 R12: 1ffff10038723e25
    R13: ffff8801dbe1ae00 R14: ffff8801c391f680 R15: dffffc0000000000
     </IRQ>
     rcu_read_lock_held+0x87/0xc0 kernel/rcu/update.c:293
     radix_tree_deref_slot include/linux/radix-tree.h:238 [inline]
     filemap_map_pages+0x6d4/0x1570 mm/filemap.c:2335
     do_fault_around mm/memory.c:3231 [inline]
     do_read_fault mm/memory.c:3265 [inline]
     do_fault+0xbd5/0x2080 mm/memory.c:3370
     handle_pte_fault mm/memory.c:3600 [inline]
     __handle_mm_fault+0x1062/0x2cb0 mm/memory.c:3714
     handle_mm_fault+0x1e2/0x480 mm/memory.c:3751
     __do_page_fault+0x4f6/0xb60 arch/x86/mm/fault.c:1397
     do_page_fault+0x54/0x70 arch/x86/mm/fault.c:1460
     page_fault+0x28/0x30 arch/x86/entry/entry_64.S:1011
    RIP: 0033:0x7f83172f2786
    RSP: 002b:00007fffe859ae80 EFLAGS: 00010293
    RAX: 000055edd4373040 RBX: 00007f83175111c8 RCX: 000055edd4373238
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00007f8317510970
    RBP: 00007fffe859afd0 R08: 0000000000000009 R09: 0000000000000000
    R10: 0000000000000064 R11: 0000000000000000 R12: 000055edd4373040
    R13: 0000000000000000 R14: 00007fffe859afe8 R15: 0000000000000000
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aba55cb03579f10316fe04806c1854bfff1f57d8
Author: Jeffy Chen <jeffy.chen@rock-chips.com>
Date:   Tue Mar 21 15:07:10 2017 +0800

    netfilter: nfnl_cthelper: Fix memory leak
    
    
    [ Upstream commit f83bf8da1135ca635aac8f062cad3f001fcf3a26 ]
    
    We have memory leaks of nf_conntrack_helper & expect_policy.
    
    Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9fd3306a5afe33fe4ca7fb4d6954475a772a382
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Tue Mar 21 13:32:37 2017 +0100

    netfilter: nfnl_cthelper: fix runtime expectation policy updates
    
    
    [ Upstream commit 2c422257550f123049552b39f7af6e3428a60f43 ]
    
    We only allow runtime updates of expectation policies for timeout and
    maximum number of expectations, otherwise reject the update.
    
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Acked-by: Liping Zhang <zlpnobody@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e598cdd240a071888dd8ac485233b5da7a609f29
Author: Gustavo A. R. Silva <garsilva@embeddedor.com>
Date:   Fri Mar 10 15:39:32 2017 -0600

    usb: gadget: udc: remove pointer dereference after free
    
    
    [ Upstream commit 1f459262b0e1649a1e5ad12fa4c66eb76c2220ce ]
    
    Remove pointer dereference after free.
    
    Addresses-Coverity-ID: 1091173
    Acked-by: Michal Nazarewicz <mina86@mina86.com>
    Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c8496bfdb0e69fb91152af253b29946b148da7f
Author: Roger Quadros <rogerq@ti.com>
Date:   Wed Mar 8 16:05:44 2017 +0200

    usb: gadget: f_uvc: Sanity check wMaxPacketSize for SuperSpeed
    
    
    [ Upstream commit 16bb05d98c904a4f6c5ce7e2d992299f794acbf2 ]
    
    As per USB3.0 Specification "Table 9-20. Standard Endpoint Descriptor",
    for interrupt and isochronous endpoints, wMaxPacketSize must be set to
    1024 if the endpoint defines bMaxBurst to be greater than zero.
    
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Roger Quadros <rogerq@ti.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6c0e23a7fef318682b090a40daaba8abd0cf0d3
Author: Tony Lindgren <tony@atomide.com>
Date:   Sun Mar 19 09:19:57 2017 -0700

    net: qmi_wwan: Add USB IDs for MDM6600 modem on Motorola Droid 4
    
    
    [ Upstream commit 4071898bf0f4d79ff353db327af2a15123272548 ]
    
    This gets qmicli working with the MDM6600 modem.
    
    Cc: Bjørn Mork <bjorn@mork.no>
    Reviewed-by: Sebastian Reichel <sre@kernel.org>
    Tested-by: Sebastian Reichel <sre@kernel.org>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Acked-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9a4a18a01fc8c96028a4062bcd686a678bb3266
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Mar 17 23:52:35 2017 +0300

    bna: integer overflow bug in debugfs
    
    
    [ Upstream commit 13e2d5187f6b965ba3556caedb914baf81b98ed2 ]
    
    We could allocate less memory than intended because we do:
    
            bnad->regdata = kzalloc(len << 2, GFP_KERNEL);
    
    The shift can overflow leading to a crash.  This is debugfs code so the
    impact is very small.
    
    Fixes: 7afc5dbde091 ("bna: Add debugfs interface.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Rasesh Mody <rasesh.mody@cavium.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ffde339b95f5729e9d57ba0802b50a611854b728
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Mar 17 08:05:28 2017 -0700

    sch_dsmark: fix invalid skb_cow() usage
    
    
    [ Upstream commit aea92fb2e09e29653b023d4254ac9fbf94221538 ]
    
    skb_cow(skb, sizeof(ip header)) is not very helpful in this context.
    
    First we need to use pskb_may_pull() to make sure the ip header
    is in skb linear part, then use skb_try_make_writable() to
    address clones issues.
    
    Fixes: 4c30719f4f55 ("[PKT_SCHED] dsmark: handle cloned and non-linear skb's")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bf8a4f179ed5c9775f0970fc652cc04c0994186
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Tue Mar 14 18:25:57 2017 +0800

    crypto: deadlock between crypto_alg_sem/rtnl_mutex/genl_mutex
    
    
    [ Upstream commit 8a0f5ccfb33b0b8b51de65b7b3bf342ba10b4fb6 ]
    
    On Tue, Mar 14, 2017 at 10:44:10AM +0100, Dmitry Vyukov wrote:
    >
    > Yes, please.
    > Disregarding some reports is not a good way long term.
    
    Please try this patch.
    
    ---8<---
    Subject: netlink: Annotate nlk cb_mutex by protocol
    
    Currently all occurences of nlk->cb_mutex are annotated by lockdep
    as a single class.  This causes a false lcokdep cycle involving
    genl and crypto_user.
    
    This patch fixes it by dividing cb_mutex into individual classes
    based on the netlink protocol.  As genl and crypto_user do not
    use the same netlink protocol this breaks the false dependency
    loop.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a88b064826f071dd9e722a9687c8aafaaa3b40ee
Author: hayeswang <hayeswang@realtek.com>
Date:   Tue Mar 14 14:15:20 2017 +0800

    r8152: fix the list rx_done may be used without initialization
    
    
    [ Upstream commit 98d068ab52b4b11d403995ed14154660797e7136 ]
    
    The list rx_done would be initialized when the linking on occurs.
    Therefore, if a napi is scheduled without any linking on before,
    the following kernel panic would happen.
    
            BUG: unable to handle kernel NULL pointer dereference at 000000000000008
            IP: [<ffffffffc085efde>] r8152_poll+0xe1e/0x1210 [r8152]
            PGD 0
            Oops: 0002 [#1] SMP
    
    Signed-off-by: Hayes Wang <hayeswang@realtek.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 125325fe1c19b32db7bded22c926c518e6f97dd2
Author: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Date:   Sun Mar 19 00:51:59 2017 +0530

    cpuidle: Validate cpu_dev in cpuidle_add_sysfs()
    
    
    [ Upstream commit ad0a45fd9c14feebd000b6e84189d0edff265170 ]
    
    If a given cpu is not in cpu_present and cpu hotplug
    is disabled, arch can skip setting up the cpu_dev.
    
    Arch cpuidle driver should pass correct cpu mask
    for registration, but failing to do so by the driver
    causes error to propagate and crash like this:
    
    [   30.076045] Unable to handle kernel paging request for data at address 0x00000048
    [   30.076100] Faulting instruction address: 0xc0000000007b2f30
    cpu 0x4d: Vector: 300 (Data Access) at [c000003feb18b670]
        pc: c0000000007b2f30: kobject_get+0x20/0x70
        lr: c0000000007b3c94: kobject_add_internal+0x54/0x3f0
        sp: c000003feb18b8f0
       msr: 9000000000009033
       dar: 48
     dsisr: 40000000
      current = 0xc000003fd2ed8300
      paca    = 0xc00000000fbab500   softe: 0        irq_happened: 0x01
        pid   = 1, comm = swapper/0
    Linux version 4.11.0-rc2-svaidy+ (sv@sagarika) (gcc version 6.2.0
    20161005 (Ubuntu 6.2.0-5ubuntu12) ) #10 SMP Sun Mar 19 00:08:09 IST 2017
    enter ? for help
    [c000003feb18b960] c0000000007b3c94 kobject_add_internal+0x54/0x3f0
    [c000003feb18b9f0] c0000000007b43a4 kobject_init_and_add+0x64/0xa0
    [c000003feb18ba70] c000000000e284f4 cpuidle_add_sysfs+0xb4/0x130
    [c000003feb18baf0] c000000000e26038 cpuidle_register_device+0x118/0x1c0
    [c000003feb18bb30] c000000000e26c48 cpuidle_register+0x78/0x120
    [c000003feb18bbc0] c00000000168fd9c powernv_processor_idle_init+0x110/0x1c4
    [c000003feb18bc40] c00000000000cff8 do_one_initcall+0x68/0x1d0
    [c000003feb18bd00] c0000000016242f4 kernel_init_freeable+0x280/0x360
    [c000003feb18bdc0] c00000000000d864 kernel_init+0x24/0x160
    [c000003feb18be30] c00000000000b4e8 ret_from_kernel_thread+0x5c/0x74
    
    Validating cpu_dev fixes the crash and reports correct error message like:
    
    [   30.163506] Failed to register cpuidle device for cpu136
    [   30.173329] Registration of powernv driver failed.
    
    Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
    [ rjw: Comment massage ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a23a447e47ccb333a392e9e132c231be0d5953db
Author: Jon Medhurst <tixy@linaro.org>
Date:   Thu Mar 2 13:04:09 2017 +0000

    arm: kprobes: Align stack to 8-bytes in test code
    
    
    [ Upstream commit 974310d047f3c7788a51d10c8d255eebdb1fa857 ]
    
    kprobes test cases need to have a stack that is aligned to an 8-byte
    boundary because they call other functions (and the ARM ABI mandates
    that alignment) and because test cases include 64-bit accesses to the
    stack. Unfortunately, GCC doesn't ensure this alignment for inline
    assembler and for the code in question seems to always misalign it by
    pushing just the LR register onto the stack. We therefore need to
    explicitly perform stack alignment at the start of each test case.
    
    Without this fix, some test cases will generate alignment faults on
    systems where alignment is enforced. Even if the kernel is configured to
    handle these faults in software, triggering them is ugly. It also
    exposes limitations in the fault handling code which doesn't cope with
    writes to the stack. E.g. when handling this instruction
    
       strd r6, [sp, #-64]!
    
    the fault handling code will write to a stack location below the SP
    value at the point the fault occurred, which coincides with where the
    exception handler has pushed the saved register context. This results in
    corruption of those registers.
    
    Signed-off-by: Jon Medhurst <tixy@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f7855a522228787e2f73c279d7c0a3a6d3a2323
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Tue Feb 14 00:05:59 2017 +0900

    arm: kprobes: Fix the return address of multiple kretprobes
    
    
    [ Upstream commit 06553175f585b52509c7df37d6f4a50aacb7b211 ]
    
    This is arm port of commit 737480a0d525 ("kprobes/x86:
    Fix the return address of multiple kretprobes").
    
    Fix the return address of subsequent kretprobes when multiple
    kretprobes are set on the same function.
    
    For example:
    
      # cd /sys/kernel/debug/tracing
      # echo "r:event1 sys_symlink" > kprobe_events
      # echo "r:event2 sys_symlink" >> kprobe_events
      # echo 1 > events/kprobes/enable
      # ln -s /tmp/foo /tmp/bar
    
     (without this patch)
    
      # cat trace | grep -v ^#
                  ln-82    [000] dn.2    68.446525: event1: (kretprobe_trampoline+0x0/0x18 <- SyS_symlink)
                  ln-82    [000] dn.2    68.447831: event2: (ret_fast_syscall+0x0/0x1c <- SyS_symlink)
    
     (with this patch)
    
      # cat trace | grep -v ^#
                  ln-81    [000] dn.1    39.463469: event1: (ret_fast_syscall+0x0/0x1c <- SyS_symlink)
                  ln-81    [000] dn.1    39.464701: event2: (ret_fast_syscall+0x0/0x1c <- SyS_symlink)
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: KUMANO Syuhei <kumano.prog@gmail.com>
    Signed-off-by: Jon Medhurst <tixy@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 779214d0eaca81c7ba85d423865a42c4c4dacf75
Author: Jaroslav Kysela <perex@perex.cz>
Date:   Thu Mar 9 13:30:09 2017 +0100

    ALSA: hda - add support for docking station for HP 840 G3
    
    
    [ Upstream commit cc3a47a248d7791ef0d2c81a35c46769e55e4c6c ]
    
    This tested patch adds missing initialization for Line-In/Out PINs for
    the docking station for HP 840 G3.
    
    Signed-off-by: Jaroslav Kysela <perex@perex.cz>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a66598014db7e94193044b3a9a4a79629db2be2
Author: Jaroslav Kysela <perex@perex.cz>
Date:   Thu Mar 9 13:29:13 2017 +0100

    ALSA: hda - add support for docking station for HP 820 G2
    
    
    [ Upstream commit 04d5466a976b096364a39a63ac264c1b3a5f8fa1 ]
    
    This tested patch adds missing initialization for Line-In/Out PINs for
    the docking station for HP 820 G2.
    
    Signed-off-by: Jaroslav Kysela <perex@perex.cz>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b9d9ec0d8261bb9b12f858e66f0c84cd2a6a3bb
Author: Aaron Lu <aaron.lu@intel.com>
Date:   Thu Aug 11 15:44:30 2016 +0800

    x86/irq: Do not substract irq_tlb_count from irq_call_count
    
    commit 82ba4faca1bffad429f15c90c980ffd010366c25 upstream.
    
    Since commit:
    
      52aec3308db8 ("x86/tlb: replace INVALIDATE_TLB_VECTOR by CALL_FUNCTION_VECTOR")
    
    the TLB remote shootdown is done through call function vector. That
    commit didn't take care of irq_tlb_count, which a later commit:
    
      fd0f5869724f ("x86: Distinguish TLB shootdown interrupts from other functions call interrupts")
    
    ... tried to fix.
    
    The fix assumes every increase of irq_tlb_count has a corresponding
    increase of irq_call_count. So the irq_call_count is always bigger than
    irq_tlb_count and we could substract irq_tlb_count from irq_call_count.
    
    Unfortunately this is not true for the smp_call_function_single() case.
    The IPI is only sent if the target CPU's call_single_queue is empty when
    adding a csd into it in generic_exec_single. That means if two threads
    are both adding flush tlb csds to the same CPU's call_single_queue, only
    one IPI is sent. In other words, the irq_call_count is incremented by 1
    but irq_tlb_count is incremented by 2. Over time, irq_tlb_count will be
    bigger than irq_call_count and the substract will produce a very large
    irq_call_count value due to overflow.
    
    Considering that:
    
      1) it's not worth to send more IPIs for the sake of accurate counting of
         irq_call_count in generic_exec_single();
    
      2) it's not easy to tell if the call function interrupt is for TLB
         shootdown in __smp_call_function_single_interrupt().
    
    Not to exclude TLB shootdown from call function count seems to be the
    simplest fix and this patch just does that.
    
    This bug was found by LKP's cyclic performance regression tracking recently
    with the vm-scalability test suite. I have bisected to commit:
    
      3dec0ba0be6a ("mm/rmap: share the i_mmap_rwsem")
    
    This commit didn't do anything wrong but revealed the irq_call_count
    problem. IIUC, the commit makes rwc->remap_one in rmap_walk_file
    concurrent with multiple threads.  When remap_one is try_to_unmap_one(),
    then multiple threads could queue flush TLB to the same CPU but only
    one IPI will be sent.
    
    Since the commit was added in Linux v3.19, the counting problem only
    shows up from v3.19 onwards.
    
    Signed-off-by: Aaron Lu <aaron.lu@intel.com>
    Cc: Alex Shi <alex.shi@linaro.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Huang Ying <ying.huang@intel.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tomoki Sekiyama <tomoki.sekiyama.qu@hitachi.com>
    Link: http://lkml.kernel.org/r/20160811074430.GA18163@aaronlu.sh.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18a5348d49afcfc2b95da939143c9420edd78b9e
Author: Andy Lutomirski <luto@kernel.org>
Date:   Fri Jun 9 11:49:15 2017 -0700

    sched/core: Idle_task_exit() shouldn't use switch_mm_irqs_off()
    
    commit 252d2a4117bc181b287eeddf848863788da733ae upstream.
    
    idle_task_exit() can be called with IRQs on x86 on and therefore
    should use switch_mm(), not switch_mm_irqs_off().
    
    This doesn't seem to cause any problems right now, but it will
    confuse my upcoming TLB flush changes.  Nonetheless, I think it
    should be backported because it's trivial.  There won't be any
    meaningful performance impact because idle_task_exit() is only
    used when offlining a CPU.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Fixes: f98db6013c55 ("sched/core: Add switch_mm_irqs_off() and use it in the scheduler")
    Link: http://lkml.kernel.org/r/ca3d1a9fa93a0b49f5a8ff729eda3640fb6abdf9.1497034141.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c22d4b4d1c7fcc0d9eb4d8618d86c554c48ed9c0
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Fri May 13 15:30:13 2016 +0200

    ARM: Hide finish_arch_post_lock_switch() from modules
    
    commit ef0491ea17f8019821c7e9c8e801184ecf17f85a upstream.
    
    The introduction of switch_mm_irqs_off() brought back an old bug
    regarding the use of preempt_enable_no_resched:
    
    As part of:
    
      62b94a08da1b ("sched/preempt: Take away preempt_enable_no_resched() from modules")
    
    the definition of preempt_enable_no_resched() is only available in
    built-in code, not in loadable modules, so we can't generally use
    it from header files.
    
    However, the ARM version of finish_arch_post_lock_switch()
    calls preempt_enable_no_resched() and is defined as a static
    inline function in asm/mmu_context.h. This in turn means we cannot
    include asm/mmu_context.h from modules.
    
    With today's tip tree, asm/mmu_context.h gets included from
    linux/mmu_context.h, which is normally the exact pattern one would
    expect, but unfortunately, linux/mmu_context.h can be included from
    the vhost driver that is a loadable module, now causing this compile
    time error with modular configs:
    
      In file included from ../include/linux/mmu_context.h:4:0,
                       from ../drivers/vhost/vhost.c:18:
      ../arch/arm/include/asm/mmu_context.h: In function 'finish_arch_post_lock_switch':
      ../arch/arm/include/asm/mmu_context.h:88:3: error: implicit declaration of function 'preempt_enable_no_resched' [-Werror=implicit-function-declaration]
         preempt_enable_no_resched();
    
    Andy already tried to fix the bug by including linux/preempt.h
    from asm/mmu_context.h, but that didn't help. Arnd suggested reordering
    the header files, which wasn't popular, so let's use this
    workaround instead:
    
    The finish_arch_post_lock_switch() definition is now also hidden
    inside of #ifdef MODULE, so we don't see anything referencing
    preempt_enable_no_resched() from a header file. I've built a
    few hundred randconfig kernels with this, and did not see any
    new problems.
    
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Russell King - ARM Linux <linux@armlinux.org.uk>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: linux-arm-kernel@lists.infradead.org
    Fixes: f98db6013c55 ("sched/core: Add switch_mm_irqs_off() and use it in the scheduler")
    Link: http://lkml.kernel.org/r/1463146234-161304-1-git-send-email-arnd@arndb.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ead44fd2525ed97e5362a806d312a0e3b0ea445
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Apr 26 09:39:09 2016 -0700

    x86/mm, sched/core: Turn off IRQs in switch_mm()
    
    commit 078194f8e9fe3cf54c8fd8bded48a1db5bd8eb8a upstream.
    
    Potential races between switch_mm() and TLB-flush or LDT-flush IPIs
    could be very messy.  AFAICT the code is currently okay, whether by
    accident or by careful design, but enabling PCID will make it
    considerably more complicated and will no longer be obviously safe.
    
    Fix it with a big hammer: run switch_mm() with IRQs off.
    
    To avoid a performance hit in the scheduler, we take advantage of
    our knowledge that the scheduler already has IRQs disabled when it
    calls switch_mm().
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/f19baf759693c9dcae64bbff76189db77cb13398.1461688545.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70a39c7fd167399fde76aeac314dce026a255b49
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Apr 26 09:39:08 2016 -0700

    x86/mm, sched/core: Uninline switch_mm()
    
    commit 69c0319aabba45bcf33178916a2f06967b4adede upstream.
    
    It's fairly large and it has quite a few callers.  This may also
    help untangle some headers down the road.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/54f3367803e7f80b2be62c8a21879aa74b1a5f57.1461688545.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83cc4b50e3a977915666ade0b951ba446e7181bd
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Apr 26 09:39:07 2016 -0700

    x86/mm: Build arch/x86/mm/tlb.c even on !SMP
    
    commit e1074888c326038340a1ada9129d679e661f2ea6 upstream.
    
    Currently all of the functions that live in tlb.c are inlined on
    !SMP builds.  One can debate whether this is a good idea (in many
    respects the code in tlb.c is better than the inlined UP code).
    
    Regardless, I want to add code that needs to be built on UP and SMP
    kernels and relates to tlb flushing, so arrange for tlb.c to be
    compiled unconditionally.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/f0d778f0d828fc46e5d1946bca80f0aaf9abf032.1461688545.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 425f13a36652523d604fd96413d6c438d415dd70
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Apr 26 09:39:06 2016 -0700

    sched/core: Add switch_mm_irqs_off() and use it in the scheduler
    
    commit f98db6013c557c216da5038d9c52045be55cd039 upstream.
    
    By default, this is the same thing as switch_mm().
    
    x86 will override it as an optimization.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/df401df47bdd6be3e389c6f1e3f5310d70e81b2c.1461688545.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dfe513a4e8ddde75ffc6abd3f139c5d65bf925d7
Author: Ingo Molnar <mingo@kernel.org>
Date:   Thu Apr 28 11:39:12 2016 +0200

    mm/mmu_context, sched/core: Fix mmu_context.h assumption
    
    commit 8efd755ac2fe262d4c8d5c9bbe054bb67dae93da upstream.
    
    Some architectures (such as Alpha) rely on include/linux/sched.h definitions
    in their mmu_context.h files.
    
    So include sched.h before mmu_context.h.
    
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: linux-kernel@vger.kernel.org
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d5ee51a6bce71d8905d8f01d0931f69be4489d5
Author: Nadav Amit <namit@vmware.com>
Date:   Fri Apr 1 14:31:26 2016 -0700

    mm/rmap: batched invalidations should use existing api
    
    commit 858eaaa711700ce4595e039441e239e56d7b9514 upstream.
    
    The recently introduced batched invalidations mechanism uses its own
    mechanism for shootdown.  However, it does wrong accounting of
    interrupts (e.g., inc_irq_stat is called for local invalidations),
    trace-points (e.g., TLB_REMOTE_SHOOTDOWN for local invalidations) and
    may break some platforms as it bypasses the invalidation mechanisms of
    Xen and SGI UV.
    
    This patch reuses the existing TLB flushing mechnaisms instead.  We use
    NULL as mm to indicate a global invalidation is required.
    
    Fixes 72b252aed506b8 ("mm: send one IPI per CPU to TLB flush all entries after unmapping pages")
    Signed-off-by: Nadav Amit <namit@vmware.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85d3700c744a11ee2989252acf50ccbbd814167a
Author: Andy Lutomirski <luto@kernel.org>
Date:   Fri Jan 29 11:42:59 2016 -0800

    x86/mm: If INVPCID is available, use it to flush global mappings
    
    commit d8bced79af1db6734f66b42064cc773cada2ce99 upstream.
    
    On my Skylake laptop, INVPCID function 2 (flush absolutely
    everything) takes about 376ns, whereas saving flags, twiddling
    CR4.PGE to flush global mappings, and restoring flags takes about
    539ns.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Luis R. Rodriguez <mcgrof@suse.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/ed0ef62581c0ea9c99b9bf6df726015e96d44743.1454096309.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 791a0f3fecdabe18cc291e5f9b7ebbdc81895975
Author: Andy Lutomirski <luto@kernel.org>
Date:   Fri Jan 29 11:42:58 2016 -0800

    x86/mm: Add a 'noinvpcid' boot option to turn off INVPCID
    
    commit d12a72b844a49d4162f24cefdab30bed3f86730e upstream.
    
    This adds a chicken bit to turn off INVPCID in case something goes
    wrong.  It's an early_param() because we do TLB flushes before we
    parse __setup() parameters.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Luis R. Rodriguez <mcgrof@suse.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/f586317ed1bc2b87aee652267e515b90051af385.1454096309.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 04ec428b15f161ce8449756fb64b6f380c8d95fd
Author: Borislav Petkov <bp@suse.de>
Date:   Wed Feb 10 15:51:16 2016 +0100

    x86/mm: Fix INVPCID asm constraint
    
    commit e2c7698cd61f11d4077fdb28148b2d31b82ac848 upstream.
    
    So we want to specify the dependency on both @pcid and @addr so that the
    compiler doesn't reorder accesses to them *before* the TLB flush. But
    for that to work, we need to express this properly in the inline asm and
    deref the whole desc array, not the pointer to it. See clwb() for an
    example.
    
    This fixes the build error on 32-bit:
    
      arch/x86/include/asm/tlbflush.h: In function ‘__invpcid’:
      arch/x86/include/asm/tlbflush.h:26:18: error: memory input 0 is not directly addressable
    
    which gcc4.7 caught but 5.x didn't. Which is strange. :-\
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Luis R. Rodriguez <mcgrof@suse.com>
    Cc: Michael Matz <matz@suse.de>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit becf292446e9f2dc8842c448836bbe8005e24db0
Author: Andy Lutomirski <luto@kernel.org>
Date:   Fri Jan 29 11:42:57 2016 -0800

    x86/mm: Add INVPCID helpers
    
    commit 060a402a1ddb551455ee410de2eadd3349f2801b upstream.
    
    This adds helpers for each of the four currently-specified INVPCID
    modes.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Luis R. Rodriguez <mcgrof@suse.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/8a62b23ad686888cee01da134c91409e22064db9.1454096309.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5fc8d62d1921062a26e8371ec4446bb760b60ead
Author: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
Date:   Thu Nov 23 09:08:57 2017 +0530

    cxl: Check if vphb exists before iterating over AFU devices
    
    commit 12841f87b7a8ceb3d54f171660f72a86941bfcb3 upstream.
    
    During an eeh a kernel-oops is reported if no vPHB is allocated to the
    AFU. This happens as during AFU init, an error in creation of vPHB is
    a non-fatal error. Hence afu->phb should always be checked for NULL
    before iterating over it for the virtual AFU pci devices.
    
    This patch fixes the kenel-oops by adding a NULL pointer check for
    afu->phb before it is dereferenced.
    
    Fixes: 9e8df8a21963 ("cxl: EEH support")
    Signed-off-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
    Acked-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
    Acked-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e1485b1b570dd2827ecc51a847f7b27b2f69e70
Author: Steve Capper <steve.capper@arm.com>
Date:   Mon Dec 4 14:13:05 2017 +0000

    arm64: Initialise high_memory global variable earlier
    
    commit f24e5834a2c3f6c5f814a417f858226f0a010ade upstream.
    
    The high_memory global variable is used by
    cma_declare_contiguous(.) before it is defined.
    
    We don't notice this as we compute __pa(high_memory - 1), and it looks
    like we're processing a VA from the direct linear map.
    
    This problem becomes apparent when we flip the kernel virtual address
    space and the linear map is moved to the bottom of the kernel VA space.
    
    This patch moves the initialisation of high_memory before it used.
    
    Fixes: f7426b983a6a ("mm: cma: adjust address limit to avoid hitting low/high memory boundary")
    Signed-off-by: Steve Capper <steve.capper@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>