Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

4.9 1.0.x imx stable merge #25

Merged

Commits on Feb 28, 2018

  1. netfilter: drop outermost socket lock in getsockopt()

    commit 01ea306 upstream.
    
    The Syzbot reported a possible deadlock in the netfilter area caused by
    rtnl lock, xt lock and socket lock being acquired with a different order
    on different code paths, leading to the following backtrace:
    Reviewed-by: Xin Long <[email protected]>
    
    ======================================================
    WARNING: possible circular locking dependency detected
    4.15.0+ Freescale#301 Not tainted
    ------------------------------------------------------
    syzkaller233489/4179 is trying to acquire lock:
      (rtnl_mutex){+.+.}, at: [<0000000048e996fd>] rtnl_lock+0x17/0x20
    net/core/rtnetlink.c:74
    
    but task is already holding lock:
      (&xt[i].mutex){+.+.}, at: [<00000000328553a2>]
    xt_find_table_lock+0x3e/0x3e0 net/netfilter/x_tables.c:1041
    
    which lock already depends on the new lock.
    ===
    
    Since commit 3f34cfae1230 ("netfilter: on sockopt() acquire sock lock
    only in the required scope"), we already acquire the socket lock in
    the innermost scope, where needed. In such commit I forgot to remove
    the outer-most socket lock from the getsockopt() path, this commit
    addresses the issues dropping it now.
    
    v1 -> v2: fix bad subj, added relavant 'fixes' tag
    
    Fixes: 22265a5 ("netfilter: xt_TEE: resolve oif using netdevice notifiers")
    Fixes: 202f59a ("netfilter: ipt_CLUSTERIP: do not hold dev")
    Fixes: 3f34cfae1230 ("netfilter: on sockopt() acquire sock lock only in the required scope")
    Reported-by: [email protected]
    Suggested-by: Florian Westphal <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Tested-by: Krzysztof Piotr Oledzki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Paolo Abeni authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    d58d78c View commit details
    Browse the repository at this point in the history
  2. xtensa: fix high memory/reserved memory collision

    commit 6ac5a11 upstream.
    
    Xtensa memory initialization code frees high memory pages without
    checking whether they are in the reserved memory regions or not. That
    results in invalid value of totalram_pages and duplicate page usage by
    CMA and highmem. It produces a bunch of BUGs at startup looking like
    this:
    
    BUG: Bad page state in process swapper  pfn:70800
    page:be60c000 count:0 mapcount:-127 mapping:  (null) index:0x1
    flags: 0x80000000()
    raw: 80000000 00000000 00000001 ffffff80 00000000 be60c014 be60c014 0000000a
    page dumped because: nonzero mapcount
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper Tainted: G    B            4.16.0-rc1-00015-g7928b2cbe55b-dirty Freescale#23
    Stack:
     bd839d33 00000000 00000018 ba97b64c a106578c bd839d70 be60c000 00000000
     a1378054 bd86a000 00000003 ba97b64c a1066166 bd839da0 be60c000 ffe00000
     a1066b58 bd839dc0 be504000 00000000 000002f4 bd838000 00000000 0000001e
    Call Trace:
     [<a1065734>] bad_page+0xac/0xd0
     [<a106578c>] free_pages_check_bad+0x34/0x4c
     [<a1066166>] __free_pages_ok+0xae/0x14c
     [<a1066b58>] __free_pages+0x30/0x64
     [<a1365de5>] init_cma_reserved_pageblock+0x35/0x44
     [<a13682dc>] cma_init_reserved_areas+0xf4/0x148
     [<a10034b8>] do_one_initcall+0x80/0xf8
     [<a1361c16>] kernel_init_freeable+0xda/0x13c
     [<a125b59d>] kernel_init+0x9/0xd0
     [<a1004304>] ret_from_kernel_thread+0xc/0x18
    
    Only free high memory pages that are not reserved.
    
    Cc: [email protected]
    Signed-off-by: Max Filippov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jcmvbkbc authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    a5ecf56 View commit details
    Browse the repository at this point in the history
  3. scsi: ibmvfc: fix misdefined reserved field in ibmvfc_fcp_rsp_info

    commit c398136 upstream.
    
    The fcp_rsp_info structure as defined in the FC spec has an initial 3
    bytes reserved field. The ibmvfc driver mistakenly defined this field as
    4 bytes resulting in the rsp_code field being defined in what should be
    the start of the second reserved field and thus always being reported as
    zero by the driver.
    
    Ideally, we should wire ibmvfc up with libfc for the sake of code
    deduplication, and ease of maintaining standardized structures in a
    single place. However, for now simply fixup the definition in ibmvfc for
    backporting to distros on older kernels. Wiring up with libfc will be
    done in a followup patch.
    
    Cc: <[email protected]>
    Reported-by: Hannes Reinecke <[email protected]>
    Signed-off-by: Tyrel Datwyler <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Tyrel Datwyler authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    bed7cb3 View commit details
    Browse the repository at this point in the history
  4. cfg80211: fix cfg80211_beacon_dup

    commit bee92d0 upstream.
    
    gcc-8 warns about some obviously incorrect code:
    
    net/mac80211/cfg.c: In function 'cfg80211_beacon_dup':
    net/mac80211/cfg.c:2896:3: error: 'memcpy' source argument is the same as destination [-Werror=restrict]
    
    From the context, I conclude that we want to copy from beacon into
    new_beacon, as we do in the rest of the function.
    
    Cc: [email protected]
    Fixes: 73da7d5 ("mac80211: add channel switch command and beacon callbacks")
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    arndb authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    3b4dd8a View commit details
    Browse the repository at this point in the history
  5. X.509: fix BUG_ON() when hash algorithm is unsupported

    commit 437499e upstream.
    
    The X.509 parser mishandles the case where the certificate's signature's
    hash algorithm is not available in the crypto API.  In this case,
    x509_get_sig_params() doesn't allocate the cert->sig->digest buffer;
    this part seems to be intentional.  However,
    public_key_verify_signature() is still called via
    x509_check_for_self_signed(), which triggers the 'BUG_ON(!sig->digest)'.
    
    Fix this by making public_key_verify_signature() return -ENOPKG if the
    hash buffer has not been allocated.
    
    Reproducer when all the CONFIG_CRYPTO_SHA512* options are disabled:
    
        openssl req -new -sha512 -x509 -batch -nodes -outform der \
            | keyctl padd asymmetric desc @s
    
    Fixes: 6c2dc5a ("X.509: Extract signature digest and make self-signed cert checks earlier")
    Reported-by: Paolo Valente <[email protected]>
    Cc: Paolo Valente <[email protected]>
    Cc: <[email protected]> # v4.7+
    Signed-off-by: Eric Biggers <[email protected]>
    Signed-off-by: David Howells <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    ebiggers authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    c60e246 View commit details
    Browse the repository at this point in the history
  6. PKCS#7: fix certificate chain verification

    commit 971b42c upstream.
    
    When pkcs7_verify_sig_chain() is building the certificate chain for a
    SignerInfo using the certificates in the PKCS#7 message, it is passing
    the wrong arguments to public_key_verify_signature().  Consequently,
    when the next certificate is supposed to be used to verify the previous
    certificate, the next certificate is actually used to verify itself.
    
    An attacker can use this bug to create a bogus certificate chain that
    has no cryptographic relationship between the beginning and end.
    
    Fortunately I couldn't quite find a way to use this to bypass the
    overall signature verification, though it comes very close.  Here's the
    reasoning: due to the bug, every certificate in the chain beyond the
    first actually has to be self-signed (where "self-signed" here refers to
    the actual key and signature; an attacker might still manipulate the
    certificate fields such that the self_signed flag doesn't actually get
    set, and thus the chain doesn't end immediately).  But to pass trust
    validation (pkcs7_validate_trust()), either the SignerInfo or one of the
    certificates has to actually be signed by a trusted key.  Since only
    self-signed certificates can be added to the chain, the only way for an
    attacker to introduce a trusted signature is to include a self-signed
    trusted certificate.
    
    But, when pkcs7_validate_trust_one() reaches that certificate, instead
    of trying to verify the signature on that certificate, it will actually
    look up the corresponding trusted key, which will succeed, and then try
    to verify the *previous* certificate, which will fail.  Thus, disaster
    is narrowly averted (as far as I could tell).
    
    Fixes: 6c2dc5a ("X.509: Extract signature digest and make self-signed cert checks earlier")
    Cc: <[email protected]> # v4.7+
    Signed-off-by: Eric Biggers <[email protected]>
    Signed-off-by: David Howells <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    ebiggers authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    e4b02ca View commit details
    Browse the repository at this point in the history
  7. RDMA/uverbs: Protect from command mask overflow

    commit 3f802b1 upstream.
    
    The command number is not bounds checked against the command mask before it
    is shifted, resulting in an ubsan hit. This does not cause malfunction since
    the command number is eventually bounds checked, but we can make this ubsan
    clean by moving the bounds check to before the mask check.
    
    ================================================================================
    UBSAN: Undefined behaviour in
    drivers/infiniband/core/uverbs_main.c:647:21
    shift exponent 207 is too large for 64-bit type 'long long unsigned int'
    CPU: 0 PID: 446 Comm: syz-executor3 Not tainted 4.15.0-rc2+ Freescale#61
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014
    Call Trace:
    dump_stack+0xde/0x164
    ? dma_virt_map_sg+0x22c/0x22c
    ubsan_epilogue+0xe/0x81
    __ubsan_handle_shift_out_of_bounds+0x293/0x2f7
    ? debug_check_no_locks_freed+0x340/0x340
    ? __ubsan_handle_load_invalid_value+0x19b/0x19b
    ? lock_acquire+0x440/0x440
    ? lock_acquire+0x19d/0x440
    ? __might_fault+0xf4/0x240
    ? ib_uverbs_write+0x68d/0xe20
    ib_uverbs_write+0x68d/0xe20
    ? __lock_acquire+0xcf7/0x3940
    ? uverbs_devnode+0x110/0x110
    ? cyc2ns_read_end+0x10/0x10
    ? sched_clock_cpu+0x18/0x200
    ? sched_clock_cpu+0x18/0x200
    __vfs_write+0x10d/0x700
    ? uverbs_devnode+0x110/0x110
    ? kernel_read+0x170/0x170
    ? __fget+0x35b/0x5d0
    ? security_file_permission+0x93/0x260
    vfs_write+0x1b0/0x550
    SyS_write+0xc7/0x1a0
    ? SyS_read+0x1a0/0x1a0
    ? trace_hardirqs_on_thunk+0x1a/0x1c
    entry_SYSCALL_64_fastpath+0x18/0x85
    RIP: 0033:0x448e29
    RSP: 002b:00007f033f567c58 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 00007f033f5686bc RCX: 0000000000448e29
    RDX: 0000000000000060 RSI: 0000000020001000 RDI: 0000000000000012
    RBP: 000000000070bea0 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 00000000000056a0 R14: 00000000006e8740 R15: 0000000000000000
    ================================================================================
    
    Cc: syzkaller <[email protected]>
    Cc: <[email protected]> # 4.5
    Fixes: 2dbd518 ("IB/core: IB/core: Allow legacy verbs through extended interfaces")
    Reported-by: Noa Osherovich <[email protected]>
    Reviewed-by: Matan Barak <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Leon Romanovsky authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    239ef9c View commit details
    Browse the repository at this point in the history
  8. iio: buffer: check if a buffer has been set up when poll is called

    commit 4cd140b upstream.
    
    If no iio buffer has been set up and poll is called return 0.
    Without this check there will be a null pointer dereference when
    calling poll on a iio driver without an iio buffer.
    
    Cc: [email protected]
    Signed-off-by: Stefan Windfeldt-Prytz <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stefan Windfeldt-Prytz authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    97e6047 View commit details
    Browse the repository at this point in the history
  9. iio: adis_lib: Initialize trigger before requesting interrupt

    commit f027e0b upstream.
    
    The adis_probe_trigger() creates a new IIO trigger and requests an
    interrupt associated with the trigger. The interrupt uses the generic
    iio_trigger_generic_data_rdy_poll() function as its interrupt handler.
    
    Currently the driver initializes some fields of the trigger structure after
    the interrupt has been requested. But an interrupt can fire as soon as it
    has been requested. This opens up a race condition.
    
    iio_trigger_generic_data_rdy_poll() will access the trigger data structure
    and dereference the ops field. If the ops field is not yet initialized this
    will result in a NULL pointer deref.
    
    It is not expected that the device generates an interrupt at this point, so
    typically this issue did not surface unless e.g. due to a hardware
    misconfiguration (wrong interrupt number, wrong polarity, etc.).
    
    But some newer devices from the ADIS family start to generate periodic
    interrupts in their power-on reset configuration and unfortunately the
    interrupt can not be masked in the device.  This makes the race condition
    much more visible and the following crash has been observed occasionally
    when booting a system using the ADIS16460.
    
    	Unable to handle kernel NULL pointer dereference at virtual address 00000008
    	pgd = c0004000
    	[00000008] *pgd=00000000
    	Internal error: Oops: 5 [Freescale#1] PREEMPT SMP ARM
    	Modules linked in:
    	CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.0-04126-gf9739f0-dirty Freescale#257
    	Hardware name: Xilinx Zynq Platform
    	task: ef04f640 task.stack: ef050000
    	PC is at iio_trigger_notify_done+0x30/0x68
    	LR is at iio_trigger_generic_data_rdy_poll+0x18/0x20
    	pc : [<c042d868>]    lr : [<c042d924>]    psr: 60000193
    	sp : ef051bb8  ip : 00000000  fp : ef106400
    	r10: c081d80a  r9 : ef3bfa00  r8 : 00000087
    	r7 : ef051bec  r6 : 00000000  r5 : ef3bfa00  r4 : ee92ab00
    	r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 : ee97e400
    	Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment none
    	Control: 18c5387d  Table: 0000404a  DAC: 00000051
    	Process swapper/0 (pid: 1, stack limit = 0xef050210)
    	[<c042d868>] (iio_trigger_notify_done) from [<c0065b10>] (__handle_irq_event_percpu+0x88/0x118)
    	[<c0065b10>] (__handle_irq_event_percpu) from [<c0065bbc>] (handle_irq_event_percpu+0x1c/0x58)
    	[<c0065bbc>] (handle_irq_event_percpu) from [<c0065c30>] (handle_irq_event+0x38/0x5c)
    	[<c0065c30>] (handle_irq_event) from [<c0068e28>] (handle_level_irq+0xa4/0x130)
    	[<c0068e28>] (handle_level_irq) from [<c0064e74>] (generic_handle_irq+0x24/0x34)
    	[<c0064e74>] (generic_handle_irq) from [<c021ab7c>] (zynq_gpio_irqhandler+0xb8/0x13c)
    	[<c021ab7c>] (zynq_gpio_irqhandler) from [<c0064e74>] (generic_handle_irq+0x24/0x34)
    	[<c0064e74>] (generic_handle_irq) from [<c0065370>] (__handle_domain_irq+0x5c/0xb4)
    	[<c0065370>] (__handle_domain_irq) from [<c000940c>] (gic_handle_irq+0x48/0x8c)
    	[<c000940c>] (gic_handle_irq) from [<c0013e8c>] (__irq_svc+0x6c/0xa8)
    
    To fix this make sure that the trigger is fully initialized before
    requesting the interrupt.
    
    Fixes: ccd2b52 ("staging:iio: Add common ADIS library")
    Reported-by: Robin Getz <[email protected]>
    Signed-off-by: Lars-Peter Clausen <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    larsclausen authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    964e8ce View commit details
    Browse the repository at this point in the history
  10. x86/oprofile: Fix bogus GCC-8 warning in nmi_setup()

    commit 85c615e upstream.
    
    GCC-8 shows a warning for the x86 oprofile code that copies per-CPU
    data from CPU 0 to all other CPUs, which when building a non-SMP
    kernel turns into a memcpy() with identical source and destination
    pointers:
    
     arch/x86/oprofile/nmi_int.c: In function 'mux_clone':
     arch/x86/oprofile/nmi_int.c:285:2: error: 'memcpy' source argument is the same as destination [-Werror=restrict]
       memcpy(per_cpu(cpu_msrs, cpu).multiplex,
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              per_cpu(cpu_msrs, 0).multiplex,
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              sizeof(struct op_msr) * model->num_virt_counters);
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     arch/x86/oprofile/nmi_int.c: In function 'nmi_setup':
     arch/x86/oprofile/nmi_int.c:466:3: error: 'memcpy' source argument is the same as destination [-Werror=restrict]
     arch/x86/oprofile/nmi_int.c:470:3: error: 'memcpy' source argument is the same as destination [-Werror=restrict]
    
    I have analyzed a number of such warnings now: some are valid and the
    GCC warning is welcome. Others turned out to be false-positives, and
    GCC was changed to not warn about those any more. This is a corner case
    that is a false-positive but the GCC developers feel it's better to keep
    warning about it.
    
    In this case, it seems best to work around it by telling GCC
    a little more clearly that this code path is never hit with
    an IS_ENABLED() configuration check.
    
    Cc:stable as we also want old kernels to build cleanly with GCC-8.
    
    Signed-off-by: Arnd Bergmann <[email protected]>
    Cc: Jessica Yu <[email protected]>
    Cc: Kees Cook <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Martin Sebor <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Robert Richter <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Link: http://lkml.kernel.org/r/[email protected]
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84095
    Signed-off-by: Ingo Molnar <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    arndb authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    dcc92a1 View commit details
    Browse the repository at this point in the history
  11. irqchip/gic-v3: Use wmb() instead of smb_wmb() in gic_raise_softirq()

    commit 21ec30c upstream.
    
    A DMB instruction can be used to ensure the relative order of only
    memory accesses before and after the barrier. Since writes to system
    registers are not memory operations, barrier DMB is not sufficient
    for observability of memory accesses that occur before ICC_SGI1R_EL1
    writes.
    
    A DSB instruction ensures that no instructions that appear in program
    order after the DSB instruction, can execute until the DSB instruction
    has completed.
    
    Cc: [email protected]
    Acked-by: Will Deacon <[email protected]>,
    Signed-off-by: Shanker Donthineni <[email protected]>
    Signed-off-by: Marc Zyngier <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Shanker Donthineni authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    2146b6e View commit details
    Browse the repository at this point in the history
  12. PCI/cxgb4: Extend T3 PCI quirk to T4+ devices

    commit 7dcf688 upstream.
    
    We've run into a problem where our device is attached
    to a Virtual Machine and the use of the new pci_set_vpd_size()
    API doesn't help.  The VM kernel has been informed that
    the accesses are okay, but all of the actual VPD Capability
    Accesses are trapped down into the KVM Hypervisor where it
    goes ahead and imposes the silent denials.
    
    The right idea is to follow the kernel.org
    commit 1c7de2b ("PCI: Enable access to non-standard VPD for
    Chelsio devices (cxgb3)") which Alexey Kardashevskiy authored
    to establish a PCI Quirk for our T3-based adapters. This commit
    extends that PCI Quirk to cover Chelsio T4 devices and later.
    
    The advantage of this approach is that the VPD Size gets set early
    in the Base OS/Hypervisor Boot and doesn't require that the cxgb4
    driver even be available in the Base OS/Hypervisor.  Thus PF4 can
    be exported to a Virtual Machine and everything should work.
    
    Fixes: 67e6587 ("cxgb4: Set VPD size so we can read both VPD structures")
    Cc: <[email protected]>  # v4.9+
    Signed-off-by: Casey Leedom <[email protected]>
    Signed-off-by: Arjun Vynipadath <[email protected]>
    Signed-off-by: Ganesh Goudar <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Casey Leedom authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    c529ff4 View commit details
    Browse the repository at this point in the history
  13. ohci-hcd: Fix race condition caused by ohci_urb_enqueue() and io_watc…

    …hdog_func()
    
    commit b2685bd upstream.
    
    Running io_watchdog_func() while ohci_urb_enqueue() is running can
    cause a race condition where ohci->prev_frame_no is corrupted and the
    watchdog can mis-detect following error:
    
      ohci-platform 664a0800.usb: frame counter not updating; disabled
      ohci-platform 664a0800.usb: HC died; cleaning up
    
    Specifically, following scenario causes a race condition:
    
      1. ohci_urb_enqueue() calls spin_lock_irqsave(&ohci->lock, flags)
         and enters the critical section
      2. ohci_urb_enqueue() calls timer_pending(&ohci->io_watchdog) and it
         returns false
      3. ohci_urb_enqueue() sets ohci->prev_frame_no to a frame number
         read by ohci_frame_no(ohci)
      4. ohci_urb_enqueue() schedules io_watchdog_func() with mod_timer()
      5. ohci_urb_enqueue() calls spin_unlock_irqrestore(&ohci->lock,
         flags) and exits the critical section
      6. Later, ohci_urb_enqueue() is called
      7. ohci_urb_enqueue() calls spin_lock_irqsave(&ohci->lock, flags)
         and enters the critical section
      8. The timer scheduled on step 4 expires and io_watchdog_func() runs
      9. io_watchdog_func() calls spin_lock_irqsave(&ohci->lock, flags)
         and waits on it because ohci_urb_enqueue() is already in the
         critical section on step 7
     10. ohci_urb_enqueue() calls timer_pending(&ohci->io_watchdog) and it
         returns false
     11. ohci_urb_enqueue() sets ohci->prev_frame_no to new frame number
         read by ohci_frame_no(ohci) because the frame number proceeded
         between step 3 and 6
     12. ohci_urb_enqueue() schedules io_watchdog_func() with mod_timer()
     13. ohci_urb_enqueue() calls spin_unlock_irqrestore(&ohci->lock,
         flags) and exits the critical section, then wake up
         io_watchdog_func() which is waiting on step 9
     14. io_watchdog_func() enters the critical section
     15. io_watchdog_func() calls ohci_frame_no(ohci) and set frame_no
         variable to the frame number
     16. io_watchdog_func() compares frame_no and ohci->prev_frame_no
    
    On step 16, because this calling of io_watchdog_func() is scheduled on
    step 4, the frame number set in ohci->prev_frame_no is expected to the
    number set on step 3.  However, ohci->prev_frame_no is overwritten on
    step 11.  Because step 16 is executed soon after step 11, the frame
    number might not proceed, so ohci->prev_frame_no must equals to
    frame_no.
    
    To address above scenario, this patch introduces a special sentinel
    value IO_WATCHDOG_OFF and set this value to ohci->prev_frame_no when
    the watchdog is not pending or running.  When ohci_urb_enqueue()
    schedules the watchdog (step 4 and 12 above), it compares
    ohci->prev_frame_no to IO_WATCHDOG_OFF so that ohci->prev_frame_no is
    not overwritten while io_watchdog_func() is running.
    
    Signed-off-by: Shigeru Yoshida <[email protected]>
    Signed-off-by: Haiqing Bai <[email protected]>
    Acked-by: Alan Stern <[email protected]>
    Cc: stable <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Shigeru Yoshida authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    4a41d44 View commit details
    Browse the repository at this point in the history
  14. usb: ohci: Proper handling of ed_rm_list to handle race condition bet…

    …ween usb_kill_urb() and finish_unlinks()
    
    commit 46408ea upstream.
    
    There is a race condition between finish_unlinks->finish_urb() function
    and usb_kill_urb() in ohci controller case. The finish_urb calls
    spin_unlock(&ohci->lock) before usb_hcd_giveback_urb() function call,
    then if during this time, usb_kill_urb is called for another endpoint,
    then new ed will be added to ed_rm_list at beginning for unlink, and
    ed_rm_list will point to newly added.
    
    When finish_urb() is completed in finish_unlinks() and ed->td_list
    becomes empty as in below code (in finish_unlinks() function):
    
            if (list_empty(&ed->td_list)) {
                    *last = ed->ed_next;
                    ed->ed_next = NULL;
            } else if (ohci->rh_state == OHCI_RH_RUNNING) {
                    *last = ed->ed_next;
                    ed->ed_next = NULL;
                    ed_schedule(ohci, ed);
            }
    
    The *last = ed->ed_next will make ed_rm_list to point to ed->ed_next
    and previously added ed by usb_kill_urb will be left unreferenced by
    ed_rm_list. This causes usb_kill_urb() hang forever waiting for
    finish_unlink to remove added ed from ed_rm_list.
    
    The main reason for hang in this race condtion is addition and removal
    of ed from ed_rm_list in the beginning during usb_kill_urb and later
    last* is modified in finish_unlinks().
    
    As suggested by Alan Stern, the solution for proper handling of
    ohci->ed_rm_list is to remove ed from the ed_rm_list before finishing
    any URBs. Then at the end, we can add ed back to the list if necessary.
    
    This properly handle the updated ohci->ed_rm_list in usb_kill_urb().
    
    Fixes: 977dcfd ("USB: OHCI: don't lose track of EDs when a controller dies")
    Acked-by: Alan Stern <[email protected]>
    CC: <[email protected]>
    Signed-off-by: Aman Deep <[email protected]>
    Signed-off-by: Jeffy Chen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    amandeep-samsung authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    31fec94 View commit details
    Browse the repository at this point in the history
  15. arm64: Disable unhandled signal log messages by default

    commit 5ee39a7 upstream.
    
    aarch64 unhandled signal kernel messages are very verbose, suggesting
    them to be more of a debugging aid:
    
    sigsegv[33]: unhandled level 2 translation fault (11) at 0x00000000, esr
    0x92000046, in sigsegv[400000+71000]
    CPU: 1 PID: 33 Comm: sigsegv Tainted: G        W        4.15.0-rc3+ Freescale#3
    Hardware name: linux,dummy-virt (DT)
    pstate: 60000000 (nZCv daif -PAN -UAO)
    pc : 0x4003f4
    lr : 0x4006bc
    sp : 0000fffffe94a060
    x29: 0000fffffe94a070 x28: 0000000000000000
    x27: 0000000000000000 x26: 0000000000000000
    x25: 0000000000000000 x24: 00000000004001b0
    x23: 0000000000486ac8 x22: 00000000004001c8
    x21: 0000000000000000 x20: 0000000000400be8
    x19: 0000000000400b30 x18: 0000000000484728
    x17: 000000000865ffc8 x16: 000000000000270f
    x15: 00000000000000b0 x14: 0000000000000002
    x13: 0000000000000001 x12: 0000000000000000
    x11: 0000000000000000 x10: 0008000020008008
    x9 : 000000000000000f x8 : ffffffffffffffff
    x7 : 0004000000000000 x6 : ffffffffffffffff
    x5 : 0000000000000000 x4 : 0000000000000000
    x3 : 00000000004003e4 x2 : 0000fffffe94a1e8
    x1 : 000000000000000a x0 : 0000000000000000
    
    Disable them by default, so they can be enabled using
    /proc/sys/debug/exception-trace.
    
    Cc: <[email protected]>
    Signed-off-by: Michael Weiser <[email protected]>
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    michaelweiser authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    8bd22b1 View commit details
    Browse the repository at this point in the history
  16. Add delay-init quirk for Corsair K70 RGB keyboards

    commit 7a1646d upstream.
    
    Following on from this patch: https://lkml.org/lkml/2017/11/3/516,
    Corsair K70 RGB keyboards also require the DELAY_INIT quirk to
    start correctly at boot.
    
    Device ids found here:
    usb 3-3: New USB device found, idVendor=1b1c, idProduct=1b13
    usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    usb 3-3: Product: Corsair K70 RGB Gaming Keyboard
    
    Signed-off-by: Jack Stocker <[email protected]>
    Cc: stable <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    JackStocker authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    9b99be3 View commit details
    Browse the repository at this point in the history
  17. drm/edid: Add 6 bpc quirk for CPT panel in Asus UX303LA

    commit 06998a7 upstream.
    
    Similar to commit e10aec6 ("drm/edid: Add 6 bpc quirk for display
    AEO model 0."), the EDID reports "DFP 1.x compliant TMDS" but it support
    6bpc instead of 8 bpc.
    
    Hence, use 6 bpc quirk for this panel.
    
    Fixes: 196f954 ("drm/i915/dp: Revert "drm/i915/dp: fall back to 18 bpp when sink capability is unknown"")
    BugLink: https://bugs.launchpad.net/bugs/1749420
    Signed-off-by: Kai-Heng Feng <[email protected]>
    Reviewed-by: Mario Kleiner <[email protected]>
    Cc: <[email protected]> # v4.8+
    Signed-off-by: Daniel Vetter <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    khfeng authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    6f1e00f View commit details
    Browse the repository at this point in the history
  18. usb: dwc3: gadget: Set maxpacket size for ep0 IN

    commit 6180026 upstream.
    
    There are 2 control endpoint structures for DWC3. However, the driver
    only updates the OUT direction control endpoint structure during
    ConnectDone event. DWC3 driver needs to update the endpoint max packet
    size for control IN endpoint as well. If the max packet size is not
    properly set, then the driver will incorrectly calculate the data
    transfer size and fail to send ZLP for HS/FS 3-stage control read
    transfer.
    
    The fix is simply to update the max packet size for the ep0 IN direction
    during ConnectDone event.
    
    Cc: [email protected]
    Fixes: 72246da ("usb: Introduce DesignWare USB3 DRD Driver")
    Signed-off-by: Thinh Nguyen <[email protected]>
    Signed-off-by: Felipe Balbi <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Thinh Nguyen authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    3c0cbbf View commit details
    Browse the repository at this point in the history
  19. usb: ldusb: add PIDs for new CASSY devices supported by this driver

    commit 52ad2bd upstream.
    
    This patch adds support for new CASSY devices to the ldusb driver. The
    PIDs are also added to the ignore list in hid-quirks.
    
    Signed-off-by: Karsten Koop <[email protected]>
    Cc: stable <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Karsten Koop authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    f04280f View commit details
    Browse the repository at this point in the history
  20. Revert "usb: musb: host: don't start next rx urb if current one failed"

    commit 44eb5e1 upstream.
    
    This reverts commit dbac5d0.
    
    commit dbac5d0 ("usb: musb: host: don't start next rx urb if current one failed")
    along with commit b580121 ("usb: musb: host: clear rxcsr error bit if set")
    try to solve the issue described in [1], but the latter alone is
    sufficient, and the former causes the issue as in [2], so now revert it.
    
    [1] https://marc.info/?l=linux-usb&m=146173995117456&w=2
    [2] https://marc.info/?l=linux-usb&m=151689238420622&w=2
    
    Cc: [email protected] # v4.7+
    Signed-off-by: Bin Liu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Bin Liu authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    fe80d73 View commit details
    Browse the repository at this point in the history
  21. usb: gadget: f_fs: Process all descriptors during bind

    commit 6cf439e upstream.
    
    During _ffs_func_bind(), the received descriptors are evaluated
    to prepare for binding with the gadget in order to allocate
    endpoints and optionally set up OS descriptors. However, the
    high- and super-speed descriptors are only parsed based on
    whether the gadget_is_dualspeed() and gadget_is_superspeed()
    calls are true, respectively.
    
    This is a problem in case a userspace program always provides
    all of the {full,high,super,OS} descriptors when configuring a
    function. Then, for example if a gadget device is not capable
    of SuperSpeed, the call to ffs_do_descs() for the SS descriptors
    is skipped, resulting in an incorrect offset calculation for
    the vla_ptr when moving on to the OS descriptors that follow.
    This causes ffs_do_os_descs() to fail as it is now looking at
    the SS descriptors' offset within the raw_descs buffer instead.
    
    _ffs_func_bind() should evaluate the descriptors unconditionally,
    so remove the checks for gadget speed.
    
    Fixes: f0175ab ("usb: gadget: f_fs: OS descriptors support")
    Cc: [email protected]
    Co-Developed-by: Mayank Rana <[email protected]>
    Signed-off-by: Mayank Rana <[email protected]>
    Signed-off-by: Jack Pham <[email protected]>
    Signed-off-by: Felipe Balbi <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Jack Pham authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    8bedacf View commit details
    Browse the repository at this point in the history
  22. usb: renesas_usbhs: missed the "running" flag in usb_dmac with rx path

    commit 17aa31f upstream.
    
    This fixes an issue that a gadget driver (usb_f_fs) is possible to
    stop rx transactions after the usb-dmac is used because the following
    functions missed to set/check the "running" flag.
     - usbhsf_dma_prepare_pop_with_usb_dmac()
     - usbhsf_dma_pop_done_with_usb_dmac()
    
    So, if next transaction uses pio, the usbhsf_prepare_pop() can not
    start the transaction because the "running" flag is 0.
    
    Fixes: 8355b2b ("usb: renesas_usbhs: fix the behavior of some usbhs_pkt_handle")
    Cc: <[email protected]> # v3.19+
    Signed-off-by: Yoshihiro Shimoda <[email protected]>
    Signed-off-by: Felipe Balbi <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    shimoday authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    18ec706 View commit details
    Browse the repository at this point in the history
  23. drm/amdgpu: Add dpm quirk for Jet PRO (v2)

    commit f2e5262 upstream.
    
    Fixes stability issues.
    
    v2: clamp sclk to 600 Mhz
    
    Bug: https://bugs.freedesktop.org/show_bug.cgi?id=103370
    Acked-by: Christian König <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    alexdeucher authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    cf7780a View commit details
    Browse the repository at this point in the history
  24. drm/amdgpu: add atpx quirk handling (v2)

    commit 052c299 upstream.
    
    Add quirks for handling PX/HG systems.  In this case, add
    a quirk for a weston dGPU that only seems to properly power
    down using ATPX power control rather than HG (_PR3).
    
    v2: append a new weston XT
    
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Junwei Zhang <[email protected]> (v2)
    Reviewed-and-Tested-by: Junwei Zhang <[email protected]>
    Reviewed-by: Alex Deucher <[email protected]>
    Acked-by: Christian König <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    alexdeucher authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    3a66f97 View commit details
    Browse the repository at this point in the history
  25. drm/amdgpu: Avoid leaking PM domain on driver unbind (v2)

    commit 458d876 upstream.
    
    We only support vga_switcheroo and runtime pm on PX/HG systems
    so forcing runpm to 1 doesn't do anything useful anyway.
    
    Only call vga_switcheroo_init_domain_pm_ops() for PX/HG so
    that the cleanup path is correct as well.  This mirrors what
    radeon does as well.
    
    v2: rework the patch originally sent by Lukas (Alex)
    
    Acked-by: Lukas Wunner <[email protected]>
    Reported-by: Lukas Wunner <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Lukas Wunner <[email protected]> (v1)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    alexdeucher authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    3a58e84 View commit details
    Browse the repository at this point in the history
  26. drm/amdgpu: add new device to use atpx quirk

    commit 6e59de2 upstream.
    
    The affected system (0x0813) is pretty similar to another one (0x0812),
    it also needs to use ATPX power control.
    
    Signed-off-by: Kai-Heng Feng <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    khfeng authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    65aeceb View commit details
    Browse the repository at this point in the history
  27. binder: add missing binder_unlock()

    When commit 4be5a28 ("binder: check for binder_thread allocation
    failure in binder_poll()") was applied to 4.4-stable and 4.9-stable it
    was forgotten to release the global binder lock in the new error path.
    The global binder lock wasn't removed until v4.14, by commit
    a60b890 ("binder: remove global binder lock").
    
    Fix the new error path to release the lock.
    
    Reported-by: Guenter Roeck <[email protected]>
    Signed-off-by: Eric Biggers <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    ebiggers authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    febf108 View commit details
    Browse the repository at this point in the history
  28. X.509: fix NULL dereference when restricting key with unsupported_sig

    commit 4b34968 upstream.
    
    The asymmetric key type allows an X.509 certificate to be added even if
    its signature's hash algorithm is not available in the crypto API.  In
    that case 'payload.data[asym_auth]' will be NULL.  But the key
    restriction code failed to check for this case before trying to use the
    signature, resulting in a NULL pointer dereference in
    key_or_keyring_common() or in restrict_link_by_signature().
    
    Fix this by returning -ENOPKG when the signature is unsupported.
    
    Reproducer when all the CONFIG_CRYPTO_SHA512* options are disabled and
    keyctl has support for the 'restrict_keyring' command:
    
        keyctl new_session
        keyctl restrict_keyring @s asymmetric builtin_trusted
        openssl req -new -sha512 -x509 -batch -nodes -outform der \
            | keyctl padd asymmetric desc @s
    
    Fixes: a511e1a ("KEYS: Move the point of trust determination to __key_link()")
    Cc: <[email protected]> # v4.7+
    Signed-off-by: Eric Biggers <[email protected]>
    Signed-off-by: David Howells <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    ebiggers authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    f291598 View commit details
    Browse the repository at this point in the history
  29. mm: avoid spurious 'bad pmd' warning messages

    commit d0f0931 upstream.
    
    When the pmd_devmap() checks were added by 5c7fb56 ("mm, dax:
    dax-pmd vs thp-pmd vs hugetlbfs-pmd") to add better support for DAX huge
    pages, they were all added to the end of if() statements after existing
    pmd_trans_huge() checks.  So, things like:
    
      -       if (pmd_trans_huge(*pmd))
      +       if (pmd_trans_huge(*pmd) || pmd_devmap(*pmd))
    
    When further checks were added after pmd_trans_unstable() checks by
    commit 7267ec0 ("mm: postpone page table allocation until we have
    page to map") they were also added at the end of the conditional:
    
      +       if (pmd_trans_unstable(fe->pmd) || pmd_devmap(*fe->pmd))
    
    This ordering is fine for pmd_trans_huge(), but doesn't work for
    pmd_trans_unstable().  This is because DAX huge pages trip the bad_pmd()
    check inside of pmd_none_or_trans_huge_or_clear_bad() (called by
    pmd_trans_unstable()), which prints out a warning and returns 1.  So, we
    do end up doing the right thing, but only after spamming dmesg with
    suspicious looking messages:
    
      mm/pgtable-generic.c:39: bad pmd ffff8808daa49b88(84000001006000a5)
    
    Reorder these checks in a helper so that pmd_devmap() is checked first,
    avoiding the error messages, and add a comment explaining why the
    ordering is important.
    
    Fixes: commit 7267ec0 ("mm: postpone page table allocation until we have page to map")
    Link: http://lkml.kernel.org/r/[email protected]
    Signed-off-by: Ross Zwisler <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Cc: Pawel Lebioda <[email protected]>
    Cc: "Darrick J. Wong" <[email protected]>
    Cc: Alexander Viro <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Williams <[email protected]>
    Cc: Dave Hansen <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: "Kirill A . Shutemov" <[email protected]>
    Cc: Dave Jiang <[email protected]>
    Cc: Xiong Zhou <[email protected]>
    Cc: Eryu Guan <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Ross Zwisler authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    f2562ed View commit details
    Browse the repository at this point in the history
  30. fs/dax.c: fix inefficiency in dax_writeback_mapping_range()

    commit 1eb643d upstream.
    
    dax_writeback_mapping_range() fails to update iteration index when
    searching radix tree for entries needing cache flushing.  Thus each
    pagevec worth of entries is searched starting from the start which is
    inefficient and prone to livelocks.  Update index properly.
    
    Link: http://lkml.kernel.org/r/[email protected]
    Fixes: 9973c98 ("dax: add support for fsync/sync")
    Signed-off-by: Jan Kara <[email protected]>
    Reviewed-by: Ross Zwisler <[email protected]>
    Cc: Dan Williams <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jankara authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    f06c2c6 View commit details
    Browse the repository at this point in the history
  31. libnvdimm: fix integer overflow static analysis warning

    commit 58738c4 upstream.
    
    Dan reports:
        The patch 62232e4: "libnvdimm: control (ioctl) messages for
        nvdimm_bus and nvdimm devices" from Jun 8, 2015, leads to the
        following static checker warning:
    
                drivers/nvdimm/bus.c:1018 __nd_ioctl()
                warn: integer overflows 'buf_len'
    
        From a casual review, this seems like it might be a real bug.  On
        the first iteration we load some data into in_env[].  On the second
        iteration we read a use controlled "in_size" from nd_cmd_in_size().
        It can go up to UINT_MAX - 1.  A high number means we will fill the
        whole in_env[] buffer.  But we potentially keep looping and adding
        more to in_len so now it can be any value.
    
        It simple enough to change, but it feels weird that we keep looping
        even though in_env is totally full.  Shouldn't we just return an
        error if we don't have space for desc->in_num.
    
    We keep looping because the size of the total input is allowed to be
    bigger than the 'envelope' which is a subset of the payload that tells
    us how much data to expect. For safety explicitly check that buf_len
    does not overflow which is what the checker flagged.
    
    Cc: <[email protected]>
    Fixes: 62232e4: "libnvdimm: control (ioctl) messages for nvdimm_bus..."
    Reported-by: Dan Carpenter <[email protected]>
    Signed-off-by: Dan Williams <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    djbw authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    29c969c View commit details
    Browse the repository at this point in the history
  32. device-dax: implement ->split() to catch invalid munmap attempts

    commit 9702cff upstream.
    
    Similar to how device-dax enforces that the 'address', 'offset', and
    'len' parameters to mmap() be aligned to the device's fundamental
    alignment, the same constraints apply to munmap().  Implement ->split()
    to fail munmap calls that violate the alignment constraint.
    
    Otherwise, we later fail VM_BUG_ON checks in the unmap_page_range() path
    with crash signatures of the form:
    
        vma ffff8800b60c8a88 start 00007f88c0000000 end 00007f88c0e00000
        next           (null) prev           (null) mm ffff8800b61150c0
        prot 8000000000000027 anon_vma           (null) vm_ops ffffffffa0091240
        pgoff 0 file ffff8800b638ef80 private_data           (null)
        flags: 0x380000fb(read|write|shared|mayread|maywrite|mayexec|mayshare|softdirty|mixedmap|hugepage)
        ------------[ cut here ]------------
        kernel BUG at mm/huge_memory.c:2014!
        [..]
        RIP: 0010:__split_huge_pud+0x12a/0x180
        [..]
        Call Trace:
         unmap_page_range+0x245/0xa40
         ? __vma_adjust+0x301/0x990
         unmap_vmas+0x4c/0xa0
         unmap_region+0xae/0x120
         ? __vma_rb_erase+0x11a/0x230
         do_munmap+0x276/0x410
         vm_munmap+0x6a/0xa0
         SyS_munmap+0x1d/0x30
    
    Link: http://lkml.kernel.org/r/151130418681.4029.7118245855057952010.stgit@dwillia2-desk3.amr.corp.intel.com
    Fixes: dee4107 ("/dev/dax, core: file operations and dax-mmap")
    Signed-off-by: Dan Williams <[email protected]>
    Reported-by: Jeff Moyer <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    djbw authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    be38759 View commit details
    Browse the repository at this point in the history
  33. mm: introduce get_user_pages_longterm

    commit 2bb6d28 upstream.
    
    Patch series "introduce get_user_pages_longterm()", v2.
    
    Here is a new get_user_pages api for cases where a driver intends to
    keep an elevated page count indefinitely.  This is distinct from usages
    like iov_iter_get_pages where the elevated page counts are transient.
    The iov_iter_get_pages cases immediately turn around and submit the
    pages to a device driver which will put_page when the i/o operation
    completes (under kernel control).
    
    In the longterm case userspace is responsible for dropping the page
    reference at some undefined point in the future.  This is untenable for
    filesystem-dax case where the filesystem is in control of the lifetime
    of the block / page and needs reasonable limits on how long it can wait
    for pages in a mapping to become idle.
    
    Fixing filesystems to actually wait for dax pages to be idle before
    blocks from a truncate/hole-punch operation are repurposed is saved for
    a later patch series.
    
    Also, allowing longterm registration of dax mappings is a future patch
    series that introduces a "map with lease" semantic where the kernel can
    revoke a lease and force userspace to drop its page references.
    
    I have also tagged these for -stable to purposely break cases that might
    assume that longterm memory registrations for filesystem-dax mappings
    were supported by the kernel.  The behavior regression this policy
    change implies is one of the reasons we maintain the "dax enabled.
    Warning: EXPERIMENTAL, use at your own risk" notification when mounting
    a filesystem in dax mode.
    
    It is worth noting the device-dax interface does not suffer the same
    constraints since it does not support file space management operations
    like hole-punch.
    
    This patch (of 4):
    
    Until there is a solution to the dma-to-dax vs truncate problem it is
    not safe to allow long standing memory registrations against
    filesytem-dax vmas.  Device-dax vmas do not have this problem and are
    explicitly allowed.
    
    This is temporary until a "memory registration with layout-lease"
    mechanism can be implemented for the affected sub-systems (RDMA and
    V4L2).
    
    [[email protected]: use kcalloc()]
    Link: http://lkml.kernel.org/r/151068939435.7446.13560129395419350737.stgit@dwillia2-desk3.amr.corp.intel.com
    Fixes: 3565fce ("mm, x86: get_user_pages() for dax mappings")
    Signed-off-by: Dan Williams <[email protected]>
    Suggested-by: Christoph Hellwig <[email protected]>
    Cc: Doug Ledford <[email protected]>
    Cc: Hal Rosenstock <[email protected]>
    Cc: Inki Dae <[email protected]>
    Cc: Jan Kara <[email protected]>
    Cc: Jason Gunthorpe <[email protected]>
    Cc: Jeff Moyer <[email protected]>
    Cc: Joonyoung Shim <[email protected]>
    Cc: Kyungmin Park <[email protected]>
    Cc: Mauro Carvalho Chehab <[email protected]>
    Cc: Mel Gorman <[email protected]>
    Cc: Ross Zwisler <[email protected]>
    Cc: Sean Hefty <[email protected]>
    Cc: Seung-Woo Kim <[email protected]>
    Cc: Vlastimil Babka <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    djbw authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    b29ea3c View commit details
    Browse the repository at this point in the history
  34. v4l2: disable filesystem-dax mapping support

    commit b70131d upstream.
    
    V4L2 memory registrations are incompatible with filesystem-dax that
    needs the ability to revoke dma access to a mapping at will, or
    otherwise allow the kernel to wait for completion of DMA.  The
    filesystem-dax implementation breaks the traditional solution of
    truncate of active file backed mappings since there is no page-cache
    page we can orphan to sustain ongoing DMA.
    
    If v4l2 wants to support long lived DMA mappings it needs to arrange to
    hold a file lease or use some other mechanism so that the kernel can
    coordinate revoking DMA access when the filesystem needs to truncate
    mappings.
    
    Link: http://lkml.kernel.org/r/151068940499.7446.12846708245365671207.stgit@dwillia2-desk3.amr.corp.intel.com
    Fixes: 3565fce ("mm, x86: get_user_pages() for dax mappings")
    Signed-off-by: Dan Williams <[email protected]>
    Reported-by: Jan Kara <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Cc: Mauro Carvalho Chehab <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Doug Ledford <[email protected]>
    Cc: Hal Rosenstock <[email protected]>
    Cc: Inki Dae <[email protected]>
    Cc: Jason Gunthorpe <[email protected]>
    Cc: Jeff Moyer <[email protected]>
    Cc: Joonyoung Shim <[email protected]>
    Cc: Kyungmin Park <[email protected]>
    Cc: Mel Gorman <[email protected]>
    Cc: Ross Zwisler <[email protected]>
    Cc: Sean Hefty <[email protected]>
    Cc: Seung-Woo Kim <[email protected]>
    Cc: Vlastimil Babka <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    djbw authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    53dfce3 View commit details
    Browse the repository at this point in the history
  35. IB/core: disable memory registration of filesystem-dax vmas

    commit 5f1d43d upstream.
    
    Until there is a solution to the dma-to-dax vs truncate problem it is
    not safe to allow RDMA to create long standing memory registrations
    against filesytem-dax vmas.
    
    Link: http://lkml.kernel.org/r/151068941011.7446.7766030590347262502.stgit@dwillia2-desk3.amr.corp.intel.com
    Fixes: 3565fce ("mm, x86: get_user_pages() for dax mappings")
    Signed-off-by: Dan Williams <[email protected]>
    Reported-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Acked-by: Jason Gunthorpe <[email protected]>
    Acked-by: Doug Ledford <[email protected]>
    Cc: Sean Hefty <[email protected]>
    Cc: Hal Rosenstock <[email protected]>
    Cc: Jeff Moyer <[email protected]>
    Cc: Ross Zwisler <[email protected]>
    Cc: Inki Dae <[email protected]>
    Cc: Jan Kara <[email protected]>
    Cc: Joonyoung Shim <[email protected]>
    Cc: Kyungmin Park <[email protected]>
    Cc: Mauro Carvalho Chehab <[email protected]>
    Cc: Mel Gorman <[email protected]>
    Cc: Seung-Woo Kim <[email protected]>
    Cc: Vlastimil Babka <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    djbw authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    00a6e63 View commit details
    Browse the repository at this point in the history
  36. libnvdimm, dax: fix 1GB-aligned namespaces vs physical misalignment

    commit 41fce90 upstream.
    
    The following namespace configuration attempt:
    
        # ndctl create-namespace -e namespace0.0 -m devdax -a 1G -f
        libndctl: ndctl_dax_enable: dax0.1: failed to enable
          Error: namespace0.0: failed to enable
    
        failed to reconfigure namespace: No such device or address
    
    ...fails when the backing memory range is not physically aligned to 1G:
    
        # cat /proc/iomem | grep Persistent
        210000000-30fffffff : Persistent Memory (legacy)
    
    In the above example the 4G persistent memory range starts and ends on a
    256MB boundary.
    
    We handle this case correctly when needing to handle cases that violate
    section alignment (128MB) collisions against "System RAM", and we simply
    need to extend that padding/truncation for the 1GB alignment use case.
    
    Cc: <[email protected]>
    Fixes: 315c562 ("libnvdimm, pfn: add 'align' attribute...")
    Reported-and-tested-by: Jane Chu <[email protected]>
    Signed-off-by: Dan Williams <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    djbw authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    807e336 View commit details
    Browse the repository at this point in the history
  37. mm: Fix devm_memremap_pages() collision handling

    commit 77dd66a upstream.
    
    If devm_memremap_pages() detects a collision while adding entries
    to the radix-tree, we call pgmap_radix_release(). Unfortunately,
    the function removes *all* entries for the range -- including the
    entries that caused the collision in the first place.
    
    Modify pgmap_radix_release() to take an additional argument to
    indicate where to stop, so that only newly added entries are removed
    from the tree.
    
    Cc: <[email protected]>
    Fixes: 9476df7 ("mm: introduce find_dev_pagemap()")
    Signed-off-by: Jan H. Schönherr <[email protected]>
    Signed-off-by: Dan Williams <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    schnhrr authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    8f7cf88 View commit details
    Browse the repository at this point in the history
  38. mm: fail get_vaddr_frames() for filesystem-dax mappings

    commit b7f0554 upstream.
    
    Until there is a solution to the dma-to-dax vs truncate problem it is
    not safe to allow V4L2, Exynos, and other frame vector users to create
    long standing / irrevocable memory registrations against filesytem-dax
    vmas.
    
    [[email protected]: add comment for vma_is_fsdax() check in get_vaddr_frames(), per Jan]
      Link: http://lkml.kernel.org/r/151197874035.26211.4061781453123083667.stgit@dwillia2-desk3.amr.corp.intel.com
    Link: http://lkml.kernel.org/r/151068939985.7446.15684639617389154187.stgit@dwillia2-desk3.amr.corp.intel.com
    Fixes: 3565fce ("mm, x86: get_user_pages() for dax mappings")
    Signed-off-by: Dan Williams <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Cc: Inki Dae <[email protected]>
    Cc: Seung-Woo Kim <[email protected]>
    Cc: Joonyoung Shim <[email protected]>
    Cc: Kyungmin Park <[email protected]>
    Cc: Mauro Carvalho Chehab <[email protected]>
    Cc: Mel Gorman <[email protected]>
    Cc: Vlastimil Babka <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Doug Ledford <[email protected]>
    Cc: Hal Rosenstock <[email protected]>
    Cc: Jason Gunthorpe <[email protected]>
    Cc: Jeff Moyer <[email protected]>
    Cc: Ross Zwisler <[email protected]>
    Cc: Sean Hefty <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    djbw authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    78b1cb3 View commit details
    Browse the repository at this point in the history
  39. x86/entry/64: Clear extra registers beyond syscall arguments, to redu…

    …ce speculation attack surface
    
    commit 8e1eb3f upstream.
    
    At entry userspace may have (maliciously) populated the extra registers
    outside the syscall calling convention with arbitrary values that could
    be useful in a speculative execution (Spectre style) attack.
    
    Clear these registers to minimize the kernel's attack surface.
    
    Note, this only clears the extra registers and not the unused
    registers for syscalls less than 6 arguments, since those registers are
    likely to be clobbered well before their values could be put to use
    under speculation.
    
    Note, Linus found that the XOR instructions can be executed with
    minimized cost if interleaved with the PUSH instructions, and Ingo's
    analysis found that R10 and R11 should be included in the register
    clearing beyond the typical 'extra' syscall calling convention
    registers.
    
    Suggested-by: Linus Torvalds <[email protected]>
    Reported-by: Andi Kleen <[email protected]>
    Signed-off-by: Dan Williams <[email protected]>
    Cc: <[email protected]>
    Cc: Andy Lutomirski <[email protected]>
    Cc: Borislav Petkov <[email protected]>
    Cc: Brian Gerst <[email protected]>
    Cc: Denys Vlasenko <[email protected]>
    Cc: H. Peter Anvin <[email protected]>
    Cc: Josh Poimboeuf <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Link: http://lkml.kernel.org/r/151787988577.7847.16733592218894189003.stgit@dwillia2-desk3.amr.corp.intel.com
    [ Made small improvements to the changelog and the code comments. ]
    Signed-off-by: Ingo Molnar <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    djbw authored and gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    22b5557 View commit details
    Browse the repository at this point in the history
  40. Linux 4.9.85

    gregkh committed Feb 28, 2018
    Configuration menu
    Copy the full SHA
    c426a71 View commit details
    Browse the repository at this point in the history

Commits on Mar 3, 2018

  1. hrtimer: Ensure POSIX compliance (relative CLOCK_REALTIME hrtimers)

    commit 48d0c9b upstream.
    
    The POSIX specification defines that relative CLOCK_REALTIME timers are not
    affected by clock modifications. Those timers have to use CLOCK_MONOTONIC
    to ensure POSIX compliance.
    
    The introduction of the additional HRTIMER_MODE_PINNED mode broke this
    requirement for pinned timers.
    
    There is no user space visible impact because user space timers are not
    using pinned mode, but for consistency reasons this needs to be fixed.
    
    Check whether the mode has the HRTIMER_MODE_REL bit set instead of
    comparing with HRTIMER_MODE_ABS.
    
    Signed-off-by: Anna-Maria Gleixner <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: John Stultz <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Cc: [email protected]
    Fixes: 597d027 ("timers: Framework for identifying pinned timers")
    Link: http://lkml.kernel.org/r/[email protected]
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: Mike Galbraith <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    anna-marialx authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    5a9f69b View commit details
    Browse the repository at this point in the history
  2. i2c: designware: must wait for enable

    commit fba4adb upstream.
    
    One I2C bus on my Atom E3845 board has been broken since 4.9.
    It has two devices, both declared by ACPI and with built-in drivers.
    
    There are two back-to-back transactions originating from the kernel, one
    targeting each device. The first transaction works, the second one locks
    up the I2C controller. The controller never recovers.
    
    These kernel logs show up whenever an I2C transaction is attempted after
    this failure.
    i2c-designware-pci 0000:00:18.3: timeout in disabling adapter
    i2c-designware-pci 0000:00:18.3: timeout waiting for bus ready
    
    Waiting for the I2C controller status to indicate that it is enabled
    before programming it fixes the issue.
    
    I have tested this patch on 4.14 and 4.15.
    
    Fixes: commit 2702ea7 ("i2c: designware: wait for disable/enable only if necessary")
    Cc: linux-stable <[email protected]> Freescale#4.13+
    Signed-off-by: Ben Gardner <[email protected]>
    Acked-by: Jarkko Nikula <[email protected]>
    Reviewed-by: José Roberto de Souza <[email protected]>
    Signed-off-by: Wolfram Sang <[email protected]>
    Signed-off-by: Ben Gardner <[email protected]>
    [Jarkko: Backported to v4.9..v4.12 before i2c-designware-core.c was renamed to i2c-designware-master.c]
    Signed-off-by: Jarkko Nikula <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    bengardner authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    b4e0649 View commit details
    Browse the repository at this point in the history
  3. f2fs: fix a bug caused by NULL extent tree

    commit dad48e7 upstream.
    
    Thread A:					Thread B:
    
    -f2fs_remount
        -sbi->mount_opt.opt = 0;
    						<--- -f2fs_iget
    						         -do_read_inode
    							     -f2fs_init_extent_tree
    							         -F2FS_I(inode)->extent_tree is NULL
            -default_options && parse_options
    	    -remount return
    						<---  -f2fs_map_blocks
    						          -f2fs_lookup_extent_tree
                                                                  -f2fs_bug_on(sbi, !et);
    
    The same problem with f2fs_new_inode.
    
    Signed-off-by: Yunlei He <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Nikolay Borisov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Yunlei He authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    4a97b2d View commit details
    Browse the repository at this point in the history
  4. dmaengine: fsl-edma: disable clks on all error paths

    [ Upstream commit 2610acf ]
    
    Previously enabled clks are only disabled if clk_prepare_enable() fails.
    However, there are other error paths were the previously enabled
    clocks are not disabled.
    
    To fix the problem, fsl_disable_clocks() now takes the number of clocks
    that shall be disabled + unprepared. For existing calls were all clocks
    were already successfully prepared + enabled, DMAMUX_NR is passed to
    disable + unprepare all clocks.
    
    In error paths were only some clocks were successfully prepared +
    enabled the loop counter is passed, in order to disable + unprepare
    all successfully prepared + enabled clocks.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Andreas Platschek <[email protected]>
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    andipla authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    051337a View commit details
    Browse the repository at this point in the history
  5. nvme: check hw sectors before setting chunk sectors

    [ Upstream commit 249159c ]
    
    Some devices with IDs matching the "stripe" quirk don't actually have
    this quirk, and don't have an MDTS value. When MDTS is not set, the
    driver sets the max sectors to UINT_MAX, which is not a power of 2,
    hitting a BUG_ON from blk_queue_chunk_sectors. This patch skips setting
    chunk sectors for such devices.
    
    Signed-off-by: Keith Busch <[email protected]>
    Reviewed-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Keith Busch authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    d4ea611 View commit details
    Browse the repository at this point in the history
  6. net: usb: qmi_wwan: add Telit ME910 PID 0x1101 support

    [ Upstream commit c647c0d ]
    
    This patch adds support for Telit ME910 PID 0x1101.
    
    Signed-off-by: Daniele Palmas <[email protected]>
    Acked-by: Bjørn Mork <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    dnlplm authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    83c5a93 View commit details
    Browse the repository at this point in the history
  7. mtd: nand: gpmi: Fix failure when a erased page has a bitflip at BBM

    [ Upstream commit fdf2e82 ]
    
    When erased subpages are read then the BCH decoder returns STATUS_ERASED
    if they are all empty, or STATUS_UNCORRECTABLE if there are bitflips.
    When there are bitflips, we have to set these bits again to show the
    upper layers a completely erased page. When a bitflip happens in the
    exact byte where the bad block marker is, then this byte is swapped
    with another byte in block_mark_swapping(). The correction code then
    detects a bitflip in another subpage and no longer corrects the bitflip
    where it really happens.
    
    Correct this behaviour by calling block_mark_swapping() after the
    bitflips have been corrected.
    
    In our case UBIFS failed with this bug because it expects erased
    pages to be really empty:
    
    UBIFS error (pid 187): ubifs_scan: corrupt empty space at LEB 36:118735
    UBIFS error (pid 187): ubifs_scanned_corruption: corruption at LEB 36:118735
    UBIFS error (pid 187): ubifs_scanned_corruption: first 8192 bytes from LEB 36:118735
    UBIFS error (pid 187): ubifs_scan: LEB 36 scanning failed
    UBIFS error (pid 187): do_commit: commit failed, error -117
    
    Signed-off-by: Sascha Hauer <[email protected]>
    Reviewed-by: Richard Weinberger <[email protected]>
    Acked-by: Boris Brezillon <[email protected]>
    Signed-off-by: Richard Weinberger <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    saschahauer authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    dd1e39f View commit details
    Browse the repository at this point in the history
  8. mtd: nand: brcmnand: Zero bitflip is not an error

    [ Upstream commit e44b9a9 ]
    
    A negative return value of brcmstb_nand_verify_erased_page() indicates a
    real bitflip error of an erased page, and other return values (>= 0) show
    the corrected bitflip number. Zero return value means no bitflip, but the
    current driver code treats it as an error, and eventually leads to
    falsely reported ECC error.
    
    Fixes: 02b88ee ("mtd: brcmnand: Add check for erased page bitflip")
    Signed-off-by: Albert Hsieh <[email protected]>
    Acked-by: Boris Brezillon <[email protected]>
    Signed-off-by: Richard Weinberger <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    hsiehwt authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    e88872e View commit details
    Browse the repository at this point in the history
  9. ipv6: icmp6: Allow icmp messages to be looped back

    [ Upstream commit 588753f ]
    
    One example of when an ICMPv6 packet is required to be looped back is
    when a host acts as both a Multicast Listener and a Multicast Router.
    
    A Multicast Router will listen on address ff02::16 for MLDv2 messages.
    
    Currently, MLDv2 messages originating from a Multicast Listener running
    on the same host as the Multicast Router are not being delivered to the
    Multicast Router. This is due to dst.input being assigned the default
    value of dst_discard.
    
    This results in the packet being looped back but discarded before being
    delivered to the Multicast Router.
    
    This patch sets dst.input to ip6_input to ensure a looped back packet
    is delivered to the Multicast Router.
    
    Signed-off-by: Brendan McGrath <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Brendan McGrath authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    3cf31f5 View commit details
    Browse the repository at this point in the history
  10. ARM: 8731/1: Fix csum_partial_copy_from_user() stack mismatch

    [ Upstream commit 36b0cb8 ]
    
    An additional 'ip' will be pushed to the stack, for restoring the
    DACR later, if CONFIG_CPU_SW_DOMAIN_PAN defined.
    
    However, the fixup still get the err_ptr by add Freescale#8*4 to sp, which
    results in the fact that the code area pointed by the LR will be
    overwritten, or the kernel will crash if CONFIG_DEBUG_RODATA is enabled.
    
    This patch fixes the stack mismatch.
    
    Fixes: a5e090a ("ARM: software-based priviledged-no-access support")
    Signed-off-by: Lvqiang Huang <[email protected]>
    Signed-off-by: Chunyan Zhang <[email protected]>
    Signed-off-by: Russell King <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    lyrazhang authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    db1e881 View commit details
    Browse the repository at this point in the history
  11. x86/asm: Allow again using asm.h when building for the 'bpf' clang ta…

    …rget
    
    [ Upstream commit ca26cff ]
    
    Up to f5caf62 ("x86/asm: Fix inline asm call constraints for Clang")
    we were able to use x86 headers to build to the 'bpf' clang target, as
    done by the BPF code in tools/perf/.
    
    With that commit, we ended up with following failure for 'perf test LLVM', this
    is because "clang ... -target bpf ..." fails since 4.0 does not have bpf inline
    asm support and 6.0 does not recognize the register 'esp', fix it by guarding
    that part with an #ifndef __BPF__, that is defined by clang when building to
    the "bpf" target.
    
      # perf test -v LLVM
      37: LLVM search and compile                               :
      37.1: Basic BPF llvm compile                              :
      --- start ---
      test child forked, pid 25526
      Kernel build dir is set to /lib/modules/4.14.0+/build
      set env: KBUILD_DIR=/lib/modules/4.14.0+/build
      unset env: KBUILD_OPTS
      include option is set to  -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/7/include -I/home/acme/git/linux/arch/x86/include -I./arch/x86/include/generated  -I/home/acme/git/linux/include -I./include -I/home/acme/git/linux/arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I/home/acme/git/linux/include/uapi -I./include/generated/uapi -include /home/acme/git/linux/include/linux/kconfig.h
      set env: NR_CPUS=4
      set env: LINUX_VERSION_CODE=0x40e00
      set env: CLANG_EXEC=/usr/local/bin/clang
      set env: CLANG_OPTIONS=-xc
      set env: KERNEL_INC_OPTIONS= -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/7/include -I/home/acme/git/linux/arch/x86/include -I./arch/x86/include/generated  -I/home/acme/git/linux/include -I./include -I/home/acme/git/linux/arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I/home/acme/git/linux/include/uapi -I./include/generated/uapi -include /home/acme/git/linux/include/linux/kconfig.h
      set env: WORKING_DIR=/lib/modules/4.14.0+/build
      set env: CLANG_SOURCE=-
      llvm compiling command template: echo '/*
       * bpf-script-example.c
       * Test basic LLVM building
       */
      #ifndef LINUX_VERSION_CODE
      # error Need LINUX_VERSION_CODE
      # error Example: for 4.2 kernel, put 'clang-opt="-DLINUX_VERSION_CODE=0x40200" into llvm section of ~/.perfconfig'
      #endif
      #define BPF_ANY 0
      #define BPF_MAP_TYPE_ARRAY 2
      #define BPF_FUNC_map_lookup_elem 1
      #define BPF_FUNC_map_update_elem 2
    
      static void *(*bpf_map_lookup_elem)(void *map, void *key) =
    	  (void *) BPF_FUNC_map_lookup_elem;
      static void *(*bpf_map_update_elem)(void *map, void *key, void *value, int flags) =
    	  (void *) BPF_FUNC_map_update_elem;
    
      struct bpf_map_def {
    	  unsigned int type;
    	  unsigned int key_size;
    	  unsigned int value_size;
    	  unsigned int max_entries;
      };
    
      #define SEC(NAME) __attribute__((section(NAME), used))
      struct bpf_map_def SEC("maps") flip_table = {
    	  .type = BPF_MAP_TYPE_ARRAY,
    	  .key_size = sizeof(int),
    	  .value_size = sizeof(int),
    	  .max_entries = 1,
      };
    
      SEC("func=SyS_epoll_wait")
      int bpf_func__SyS_epoll_wait(void *ctx)
      {
    	  int ind =0;
    	  int *flag = bpf_map_lookup_elem(&flip_table, &ind);
    	  int new_flag;
    	  if (!flag)
    		  return 0;
    	  /* flip flag and store back */
    	  new_flag = !*flag;
    	  bpf_map_update_elem(&flip_table, &ind, &new_flag, BPF_ANY);
    	  return new_flag;
      }
      char _license[] SEC("license") = "GPL";
      int _version SEC("version") = LINUX_VERSION_CODE;
      ' | $CLANG_EXEC -D__KERNEL__ -D__NR_CPUS__=$NR_CPUS -DLINUX_VERSION_CODE=$LINUX_VERSION_CODE $CLANG_OPTIONS $KERNEL_INC_OPTIONS -Wno-unused-value -Wno-pointer-sign -working-directory $WORKING_DIR -c "$CLANG_SOURCE" -target bpf -O2 -o -
      test child finished with 0
      ---- end ----
      LLVM search and compile subtest 0: Ok
      37.2: kbuild searching                                    :
      --- start ---
      test child forked, pid 25950
      Kernel build dir is set to /lib/modules/4.14.0+/build
      set env: KBUILD_DIR=/lib/modules/4.14.0+/build
      unset env: KBUILD_OPTS
      include option is set to  -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/7/include -I/home/acme/git/linux/arch/x86/include -I./arch/x86/include/generated  -I/home/acme/git/linux/include -I./include -I/home/acme/git/linux/arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I/home/acme/git/linux/include/uapi -I./include/generated/uapi -include /home/acme/git/linux/include/linux/kconfig.h
      set env: NR_CPUS=4
      set env: LINUX_VERSION_CODE=0x40e00
      set env: CLANG_EXEC=/usr/local/bin/clang
      set env: CLANG_OPTIONS=-xc
      set env: KERNEL_INC_OPTIONS= -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/7/include -I/home/acme/git/linux/arch/x86/include -I./arch/x86/include/generated  -I/home/acme/git/linux/include -I./include -I/home/acme/git/linux/arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I/home/acme/git/linux/include/uapi -I./include/generated/uapi -include /home/acme/git/linux/include/linux/kconfig.h
      set env: WORKING_DIR=/lib/modules/4.14.0+/build
      set env: CLANG_SOURCE=-
      llvm compiling command template: echo '/*
       * bpf-script-test-kbuild.c
       * Test include from kernel header
       */
      #ifndef LINUX_VERSION_CODE
      # error Need LINUX_VERSION_CODE
      # error Example: for 4.2 kernel, put 'clang-opt="-DLINUX_VERSION_CODE=0x40200" into llvm section of ~/.perfconfig'
      #endif
      #define SEC(NAME) __attribute__((section(NAME), used))
    
      #include <uapi/linux/fs.h>
      #include <uapi/asm/ptrace.h>
    
      SEC("func=vfs_llseek")
      int bpf_func__vfs_llseek(void *ctx)
      {
    	  return 0;
      }
    
      char _license[] SEC("license") = "GPL";
      int _version SEC("version") = LINUX_VERSION_CODE;
      ' | $CLANG_EXEC -D__KERNEL__ -D__NR_CPUS__=$NR_CPUS -DLINUX_VERSION_CODE=$LINUX_VERSION_CODE $CLANG_OPTIONS $KERNEL_INC_OPTIONS -Wno-unused-value -Wno-pointer-sign -working-directory $WORKING_DIR -c "$CLANG_SOURCE" -target bpf -O2 -o -
      In file included from <stdin>:12:
      In file included from /home/acme/git/linux/arch/x86/include/uapi/asm/ptrace.h:5:
      In file included from /home/acme/git/linux/include/linux/compiler.h:242:
      In file included from /home/acme/git/linux/arch/x86/include/asm/barrier.h:5:
      In file included from /home/acme/git/linux/arch/x86/include/asm/alternative.h:10:
      /home/acme/git/linux/arch/x86/include/asm/asm.h:145:50: error: unknown register name 'esp' in asm
      register unsigned long current_stack_pointer asm(_ASM_SP);
                                                       ^
      /home/acme/git/linux/arch/x86/include/asm/asm.h:44:18: note: expanded from macro '_ASM_SP'
      #define _ASM_SP         __ASM_REG(sp)
                              ^
      /home/acme/git/linux/arch/x86/include/asm/asm.h:27:32: note: expanded from macro '__ASM_REG'
      #define __ASM_REG(reg)         __ASM_SEL_RAW(e##reg, r##reg)
                                     ^
      /home/acme/git/linux/arch/x86/include/asm/asm.h:18:29: note: expanded from macro '__ASM_SEL_RAW'
      # define __ASM_SEL_RAW(a,b) __ASM_FORM_RAW(a)
                                  ^
      /home/acme/git/linux/arch/x86/include/asm/asm.h:11:32: note: expanded from macro '__ASM_FORM_RAW'
      # define __ASM_FORM_RAW(x)     #x
                                     ^
      <scratch space>:4:1: note: expanded from here
      "esp"
      ^
      1 error generated.
      ERROR:	unable to compile -
      Hint:	Check error message shown above.
      Hint:	You can also pre-compile it into .o using:
         		  clang -target bpf -O2 -c -
         	  with proper -I and -D options.
      Failed to compile test case: 'kbuild searching'
      test child finished with -1
      ---- end ----
      LLVM search and compile subtest 1: FAILED!
    
    Cc: Adrian Hunter <[email protected]>
    Cc: Alexander Potapenko <[email protected]>
    Cc: Alexei Starovoitov <[email protected]>
    Cc: Andrey Ryabinin <[email protected]>
    Cc: Andy Lutomirski <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Daniel Borkmann <[email protected]>
    Cc: David Ahern <[email protected]>
    Cc: Dmitriy Vyukov <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Josh Poimboeuf <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Matthias Kaehlcke <[email protected]>
    Cc: Miguel Bernal Marin <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Cc: Wang Nan <[email protected]>
    Cc: Yonghong Song <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    acmel authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    9a5bd36 View commit details
    Browse the repository at this point in the history
  12. sget(): handle failures of register_shrinker()

    [ Upstream commit 9ee332d ]
    
    Signed-off-by: Al Viro <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Al Viro authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    fd7cbb5 View commit details
    Browse the repository at this point in the history
  13. net: phy: xgene: disable clk on error paths

    [ Upstream commit ab14436 ]
    
    There are several error paths in xgene_mdio_probe(),
    where clk is left undisabled. The patch fixes them.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Alexey Khoroshilov <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    khoroshilov authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    3969270 View commit details
    Browse the repository at this point in the history
  14. drm/nouveau/pci: do a msi rearm on init

    [ Upstream commit a121027 ]
    
    On my GP107 when I load nouveau after unloading it, for some reason the
    GPU stopped sending or the CPU stopped receiving interrupts if MSI was
    enabled.
    
    Doing a rearm once before getting any interrupts fixes this.
    
    Signed-off-by: Karol Herbst <[email protected]>
    Reviewed-by: Thierry Reding <[email protected]>
    Signed-off-by: Ben Skeggs <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    karolherbst authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    5330add View commit details
    Browse the repository at this point in the history
  15. mac80211_hwsim: Fix a possible sleep-in-atomic bug in hwsim_get_radio_nl

    [ Upstream commit 162bd5e ]
    
    The driver may sleep under a spinlock.
    The function call path is:
    hwsim_get_radio_nl (acquire the spinlock)
      nlmsg_new(GFP_KERNEL) --> may sleep
    
    To fix it, GFP_KERNEL is replaced with GFP_ATOMIC.
    
    This bug is found by my static analysis tool(DSAC) and checked by my code review.
    
    Signed-off-by: Jia-Ju Bai <[email protected]>
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    XidianGeneral authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    ad17693 View commit details
    Browse the repository at this point in the history
  16. spi: atmel: fixed spin_lock usage inside atmel_spi_remove

    [ Upstream commit 66e900a ]
    
    The only part of atmel_spi_remove which needs to be atomic is hardware
    reset.
    
    atmel_spi_stop_dma calls dma_terminate_all and this needs interrupts
    enabled.
    atmel_spi_release_dma calls dma_release_channel and dma_release_channel
    locks a mutex inside of spin_lock.
    
    So the call of these functions can't be inside a spin_lock.
    
    Reported-by: Jia-Ju Bai <[email protected]>
    Signed-off-by: Radu Pirea <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Radu Pirea authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    90f7d14 View commit details
    Browse the repository at this point in the history
  17. ASoC: nau8825: fix issue that pop noise when start capture

    [ Upstream commit d070f7c ]
    
    In skylake platform, we hear a loud pop noise(0 dB) at start of
    audio capture power up sequence. This patch removes the pop noise
    from the recording by adding a delay before enabling ADC.
    
    Signed-off-by: Abhijeet Kumar <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Abhijeet Kumar authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    1ec97b2 View commit details
    Browse the repository at this point in the history
  18. net: mediatek: setup proper state for disabled GMAC on the default

    [ Upstream commit 7352e25 ]
    
    The current solution would setup fixed and force link of 1Gbps to the both
    GMAC on the default. However, The GMAC should always be put to link down
    state when the GMAC is disabled on certain target boards. Otherwise,
    the driver possibly receives unexpected data from the floating hardware
    connection through the unused GMAC. Although the driver had been added
    certain protection in RX path to get rid of such kind of unexpected data
    sent to the upper stack.
    
    Signed-off-by: Sean Wang <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    moore-bros authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    757677d View commit details
    Browse the repository at this point in the history
  19. net: arc_emac: fix arc_emac_rx() error paths

    [ Upstream commit e688822 ]
    
    arc_emac_rx() has some issues found by code review.
    
    In case netdev_alloc_skb_ip_align() or dma_map_single() failure
    rx fifo entry will not be returned to EMAC.
    
    In case dma_map_single() failure previously allocated skb became
    lost to driver. At the same time address of newly allocated skb
    will not be provided to EMAC.
    
    Signed-off-by: Alexander Kochetkov <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    akochetkov authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    95e094a View commit details
    Browse the repository at this point in the history
  20. ip6_tunnel: get the min mtu properly in ip6_tnl_xmit

    [ Upstream commit c9fefa0 ]
    
    Now it's using IPV6_MIN_MTU as the min mtu in ip6_tnl_xmit, but
    IPV6_MIN_MTU actually only works when the inner packet is ipv6.
    
    With IPV6_MIN_MTU for ipv4 packets, the new pmtu for inner dst
    couldn't be set less than 1280. It would cause tx_err and the
    packet to be dropped when the outer dst pmtu is close to 1280.
    
    Jianlin found it by running ipv4 traffic with the topo:
    
      (client) gre6 <---> eth1 (route) eth2 <---> gre6 (server)
    
    After changing eth2 mtu to 1300, the performance became very
    low, or the connection was even broken. The issue also affects
    ip4ip6 and ip6ip6 tunnels.
    
    So if the inner packet is ipv4, 576 should be considered as the
    min mtu.
    
    Note that for ip4ip6 and ip6ip6 tunnels, the inner packet can
    only be ipv4 or ipv6, but for gre6 tunnel, it may also be ARP.
    This patch using 576 as the min mtu for non-ipv6 packet works
    for all those cases.
    
    Reported-by: Jianlin Shi <[email protected]>
    Signed-off-by: Xin Long <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    lxin authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    1148fee View commit details
    Browse the repository at this point in the history
  21. net: stmmac: Fix TX timestamp calculation

    [ Upstream commit 200922c ]
    
    When using GMAC4 the value written in PTP_SSIR should be shifted however
    the shifted value is also used in subsequent calculations which results
    in a bad timestamp value.
    
    Signed-off-by: Fredrik Hallenberg <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    megahallon authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    9d0858e View commit details
    Browse the repository at this point in the history
  22. scsi: storvsc: Fix scsi_cmd error assignments in storvsc_handle_error

    [ Upstream commit d1b8b23 ]
    
    When an I/O is returned with an srb_status of SRB_STATUS_INVALID_LUN
    which has zero good_bytes it must be assigned an error. Otherwise the
    I/O will be continuously requeued and will cause a deadlock in the case
    where disks are being hot added and removed. sd_probe_async will wait
    forever for its I/O to complete while holding scsi_sd_probe_domain.
    
    Also returning the default error of DID_TARGET_FAILURE causes multipath
    to not retry the I/O resulting in applications receiving I/O errors
    before a failover can occur.
    
    Signed-off-by: Cathy Avery <[email protected]>
    Signed-off-by: Long Li <[email protected]>
    Reviewed-by: Stephen Hemminger <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    caavery authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    6358cb4 View commit details
    Browse the repository at this point in the history
  23. ARM: dts: ls1021a: fix incorrect clock references

    [ Upstream commit 506e8a9 ]
    
    dtc warns about two 'clocks' properties that have an extraneous '1'
    at the end:
    
    arch/arm/boot/dts/ls1021a-qds.dtb: Warning (clocks_property): arch/arm/boot/dts/ls1021a-twr.dtb: Warning (clocks_property): Property 'clocks', cell 1 is not a phandle reference in /soc/i2c@2180000/mux@77/i2c@4/sgtl5000@2a
    arch/arm/boot/dts/ls1021a-qds.dtb: Warning (clocks_property): Missing property '#clock-cells' in node /soc/interrupt-controller@1400000 or bad phandle (referred from /soc/i2c@2180000/mux@77/i2c@4/sgtl5000@2a:clocks[1])
    Property 'clocks', cell 1 is not a phandle reference in /soc/i2c@2190000/sgtl5000@a
    arch/arm/boot/dts/ls1021a-twr.dtb: Warning (clocks_property): Missing property '#clock-cells' in node /soc/interrupt-controller@1400000 or bad phandle (referred from /soc/i2c@2190000/sgtl5000@a:clocks[1])
    
    The clocks that get referenced here are fixed-rate, so they do not
    take any argument, and dtc interprets the next cell as a phandle, which
    is invalid.
    
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    arndb authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    0a1b1ee View commit details
    Browse the repository at this point in the history
  24. lib/mpi: Fix umul_ppmm() for MIPS64r6

    [ Upstream commit bbc25be ]
    
    Current MIPS64r6 toolchains aren't able to generate efficient
    DMULU/DMUHU based code for the C implementation of umul_ppmm(), which
    performs an unsigned 64 x 64 bit multiply and returns the upper and
    lower 64-bit halves of the 128-bit result. Instead it widens the 64-bit
    inputs to 128-bits and emits a __multi3 intrinsic call to perform a 128
    x 128 multiply. This is both inefficient, and it results in a link error
    since we don't include __multi3 in MIPS linux.
    
    For example commit 90a53e4 ("cfg80211: implement regdb signature
    checking") merged in v4.15-rc1 recently broke the 64r6_defconfig and
    64r6el_defconfig builds by indirectly selecting MPILIB. The same build
    errors can be reproduced on older kernels by enabling e.g. CRYPTO_RSA:
    
    lib/mpi/generic_mpih-mul1.o: In function `mpihelp_mul_1':
    lib/mpi/generic_mpih-mul1.c:50: undefined reference to `__multi3'
    lib/mpi/generic_mpih-mul2.o: In function `mpihelp_addmul_1':
    lib/mpi/generic_mpih-mul2.c:49: undefined reference to `__multi3'
    lib/mpi/generic_mpih-mul3.o: In function `mpihelp_submul_1':
    lib/mpi/generic_mpih-mul3.c:49: undefined reference to `__multi3'
    lib/mpi/mpih-div.o In function `mpihelp_divrem':
    lib/mpi/mpih-div.c:205: undefined reference to `__multi3'
    lib/mpi/mpih-div.c:142: undefined reference to `__multi3'
    
    Therefore add an efficient MIPS64r6 implementation of umul_ppmm() using
    inline assembly and the DMULU/DMUHU instructions, to prevent __multi3
    calls being emitted.
    
    Fixes: 7fd08ca ("MIPS: Add build support for the MIPS R6 ISA")
    Signed-off-by: James Hogan <[email protected]>
    Cc: Ralf Baechle <[email protected]>
    Cc: Herbert Xu <[email protected]>
    Cc: "David S. Miller" <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    amalon authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    d9868db View commit details
    Browse the repository at this point in the history
  25. tipc: error path leak fixes in tipc_enable_bearer()

    [ Upstream commit 1914255 ]
    
    Fix memory leak in tipc_enable_bearer() if enable_media() fails, and
    cleanup with bearer_disable() if tipc_mon_create() fails.
    
    Acked-by: Ying Xue <[email protected]>
    Acked-by: Jon Maloy <[email protected]>
    Signed-off-by: Tommi Rantala <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rantala authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    f60f577 View commit details
    Browse the repository at this point in the history
  26. tipc: fix tipc_mon_delete() oops in tipc_enable_bearer() error path

    [ Upstream commit 642a843 ]
    
    Calling tipc_mon_delete() before the monitor has been created will oops.
    This can happen in tipc_enable_bearer() error path if tipc_disc_create()
    fails.
    
    [   48.589074] BUG: unable to handle kernel paging request at 0000000000001008
    [   48.590266] IP: tipc_mon_delete+0xea/0x270 [tipc]
    [   48.591223] PGD 1e60c5067 P4D 1e60c5067 PUD 1eb0cf067 PMD 0
    [   48.592230] Oops: 0000 [Freescale#1] SMP KASAN
    [   48.595610] CPU: 5 PID: 1199 Comm: tipc Tainted: G    B            4.15.0-rc4-pc64-dirty Freescale#5
    [   48.597176] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-2.fc27 04/01/2014
    [   48.598489] RIP: 0010:tipc_mon_delete+0xea/0x270 [tipc]
    [   48.599347] RSP: 0018:ffff8801d827f668 EFLAGS: 00010282
    [   48.600705] RAX: ffff8801ee813f00 RBX: 0000000000000204 RCX: 0000000000000000
    [   48.602183] RDX: 1ffffffff1de6a75 RSI: 0000000000000297 RDI: 0000000000000297
    [   48.604373] RBP: 0000000000000000 R08: 0000000000000000 R09: fffffbfff1dd1533
    [   48.605607] R10: ffffffff8eafbb05 R11: fffffbfff1dd1534 R12: 0000000000000050
    [   48.607082] R13: dead000000000200 R14: ffffffff8e73f310 R15: 0000000000001020
    [   48.608228] FS:  00007fc686484800(0000) GS:ffff8801f5540000(0000) knlGS:0000000000000000
    [   48.610189] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   48.611459] CR2: 0000000000001008 CR3: 00000001dda70002 CR4: 00000000003606e0
    [   48.612759] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   48.613831] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   48.615038] Call Trace:
    [   48.615635]  tipc_enable_bearer+0x415/0x5e0 [tipc]
    [   48.620623]  tipc_nl_bearer_enable+0x1ab/0x200 [tipc]
    [   48.625118]  genl_family_rcv_msg+0x36b/0x570
    [   48.631233]  genl_rcv_msg+0x5a/0xa0
    [   48.631867]  netlink_rcv_skb+0x1cc/0x220
    [   48.636373]  genl_rcv+0x24/0x40
    [   48.637306]  netlink_unicast+0x29c/0x350
    [   48.639664]  netlink_sendmsg+0x439/0x590
    [   48.642014]  SYSC_sendto+0x199/0x250
    [   48.649912]  do_syscall_64+0xfd/0x2c0
    [   48.650651]  entry_SYSCALL64_slow_path+0x25/0x25
    [   48.651843] RIP: 0033:0x7fc6859848e3
    [   48.652539] RSP: 002b:00007ffd25dff938 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
    [   48.654003] RAX: ffffffffffffffda RBX: 00007ffd25dff990 RCX: 00007fc6859848e3
    [   48.655303] RDX: 0000000000000054 RSI: 00007ffd25dff990 RDI: 0000000000000003
    [   48.656512] RBP: 00007ffd25dff980 R08: 00007fc685c35fc0 R09: 000000000000000c
    [   48.657697] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000d13010
    [   48.658840] R13: 00007ffd25e009c0 R14: 0000000000000000 R15: 0000000000000000
    [   48.662972] RIP: tipc_mon_delete+0xea/0x270 [tipc] RSP: ffff8801d827f668
    [   48.664073] CR2: 0000000000001008
    [   48.664576] ---[ end trace e811818d54d5ce88 ]---
    
    Acked-by: Ying Xue <[email protected]>
    Acked-by: Jon Maloy <[email protected]>
    Signed-off-by: Tommi Rantala <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rantala authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    edaf4ff View commit details
    Browse the repository at this point in the history
  27. tg3: Add workaround to restrict 5762 MRRS to 2048

    [ Upstream commit 4419bb1 ]
    
    One of AMD based server with 5762 hangs with jumbo frame traffic.
    This AMD platform has southbridge limitation which is restricting MRRS
    to 4000. As a work around, driver to restricts the MRRS to 2048 for
    this particular 5762 NX1 card.
    
    Signed-off-by: Siva Reddy Kallam <[email protected]>
    Signed-off-by: Michael Chan <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    siva-kallam authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    3d6becb View commit details
    Browse the repository at this point in the history
  28. tg3: Enable PHY reset in MTU change path for 5720

    [ Upstream commit e60ee41 ]
    
    A customer noticed RX path hang when MTU is changed on the fly while
    running heavy traffic with NCSI enabled for 5717 and 5719. Since 5720
    belongs to same ASIC family, we observed same issue and same fix
    could solve this problem for 5720.
    
    Signed-off-by: Siva Reddy Kallam <[email protected]>
    Signed-off-by: Michael Chan <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    siva-kallam authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    78cc448 View commit details
    Browse the repository at this point in the history
  29. bnx2x: Improve reliability in case of nested PCI errors

    [ Upstream commit f708405 ]
    
    While in recovery process of PCI error (called EEH on PowerPC arch),
    another PCI transaction could be corrupted causing a situation of
    nested PCI errors. Also, this scenario could be reproduced with
    error injection mechanisms (for debug purposes).
    
    We observe that in case of nested PCI errors, bnx2x might attempt to
    initialize its shmem and cause a kernel crash due to bad addresses
    read from MCP. Multiple different stack traces were observed depending
    on the point the second PCI error happens.
    
    This patch avoids the crashes by:
    
     * failing PCI recovery in case of nested errors (since multiple
     PCI errors in a row are not expected to lead to a functional
     adapter anyway), and by,
    
     * preventing access to adapter FW when MCP is failed (we mark it as
     failed when shmem cannot get initialized properly).
    
    Reported-by: Abdul Haleem <[email protected]>
    Signed-off-by: Guilherme G. Piccoli <[email protected]>
    Acked-by: Shahed Shaikh <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Guilherme G. Piccoli authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    af60c38 View commit details
    Browse the repository at this point in the history
  30. led: core: Fix brightness setting when setting delay_off=0

    [ Upstream commit 2b83ff9 ]
    
    With the current code, the following sequence won't work :
    echo timer > trigger
    
    echo 0 >  delay_off
    * at this point we call
    ** led_delay_off_store
    ** led_blink_set
    Matthieu CASTET authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    86b9fa2 View commit details
    Browse the repository at this point in the history
  31. IB/mlx5: Fix mlx5_ib_alloc_mr error flow

    [ Upstream commit 45e6ae7 ]
    
    ibmr.device is being set only after ib_alloc_mr() is
    (successfully) complete. Therefore, in case mlx5_core_create_mkey()
    return with error, the error flow calls mlx5_free_priv_descs()
    which uses ibmr.device (which doesn't exist yet), causing
    a NULL dereference oops.
    
    To fix this, the IB device should be set in the mr struct earlier
    stage (e.g. prior to calling mlx5_core_create_mkey()).
    
    Fixes: 8a187ee ("IB/mlx5: Support the new memory registration API")
    Signed-off-by: Max Gurtovoy <[email protected]>
    Signed-off-by: Nitzan Carmi <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    nitzancarmi authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    64fb18c View commit details
    Browse the repository at this point in the history
  32. genirq: Guard handle_bad_irq log messages

    [ Upstream commit 11bca0a ]
    
    An interrupt storm on a bad interrupt will cause the kernel
    log to be clogged.
    
    [   60.089234] ->handle_irq():  ffffffffbe2f803f,
    [   60.090455] 0xffffffffbf2af380
    [   60.090510] handle_bad_irq+0x0/0x2e5
    [   60.090522] ->irq_data.chip(): ffffffffbf2af380,
    [   60.090553]    IRQ_NOPROBE set
    [   60.090584] ->handle_irq():  ffffffffbe2f803f,
    [   60.090590] handle_bad_irq+0x0/0x2e5
    [   60.090596] ->irq_data.chip(): ffffffffbf2af380,
    [   60.090602] 0xffffffffbf2af380
    [   60.090608] ->action():           (null)
    [   60.090779] handle_bad_irq+0x0/0x2e5
    
    This was seen when running an upstream kernel on Acer Chromebook R11.  The
    system was unstable as result.
    
    Guard the log message with __printk_ratelimit to reduce the impact.  This
    won't prevent the interrupt storm from happening, but at least the system
    remains stable.
    
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Cc: Dmitry Torokhov <[email protected]>
    Cc: Joe Perches <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Mika Westerberg <[email protected]>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=197953
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    groeck authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    ff5544d View commit details
    Browse the repository at this point in the history
  33. s390/dasd: fix wrongly assigned configuration data

    [ Upstream commit 8a9bd4f ]
    
    We store per path and per device configuration data to identify the
    path or device correctly. The per path configuration data might get
    mixed up if the original request gets into error recovery and is
    started with a random path mask.
    
    This would lead to a wrong identification of a path in case of a CUIR
    event for example.
    
    Fix by copying the path mask from the original request to the error
    recovery request in case it is a path verification request.
    
    Signed-off-by: Stefan Haberland <[email protected]>
    Reviewed-by: Jan Hoeppner <[email protected]>
    Signed-off-by: Martin Schwidefsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    stefan-haberland authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    336c28a View commit details
    Browse the repository at this point in the history
  34. IB/mlx4: Fix mlx4_ib_alloc_mr error flow

    [ Upstream commit 5a371cf ]
    
    ibmr.device is being set only after ib_alloc_mr() is successfully complete.
    Therefore, in case imlx4_mr_enable() returns with error, the error flow
    unwinder calls to mlx4_free_priv_pages(), which uses ibmr.device.
    
    Such usage causes to NULL dereference oops and to fix it, the IB device
    should be set in the mr struct earlier stage (e.g. prior to calling
    mlx4_free_priv_pages()).
    
    Fixes: 1b2cd0f ("IB/mlx4: Support the new memory registration API")
    Signed-off-by: Nitzan Carmi <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Leon Romanovsky authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    fb426a4 View commit details
    Browse the repository at this point in the history
  35. IB/ipoib: Fix race condition in neigh creation

    [ Upstream commit 16ba3de ]
    
    When using enhanced mode for IPoIB, two threads may execute xmit in
    parallel to two different TX queues while the target is the same.
    In this case, both of them will add the same neighbor to the path's
    neigh link list and we might see the following message:
    
      list_add double add: new=ffff88024767a348, prev=ffff88024767a348...
      WARNING: lib/list_debug.c:31__list_add_valid+0x4e/0x70
      ipoib_start_xmit+0x477/0x680 [ib_ipoib]
      dev_hard_start_xmit+0xb9/0x3e0
      sch_direct_xmit+0xf9/0x250
      __qdisc_run+0x176/0x5d0
      __dev_queue_xmit+0x1f5/0xb10
      __dev_queue_xmit+0x55/0xb10
    
    Analysis:
    Two SKB are scheduled to be transmitted from two cores.
    In ipoib_start_xmit, both gets NULL when calling ipoib_neigh_get.
    Two calls to neigh_add_path are made. One thread takes the spin-lock
    and calls ipoib_neigh_alloc which creates the neigh structure,
    then (after the __path_find) the neigh is added to the path's neigh
    link list. When the second thread enters the critical section it also
    calls ipoib_neigh_alloc but in this case it gets the already allocated
    ipoib_neigh structure, which is already linked to the path's neigh
    link list and adds it again to the list. Which beside of triggering
    the list, it creates a loop in the linked list. This loop leads to
    endless loop inside path_rec_completion.
    
    Solution:
    Check list_empty(&neigh->list) before adding to the list.
    Add a similar fix in "ipoib_multicast.c::ipoib_mcast_send"
    
    Fixes: b63b70d ('IPoIB: Use a private hash table for path lookup in xmit path')
    Signed-off-by: Erez Shitrit <[email protected]>
    Reviewed-by: Alex Vesker <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Erez Shitrit authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    ab43aaa View commit details
    Browse the repository at this point in the history
  36. xfs: quota: fix missed destroy of qi_tree_lock

    [ Upstream commit 2196881 ]
    
    xfs_qm_destroy_quotainfo() does not destroy quotainfo->qi_tree_lock
    while destroys quotainfo->qi_quotaofflock.
    
    Signed-off-by: Aliaksei Karaliou <[email protected]>
    Reviewed-by: Darrick J. Wong <[email protected]>
    Signed-off-by: Darrick J. Wong <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Aliaksei Karaliou authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    7999487 View commit details
    Browse the repository at this point in the history
  37. xfs: quota: check result of register_shrinker()

    [ Upstream commit 3a3882f ]
    
    xfs_qm_init_quotainfo() does not check result of register_shrinker()
    which was tagged as __must_check recently, reported by sparse.
    
    Signed-off-by: Aliaksei Karaliou <[email protected]>
    [darrick: move xfs_qm_destroy_quotainos nearer xfs_qm_init_quotainos]
    Reviewed-by: Darrick J. Wong <[email protected]>
    Signed-off-by: Darrick J. Wong <[email protected]>
    
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Aliaksei Karaliou authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    c33d494 View commit details
    Browse the repository at this point in the history
  38. macvlan: Fix one possible double free

    [ Upstream commit d02fd6e ]
    
    Because the macvlan_uninit would free the macvlan port, so there is one
    double free case in macvlan_common_newlink. When the macvlan port is just
    created, then register_netdevice or netdev_upper_dev_link failed and they
    would invoke macvlan_uninit. Then it would reach the macvlan_port_destroy
    which triggers the double free.
    
    Signed-off-by: Gao Feng <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    gfreewind authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    88f72bd View commit details
    Browse the repository at this point in the history
  39. e1000: fix disabling already-disabled warning

    [ Upstream commit 0b76aae ]
    
    This patch adds check so that driver does not disable already
    disabled device.
    
    [   44.637743] advantechwdt: Unexpected close, not stopping watchdog!
    [   44.997548] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input6
    [   45.013419] e1000 0000:00:03.0: disabling already-disabled device
    [   45.013447] ------------[ cut here ]------------
    [   45.014868] WARNING: CPU: 1 PID: 71 at drivers/pci/pci.c:1641 pci_disable_device+0xa1/0x105:
    						pci_disable_device at drivers/pci/pci.c:1640
    [   45.016171] CPU: 1 PID: 71 Comm: rcu_perf_shutdo Not tainted 4.14.0-01330-g3c07399 Freescale#1
    [   45.017197] task: ffff88011bee9e40 task.stack: ffffc90000860000
    [   45.017987] RIP: 0010:pci_disable_device+0xa1/0x105:
    						pci_disable_device at drivers/pci/pci.c:1640
    [   45.018603] RSP: 0000:ffffc90000863e30 EFLAGS: 00010286
    [   45.019282] RAX: 0000000000000035 RBX: ffff88013a230008 RCX: 0000000000000000
    [   45.020182] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000203
    [   45.021084] RBP: ffff88013a3f31e8 R08: 0000000000000001 R09: 0000000000000000
    [   45.021986] R10: ffffffff827ec29c R11: 0000000000000002 R12: 0000000000000001
    [   45.022946] R13: ffff88013a230008 R14: ffff880117802b20 R15: ffffc90000863e8f
    [   45.023842] FS:  0000000000000000(0000) GS:ffff88013fd00000(0000) knlGS:0000000000000000
    [   45.024863] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   45.025583] CR2: ffffc900006d4000 CR3: 000000000220f000 CR4: 00000000000006a0
    [   45.026478] Call Trace:
    [   45.026811]  __e1000_shutdown+0x1d4/0x1e2:
    						__e1000_shutdown at drivers/net/ethernet/intel/e1000/e1000_main.c:5162
    [   45.027344]  ? rcu_perf_cleanup+0x2a1/0x2a1:
    						rcu_perf_shutdown at kernel/rcu/rcuperf.c:627
    [   45.027883]  e1000_shutdown+0x14/0x3a:
    						e1000_shutdown at drivers/net/ethernet/intel/e1000/e1000_main.c:5235
    [   45.028351]  device_shutdown+0x110/0x1aa:
    						device_shutdown at drivers/base/core.c:2807
    [   45.028858]  kernel_power_off+0x31/0x64:
    						kernel_power_off at kernel/reboot.c:260
    [   45.029343]  rcu_perf_shutdown+0x9b/0xa7:
    						rcu_perf_shutdown at kernel/rcu/rcuperf.c:637
    [   45.029852]  ? __wake_up_common_lock+0xa2/0xa2:
    						autoremove_wake_function at kernel/sched/wait.c:376
    [   45.030414]  kthread+0x126/0x12e:
    						kthread at kernel/kthread.c:233
    [   45.030834]  ? __kthread_bind_mask+0x8e/0x8e:
    						kthread at kernel/kthread.c:190
    [   45.031399]  ? ret_from_fork+0x1f/0x30:
    						ret_from_fork at arch/x86/entry/entry_64.S:443
    [   45.031883]  ? kernel_init+0xa/0xf5:
    						kernel_init at init/main.c:997
    [   45.032325]  ret_from_fork+0x1f/0x30:
    						ret_from_fork at arch/x86/entry/entry_64.S:443
    [   45.032777] Code: 00 48 85 ed 75 07 48 8b ab a8 00 00 00 48 8d bb 98 00 00 00 e8 aa d1 11 00 48 89 ea 48 89 c6 48 c7 c7 d8 e4 0b 82 e8 55 7d da ff <0f> ff b9 01 00 00 00 31 d2 be 01 00 00 00 48 c7 c7 f0 b1 61 82
    [   45.035222] ---[ end trace c257137b1b1976ef ]---
    [   45.037838] ACPI: Preparing to enter system sleep state S5
    
    Signed-off-by: Tushar Dave <[email protected]>
    Tested-by: Fengguang Wu <[email protected]>
    Signed-off-by: Jeff Kirsher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    tndave authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    125ca93 View commit details
    Browse the repository at this point in the history
  40. NET: usb: qmi_wwan: add support for YUGA CLM920-NC5 PID 0x9625

    [ Upstream commit bd30ffc ]
    
    This patch adds support for PID 0x9625 of YUGA CLM920-NC5.
    
    YUGA CLM920-NC5 needs to enable QMI_WWAN_QUIRK_DTR before QMI operation.
    
    qmicli -d /dev/cdc-wdm0 -p --dms-get-revision
    [/dev/cdc-wdm0] Device revision retrieved:
            Revision: 'CLM920_NC5-V1  1  [Oct 23 2016 19:00:00]'
    
    Signed-off-by: SZ Lin (林上智) <[email protected]>
    Acked-by: Bjørn Mork <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    SZ Lin (林上智) authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    b4b73c1 View commit details
    Browse the repository at this point in the history
  41. drm/ttm: check the return value of kzalloc

    [ Upstream commit 19d859a ]
    
    In the function ttm_page_alloc_init, kzalloc call is made for variable
    _manager, we need to check its return value, it may return NULL.
    
    Signed-off-by: Xiongwei Song <[email protected]>
    Reviewed-by: Christian König <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    xwsong authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    3a26db8 View commit details
    Browse the repository at this point in the history
  42. uapi libc compat: add fallback for unsupported libcs

    [ Upstream commit c0bace7 ]
    
    libc-compat.h aims to prevent symbol collisions between uapi and libc
    headers for each supported libc. This requires continuous coordination
    between them.
    
    The goal of this commit is to improve the situation for libcs (such as
    musl) which are not yet supported and/or do not wish to be explicitly
    supported, while not affecting supported libcs. More precisely, with
    this commit, unsupported libcs can request the suppression of any
    specific uapi definition by defining the correspondings _UAPI_DEF_*
    macro as 0. This can fix symbol collisions for them, as long as the
    libc headers are included before the uapi headers. Inclusion in the
    other order is outside the scope of this commit.
    
    All infrastructure in order to enable this fallback for unsupported
    libcs is already in place, except that libc-compat.h unconditionally
    defines all _UAPI_DEF_* macros to 1 for all unsupported libcs so that
    any previous definitions are ignored. In order to fix this, this commit
    merely makes these definitions conditional.
    
    This commit together with the musl libc commit
    
    http://git.musl-libc.org/cgit/musl/commit/?id=04983f2272382af92eb8f8838964ff944fbb8258
    
    fixes for example the following compiler errors when <linux/in6.h> is
    included after musl's <netinet/in.h>:
    
    ./linux/in6.h:32:8: error: redefinition of 'struct in6_addr'
    ./linux/in6.h:49:8: error: redefinition of 'struct sockaddr_in6'
    ./linux/in6.h:59:8: error: redefinition of 'struct ipv6_mreq'
    
    The comments referencing glibc are still correct, but this file is not
    only used for glibc any more.
    
    Signed-off-by: Felix Janda <[email protected]>
    Reviewed-by: Hauke Mehrtens <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    doughdemon authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    26f6873 View commit details
    Browse the repository at this point in the history
  43. i40e/i40evf: Account for frags split over multiple descriptors in che…

    …ck linearize
    
    [ Upstream commit 248de22 ]
    
    The original code for __i40e_chk_linearize didn't take into account the
    fact that if a fragment is 16K in size or larger it has to be split over 2
    descriptors and the smaller of those 2 descriptors will be on the trailing
    edge of the transmit. As a result we can get into situations where we didn't
    catch requests that could result in a Tx hang.
    
    This patch takes care of that by subtracting the length of all but the
    trailing edge of the stale fragment before we test for sum. By doing this
    we can guarantee that we have all cases covered, including the case of a
    fragment that spans multiple descriptors. We don't need to worry about
    checking the inner portions of this since 12K is the maximum aligned DMA
    size and that is larger than any MSS will ever be since the MTU limit for
    jumbos is something on the order of 9K.
    
    Signed-off-by: Alexander Duyck <[email protected]>
    Tested-by: Andrew Bowers <[email protected]>
    Signed-off-by: Jeff Kirsher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Alexander Duyck authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    cd80cb0 View commit details
    Browse the repository at this point in the history
  44. nl80211: Check for the required netlink attribute presence

    [ Upstream commit 3ea1545 ]
    
    nl80211_nan_add_func() does not check if the required attribute
    NL80211_NAN_FUNC_FOLLOW_UP_DEST is present when processing
    NL80211_CMD_ADD_NAN_FUNCTION request. This request can be issued
    by users with CAP_NET_ADMIN privilege and may result in NULL dereference
    and a system crash. Add a check for the required attribute presence.
    
    Signed-off-by: Hao Chen <[email protected]>
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    flankersky authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    4ec2b1c View commit details
    Browse the repository at this point in the history
  45. mac80211: mesh: drop frames appearing to be from us

    [ Upstream commit 736a80b ]
    
    If there are multiple mesh stations with the same MAC address,
    they will both get confused and start throwing warnings.
    
    Obviously in this case nothing can actually work anyway, so just
    drop frames that look like they're from ourselves early on.
    
    Reported-by: Gui Iribarren <[email protected]>
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jmberg-intel authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    58c4ee8 View commit details
    Browse the repository at this point in the history
  46. can: flex_can: Correct the checking for frame length in flexcan_start…

    …_xmit()
    
    [ Upstream commit 13454c1 ]
    
    The flexcan_start_xmit() function compares the frame length with data
    register length to write frame content into data[0] and data[1]
    register. Data register length is 4 bytes and frame maximum length is 8
    bytes.
    
    Fix the check that compares frame length with 3. Because the register
    length is 4.
    
    Signed-off-by: Luu An Phu <[email protected]>
    Reviewed-by: Oliver Hartkopp <[email protected]>
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Luu An Phu authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    9137deb View commit details
    Browse the repository at this point in the history
  47. bnxt_en: Fix the 'Invalid VF' id check in bnxt_vf_ndo_prep routine.

    [ Upstream commit 78f3000 ]
    
    In bnxt_vf_ndo_prep (which is called by bnxt_get_vf_config ndo), there is a
    check for "Invalid VF id". Currently, the check is done against max_vfs.
    However, the user doesn't always create max_vfs. So, the check should be
    against the created number of VFs. The number of bnxt_vf_info structures
    that are allocated in bnxt_alloc_vf_resources routine is the "number of
    requested VFs". So, if an "invalid VF id" falls between the requested
    number of VFs and the max_vfs, the driver will be dereferencing an invalid
    pointer.
    
    Fixes: c0c050c ("bnxt_en: New Broadcom ethernet driver.")
    Signed-off-by: Venkat Devvuru <[email protected]>
    Signed-off-by: Michael Chan <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Venkat Duvvuru authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    0fd8741 View commit details
    Browse the repository at this point in the history
  48. xen-netfront: enable device after manual module load

    [ Upstream commit b707fda ]
    
    When loading the module after unloading it, the network interface would
    not be enabled and thus wouldn't have a backend counterpart and unable
    to be used by the guest.
    
    The guest would face errors like:
    
      [root@guest ~]# ethtool -i eth0
      Cannot get driver information: No such device
    
      [root@guest ~]# ifconfig eth0
      eth0: error fetching interface information: Device not found
    
    This patch initializes the state of the netfront device whenever it is
    loaded manually, this state would communicate the netback to create its
    device and establish the connection between them.
    
    Signed-off-by: Eduardo Otubo <[email protected]>
    Reviewed-by: Boris Ostrovsky <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    otubo authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    cded2e6 View commit details
    Browse the repository at this point in the history
  49. mdio-sun4i: Fix a memory leak

    [ Upstream commit 56c0290 ]
    
    If the probing of the regulator is deferred, the memory allocated by
    'mdiobus_alloc_size()' will be leaking.
    It should be freed before the next call to 'sun4i_mdio_probe()' which will
    reallocate it.
    
    Fixes: 4bdcb1d ("net: Add MDIO bus driver for the Allwinner EMAC")
    Signed-off-by: Christophe JAILLET <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    tititiou36 authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    7086ec8 View commit details
    Browse the repository at this point in the history
  50. SolutionEngine771x: fix Ether platform data

    [ Upstream commit 195e2ad ]
    
    The 'sh_eth' driver's probe() method would fail  on the SolutionEngine7710
    board and crash on SolutionEngine7712 board  as the platform code is
    hopelessly behind the driver's platform data --  it passes the PHY address
    instead of 'struct sh_eth_plat_data *'; pass the latter to the driver in
    order to fix the bug...
    
    Fixes: 71557a3 ("[netdrvr] sh_eth: Add SH7619 support")
    Signed-off-by: Sergei Shtylyov <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Sergei Shtylyov authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    1bb8110 View commit details
    Browse the repository at this point in the history
  51. xen/gntdev: Fix off-by-one error when unmapping with holes

    [ Upstream commit 951a010 ]
    
    If the requested range has a hole, the calculation of the number of
    pages to unmap is off by one. Fix it.
    
    Signed-off-by: Ross Lagerwall <[email protected]>
    Reviewed-by: Boris Ostrovsky <[email protected]>
    Signed-off-by: Boris Ostrovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rosslagerwall authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    beaa7d1 View commit details
    Browse the repository at this point in the history
  52. xen/gntdev: Fix partial gntdev_mmap() cleanup

    [ Upstream commit cf2acf6 ]
    
    When cleaning up after a partially successful gntdev_mmap(), unmap the
    successfully mapped grant pages otherwise Xen will kill the domain if
    in debug mode (Attempt to implicitly unmap a granted PTE) or Linux will
    kill the process and emit "BUG: Bad page map in process" if Xen is in
    release mode.
    
    This is only needed when use_ptemod is true because gntdev_put_map()
    will unmap grant pages itself when use_ptemod is false.
    
    Signed-off-by: Ross Lagerwall <[email protected]>
    Reviewed-by: Boris Ostrovsky <[email protected]>
    Signed-off-by: Boris Ostrovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rosslagerwall authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    c65c0df View commit details
    Browse the repository at this point in the history
  53. sctp: make use of pre-calculated len

    [ Upstream commit c76f97c ]
    
    Some sockopt handling functions were calculating the length of the
    buffer to be written to userspace and then calculating it again when
    actually writing the buffer, which could lead to some write not using
    an up-to-date length.
    
    This patch updates such places to just make use of the len variable.
    
    Also, replace some sizeof(type) to sizeof(var).
    
    Signed-off-by: Marcelo Ricardo Leitner <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    marceloleitner authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    b923c86 View commit details
    Browse the repository at this point in the history
  54. net: gianfar_ptp: move set_fipers() to spinlock protecting area

    [ Upstream commit 11d827a ]
    
    set_fipers() calling should be protected by spinlock in
    case that any interrupt breaks related registers setting
    and the function we expect. This patch is to move set_fipers()
    to spinlock protecting area in ptp_gianfar_adjtime().
    
    Signed-off-by: Yangbo Lu <[email protected]>
    Acked-by: Richard Cochran <[email protected]>
    Reviewed-by: Fabio Estevam <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    yangbolu1991 authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    3eb2221 View commit details
    Browse the repository at this point in the history
  55. KVM: arm/arm64: Fix check for hugepage size when allocating at Stage 2

    Commit 45ee9d5 ("KVM: arm/arm64: Check pagesize when allocating a
    hugepage at Stage 2") lost the check for PMD_SIZE during the backport
    to 4.9.
    
    Fix this by correcting the condition to detect hugepages during stage
    2 allocation.
    
    Fixes: 45ee9d5 ("KVM: arm/arm64: Check pagesize when allocating a hugepage at Stage 2")
    Reported-by: Ioana Ciornei <[email protected]>
    Signed-off-by: Punit Agrawal <[email protected]>
    Cc: Marc Zyngier <[email protected]>
    Cc: Christoffer Dall <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    punitagrawal authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    25039c1 View commit details
    Browse the repository at this point in the history
  56. MIPS: Implement __multi3 for GCC7 MIPS64r6 builds

    commit ebabcf1 upstream.
    
    GCC7 is a bit too eager to generate suboptimal __multi3 calls (128bit
    multiply with 128bit result) for MIPS64r6 builds, even in code which
    doesn't explicitly use 128bit types, such as the following:
    
    unsigned long func(unsigned long a, unsigned long b)
    {
    	return a > (~0UL) / b;
    }
    
    Which GCC rearanges to:
    
    return (unsigned __int128)a * (unsigned __int128)b > 0xffffffffffffffff;
    
    Therefore implement __multi3, but only for MIPS64r6 with GCC7 as under
    normal circumstances we wouldn't expect any calls to __multi3 to be
    generated from kernel code.
    
    Reported-by: Thomas Petazzoni <[email protected]>
    Signed-off-by: James Hogan <[email protected]>
    Tested-by: Waldemar Brodkorb <[email protected]>
    Cc: Ralf Baechle <[email protected]>
    Cc: Maciej W. Rozycki <[email protected]>
    Cc: Matthew Fortune <[email protected]>
    Cc: Florian Fainelli <[email protected]>
    Cc: [email protected]
    Patchwork: https://patchwork.linux-mips.org/patch/17890/
    Cc: Guenter Roeck <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    amalon authored and gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    b5075ee View commit details
    Browse the repository at this point in the history
  57. Linux 4.9.86

    gregkh committed Mar 3, 2018
    Configuration menu
    Copy the full SHA
    6a83eb2 View commit details
    Browse the repository at this point in the history

Commits on Mar 11, 2018

  1. tpm: st33zp24: fix potential buffer overruns caused by bit glitches o…

    …n the bus
    
    commit 6d24cd1 upstream.
    
    Discrete TPMs are often connected over slow serial buses which, on
    some platforms, can have glitches causing bit flips.  In all the
    driver _recv() functions, we need to use a u32 to unmarshal the
    response size, otherwise a bit flip of the 31st bit would cause the
    expected variable to go negative, which would then try to read a huge
    amount of data.  Also sanity check that the expected amount of data is
    large enough for the TPM header.
    
    Signed-off-by: Jeremy Boone <[email protected]>
    Cc: [email protected]
    Signed-off-by: James Bottomley <[email protected]>
    Reviewed-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: James Morris <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Jeremy Boone authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    9be1646 View commit details
    Browse the repository at this point in the history
  2. tpm_i2c_infineon: fix potential buffer overruns caused by bit glitche…

    …s on the bus
    
    commit 9b8cb28 upstream.
    
    Discrete TPMs are often connected over slow serial buses which, on
    some platforms, can have glitches causing bit flips.  In all the
    driver _recv() functions, we need to use a u32 to unmarshal the
    response size, otherwise a bit flip of the 31st bit would cause the
    expected variable to go negative, which would then try to read a huge
    amount of data.  Also sanity check that the expected amount of data is
    large enough for the TPM header.
    
    Signed-off-by: Jeremy Boone <[email protected]>
    Cc: [email protected]
    Signed-off-by: James Bottomley <[email protected]>
    Reviewed-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: James Morris <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Jeremy Boone authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    e785c9e View commit details
    Browse the repository at this point in the history
  3. tpm_i2c_nuvoton: fix potential buffer overruns caused by bit glitches…

    … on the bus
    
    commit f9d4d9b upstream.
    
    Discrete TPMs are often connected over slow serial buses which, on
    some platforms, can have glitches causing bit flips.  In all the
    driver _recv() functions, we need to use a u32 to unmarshal the
    response size, otherwise a bit flip of the 31st bit would cause the
    expected variable to go negative, which would then try to read a huge
    amount of data.  Also sanity check that the expected amount of data is
    large enough for the TPM header.
    
    Signed-off-by: Jeremy Boone <[email protected]>
    Cc: [email protected]
    Signed-off-by: James Bottomley <[email protected]>
    Reviewed-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: James Morris <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Jeremy Boone authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    15dcd3a View commit details
    Browse the repository at this point in the history
  4. tpm_tis: fix potential buffer overruns caused by bit glitches on the bus

    commit 6bb320c upstream.
    
    Discrete TPMs are often connected over slow serial buses which, on
    some platforms, can have glitches causing bit flips.  In all the
    driver _recv() functions, we need to use a u32 to unmarshal the
    response size, otherwise a bit flip of the 31st bit would cause the
    expected variable to go negative, which would then try to read a huge
    amount of data.  Also sanity check that the expected amount of data is
    large enough for the TPM header.
    
    Signed-off-by: Jeremy Boone <[email protected]>
    Cc: [email protected]
    Signed-off-by: James Bottomley <[email protected]>
    Tested-by: Jarkko Sakkinen <[email protected]>
    Reviewed-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: James Morris <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Jeremy Boone authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    922f22e View commit details
    Browse the repository at this point in the history
  5. tpm: constify transmit data pointers

    commit c37fbc0 upstream.
    
    Making cmd_getticks 'const' introduced a couple of harmless warnings:
    
    drivers/char/tpm/tpm_tis_core.c: In function 'probe_itpm':
    drivers/char/tpm/tpm_tis_core.c:469:31: error: passing argument 2 of 'tpm_tis_send_data' discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
      rc = tpm_tis_send_data(chip, cmd_getticks, len);
    drivers/char/tpm/tpm_tis_core.c:477:31: error: passing argument 2 of 'tpm_tis_send_data' discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
      rc = tpm_tis_send_data(chip, cmd_getticks, len);
    drivers/char/tpm/tpm_tis_core.c:255:12: note: expected 'u8 * {aka unsigned char *}' but argument is of type 'const u8 * {aka const unsigned char *}'
     static int tpm_tis_send_data(struct tpm_chip *chip, u8 *buf, size_t len)
    
    This changes the related functions to all take 'const' pointers
    so that gcc can see this as being correct. I had to slightly
    modify the logic around tpm_tis_spi_transfer() for this to work
    without introducing ugly casts.
    
    Cc: [email protected]
    Fixes: 5e35bd8 ("tpm_tis: make array cmd_getticks static const to shink object code size")
    Signed-off-by: Arnd Bergmann <[email protected]>
    Reviewed-by: Jarkko Sakkinen <[email protected]>
    Tested-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    arndb authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    e6b9e04 View commit details
    Browse the repository at this point in the history
  6. tpm_tis_spi: Use DMA-safe memory for SPI transfers

    commit 6b3a131 upstream.
    
    The buffers used as tx_buf/rx_buf in a SPI transfer need to be DMA-safe.
    This cannot be guaranteed for the buffers passed to tpm_tis_spi_read_bytes
    and tpm_tis_spi_write_bytes. Therefore, we need to use our own DMA-safe
    buffer and copy the data to/from it.
    
    The buffer needs to be allocated separately, to ensure that it is
    cacheline-aligned and not shared with other data, so that DMA can work
    correctly.
    
    Fixes: 0edbfea ("tpm/tpm_tis_spi: Add support for spi phy")
    Cc: [email protected]
    Reviewed-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Alexander Steffen <[email protected]>
    Signed-off-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    webmeister authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    eb75717 View commit details
    Browse the repository at this point in the history
  7. tpm-dev-common: Reject too short writes

    commit ee70bc1 upstream.
    
    tpm_transmit() does not offer an explicit interface to indicate the number
    of valid bytes in the communication buffer. Instead, it relies on the
    commandSize field in the TPM header that is encoded within the buffer.
    Therefore, ensure that a) enough data has been written to the buffer, so
    that the commandSize field is present and b) the commandSize field does not
    announce more data than has been written to the buffer.
    
    This should have been fixed with CVE-2011-1161 long ago, but apparently
    a correct version of that patch never made it into the kernel.
    
    Cc: [email protected]
    Signed-off-by: Alexander Steffen <[email protected]>
    Reviewed-by: Jarkko Sakkinen <[email protected]>
    Tested-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    webmeister authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    89f0fb9 View commit details
    Browse the repository at this point in the history
  8. ALSA: usb-audio: Add a quirck for B&W PX headphones

    commit 240a8af upstream.
    
    The capture interface doesn't work and the playback interface only
    supports 48 kHz sampling rate even though it advertises more rates.
    
    Signed-off-by: Erik Veijola <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    kernesti authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    57adeeb View commit details
    Browse the repository at this point in the history
  9. ALSA: hda: Add a power_save blacklist

    commit 1ba8f9d upstream.
    
    On some boards setting power_save to a non 0 value leads to clicking /
    popping sounds when ever we enter/leave powersaving mode. Ideally we would
    figure out how to avoid these sounds, but that is not always feasible.
    
    This commit adds a blacklist for devices where powersaving is known to
    cause problems and disables it on these devices.
    
    Note I tried to put this blacklist in userspace first:
    systemd/systemd#8128
    
    But the systemd maintainers rightfully pointed out that it would be
    impossible to then later remove entries once we actually find a way to
    make power-saving work on listed boards without issues. Having this list
    in the kernel will allow removal of the blacklist entry in the same commit
    which fixes the clicks / plops.
    
    The blacklist only applies to the default power_save module-option value,
    if a user explicitly sets the module-option then the blacklist is not
    used.
    
    [ added an ifdef CONFIG_PM for the build error -- tiwai]
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1525104
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=198611
    Cc: [email protected]
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jwrdegoede authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    30f3237 View commit details
    Browse the repository at this point in the history
  10. ALSA: hda - Fix pincfg at resume on Lenovo T470 dock

    commit 71db96d upstream.
    
    We've added a quirk to enable the recent Lenovo dock support, where it
    overwrites the pin configs of NID 0x17 and 19, not only updating the
    pin config cache.  It works right after the boot, but the problem is
    that the pin configs are occasionally cleared when the machine goes to
    PM.  Meanwhile the quirk writes the pin configs only at the pre-probe,
    so this won't be applied any longer.
    
    For addressing that issue, this patch moves the code to overwrite the
    pin configs into HDA_FIXUP_ACT_INIT section so that it's always
    applied at both probe and resume time.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=195161
    Fixes: 61fcf8e ("ALSA: hda/realtek - Enable Thinkpad Dock device for ALC298 platform")
    Cc: <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    tiwai authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    61963d3 View commit details
    Browse the repository at this point in the history
  11. timers: Forward timer base before migrating timers

    commit c52232a upstream.
    
    On CPU hotunplug the enqueued timers of the unplugged CPU are migrated to a
    live CPU. This happens from the control thread which initiated the unplug.
    
    If the CPU on which the control thread runs came out from a longer idle
    period then the base clock of that CPU might be stale because the control
    thread runs prior to any event which forwards the clock.
    
    In such a case the timers from the unplugged CPU are queued on the live CPU
    based on the stale clock which can cause large delays due to increased
    granularity of the outer timer wheels which are far away from base:;clock.
    
    But there is a worse problem than that. The following sequence of events
    illustrates it:
    
     - CPU0 timer1 is queued expires = 59969 and base->clk = 59131.
    
       The timer is queued at wheel level 2, with resulting expiry time = 60032
       (due to level granularity).
    
     - CPU1 enters idle @60007, with next timer expiry @60020.
    
     - CPU0 is hotplugged at @60009
    
     - CPU1 exits idle and runs the control thread which migrates the
       timers from CPU0
    
       timer1 is now queued in level 0 for immediate handling in the next
       softirq because the requested expiry time 59969 is before CPU1 base->clk
       60007
    
     - CPU1 runs code which forwards the base clock which succeeds because the
       next expiring timer. which was collected at idle entry time is still set
       to 60020.
    
       So it forwards beyond 60007 and therefore misses to expire the migrated
       timer1. That timer gets expired when the wheel wraps around again, which
       takes between 63 and 630ms depending on the HZ setting.
    
    Address both problems by invoking forward_timer_base() for the control CPUs
    timer base. All other places, which might run into a similar problem
    (mod_timer()/add_timer_on()) already invoke forward_timer_base() to avoid
    that.
    
    [ tglx: Massaged comment and changelog ]
    
    Fixes: a683f39 ("timers: Forward the wheel clock whenever possible")
    Co-developed-by: Neeraj Upadhyay <[email protected]>
    Signed-off-by: Neeraj Upadhyay <[email protected]>
    Signed-off-by: Lingutla Chandrasekhar <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Cc: Anna-Maria Gleixner <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Lingutla Chandrasekhar authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    13e75c7 View commit details
    Browse the repository at this point in the history
  12. parisc: Fix ordering of cache and TLB flushes

    commit 0adb24e upstream.
    
    The change to flush_kernel_vmap_range() wasn't sufficient to avoid the
    SMP stalls.  The problem is some drivers call these routines with
    interrupts disabled.  Interrupts need to be enabled for flush_tlb_all()
    and flush_cache_all() to work.  This version adds checks to ensure
    interrupts are not disabled before calling routines that need IPI
    interrupts.  When interrupts are disabled, we now drop into slower code.
    
    The attached change fixes the ordering of cache and TLB flushes in
    several cases.  When we flush the cache using the existing PTE/TLB
    entries, we need to flush the TLB after doing the cache flush.  We don't
    need to do this when we flush the entire instruction and data caches as
    these flushes don't use the existing TLB entries.  The same is true for
    tmpalias region flushes.
    
    The flush_kernel_vmap_range() and invalidate_kernel_vmap_range()
    routines have been updated.
    
    Secondly, we added a new purge_kernel_dcache_range_asm() routine to
    pacache.S and use it in invalidate_kernel_vmap_range().  Nominally,
    purges are faster than flushes as the cache lines don't have to be
    written back to memory.
    
    Hopefully, this is sufficient to resolve the remaining problems due to
    cache speculation.  So far, testing indicates that this is the case.  I
    did work up a patch using tmpalias flushes, but there is a performance
    hit because we need the physical address for each page, and we also need
    to sequence access to the tmpalias flush code.  This increases the
    probability of stalls.
    
    Signed-off-by: John David Anglin <[email protected]>
    Cc: [email protected] # 4.9+
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    danglin44 authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    12efc91 View commit details
    Browse the repository at this point in the history
  13. cpufreq: s3c24xx: Fix broken s3c_cpufreq_init()

    commit 0373ca7 upstream.
    
    commit a307a1e "cpufreq: s3c: use cpufreq_generic_init()"
    accidentally broke cpufreq on s3c2410 and s3c2412.
    
    These two platforms don't have a CPU frequency table and used to skip
    calling cpufreq_table_validate_and_show() for them.  But with the
    above commit, we started calling it unconditionally and that will
    eventually fail as the frequency table pointer is NULL.
    
    Fix this by calling cpufreq_table_validate_and_show() conditionally
    again.
    
    Fixes: a307a1e "cpufreq: s3c: use cpufreq_generic_init()"
    Cc: 3.13+ <[email protected]> # v3.13+
    Signed-off-by: Viresh Kumar <[email protected]>
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    vireshk authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    144b635 View commit details
    Browse the repository at this point in the history
  14. dax: fix vma_is_fsdax() helper

    commit 230f5a8 upstream.
    
    Gerd reports that ->i_mode may contain other bits besides S_IFCHR. Use
    S_ISCHR() instead. Otherwise, get_user_pages_longterm() may fail on
    device-dax instances when those are meant to be explicitly allowed.
    
    Fixes: 2bb6d28 ("mm: introduce get_user_pages_longterm")
    Cc: <[email protected]>
    Reported-by: Gerd Rausch <[email protected]>
    Acked-by: Jane Chu <[email protected]>
    Reported-by: Haozhong Zhang <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Signed-off-by: Dan Williams <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    djbw authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    43672fa View commit details
    Browse the repository at this point in the history
  15. x86/xen: Zero MSR_IA32_SPEC_CTRL before suspend

    commit 71c208d upstream.
    
    Older Xen versions (4.5 and before) might have problems migrating pv
    guests with MSR_IA32_SPEC_CTRL having a non-zero value. So before
    suspending zero that MSR and restore it after being resumed.
    
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Jan Beulich <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jgross1 authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    7844849 View commit details
    Browse the repository at this point in the history
  16. x86/platform/intel-mid: Handle Intel Edison reboot correctly

    commit 028091f upstream.
    
    When the Intel Edison module is powered with 3.3V, the reboot command makes
    the module stuck.  If the module is powered at a greater voltage, like 4.4V
    (as the Edison Mini Breakout board does), reboot works OK.
    
    The official Intel Edison BSP sends the IPCMSG_COLD_RESET message to the
    SCU by default. The IPCMSG_COLD_BOOT which is used by the upstream kernel
    is only sent when explicitely selected on the kernel command line.
    
    Use IPCMSG_COLD_RESET unconditionally which makes reboot work independent
    of the power supply voltage.
    
    [ tglx: Massaged changelog ]
    
    Fixes: bda7b07 ("x86/platform/intel-mid: Implement power off sequence")
    Signed-off-by: Sebastian Panceac <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Acked-by: Andy Shevchenko <[email protected]>
    Cc: [email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Sebastian Panceac authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    0c2b4a3 View commit details
    Browse the repository at this point in the history
  17. media: m88ds3103: don't call a non-initalized function

    commit b9c97c6 upstream.
    
    If m88d3103 chip ID is not recognized, the device is not initialized.
    
    However, it returns from probe without any error, causing this OOPS:
    
    [    7.689289] Unable to handle kernel NULL pointer dereference at virtual address 00000000
    [    7.689297] pgd = 7b0bd7a7
    [    7.689302] [00000000] *pgd=00000000
    [    7.689318] Internal error: Oops: 80000005 [Freescale#1] SMP ARM
    [    7.689322] Modules linked in: dvb_usb_dvbsky(+) m88ds3103 dvb_usb_v2 dvb_core videobuf2_vmalloc videobuf2_memops videobuf2_core crc32_arm_ce videodev media
    [    7.689358] CPU: 3 PID: 197 Comm: systemd-udevd Not tainted 4.15.0-mcc+ Freescale#23
    [    7.689361] Hardware name: BCM2835
    [    7.689367] PC is at 0x0
    [    7.689382] LR is at m88ds3103_attach+0x194/0x1d0 [m88ds3103]
    [    7.689386] pc : [<00000000>]    lr : [<bf0ae1ec>]    psr: 60000013
    [    7.689391] sp : ed8e5c20  ip : ed8c1e00  fp : ed8945c0
    [    7.689395] r10: ed894000  r9 : ed894378  r8 : eda736c0
    [    7.689400] r7 : ed894070  r6 : ed8e5c44  r5 : bf0bb040  r4 : eda77600
    [    7.689405] r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 : eda77600
    [    7.689412] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
    [    7.689417] Control: 10c5383d  Table: 2d8e806a  DAC: 00000051
    [    7.689423] Process systemd-udevd (pid: 197, stack limit = 0xe9dbfb63)
    [    7.689428] Stack: (0xed8e5c20 to 0xed8e6000)
    [    7.689439] 5c20: ed853a80 eda73640 ed894000 ed8942c0 ed853a80 bf0b9e98 ed894070 bf0b9f10
    [    7.689449] 5c40: 00000000 00000000 bf08c17c c08dfc50 00000000 00000000 00000000 00000000
    [    7.689459] 5c60: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    7.689468] 5c80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    7.689479] 5ca0: 00000000 00000000 ed8945c0 ed8942c0 ed894000 ed894830 bf0b9e98 00000000
    [    7.689490] 5cc0: ed894378 bf0a3cb4 bf0bc3b0 0000533b ed920540 00000000 00000034 bf0a6434
    [    7.689500] 5ce0: ee952070 ed826600 bf0a7038 bf0a2dd8 00000001 bf0a6768 bf0a2f90 ed8943c0
    [    7.689511] 5d00: 00000000 c08eca68 ed826620 ed826620 00000000 ee952070 bf0bc034 ee952000
    [    7.689521] 5d20: ed826600 bf0bb080 ffffffed c0aa9e9c c0aa9dac ed826620 c16edf6c c168c2c8
    [    7.689531] 5d40: c16edf70 00000000 bf0bc034 0000000d 00000000 c08e268c bf0bb080 ed826600
    [    7.689541] 5d60: bf0bc034 ed826654 ed826620 bf0bc034 c164c8bc 00000000 00000001 00000000
    [    7.689553] 5d80: 00000028 c08e2948 00000000 bf0bc034 c08e2848 c08e0778 ee9f0a58 ed88bab4
    [    7.689563] 5da0: bf0bc034 ed90ba80 c168c1f0 c08e1934 bf0bb3bc c17045ac bf0bc034 c164c8bc
    [    7.689574] 5dc0: bf0bc034 bf0bb3bc ed91f564 c08e34ec bf0bc000 c164c8bc bf0bc034 c0aa8dc4
    [    7.689584] 5de0: ffffe000 00000000 bf0bf000 ed91f600 ed91f564 c03021e4 00000001 00000000
    [    7.689595] 5e00: c166e040 8040003f ed853a80 bf0bc448 00000000 c1678174 ed853a80 f0f22000
    [    7.689605] 5e20: f0f21fff 8040003f 014000c0 ed91e700 ed91e700 c16d8e68 00000001 ed91e6c0
    [    7.689615] 5e40: bf0bc400 00000001 bf0bc400 ed91f564 00000001 00000000 00000028 c03c9a24
    [    7.689625] 5e60: 00000001 c03c8c94 ed8e5f50 ed8e5f50 00000001 bf0bc400 ed91f540 c03c8cb0
    [    7.689637] 5e80: bf0bc40c 00007fff bf0bc400 c03c60b0 00000000 bf0bc448 00000028 c0e09684
    [    7.689647] 5ea0: 00000002 bf0bc530 c1234bf8 bf0bc5dc bf0bc514 c10ebbe8 ffffe000 bf000000
    [    7.689657] 5ec0: 00011538 00000000 ed8e5f48 00000000 00000000 00000000 00000000 00000000
    [    7.689666] 5ee0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    7.689676] 5f00: 00000000 00000000 7fffffff 00000000 00000013 b6e55a18 0000017b c0309104
    [    7.689686] 5f20: ed8e4000 00000000 00510af0 c03c9430 7fffffff 00000000 00000003 00000000
    [    7.689697] 5f40: 00000000 f0f0f000 00011538 00000000 f0f107b0 f0f0f000 00011538 f0f1fdb8
    [    7.689707] 5f60: f0f1fbe8 f0f1b974 00004000 000041e0 bf0bc3d0 00000001 00000000 000024c4
    [    7.689717] 5f80: 0000002d 0000002e 00000019 00000000 00000010 00000000 16894000 00000000
    [    7.689727] 5fa0: 00000000 c0308f20 16894000 00000000 00000013 b6e55a18 00000000 b6e5652c
    [    7.689737] 5fc0: 16894000 00000000 00000000 0000017b 00020000 00508110 00000000 00510af0
    [    7.689748] 5fe0: bef68948 bef68938 b6e4d3d0 b6d32590 60000010 00000013 00000000 00000000
    [    7.689790] [<bf0ae1ec>] (m88ds3103_attach [m88ds3103]) from [<bf0b9f10>] (dvbsky_s960c_attach+0x78/0x280 [dvb_usb_dvbsky])
    [    7.689821] [<bf0b9f10>] (dvbsky_s960c_attach [dvb_usb_dvbsky]) from [<bf0a3cb4>] (dvb_usbv2_probe+0xa3c/0x1024 [dvb_usb_v2])
    [    7.689849] [<bf0a3cb4>] (dvb_usbv2_probe [dvb_usb_v2]) from [<c0aa9e9c>] (usb_probe_interface+0xf0/0x2a8)
    [    7.689869] [<c0aa9e9c>] (usb_probe_interface) from [<c08e268c>] (driver_probe_device+0x2f8/0x4b4)
    [    7.689881] [<c08e268c>] (driver_probe_device) from [<c08e2948>] (__driver_attach+0x100/0x11c)
    [    7.689895] [<c08e2948>] (__driver_attach) from [<c08e0778>] (bus_for_each_dev+0x4c/0x9c)
    [    7.689909] [<c08e0778>] (bus_for_each_dev) from [<c08e1934>] (bus_add_driver+0x1c0/0x264)
    [    7.689919] [<c08e1934>] (bus_add_driver) from [<c08e34ec>] (driver_register+0x78/0xf4)
    [    7.689931] [<c08e34ec>] (driver_register) from [<c0aa8dc4>] (usb_register_driver+0x70/0x134)
    [    7.689946] [<c0aa8dc4>] (usb_register_driver) from [<c03021e4>] (do_one_initcall+0x44/0x168)
    [    7.689963] [<c03021e4>] (do_one_initcall) from [<c03c9a24>] (do_init_module+0x64/0x1f4)
    [    7.689979] [<c03c9a24>] (do_init_module) from [<c03c8cb0>] (load_module+0x20a0/0x25c8)
    [    7.689993] [<c03c8cb0>] (load_module) from [<c03c9430>] (SyS_finit_module+0xb4/0xec)
    [    7.690007] [<c03c9430>] (SyS_finit_module) from [<c0308f20>] (ret_fast_syscall+0x0/0x54)
    [    7.690018] Code: bad PC value
    
    This may happen on normal circumstances, if, for some reason, the demod
    hangs and start returning an invalid chip ID:
    
    [   10.394395] m88ds3103 3-0068: Unknown device. Chip_id=00
    
    So, change the logic to cause probe to fail with -ENODEV, preventing
    the OOPS.
    
    Detected while testing DVB MMAP patches on Raspberry Pi 3 with
    DVBSky S960CI.
    
    Cc: [email protected]
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    mchehab authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    9bcc9ac View commit details
    Browse the repository at this point in the history
  18. nospec: Allow index argument to have const-qualified type

    commit b98c6a1 upstream.
    
    The last expression in a statement expression need not be a bare
    variable, quoting gcc docs
    
      The last thing in the compound statement should be an expression
      followed by a semicolon; the value of this subexpression serves as the
      value of the entire construct.
    
    and we already use that in e.g. the min/max macros which end with a
    ternary expression.
    
    This way, we can allow index to have const-qualified type, which will in
    some cases avoid the need for introducing a local copy of index of
    non-const qualified type. That, in turn, can prevent readers not
    familiar with the internals of array_index_nospec from wondering about
    the seemingly redundant extra variable, and I think that's worthwhile
    considering how confusing the whole _nospec business is.
    
    The expression _i&_mask has type unsigned long (since that is the type
    of _mask, and the BUILD_BUG_ONs guarantee that _i will get promoted to
    that), so in order not to change the type of the whole expression, add
    a cast back to typeof(_i).
    
    Signed-off-by: Rasmus Villemoes <[email protected]>
    Signed-off-by: Dan Williams <[email protected]>
    Acked-by: Linus Torvalds <[email protected]>
    Cc: Andy Lutomirski <[email protected]>
    Cc: Arjan van de Ven <[email protected]>
    Cc: Borislav Petkov <[email protected]>
    Cc: Dave Hansen <[email protected]>
    Cc: David Woodhouse <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: Josh Poimboeuf <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Cc: Will Deacon <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Link: http://lkml.kernel.org/r/151881604837.17395.10812767547837568328.stgit@dwillia2-desk3.amr.corp.intel.com
    Signed-off-by: Ingo Molnar <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Villemoes authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    ec69fa8 View commit details
    Browse the repository at this point in the history
  19. ARM: mvebu: Fix broken PL310_ERRATA_753970 selects

    commit 8aa36a8 upstream.
    
    The MACH_ARMADA_375 and MACH_ARMADA_38X boards select ARM_ERRATA_753970,
    but it was renamed to PL310_ERRATA_753970 by commit fa0ce40 ("ARM:
    7162/1: errata: tidy up Kconfig options for PL310 errata workarounds").
    
    Fix the selects to use the new name.
    
    Discovered with the
    https://github.com/ulfalizer/Kconfiglib/blob/master/examples/list_undefined.py
    script.
    Fixes: fa0ce40 ("ARM: 7162/1: errata: tidy up Kconfig options for
    PL310 errata workarounds"
    cc: [email protected]
    Signed-off-by: Ulf Magnusson <[email protected]>
    Signed-off-by: Gregory CLEMENT <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    ulfalizer authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    8e4c257 View commit details
    Browse the repository at this point in the history
  20. ARM: kvm: fix building with gcc-8

    commit 67870eb upstream.
    
    In banked-sr.c, we use a top-level '__asm__(".arch_extension virt")'
    statement to allow compilation of a multi-CPU kernel for ARMv6
    and older ARMv7-A that don't normally support access to the banked
    registers.
    
    This is considered to be a programming error by the gcc developers
    and will no longer work in gcc-8, where we now get a build error:
    
    /tmp/cc4Qy7GR.s:34: Error: Banked registers are not available with this architecture. -- `mrs r3,SP_usr'
    /tmp/cc4Qy7GR.s:41: Error: Banked registers are not available with this architecture. -- `mrs r3,ELR_hyp'
    /tmp/cc4Qy7GR.s:55: Error: Banked registers are not available with this architecture. -- `mrs r3,SP_svc'
    /tmp/cc4Qy7GR.s:62: Error: Banked registers are not available with this architecture. -- `mrs r3,LR_svc'
    /tmp/cc4Qy7GR.s:69: Error: Banked registers are not available with this architecture. -- `mrs r3,SPSR_svc'
    /tmp/cc4Qy7GR.s:76: Error: Banked registers are not available with this architecture. -- `mrs r3,SP_abt'
    
    Passign the '-march-armv7ve' flag to gcc works, and is ok here, because
    we know the functions won't ever be called on pre-ARMv7VE machines.
    Unfortunately, older compiler versions (4.8 and earlier) do not understand
    that flag, so we still need to keep the asm around.
    
    Backporting to stable kernels (4.6+) is needed to allow those to be built
    with future compilers as well.
    
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84129
    Fixes: 33280b4 ("ARM: KVM: Add banked registers save/restore")
    Cc: [email protected]
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Christoffer Dall <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    arndb authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    aebf1b1 View commit details
    Browse the repository at this point in the history
  21. KVM: mmu: Fix overlap between public and private memslots

    commit b28676b upstream.
    
    Reported by syzkaller:
    
        pte_list_remove: ffff9714eb1f8078 0->BUG
        ------------[ cut here ]------------
        kernel BUG at arch/x86/kvm/mmu.c:1157!
        invalid opcode: 0000 [Freescale#1] SMP
        RIP: 0010:pte_list_remove+0x11b/0x120 [kvm]
        Call Trace:
         drop_spte+0x83/0xb0 [kvm]
         mmu_page_zap_pte+0xcc/0xe0 [kvm]
         kvm_mmu_prepare_zap_page+0x81/0x4a0 [kvm]
         kvm_mmu_invalidate_zap_all_pages+0x159/0x220 [kvm]
         kvm_arch_flush_shadow_all+0xe/0x10 [kvm]
         kvm_mmu_notifier_release+0x6c/0xa0 [kvm]
         ? kvm_mmu_notifier_release+0x5/0xa0 [kvm]
         __mmu_notifier_release+0x79/0x110
         ? __mmu_notifier_release+0x5/0x110
         exit_mmap+0x15a/0x170
         ? do_exit+0x281/0xcb0
         mmput+0x66/0x160
         do_exit+0x2c9/0xcb0
         ? __context_tracking_exit.part.5+0x4a/0x150
         do_group_exit+0x50/0xd0
         SyS_exit_group+0x14/0x20
         do_syscall_64+0x73/0x1f0
         entry_SYSCALL64_slow_path+0x25/0x25
    
    The reason is that when creates new memslot, there is no guarantee for new
    memslot not overlap with private memslots. This can be triggered by the
    following program:
    
       #include <fcntl.h>
       #include <pthread.h>
       #include <setjmp.h>
       #include <signal.h>
       #include <stddef.h>
       #include <stdint.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>
       #include <sys/ioctl.h>
       #include <sys/stat.h>
       #include <sys/syscall.h>
       #include <sys/types.h>
       #include <unistd.h>
       #include <linux/kvm.h>
    
       long r[16];
    
       int main()
       {
    	void *p = valloc(0x4000);
    
    	r[2] = open("/dev/kvm", 0);
    	r[3] = ioctl(r[2], KVM_CREATE_VM, 0x0ul);
    
    	uint64_t addr = 0xf000;
    	ioctl(r[3], KVM_SET_IDENTITY_MAP_ADDR, &addr);
    	r[6] = ioctl(r[3], KVM_CREATE_VCPU, 0x0ul);
    	ioctl(r[3], KVM_SET_TSS_ADDR, 0x0ul);
    	ioctl(r[6], KVM_RUN, 0);
    	ioctl(r[6], KVM_RUN, 0);
    
    	struct kvm_userspace_memory_region mr = {
    		.slot = 0,
    		.flags = KVM_MEM_LOG_DIRTY_PAGES,
    		.guest_phys_addr = 0xf000,
    		.memory_size = 0x4000,
    		.userspace_addr = (uintptr_t) p
    	};
    	ioctl(r[3], KVM_SET_USER_MEMORY_REGION, &mr);
    	return 0;
       }
    
    This patch fixes the bug by not adding a new memslot even if it
    overlaps with private memslots.
    
    Reported-by: Dmitry Vyukov <[email protected]>
    Cc: Paolo Bonzini <[email protected]>
    Cc: Radim Krčmář <[email protected]>
    Cc: Dmitry Vyukov <[email protected]>
    Cc: Eric Biggers <[email protected]>
    Cc: [email protected]
    Signed-off-by: Wanpeng Li <[email protected]>
    Wanpeng Li authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    2e112f3 View commit details
    Browse the repository at this point in the history
  22. KVM/x86: Remove indirect MSR op calls from SPEC_CTRL

    commit ecb586b upstream.
    
    Having a paravirt indirect call in the IBRS restore path is not a
    good idea, since we are trying to protect from speculative execution
    of bogus indirect branch targets.  It is also slower, so use
    native_wrmsrl() on the vmentry path too.
    
    Signed-off-by: Paolo Bonzini <[email protected]>
    Reviewed-by: Jim Mattson <[email protected]>
    Cc: David Woodhouse <[email protected]>
    Cc: KarimAllah Ahmed <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Radim Krčmář <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Fixes: d28b387
    Link: http://lkml.kernel.org/r/[email protected]
    Signed-off-by: Ingo Molnar <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    bonzini authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    a175d51 View commit details
    Browse the repository at this point in the history
  23. KVM/VMX: Optimize vmx_vcpu_run() and svm_vcpu_run() by marking the RD…

    …MSR path as unlikely()
    
    commit 946fbbc upstream.
    
    vmx_vcpu_run() and svm_vcpu_run() are large functions, and giving
    branch hints to the compiler can actually make a substantial cycle
    difference by keeping the fast path contiguous in memory.
    
    With this optimization, the retpoline-guest/retpoline-host case is
    about 50 cycles faster.
    
    Signed-off-by: Paolo Bonzini <[email protected]>
    Reviewed-by: Jim Mattson <[email protected]>
    Cc: David Woodhouse <[email protected]>
    Cc: KarimAllah Ahmed <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Radim Krčmář <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Link: http://lkml.kernel.org/r/[email protected]
    Signed-off-by: Ingo Molnar <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    bonzini authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    f750e15 View commit details
    Browse the repository at this point in the history
  24. PCI/ASPM: Deal with missing root ports in link state handling

    commit ee8bdfb upstream.
    
    Even though it is unconventional, some PCIe host implementations omit the
    root ports entirely, and simply consist of a host bridge (which is not
    modeled as a device in the PCI hierarchy) and a link.
    
    When the downstream device is an endpoint, our current code does not seem
    to mind this unusual configuration. However, when PCIe switches are
    involved, the ASPM code assumes that any downstream switch port has a
    parent, and blindly dereferences the bus->parent->self field of the pci_dev
    struct to chain the downstream link state to the link state of the root
    port. Given that the root port is missing, the link is not modeled at all,
    and nor is the link state, and attempting to access it results in a NULL
    pointer dereference and a crash.
    
    Avoid this by allowing the link state chain to terminate at the downstream
    port if no root port exists.
    
    Signed-off-by: Ard Biesheuvel <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Ard Biesheuvel authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    6213c71 View commit details
    Browse the repository at this point in the history
  25. dm io: fix duplicate bio completion due to missing ref count

    commit feb7695 upstream.
    
    If only a subset of the devices associated with multiple regions support
    a given special operation (eg. DISCARD) then the dec_count() that is
    used to set error for the region must increment the io->count.
    
    Otherwise, when the dec_count() is called it can cause the dm-io
    caller's bio to be completed multiple times.  As was reported against
    the dm-mirror target that had mirror legs with a mix of discard
    capabilities.
    
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=196077
    Reported-by: Zhang Yi <[email protected]>
    Signed-off-by: Mike Snitzer <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    snitm authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    b6f93a1 View commit details
    Browse the repository at this point in the history
  26. ARM: dts: LogicPD SOM-LV: Fix I2C1 pinmux

    commit 84c7efd upstream.
    
    The pinmuxing was missing for I2C1 which was causing intermittent issues
    with the PMIC which is connected to I2C1.  The bootloader did not quite
    configure the I2C1 either, so when running at 2.6MHz, it was generating
    errors at times.
    
    This correctly sets the I2C1 pinmuxing so it can operate at 2.6MHz
    
    Fixes: ab8dd3a ("ARM: DTS: Add minimal Support for Logic PD DM3730
    SOM-LV")
    
    Signed-off-by: Adam Ford <[email protected]>
    Signed-off-by: Tony Lindgren <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    aford173 authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    5f1f00d View commit details
    Browse the repository at this point in the history
  27. ARM: dts: LogicPD Torpedo: Fix I2C1 pinmux

    commit 7440205 upstream.
    
    The pinmuxing was missing for I2C1 which was causing intermittent issues
    with the PMIC which is connected to I2C1.  The bootloader did not quite
    configure the I2C1 either, so when running at 2.6MHz, it was generating
    errors at time.
    
    This correctly sets the I2C1 pinmuxing so it can operate at 2.6MHz
    
    Fixes: 687c276 ("ARM: dts: Add minimal support for LogicPD Torpedo
    DM3730 devkit")
    
    Signed-off-by: Adam Ford <[email protected]>
    Signed-off-by: Tony Lindgren <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    aford173 authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    c737c8d View commit details
    Browse the repository at this point in the history
  28. x86/mm: Give each mm TLB flush generation a unique ID

    commit f39681e upstream.
    
    This adds two new variables to mmu_context_t: ctx_id and tlb_gen.
    ctx_id uniquely identifies the mm_struct and will never be reused.
    For a given mm_struct (and hence ctx_id), tlb_gen is a monotonic
    count of the number of times that a TLB flush has been requested.
    The pair (ctx_id, tlb_gen) can be used as an identifier for TLB
    flush actions and will be used in subsequent patches to reliably
    determine whether all needed TLB flushes have occurred on a given
    CPU.
    
    This patch is split out for ease of review.  By itself, it has no
    real effect other than creating and updating the new variables.
    
    Signed-off-by: Andy Lutomirski <[email protected]>
    Reviewed-by: Nadav Amit <[email protected]>
    Reviewed-by: Thomas Gleixner <[email protected]>
    Cc: Andrew Morton <[email protected]>
    Cc: Arjan van de Ven <[email protected]>
    Cc: Borislav Petkov <[email protected]>
    Cc: Dave Hansen <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Mel Gorman <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Rik van Riel <[email protected]>
    Cc: [email protected]
    Link: http://lkml.kernel.org/r/413a91c24dab3ed0caa5f4e4d017d87b0857f920.1498751203.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <[email protected]>
    Signed-off-by: Tim Chen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    amluto authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    027ba1a View commit details
    Browse the repository at this point in the history
  29. x86/speculation: Use Indirect Branch Prediction Barrier in context sw…

    …itch
    
    commit 18bf3c3 upstream.
    
    Flush indirect branches when switching into a process that marked itself
    non dumpable. This protects high value processes like gpg better,
    without having too high performance overhead.
    
    If done naïvely, we could switch to a kernel idle thread and then back
    to the original process, such as:
    
        process A -> idle -> process A
    
    In such scenario, we do not have to do IBPB here even though the process
    is non-dumpable, as we are switching back to the same process after a
    hiatus.
    
    To avoid the redundant IBPB, which is expensive, we track the last mm
    user context ID. The cost is to have an extra u64 mm context id to track
    the last mm we were using before switching to the init_mm used by idle.
    Avoiding the extra IBPB is probably worth the extra memory for this
    common scenario.
    
    For those cases where tlb_defer_switch_to_init_mm() returns true (non
    PCID), lazy tlb will defer switch to init_mm, so we will not be changing
    the mm for the process A -> idle -> process A switch. So IBPB will be
    skipped for this case.
    
    Thanks to the reviewers and Andy Lutomirski for the suggestion of
    using ctx_id which got rid of the problem of mm pointer recycling.
    
    Signed-off-by: Tim Chen <[email protected]>
    Signed-off-by: David Woodhouse <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    pdxChen authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    2585e4b View commit details
    Browse the repository at this point in the history
  30. md: only allow remove_and_add_spares when no sync_thread running.

    commit 39772f0 upstream.
    
    The locking protocols in md assume that a device will
    never be removed from an array during resync/recovery/reshape.
    When that isn't happening, rcu or reconfig_mutex is needed
    to protect an rdev pointer while taking a refcount.  When
    it is happening, that protection isn't needed.
    
    Unfortunately there are cases were remove_and_add_spares() is
    called when recovery might be happening: is state_store(),
    slot_store() and hot_remove_disk().
    In each case, this is just an optimization, to try to expedite
    removal from the personality so the device can be removed from
    the array.  If resync etc is happening, we just have to wait
    for md_check_recover to find a suitable time to call
    remove_and_add_spares().
    
    This optimization and not essential so it doesn't
    matter if it fails.
    So change remove_and_add_spares() to abort early if
    resync/recovery/reshape is happening, unless it is called
    from md_check_recovery() as part of a newly started recovery.
    The parameter "this" is only NULL when called from
    md_check_recovery() so when it is NULL, there is no need to abort.
    
    As this can result in a NULL dereference, the fix is suitable
    for -stable.
    
    cc: yuyufen <[email protected]>
    Cc: Tomasz Majchrzak <[email protected]>
    Fixes: 8430e7e ("md: disconnect device from personality before trying to remove it.")
    Cc: [email protected] (v4.8+)
    Signed-off-by: NeilBrown <[email protected]>
    Signed-off-by: Shaohua Li <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    NeilBrown authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    eb2593f View commit details
    Browse the repository at this point in the history
  31. netlink: put module reference if dump start fails

    commit b87b619 upstream.
    
    Before, if cb->start() failed, the module reference would never be put,
    because cb->cb_running is intentionally false at this point. Users are
    generally annoyed by this because they can no longer unload modules that
    leak references. Also, it may be possible to tediously wrap a reference
    counter back to zero, especially since module.c still uses atomic_inc
    instead of refcount_inc.
    
    This patch expands the error path to simply call module_put if
    cb->start() fails.
    
    Fixes: 41c8742 ("netlink: do not set cb_running if dump's start() errs")
    Signed-off-by: Jason A. Donenfeld <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    zx2c4 authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    e7b12ef View commit details
    Browse the repository at this point in the history
  32. x86/apic/vector: Handle legacy irq data correctly

    The backport of upstream commit 45d55e7 ("x86/apic/vector: Fix off by
    one in error path") missed to fixup the legacy interrupt data which is not
    longer available upstream.
    
    Handle legacy irq data correctly by clearing the legacy storage to prevent
    use after free.
    
    Fixes: 7fd1335 ("x86/apic/vector: Fix off by one in error path") - 4.4.y
    Fixes: c557481 ("x86/apic/vector: Fix off by one in error path") - 4.9.y
    Reported-by: Ben Hutchings <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Signed-off-by: Ben Hutchings <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    KAGA-KOKO authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    59e1623 View commit details
    Browse the repository at this point in the history
  33. bridge: check brport attr show in brport_show

    [ Upstream commit 1b12580 ]
    
    Now br_sysfs_if file flush doesn't have attr show. To read it will
    cause kernel panic after users chmod u+r this file.
    
    Xiong found this issue when running the commands:
    
      ip link add br0 type bridge
      ip link add type veth
      ip link set veth0 master br0
      chmod u+r /sys/devices/virtual/net/veth0/brport/flush
      timeout 3 cat /sys/devices/virtual/net/veth0/brport/flush
    
    kernel crashed with NULL a pointer dereference call trace.
    
    This patch is to fix it by return -EINVAL when brport_attr->show
    is null, just the same as the check for brport_attr->store in
    brport_store().
    
    Fixes: 9cf6374 ("bridge: add sysfs hook to flush forwarding table")
    Reported-by: Xiong Zhou <[email protected]>
    Signed-off-by: Xin Long <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    lxin authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    9f32011 View commit details
    Browse the repository at this point in the history
  34. fib_semantics: Don't match route with mismatching tclassid

    [ Upstream commit a8c6db1 ]
    
    In fib_nh_match(), if output interface or gateway are passed in
    the FIB configuration, we don't have to check next hops of
    multipath routes to conclude whether we have a match or not.
    
    However, we might still have routes with different realms
    matching the same output interface and gateway configuration,
    and this needs to cause the match to fail. Otherwise the first
    route inserted in the FIB will match, regardless of the realms:
    
     # ip route add 1.1.1.1 dev eth0 table 1234 realms 1/2
     # ip route append 1.1.1.1 dev eth0 table 1234 realms 3/4
     # ip route list table 1234
     1.1.1.1 dev eth0 scope link realms 1/2
     1.1.1.1 dev eth0 scope link realms 3/4
     # ip route del 1.1.1.1 dev ens3 table 1234 realms 3/4
     # ip route list table 1234
     1.1.1.1 dev ens3 scope link realms 3/4
    
    whereas route with realms 3/4 should have been deleted instead.
    
    Explicitly check for fc_flow passed in the FIB configuration
    (this comes from RTA_FLOW extracted by rtm_to_fib_config()) and
    fail matching if it differs from nh_tclassid.
    
    The handling of RTA_FLOW for multipath routes later in
    fib_nh_match() is still needed, as we can have multiple RTA_FLOW
    attributes that need to be matched against the tclassid of each
    next hop.
    
    v2: Check that fc_flow is set before discarding the match, so
        that the user can still select the first matching rule by
        not specifying any realm, as suggested by David Ahern.
    
    Reported-by: Jianlin Shi <[email protected]>
    Signed-off-by: Stefano Brivio <[email protected]>
    Acked-by: David Ahern <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    sbrivio-rh authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    def37b7 View commit details
    Browse the repository at this point in the history
  35. hdlc_ppp: carrier detect ok, don't turn off negotiation

    [ Upstream commit b6c3bad ]
    
    Sometimes when physical lines have a just good noise to make the protocol
    handshaking fail, but the carrier detect still good. Then after remove of
    the noise, nobody will trigger this protocol to be start again to cause
    the link to never come back. The fix is when the carrier is still on, not
    terminate the protocol handshaking.
    
    Signed-off-by: Denis Du <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Denis Du authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    1886335 View commit details
    Browse the repository at this point in the history
  36. ipv6 sit: work around bogus gcc-8 -Wrestrict warning

    [ Upstream commit ca79bec ]
    
    gcc-8 has a new warning that detects overlapping input and output arguments
    in memcpy(). It triggers for sit_init_net() calling ipip6_tunnel_clone_6rd(),
    which is actually correct:
    
    net/ipv6/sit.c: In function 'sit_init_net':
    net/ipv6/sit.c:192:3: error: 'memcpy' source argument is the same as destination [-Werror=restrict]
    
    The problem here is that the logic detecting the memcpy() arguments finds them
    to be the same, but the conditional that tests for the input and output of
    ipip6_tunnel_clone_6rd() to be identical is not a compile-time constant.
    
    We know that netdev_priv(t->dev) is the same as t for a tunnel device,
    and comparing "dev" directly here lets the compiler figure out as well
    that 'dev == sitn->fb_tunnel_dev' when called from sit_init_net(), so
    it no longer warns.
    
    This code is old, so Cc stable to make sure that we don't get the warning
    for older kernels built with new gcc.
    
    Cc: Martin Sebor <[email protected]>
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83456
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    arndb authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    c9a3046 View commit details
    Browse the repository at this point in the history
  37. net: fix race on decreasing number of TX queues

    [ Upstream commit ac5b701 ]
    
    netif_set_real_num_tx_queues() can be called when netdev is up.
    That usually happens when user requests change of number of
    channels/rings with ethtool -L.  The procedure for changing
    the number of queues involves resetting the qdiscs and setting
    dev->num_tx_queues to the new value.  When the new value is
    lower than the old one, extra care has to be taken to ensure
    ordering of accesses to the number of queues vs qdisc reset.
    
    Currently the queues are reset before new dev->num_tx_queues
    is assigned, leaving a window of time where packets can be
    enqueued onto the queues going down, leading to a likely
    crash in the drivers, since most drivers don't check if TX
    skbs are assigned to an active queue.
    
    Fixes: e648493 ("net: allocate tx queues in register_netdevice")
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Jakub Kicinski authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    106dc96 View commit details
    Browse the repository at this point in the history
  38. net: ipv4: don't allow setting net.ipv4.route.min_pmtu below 68

    [ Upstream commit c7272c2 ]
    
    According to RFC 1191 sections 3 and 4, ICMP frag-needed messages
    indicating an MTU below 68 should be rejected:
    
        A host MUST never reduce its estimate of the Path MTU below 68
        octets.
    
    and (talking about ICMP frag-needed's Next-Hop MTU field):
    
        This field will never contain a value less than 68, since every
        router "must be able to forward a datagram of 68 octets without
        fragmentation".
    
    Furthermore, by letting net.ipv4.route.min_pmtu be set to negative
    values, we can end up with a very large PMTU when (-1) is cast into u32.
    
    Let's also make ip_rt_min_pmtu a u32, since it's only ever compared to
    unsigned ints.
    
    Reported-by: Jianlin Shi <[email protected]>
    Signed-off-by: Sabrina Dubroca <[email protected]>
    Reviewed-by: Stefano Brivio <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    qsn authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    06f0188 View commit details
    Browse the repository at this point in the history
  39. netlink: ensure to loop over all netns in genlmsg_multicast_allns()

    [ Upstream commit cb9f7a9 ]
    
    Nowadays, nlmsg_multicast() returns only 0 or -ESRCH but this was not the
    case when commit 134e637 was pushed.
    However, there was no reason to stop the loop if a netns does not have
    listeners.
    Returns -ESRCH only if there was no listeners in all netns.
    
    To avoid having the same problem in the future, I didn't take the
    assumption that nlmsg_multicast() returns only 0 or -ESRCH.
    
    Fixes: 134e637 ("genetlink: make netns aware")
    CC: Johannes Berg <[email protected]>
    Signed-off-by: Nicolas Dichtel <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    NicolasDichtel authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    59e105c View commit details
    Browse the repository at this point in the history
  40. ppp: prevent unregistered channels from connecting to PPP units

    [ Upstream commit 77f840e ]
    
    PPP units don't hold any reference on the channels connected to it.
    It is the channel's responsibility to ensure that it disconnects from
    its unit before being destroyed.
    In practice, this is ensured by ppp_unregister_channel() disconnecting
    the channel from the unit before dropping a reference on the channel.
    
    However, it is possible for an unregistered channel to connect to a PPP
    unit: register a channel with ppp_register_net_channel(), attach a
    /dev/ppp file to it with ioctl(PPPIOCATTCHAN), unregister the channel
    with ppp_unregister_channel() and finally connect the /dev/ppp file to
    a PPP unit with ioctl(PPPIOCCONNECT).
    
    Once in this situation, the channel is only held by the /dev/ppp file,
    which can be released at anytime and free the channel without letting
    the parent PPP unit know. Then the ppp structure ends up with dangling
    pointers in its ->channels list.
    
    Prevent this scenario by forbidding unregistered channels from
    connecting to PPP units. This maintains the code logic by keeping
    ppp_unregister_channel() responsible from disconnecting the channel if
    necessary and avoids modification on the reference counting mechanism.
    
    This issue seems to predate git history (successfully reproduced on
    Linux 2.6.26 and earlier PPP commits are unrelated).
    
    Signed-off-by: Guillaume Nault <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Guillaume Nault authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    3741c8f View commit details
    Browse the repository at this point in the history
  41. udplite: fix partial checksum initialization

    [ Upstream commit 15f35d4 ]
    
    Since UDP-Lite is always using checksum, the following path is
    triggered when calculating pseudo header for it:
    
      udp4_csum_init() or udp6_csum_init()
        skb_checksum_init_zero_check()
          __skb_checksum_validate_complete()
    
    The problem can appear if skb->len is less than CHECKSUM_BREAK. In
    this particular case __skb_checksum_validate_complete() also invokes
    __skb_checksum_complete(skb). If UDP-Lite is using partial checksum
    that covers only part of a packet, the function will return bad
    checksum and the packet will be dropped.
    
    It can be fixed if we skip skb_checksum_init_zero_check() and only
    set the required pseudo header checksum for UDP-Lite with partial
    checksum before udp4_csum_init()/udp6_csum_init() functions return.
    
    Fixes: ed70fcf ("net: Call skb_checksum_init in IPv4")
    Fixes: e4f45b7 ("net: Call skb_checksum_init in IPv6")
    Signed-off-by: Alexey Kodanev <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    akodanev authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    5984901 View commit details
    Browse the repository at this point in the history
  42. sctp: fix dst refcnt leak in sctp_v4_get_dst

    [ Upstream commit 4a31a6b ]
    
    Fix dst reference count leak in sctp_v4_get_dst() introduced in commit
    410f038 ("sctp: add routing output fallback"):
    
    When walking the address_list, successive ip_route_output_key() calls
    may return the same rt->dst with the reference incremented on each call.
    
    The code would not decrement the dst refcount when the dst pointer was
    identical from the previous iteration, causing the dst refcnt leak.
    
    Testcase:
      ip netns add TEST
      ip netns exec TEST ip link set lo up
      ip link add dummy0 type dummy
      ip link add dummy1 type dummy
      ip link add dummy2 type dummy
      ip link set dev dummy0 netns TEST
      ip link set dev dummy1 netns TEST
      ip link set dev dummy2 netns TEST
      ip netns exec TEST ip addr add 192.168.1.1/24 dev dummy0
      ip netns exec TEST ip link set dummy0 up
      ip netns exec TEST ip addr add 192.168.1.2/24 dev dummy1
      ip netns exec TEST ip link set dummy1 up
      ip netns exec TEST ip addr add 192.168.1.3/24 dev dummy2
      ip netns exec TEST ip link set dummy2 up
      ip netns exec TEST sctp_test -H 192.168.1.2 -P 20002 -h 192.168.1.1 -p 20000 -s -B 192.168.1.3
      ip netns del TEST
    
    In 4.4 and 4.9 kernels this results to:
      [  354.179591] unregister_netdevice: waiting for lo to become free. Usage count = 1
      [  364.419674] unregister_netdevice: waiting for lo to become free. Usage count = 1
      [  374.663664] unregister_netdevice: waiting for lo to become free. Usage count = 1
      [  384.903717] unregister_netdevice: waiting for lo to become free. Usage count = 1
      [  395.143724] unregister_netdevice: waiting for lo to become free. Usage count = 1
      [  405.383645] unregister_netdevice: waiting for lo to become free. Usage count = 1
      ...
    
    Fixes: 410f038 ("sctp: add routing output fallback")
    Fixes: 0ca50d1 ("sctp: fix src address selection if using secondary addresses")
    Signed-off-by: Tommi Rantala <[email protected]>
    Acked-by: Marcelo Ricardo Leitner <[email protected]>
    Acked-by: Neil Horman <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rantala authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    3812dda View commit details
    Browse the repository at this point in the history
  43. mlxsw: spectrum_switchdev: Check success of FDB add operation

    [ Upstream commit 0a8a1bf ]
    
    Until now, we assumed that in case of error when adding FDB entries, the
    write operation will fail, but this is not the case. Instead, we need to
    check that the number of entries reported in the response is equal to
    the number of entries specified in the request.
    
    Fixes: 56ade8f ("mlxsw: spectrum: Add initial support for Spectrum ASIC")
    Reported-by: Ido Schimmel <[email protected]>
    Signed-off-by: Shalom Toledo <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Signed-off-by: Jiri Pirko <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Shalom Toledo authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    804e337 View commit details
    Browse the repository at this point in the history
  44. net: phy: fix phy_start to consider PHY_IGNORE_INTERRUPT

    [ Upstream commit 08f5138 ]
    
    This condition wasn't adjusted when PHY_IGNORE_INTERRUPT (-2) was added
    long ago. In case of PHY_IGNORE_INTERRUPT the MAC interrupt indicates
    also PHY state changes and we should do what the symbol says.
    
    Fixes: 84a527a ("net: phylib: fix interrupts re-enablement in phy_start")
    Signed-off-by: Heiner Kallweit <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    hkallweit authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    19d3213 View commit details
    Browse the repository at this point in the history
  45. tcp: Honor the eor bit in tcp_mtu_probe

    [ Upstream commit 808cf9e ]
    
    Avoid SKB coalescing if eor bit is set in one of the relevant
    SKBs.
    
    Fixes: c134ecb ("tcp: Make use of MSG_EOR in tcp_sendmsg")
    Signed-off-by: Ilya Lesokhin <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Ilya Lesokhin authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    3efb90a View commit details
    Browse the repository at this point in the history
  46. rxrpc: Fix send in rxrpc_send_data_packet()

    [ Upstream commit 93c62c4 ]
    
    All the kernel_sendmsg() calls in rxrpc_send_data_packet() need to send
    both parts of the iov[] buffer, but one of them does not.  Fix it so that
    it does.
    
    Without this, short IPv6 rxrpc DATA packets may be seen that have the rxrpc
    header included, but no payload.
    
    Fixes: 5a924b8 ("rxrpc: Don't store the rxrpc header in the Tx queue sk_buffs")
    Reported-by: Marc Dionne <[email protected]>
    Signed-off-by: David Howells <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    dhowells authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    85924b8 View commit details
    Browse the repository at this point in the history
  47. tcp_bbr: better deal with suboptimal GSO

    [ Upstream commit 350c9f4 ]
    
    BBR uses tcp_tso_autosize() in an attempt to probe what would be the
    burst sizes and to adjust cwnd in bbr_target_cwnd() with following
    gold formula :
    
    /* Allow enough full-sized skbs in flight to utilize end systems. */
    cwnd += 3 * bbr->tso_segs_goal;
    
    But GSO can be lacking or be constrained to very small
    units (ip link set dev ... gso_max_segs 2)
    
    What we really want is to have enough packets in flight so that both
    GSO and GRO are efficient.
    
    So in the case GSO is off or downgraded, we still want to have the same
    number of packets in flight as if GSO/TSO was fully operational, so
    that GRO can hopefully be working efficiently.
    
    To fix this issue, we make tcp_tso_autosize() unaware of
    sk->sk_gso_max_segs
    
    Only tcp_tso_segs() has to enforce the gso_max_segs limit.
    
    Tested:
    
    ethtool -K eth0 tso off gso off
    tc qd replace dev eth0 root pfifo_fast
    
    Before patch:
    for f in {1..5}; do ./super_netperf 1 -H lpaa24 -- -K bbr; done
        691  (ss -temoi shows cwnd is stuck around 6 )
        667
        651
        631
        517
    
    After patch :
    # for f in {1..5}; do ./super_netperf 1 -H lpaa24 -- -K bbr; done
       1733 (ss -temoi shows cwnd is around 386 )
       1778
       1746
       1781
       1718
    
    Fixes: 0f8782e ("tcp_bbr: add BBR congestion control")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reported-by: Oleksandr Natalenko <[email protected]>
    Acked-by: Neal Cardwell <[email protected]>
    Acked-by: Soheil Hassas Yeganeh <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Eric Dumazet authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    45fa661 View commit details
    Browse the repository at this point in the history
  48. sctp: fix dst refcnt leak in sctp_v6_get_dst()

    [ Upstream commit 957d761 ]
    
    When going through the bind address list in sctp_v6_get_dst() and
    the previously found address is better ('matchlen > bmatchlen'),
    the code continues to the next iteration without releasing currently
    held destination.
    
    Fix it by releasing 'bdst' before continue to the next iteration, and
    instead of introducing one more '!IS_ERR(bdst)' check for dst_release(),
    move the already existed one right after ip6_dst_lookup_flow(), i.e. we
    shouldn't proceed further if we get an error for the route lookup.
    
    Fixes: dbc2b5e ("sctp: fix src address selection if using secondary addresses for ipv6")
    Signed-off-by: Alexey Kodanev <[email protected]>
    Acked-by: Neil Horman <[email protected]>
    Acked-by: Marcelo Ricardo Leitner <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    akodanev authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    a818270 View commit details
    Browse the repository at this point in the history
  49. s390/qeth: fix underestimated count of buffer elements

    [ Upstream commit 89271c6 ]
    
    For a memory range/skb where the last byte falls onto a page boundary
    (ie. 'end' is of the form xxx...xxx001), the PFN_UP() part of the
    calculation currently doesn't round up to the next PFN due to an
    off-by-one error.
    Thus qeth believes that the skb occupies one page less than it
    actually does, and may select a IO buffer that doesn't have enough spare
    buffer elements to fit all of the skb's data.
    HW detects this as a malformed buffer descriptor, and raises an
    exception which then triggers device recovery.
    
    Fixes: 2863c61 ("qeth: refactor calculation of SBALE count")
    Signed-off-by: Ursula Braun <[email protected]>
    Signed-off-by: Julian Wiedmann <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Ursula Braun authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    8d07258 View commit details
    Browse the repository at this point in the history
  50. s390/qeth: fix SETIP command handling

    [ Upstream commit 1c5b221 ]
    
    send_control_data() applies some special handling to SETIP v4 IPA
    commands. But current code parses *all* command types for the SETIP
    command code. Limit the command code check to IPA commands.
    
    Fixes: 5b54e16 ("qeth: do not spin for SETIP ip assist command")
    Signed-off-by: Julian Wiedmann <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    julianwiedmann authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    3c07187 View commit details
    Browse the repository at this point in the history
  51. s390/qeth: fix overestimated count of buffer elements

    [ Upstream commit 12472af ]
    
    qeth_get_elements_for_range() doesn't know how to handle a 0-length
    range (ie. start == end), and returns 1 when it should return 0.
    Such ranges occur on TSO skbs, where the L2/L3/L4 headers (and thus all
    of the skb's linear data) are skipped when mapping the skb into regular
    buffer elements.
    
    This overestimation may cause several performance-related issues:
    1. sub-optimal IO buffer selection, where the next buffer gets selected
       even though the skb would actually still fit into the current buffer.
    2. forced linearization, if the element count for a non-linear skb
       exceeds QETH_MAX_BUFFER_ELEMENTS.
    
    Rather than modifying qeth_get_elements_for_range() and adding overhead
    to every caller, fix up those callers that are in risk of passing a
    0-length range.
    
    Fixes: 2863c61 ("qeth: refactor calculation of SBALE count")
    Signed-off-by: Julian Wiedmann <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    julianwiedmann authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    797658d View commit details
    Browse the repository at this point in the history
  52. s390/qeth: fix IP removal on offline cards

    [ Upstream commit 98d823a ]
    
    If the HW is not reachable, then none of the IPs in qeth's internal
    table has been registered with the HW yet. So when deleting such an IP,
    there's no need to stage it for deregistration - just drop it from
    the table.
    
    This fixes the "add-delete-add" scenario on an offline card, where the
    the second "add" merely increments the IP's use count. But as the IP is
    still set to DISP_ADDR_DELETE from the previous "delete" step,
    l3_recover_ip() won't register it with the HW when the card goes online.
    
    Fixes: 5f78e29 ("qeth: optimize IP handling in rx_mode callback")
    Signed-off-by: Julian Wiedmann <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    julianwiedmann authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    1537f14 View commit details
    Browse the repository at this point in the history
  53. s390/qeth: fix double-free on IP add/remove race

    [ Upstream commit 14d066c ]
    
    Registering an IPv4 address with the HW takes quite a while, so we
    temporarily drop the ip_htable lock. Any concurrent add/remove of the
    same IP adjusts the IP's use count, and (on remove) is then blocked by
    addr->in_progress.
    After the register call has completed, we check the use count for
    concurrently attempted add/remove calls - and possibly straight-away
    deregister the IP again. This happens via l3_delete_ip(), which
    1) looks up the queried IP in the htable (getting a reference to the
       *same* queried object),
    2) deregisters the IP from the HW, and
    3) frees the IP object.
    
    The caller in l3_add_ip() then does a second free on the same object.
    
    For this case, skip all the extra checks and lookups in l3_delete_ip()
    and just deregister & free the IP object ourselves.
    
    Fixes: 5f78e29 ("qeth: optimize IP handling in rx_mode callback")
    Signed-off-by: Julian Wiedmann <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    julianwiedmann authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    2a3db83 View commit details
    Browse the repository at this point in the history
  54. s390/qeth: fix IP address lookup for L3 devices

    [ Upstream commit c5c48c5 ]
    
    Current code ("qeth_l3_ip_from_hash()") matches a queried address object
    against objects in the IP table by IP address, Mask/Prefix Length and
    MAC address ("qeth_l3_ipaddrs_is_equal()"). But what callers actually
    require is either
    a) "is this IP address registered" (ie. match by IP address only),
    before adding a new address.
    b) or "is this address object registered" (ie. match all relevant
       attributes), before deleting an address.
    
    Right now
    1. the ADD path is too strict in its lookup, and eg. doesn't detect
    conflicts between an existing NORMAL address and a new VIPA address
    (because the NORMAL address will have mask != 0, while VIPA has
    a mask == 0),
    2. the DELETE path is not strict enough, and eg. allows del_rxip() to
    delete a VIPA address as long as the IP address matches.
    
    Fix all this by adding helpers (_addr_match_ip() and _addr_match_all())
    that do the appropriate checking.
    
    Note that the ADD path for NORMAL addresses is special, as qeth keeps
    track of how many times such an address is in use (and there is no
    immediate way of returning errors to the caller). So when a requested
    NORMAL address _fully_ matches an existing one, it's not considered a
    conflict and we merely increment the refcount.
    
    Fixes: 5f78e29 ("qeth: optimize IP handling in rx_mode callback")
    Signed-off-by: Julian Wiedmann <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    julianwiedmann authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    058db71 View commit details
    Browse the repository at this point in the history
  55. s390/qeth: fix IPA command submission race

    [ Upstream commit d22ffb5 ]
    
    If multiple IPA commands are build & sent out concurrently,
    fill_ipacmd_header() may assign a seqno value to a command that's
    different from what send_control_data() later assigns to this command's
    reply.
    This is due to other commands passing through send_control_data(),
    and incrementing card->seqno.ipa along the way.
    
    So one IPA command has no reply that's waiting for its seqno, while some
    other IPA command has multiple reply objects waiting for it.
    Only one of those waiting replies wins, and the other(s) times out and
    triggers a recovery via send_ipa_cmd().
    
    Fix this by making sure that the same seqno value is assigned to
    a command and its reply object.
    Do so immediately before submitting the command & while holding the
    irq_pending "lock", to produce nicely ascending seqnos.
    
    As a side effect, *all* IPA commands now use a reply object that's
    waiting for its actual seqno. Previously, early IPA commands that were
    submitted while the card was still DOWN used the "catch-all" IDX seqno.
    
    Signed-off-by: Julian Wiedmann <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    julianwiedmann authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    f3d26ce View commit details
    Browse the repository at this point in the history
  56. sctp: verify size of a new chunk in _sctp_make_chunk()

    [ Upstream commit 07f2c7a ]
    
    When SCTP makes INIT or INIT_ACK packet the total chunk length
    can exceed SCTP_MAX_CHUNK_LEN which leads to kernel panic when
    transmitting these packets, e.g. the crash on sending INIT_ACK:
    
    [  597.804948] skbuff: skb_over_panic: text:00000000ffae06e4 len:120168
                   put:120156 head:000000007aa47635 data:00000000d991c2de
                   tail:0x1d640 end:0xfec0 dev:<NULL>
    ...
    [  597.976970] ------------[ cut here ]------------
    [  598.033408] kernel BUG at net/core/skbuff.c:104!
    [  600.314841] Call Trace:
    [  600.345829]  <IRQ>
    [  600.371639]  ? sctp_packet_transmit+0x2095/0x26d0 [sctp]
    [  600.436934]  skb_put+0x16c/0x200
    [  600.477295]  sctp_packet_transmit+0x2095/0x26d0 [sctp]
    [  600.540630]  ? sctp_packet_config+0x890/0x890 [sctp]
    [  600.601781]  ? __sctp_packet_append_chunk+0x3b4/0xd00 [sctp]
    [  600.671356]  ? sctp_cmp_addr_exact+0x3f/0x90 [sctp]
    [  600.731482]  sctp_outq_flush+0x663/0x30d0 [sctp]
    [  600.788565]  ? sctp_make_init+0xbf0/0xbf0 [sctp]
    [  600.845555]  ? sctp_check_transmitted+0x18f0/0x18f0 [sctp]
    [  600.912945]  ? sctp_outq_tail+0x631/0x9d0 [sctp]
    [  600.969936]  sctp_cmd_interpreter.isra.22+0x3be1/0x5cb0 [sctp]
    [  601.041593]  ? sctp_sf_do_5_1B_init+0x85f/0xc30 [sctp]
    [  601.104837]  ? sctp_generate_t1_cookie_event+0x20/0x20 [sctp]
    [  601.175436]  ? sctp_eat_data+0x1710/0x1710 [sctp]
    [  601.233575]  sctp_do_sm+0x182/0x560 [sctp]
    [  601.284328]  ? sctp_has_association+0x70/0x70 [sctp]
    [  601.345586]  ? sctp_rcv+0xef4/0x32f0 [sctp]
    [  601.397478]  ? sctp6_rcv+0xa/0x20 [sctp]
    ...
    
    Here the chunk size for INIT_ACK packet becomes too big, mostly
    because of the state cookie (INIT packet has large size with
    many address parameters), plus additional server parameters.
    
    Later this chunk causes the panic in skb_put_data():
    
      skb_packet_transmit()
          sctp_packet_pack()
              skb_put_data(nskb, chunk->skb->data, chunk->skb->len);
    
    'nskb' (head skb) was previously allocated with packet->size
    from u16 'chunk->chunk_hdr->length'.
    
    As suggested by Marcelo we should check the chunk's length in
    _sctp_make_chunk() before trying to allocate skb for it and
    discard a chunk if its size bigger than SCTP_MAX_CHUNK_LEN.
    
    Signed-off-by: Alexey Kodanev <[email protected]>
    Acked-by: Marcelo Ricardo Leitner <[email protected]>
    Acked-by: Neil Horman <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    akodanev authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    9b7d723 View commit details
    Browse the repository at this point in the history
  57. net: mpls: Pull common label check into helper

    commit b7b386f upstream.
    
    mpls_route_add and mpls_route_del have the same checks on the label.
    Move to a helper. Avoid duplicate extack messages in the next patch.
    
    Signed-off-by: David Ahern <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Ben Hutchings <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    dsahern authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    d77763d View commit details
    Browse the repository at this point in the history
  58. mpls, nospec: Sanitize array index in mpls_label_ok()

    commit 3968523 upstream.
    
    mpls_label_ok() validates that the 'platform_label' array index from a
    userspace netlink message payload is valid. Under speculation the
    mpls_label_ok() result may not resolve in the CPU pipeline until after
    the index is used to access an array element. Sanitize the index to zero
    to prevent userspace-controlled arbitrary out-of-bounds speculation, a
    precursor for a speculative execution side channel vulnerability.
    
    Cc: "David S. Miller" <[email protected]>
    Cc: Eric W. Biederman <[email protected]>
    Signed-off-by: Dan Williams <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    [bwh: Backported to 4.4:
     - mpls_label_ok() doesn't take an extack parameter
     - Drop change in mpls_getroute()]
    Signed-off-by: Ben Hutchings <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    djbw authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    93f3aff View commit details
    Browse the repository at this point in the history
  59. bpf: fix wrong exposure of map_flags into fdinfo for lpm

    [ upstream commit a316338 ]
    
    trie_alloc() always needs to have BPF_F_NO_PREALLOC passed in via
    attr->map_flags, since it does not support preallocation yet. We
    check the flag, but we never copy the flag into trie->map.map_flags,
    which is later on exposed into fdinfo and used by loaders such as
    iproute2. Latter uses this in bpf_map_selfcheck_pinned() to test
    whether a pinned map has the same spec as the one from the BPF obj
    file and if not, bails out, which is currently the case for lpm
    since it exposes always 0 as flags.
    
    Also copy over flags in array_map_alloc() and stack_map_alloc().
    They always have to be 0 right now, but we should make sure to not
    miss to copy them over at a later point in time when we add actual
    flags for them to use.
    
    Fixes: b95a5c4 ("bpf: add a longest prefix match trie map implementation")
    Reported-by: Jarno Rajahalme <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Acked-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    borkmann authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    816cfeb View commit details
    Browse the repository at this point in the history
  60. bpf: fix mlock precharge on arraymaps

    [ upstream commit 9c2d63b ]
    
    syzkaller recently triggered OOM during percpu map allocation;
    while there is work in progress by Dennis Zhou to add __GFP_NORETRY
    semantics for percpu allocator under pressure, there seems also a
    missing bpf_map_precharge_memlock() check in array map allocation.
    
    Given today the actual bpf_map_charge_memlock() happens after the
    find_and_alloc_map() in syscall path, the bpf_map_precharge_memlock()
    is there to bail out early before we go and do the map setup work
    when we find that we hit the limits anyway. Therefore add this for
    array map as well.
    
    Fixes: 6c90598 ("bpf: pre-allocate hash map elements")
    Fixes: a10423b ("bpf: introduce BPF_MAP_TYPE_PERCPU_ARRAY map")
    Reported-by: [email protected]
    Signed-off-by: Daniel Borkmann <[email protected]>
    Cc: Dennis Zhou <[email protected]>
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    borkmann authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    422baf6 View commit details
    Browse the repository at this point in the history
  61. bpf, x64: implement retpoline for tail call

    [ upstream commit a493a87 ]
    
    Implement a retpoline [0] for the BPF tail call JIT'ing that converts
    the indirect jump via jmp %rax that is used to make the long jump into
    another JITed BPF image. Since this is subject to speculative execution,
    we need to control the transient instruction sequence here as well
    when CONFIG_RETPOLINE is set, and direct it into a pause + lfence loop.
    The latter aligns also with what gcc / clang emits (e.g. [1]).
    
    JIT dump after patch:
    
      # bpftool p d x i 1
       0: (18) r2 = map[id:1]
       2: (b7) r3 = 0
       3: (85) call bpf_tail_call#12
       4: (b7) r0 = 2
       5: (95) exit
    
    With CONFIG_RETPOLINE:
    
      # bpftool p d j i 1
      [...]
      33:	cmp    %edx,0x24(%rsi)
      36:	jbe    0x0000000000000072  |*
      38:	mov    0x24(%rbp),%eax
      3e:	cmp    $0x20,%eax
      41:	ja     0x0000000000000072  |
      43:	add    $0x1,%eax
      46:	mov    %eax,0x24(%rbp)
      4c:	mov    0x90(%rsi,%rdx,8),%rax
      54:	test   %rax,%rax
      57:	je     0x0000000000000072  |
      59:	mov    0x28(%rax),%rax
      5d:	add    $0x25,%rax
      61:	callq  0x000000000000006d  |+
      66:	pause                      |
      68:	lfence                     |
      6b:	jmp    0x0000000000000066  |
      6d:	mov    %rax,(%rsp)         |
      71:	retq                       |
      72:	mov    $0x2,%eax
      [...]
    
      * relative fall-through jumps in error case
      + retpoline for indirect jump
    
    Without CONFIG_RETPOLINE:
    
      # bpftool p d j i 1
      [...]
      33:	cmp    %edx,0x24(%rsi)
      36:	jbe    0x0000000000000063  |*
      38:	mov    0x24(%rbp),%eax
      3e:	cmp    $0x20,%eax
      41:	ja     0x0000000000000063  |
      43:	add    $0x1,%eax
      46:	mov    %eax,0x24(%rbp)
      4c:	mov    0x90(%rsi,%rdx,8),%rax
      54:	test   %rax,%rax
      57:	je     0x0000000000000063  |
      59:	mov    0x28(%rax),%rax
      5d:	add    $0x25,%rax
      61:	jmpq   *%rax               |-
      63:	mov    $0x2,%eax
      [...]
    
      * relative fall-through jumps in error case
      - plain indirect jump as before
    
      [0] https://support.google.com/faqs/answer/7625886
      [1] gcc-mirror/gcc@a31e654
    
    Signed-off-by: Daniel Borkmann <[email protected]>
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    borkmann authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    017219b View commit details
    Browse the repository at this point in the history
  62. bpf, arm64: fix out of bounds access in tail call

    [ upstream commit 16338a9 ]
    
    I recently noticed a crash on arm64 when feeding a bogus index
    into BPF tail call helper. The crash would not occur when the
    interpreter is used, but only in case of JIT. Output looks as
    follows:
    
      [  347.007486] Unable to handle kernel paging request at virtual address fffb850e96492510
      [...]
      [  347.043065] [fffb850e96492510] address between user and kernel address ranges
      [  347.050205] Internal error: Oops: 96000004 [Freescale#1] SMP
      [...]
      [  347.190829] x13: 0000000000000000 x12: 0000000000000000
      [  347.196128] x11: fffc047ebe782800 x10: ffff808fd7d0fd10
      [  347.201427] x9 : 0000000000000000 x8 : 0000000000000000
      [  347.206726] x7 : 0000000000000000 x6 : 001c991738000000
      [  347.212025] x5 : 0000000000000018 x4 : 000000000000ba5a
      [  347.217325] x3 : 00000000000329c4 x2 : ffff808fd7cf0500
      [  347.222625] x1 : ffff808fd7d0fc00 x0 : ffff808fd7cf0500
      [  347.227926] Process test_verifier (pid: 4548, stack limit = 0x000000007467fa61)
      [  347.235221] Call trace:
      [  347.237656]  0xffff000002f3a4fc
      [  347.240784]  bpf_test_run+0x78/0xf8
      [  347.244260]  bpf_prog_test_run_skb+0x148/0x230
      [  347.248694]  SyS_bpf+0x77c/0x1110
      [  347.251999]  el0_svc_naked+0x30/0x34
      [  347.255564] Code: 9100075a d280220a 8b0a002a d37df04b (f86b694b)
      [...]
    
    In this case the index used in BPF r3 is the same as in r1
    at the time of the call, meaning we fed a pointer as index;
    here, it had the value 0xffff808fd7cf0500 which sits in x2.
    
    While I found tail calls to be working in general (also for
    hitting the error cases), I noticed the following in the code
    emission:
    
      # bpftool p d j i 988
      [...]
      38:   ldr     w10, [x1,x10]
      3c:   cmp     w2, w10
      40:   b.ge    0x000000000000007c              <-- signed cmp
      44:   mov     x10, #0x20                      // Freescale#32
      48:   cmp     x26, x10
      4c:   b.gt    0x000000000000007c
      50:   add     x26, x26, #0x1
      54:   mov     x10, #0x110                     // Freescale#272
      58:   add     x10, x1, x10
      5c:   lsl     x11, x2, Freescale#3
      60:   ldr     x11, [x10,x11]                  <-- faulting insn (f86b694b)
      64:   cbz     x11, 0x000000000000007c
      [...]
    
    Meaning, the tests passed because commit ddb5599 ("arm64:
    bpf: implement bpf_tail_call() helper") was using signed compares
    instead of unsigned which as a result had the test wrongly passing.
    
    Change this but also the tail call count test both into unsigned
    and cap the index as u32. Latter we did as well in 90caccd
    ("bpf: fix bpf_tail_call() x64 JIT") and is needed in addition here,
    too. Tested on HiSilicon Hi1616.
    
    Result after patch:
    
      # bpftool p d j i 268
      [...]
      38:	ldr	w10, [x1,x10]
      3c:	add	w2, w2, #0x0
      40:	cmp	w2, w10
      44:	b.cs	0x0000000000000080
      48:	mov	x10, #0x20                  	// Freescale#32
      4c:	cmp	x26, x10
      50:	b.hi	0x0000000000000080
      54:	add	x26, x26, #0x1
      58:	mov	x10, #0x110                 	// Freescale#272
      5c:	add	x10, x1, x10
      60:	lsl	x11, x2, Freescale#3
      64:	ldr	x11, [x10,x11]
      68:	cbz	x11, 0x0000000000000080
      [...]
    
    Fixes: ddb5599 ("arm64: bpf: implement bpf_tail_call() helper")
    Signed-off-by: Daniel Borkmann <[email protected]>
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    borkmann authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    54c6d01 View commit details
    Browse the repository at this point in the history
  63. bpf: add schedule points in percpu arrays management

    [ upstream commit 32fff23 ]
    
    syszbot managed to trigger RCU detected stalls in
    bpf_array_free_percpu()
    
    It takes time to allocate a huge percpu map, but even more time to free
    it.
    
    Since we run in process context, use cond_resched() to yield cpu if
    needed.
    
    Fixes: a10423b ("bpf: introduce BPF_MAP_TYPE_PERCPU_ARRAY map")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reported-by: syzbot <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Eric Dumazet authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    2a8bc53 View commit details
    Browse the repository at this point in the history
  64. bpf, ppc64: fix out of bounds access in tail call

    [ upstream commit d269176 ]
    
    While working on 16338a9 ("bpf, arm64: fix out of bounds access in
    tail call") I noticed that ppc64 JIT is partially affected as well. While
    the bound checking is correctly performed as unsigned comparison, the
    register with the index value however, is never truncated into 32 bit
    space, so e.g. a index value of 0x100000000ULL with a map of 1 element
    would pass with PPC_CMPLW() whereas we later on continue with the full
    64 bit register value. Therefore, as we do in interpreter and other JITs
    truncate the value to 32 bit initially in order to fix access.
    
    Fixes: ce07614 ("powerpc/bpf: Implement support for tail calls")
    Signed-off-by: Daniel Borkmann <[email protected]>
    Reviewed-by: Naveen N. Rao <[email protected]>
    Tested-by: Naveen N. Rao <[email protected]>
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    borkmann authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    2b70de4 View commit details
    Browse the repository at this point in the history
  65. btrfs: preserve i_mode if __btrfs_set_acl() fails

    commit d7d8249 upstream.
    
    When changing a file's acl mask, btrfs_set_acl() will first set the
    group bits of i_mode to the value of the mask, and only then set the
    actual extended attribute representing the new acl.
    
    If the second part fails (due to lack of space, for example) and the
    file had no acl attribute to begin with, the system will from now on
    assume that the mask permission bits are actual group permission bits,
    potentially granting access to the wrong users.
    
    Prevent this by restoring the original mode bits if __btrfs_set_acl
    fails.
    
    Signed-off-by: Ernesto A. Fernández <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Nikolay Borisov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    eafer authored and gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    931dde8 View commit details
    Browse the repository at this point in the history
  66. Linux 4.9.87

    gregkh committed Mar 11, 2018
    Configuration menu
    Copy the full SHA
    b674162 View commit details
    Browse the repository at this point in the history

Commits on Mar 12, 2018

  1. Merge tag 'v4.9.87' into fslc_4.9-1.0.x-imx

    This is the 4.9.87 stable release
    
     Conflicts:
    	drivers/dma/fsl-edma.c
    MaxKrummenacher committed Mar 12, 2018
    Configuration menu
    Copy the full SHA
    8d99753 View commit details
    Browse the repository at this point in the history