commit 55b2af1c23eb12663015998079992f79fdfa56c8
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Apr 23 10:38:27 2020 +0200

    Linux 5.6.7

commit 2dfbb9f2244fb14245fe3ba3ada014e202663885
Author: Juergen Gross <jgross@suse.com>
Date:   Thu Apr 9 09:00:01 2020 +0200

    x86/xen: fix booting 32-bit pv guest
    
    commit d6f34f4c6b4a962eb7a86c923fea206f866a40be upstream.
    
    Commit 2f62f36e62daec ("x86/xen: Make the boot CPU idle task reliable")
    introduced a regression for booting 32 bit Xen PV guests: the address
    of the initial stack needs to be a virtual one.
    
    Fixes: 2f62f36e62daec ("x86/xen: Make the boot CPU idle task reliable")
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Link: https://lore.kernel.org/r/20200409070001.16675-1-jgross@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34e0de3be874b393de988e72005192c5a1b0ff87
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Tue Apr 21 15:01:52 2020 +0200

    bpf, test_verifier: switch bpf_get_stack's 0 s> r8 test
    
    [ no upstream commit ]
    
    Switch the comparison, so that is_branch_taken() will recognize that below
    branch is never taken:
    
      [...]
      17: [...] R1_w=inv0 [...] R8_w=inv(id=0,smin_value=-2147483648,smax_value=-1,umin_value=18446744071562067968,var_off=(0xffffffff80000000; 0x7fffffff)) [...]
      17: (67) r8 <<= 32
      18: [...] R8_w=inv(id=0,smax_value=-4294967296,umin_value=9223372036854775808,umax_value=18446744069414584320,var_off=(0x8000000000000000; 0x7fffffff00000000)) [...]
      18: (c7) r8 s>>= 32
      19: [...] R8_w=inv(id=0,smin_value=-2147483648,smax_value=-1,umin_value=18446744071562067968,var_off=(0xffffffff80000000; 0x7fffffff)) [...]
      19: (6d) if r1 s> r8 goto pc+16
      [...] R1_w=inv0 [...] R8_w=inv(id=0,smin_value=-2147483648,smax_value=-1,umin_value=18446744071562067968,var_off=(0xffffffff80000000; 0x7fffffff)) [...]
      [...]
    
    Currently we check for is_branch_taken() only if either K is source, or source
    is a scalar value that is const. For upstream it would be good to extend this
    properly to check whether dst is const and src not.
    
    For the sake of the test_verifier, it is probably not needed here:
    
      # ./test_verifier 101
      #101/p bpf_get_stack return R0 within range OK
      Summary: 1 PASSED, 0 SKIPPED, 0 FAILED
    
    I haven't seen this issue in test_progs* though, they are passing fine:
    
      # ./test_progs-no_alu32 -t get_stack
      Switching to flavor 'no_alu32' subdirectory...
      #20 get_stack_raw_tp:OK
      Summary: 1/0 PASSED, 0 SKIPPED, 0 FAILED
    
      # ./test_progs -t get_stack
      #20 get_stack_raw_tp:OK
      Summary: 1/0 PASSED, 0 SKIPPED, 0 FAILED
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af06d90741d0fc57fc10bc05c1340f6bfa3864c1
Author: John Fastabend <john.fastabend@gmail.com>
Date:   Mon Mar 30 14:37:19 2020 -0700

    bpf: Test_progs, add test to catch retval refine error handling
    
    commit d2db08c7a14e0b5eed6132baf258b80622e041a9 upstream.
    
    Before this series the verifier would clamp return bounds of
    bpf_get_stack() to [0, X] and this led the verifier to believe
    that a JMP_JSLT 0 would be false and so would prune that path.
    
    The result is anything hidden behind that JSLT would be unverified.
    Add a test to catch this case by hiding an goto pc-1 behind the
    check which will cause an infinite loop if not rejected.
    
    Signed-off-by: John Fastabend <john.fastabend@gmail.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/158560423908.10843.11783152347709008373.stgit@john-Precision-5820-Tower
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8389a64c68e236e2b777409e97f1f077cfba9057
Author: John Fastabend <john.fastabend@gmail.com>
Date:   Mon Mar 30 14:37:40 2020 -0700

    bpf: Test_verifier, bpf_get_stack return value add <0
    
    commit 9ac26e9973bac5716a2a542e32f380c84db2b88c upstream.
    
    With current ALU32 subreg handling and retval refine fix from last
    patches we see an expected failure in test_verifier. With verbose
    verifier state being printed at each step for clarity we have the
    following relavent lines [I omit register states that are not
    necessarily useful to see failure cause],
    
    #101/p bpf_get_stack return R0 within range FAIL
    Failed to load prog 'Success'!
    [..]
    14: (85) call bpf_get_stack#67
     R0_w=map_value(id=0,off=0,ks=8,vs=48,imm=0)
     R3_w=inv48
    15:
     R0=inv(id=0,smax_value=48,var32_off=(0x0; 0xffffffff))
    15: (b7) r1 = 0
    16:
     R0=inv(id=0,smax_value=48,var32_off=(0x0; 0xffffffff))
     R1_w=inv0
    16: (bf) r8 = r0
    17:
     R0=inv(id=0,smax_value=48,var32_off=(0x0; 0xffffffff))
     R1_w=inv0
     R8_w=inv(id=0,smax_value=48,var32_off=(0x0; 0xffffffff))
    17: (67) r8 <<= 32
    18:
     R0=inv(id=0,smax_value=48,var32_off=(0x0; 0xffffffff))
     R1_w=inv0
     R8_w=inv(id=0,smax_value=9223372032559808512,
                   umax_value=18446744069414584320,
                   var_off=(0x0; 0xffffffff00000000),
                   s32_min_value=0,
                   s32_max_value=0,
                   u32_max_value=0,
                   var32_off=(0x0; 0x0))
    18: (c7) r8 s>>= 32
    19
     R0=inv(id=0,smax_value=48,var32_off=(0x0; 0xffffffff))
     R1_w=inv0
     R8_w=inv(id=0,smin_value=-2147483648,
                   smax_value=2147483647,
                   var32_off=(0x0; 0xffffffff))
    19: (cd) if r1 s< r8 goto pc+16
     R0=inv(id=0,smax_value=48,var32_off=(0x0; 0xffffffff))
     R1_w=inv0
     R8_w=inv(id=0,smin_value=-2147483648,
                   smax_value=0,
                   var32_off=(0x0; 0xffffffff))
    20:
     R0=inv(id=0,smax_value=48,var32_off=(0x0; 0xffffffff))
     R1_w=inv0
     R8_w=inv(id=0,smin_value=-2147483648,
                   smax_value=0,
     R9=inv48
    20: (1f) r9 -= r8
    21: (bf) r2 = r7
    22:
     R2_w=map_value(id=0,off=0,ks=8,vs=48,imm=0)
    22: (0f) r2 += r8
    value -2147483648 makes map_value pointer be out of bounds
    
    After call bpf_get_stack() on line 14 and some moves we have at line 16
    an r8 bound with max_value 48 but an unknown min value. This is to be
    expected bpf_get_stack call can only return a max of the input size but
    is free to return any negative error in the 32-bit register space. The
    C helper is returning an int so will use lower 32-bits.
    
    Lines 17 and 18 clear the top 32 bits with a left/right shift but use
    ARSH so we still have worst case min bound before line 19 of -2147483648.
    At this point the signed check 'r1 s< r8' meant to protect the addition
    on line 22 where dst reg is a map_value pointer may very well return
    true with a large negative number. Then the final line 22 will detect
    this as an invalid operation and fail the program. What we want to do
    is proceed only if r8 is positive non-error. So change 'r1 s< r8' to
    'r1 s> r8' so that we jump if r8 is negative.
    
    Next we will throw an error because we access past the end of the map
    value. The map value size is 48 and sizeof(struct test_val) is 48 so
    we walk off the end of the map value on the second call to
    get bpf_get_stack(). Fix this by changing sizeof(struct test_val) to
    24 by using 'sizeof(struct test_val) / 2'. After this everything passes
    as expected.
    
    Signed-off-by: John Fastabend <john.fastabend@gmail.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/158560426019.10843.3285429543232025187.stgit@john-Precision-5820-Tower
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 311e070b089c2885b81450bd45764f7331b2809b
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Tue Apr 21 15:01:49 2020 +0200

    bpf: fix buggy r0 retval refinement for tracing helpers
    
    [ no upstream commit ]
    
    See the glory details in 100605035e15 ("bpf: Verifier, do_refine_retval_range
    may clamp umin to 0 incorrectly") for why 849fa50662fb ("bpf/verifier: refine
    retval R0 state for bpf_get_stack helper") is buggy. The whole series however
    is not suitable for stable since it adds significant amount [0] of verifier
    complexity in order to add 32bit subreg tracking. Something simpler is needed.
    
    Unfortunately, reverting 849fa50662fb ("bpf/verifier: refine retval R0 state
    for bpf_get_stack helper") or just cherry-picking 100605035e15 ("bpf: Verifier,
    do_refine_retval_range may clamp umin to 0 incorrectly") is not an option since
    it will break existing tracing programs badly (at least those that are using
    bpf_get_stack() and bpf_probe_read_str() helpers). Not fixing it in stable is
    also not an option since on 4.19 kernels an error will cause a soft-lockup due
    to hitting dead-code sanitized branch since we don't hard-wire such branches
    in old kernels yet. But even then for 5.x 849fa50662fb ("bpf/verifier: refine
    retval R0 state for bpf_get_stack helper") would cause wrong bounds on the
    verifier simluation when an error is hit.
    
    In one of the earlier iterations of mentioned patch series for upstream there
    was the concern that just using smax_value in do_refine_retval_range() would
    nuke bounds by subsequent <<32 >>32 shifts before the comparison against 0 [1]
    which eventually led to the 32bit subreg tracking in the first place. While I
    initially went for implementing the idea [1] to pattern match the two shift
    operations, it turned out to be more complex than actually needed, meaning, we
    could simply treat do_refine_retval_range() similarly to how we branch off
    verification for conditionals or under speculation, that is, pushing a new
    reg state to the stack for later verification. This means, instead of verifying
    the current path with the ret_reg in [S32MIN, msize_max_value] interval where
    later bounds would get nuked, we split this into two: i) for the success case
    where ret_reg can be in [0, msize_max_value], and ii) for the error case with
    ret_reg known to be in interval [S32MIN, -1]. Latter will preserve the bounds
    during these shift patterns and can match reg < 0 test. test_progs also succeed
    with this approach.
    
      [0] https://lore.kernel.org/bpf/158507130343.15666.8018068546764556975.stgit@john-Precision-5820-Tower/
      [1] https://lore.kernel.org/bpf/158015334199.28573.4940395881683556537.stgit@john-XPS-13-9370/T/#m2e0ad1d5949131014748b6daa48a3495e7f0456d
    
    Fixes: 849fa50662fb ("bpf/verifier: refine retval R0 state for bpf_get_stack helper")
    Reported-by: Lorenzo Fontana <fontanalorenz@gmail.com>
    Reported-by: Leonardo Di Donato <leodidonato@gmail.com>
    Reported-by: John Fastabend <john.fastabend@gmail.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Tested-by: John Fastabend <john.fastabend@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 212d3adb1af4e34acb158d6c6def370016a1011d
Author: Waiman Long <longman@redhat.com>
Date:   Sat Mar 21 21:11:24 2020 -0400

    KEYS: Don't write out to userspace while holding key semaphore
    
    commit d3ec10aa95819bff18a0d936b18884c7816d0914 upstream.
    
    A lockdep circular locking dependency report was seen when running a
    keyutils test:
    
    [12537.027242] ======================================================
    [12537.059309] WARNING: possible circular locking dependency detected
    [12537.088148] 4.18.0-147.7.1.el8_1.x86_64+debug #1 Tainted: G OE    --------- -  -
    [12537.125253] ------------------------------------------------------
    [12537.153189] keyctl/25598 is trying to acquire lock:
    [12537.175087] 000000007c39f96c (&mm->mmap_sem){++++}, at: __might_fault+0xc4/0x1b0
    [12537.208365]
    [12537.208365] but task is already holding lock:
    [12537.234507] 000000003de5b58d (&type->lock_class){++++}, at: keyctl_read_key+0x15a/0x220
    [12537.270476]
    [12537.270476] which lock already depends on the new lock.
    [12537.270476]
    [12537.307209]
    [12537.307209] the existing dependency chain (in reverse order) is:
    [12537.340754]
    [12537.340754] -> #3 (&type->lock_class){++++}:
    [12537.367434]        down_write+0x4d/0x110
    [12537.385202]        __key_link_begin+0x87/0x280
    [12537.405232]        request_key_and_link+0x483/0xf70
    [12537.427221]        request_key+0x3c/0x80
    [12537.444839]        dns_query+0x1db/0x5a5 [dns_resolver]
    [12537.468445]        dns_resolve_server_name_to_ip+0x1e1/0x4d0 [cifs]
    [12537.496731]        cifs_reconnect+0xe04/0x2500 [cifs]
    [12537.519418]        cifs_readv_from_socket+0x461/0x690 [cifs]
    [12537.546263]        cifs_read_from_socket+0xa0/0xe0 [cifs]
    [12537.573551]        cifs_demultiplex_thread+0x311/0x2db0 [cifs]
    [12537.601045]        kthread+0x30c/0x3d0
    [12537.617906]        ret_from_fork+0x3a/0x50
    [12537.636225]
    [12537.636225] -> #2 (root_key_user.cons_lock){+.+.}:
    [12537.664525]        __mutex_lock+0x105/0x11f0
    [12537.683734]        request_key_and_link+0x35a/0xf70
    [12537.705640]        request_key+0x3c/0x80
    [12537.723304]        dns_query+0x1db/0x5a5 [dns_resolver]
    [12537.746773]        dns_resolve_server_name_to_ip+0x1e1/0x4d0 [cifs]
    [12537.775607]        cifs_reconnect+0xe04/0x2500 [cifs]
    [12537.798322]        cifs_readv_from_socket+0x461/0x690 [cifs]
    [12537.823369]        cifs_read_from_socket+0xa0/0xe0 [cifs]
    [12537.847262]        cifs_demultiplex_thread+0x311/0x2db0 [cifs]
    [12537.873477]        kthread+0x30c/0x3d0
    [12537.890281]        ret_from_fork+0x3a/0x50
    [12537.908649]
    [12537.908649] -> #1 (&tcp_ses->srv_mutex){+.+.}:
    [12537.935225]        __mutex_lock+0x105/0x11f0
    [12537.954450]        cifs_call_async+0x102/0x7f0 [cifs]
    [12537.977250]        smb2_async_readv+0x6c3/0xc90 [cifs]
    [12538.000659]        cifs_readpages+0x120a/0x1e50 [cifs]
    [12538.023920]        read_pages+0xf5/0x560
    [12538.041583]        __do_page_cache_readahead+0x41d/0x4b0
    [12538.067047]        ondemand_readahead+0x44c/0xc10
    [12538.092069]        filemap_fault+0xec1/0x1830
    [12538.111637]        __do_fault+0x82/0x260
    [12538.129216]        do_fault+0x419/0xfb0
    [12538.146390]        __handle_mm_fault+0x862/0xdf0
    [12538.167408]        handle_mm_fault+0x154/0x550
    [12538.187401]        __do_page_fault+0x42f/0xa60
    [12538.207395]        do_page_fault+0x38/0x5e0
    [12538.225777]        page_fault+0x1e/0x30
    [12538.243010]
    [12538.243010] -> #0 (&mm->mmap_sem){++++}:
    [12538.267875]        lock_acquire+0x14c/0x420
    [12538.286848]        __might_fault+0x119/0x1b0
    [12538.306006]        keyring_read_iterator+0x7e/0x170
    [12538.327936]        assoc_array_subtree_iterate+0x97/0x280
    [12538.352154]        keyring_read+0xe9/0x110
    [12538.370558]        keyctl_read_key+0x1b9/0x220
    [12538.391470]        do_syscall_64+0xa5/0x4b0
    [12538.410511]        entry_SYSCALL_64_after_hwframe+0x6a/0xdf
    [12538.435535]
    [12538.435535] other info that might help us debug this:
    [12538.435535]
    [12538.472829] Chain exists of:
    [12538.472829]   &mm->mmap_sem --> root_key_user.cons_lock --> &type->lock_class
    [12538.472829]
    [12538.524820]  Possible unsafe locking scenario:
    [12538.524820]
    [12538.551431]        CPU0                    CPU1
    [12538.572654]        ----                    ----
    [12538.595865]   lock(&type->lock_class);
    [12538.613737]                                lock(root_key_user.cons_lock);
    [12538.644234]                                lock(&type->lock_class);
    [12538.672410]   lock(&mm->mmap_sem);
    [12538.687758]
    [12538.687758]  *** DEADLOCK ***
    [12538.687758]
    [12538.714455] 1 lock held by keyctl/25598:
    [12538.732097]  #0: 000000003de5b58d (&type->lock_class){++++}, at: keyctl_read_key+0x15a/0x220
    [12538.770573]
    [12538.770573] stack backtrace:
    [12538.790136] CPU: 2 PID: 25598 Comm: keyctl Kdump: loaded Tainted: G
    [12538.844855] Hardware name: HP ProLiant DL360 Gen9/ProLiant DL360 Gen9, BIOS P89 12/27/2015
    [12538.881963] Call Trace:
    [12538.892897]  dump_stack+0x9a/0xf0
    [12538.907908]  print_circular_bug.isra.25.cold.50+0x1bc/0x279
    [12538.932891]  ? save_trace+0xd6/0x250
    [12538.948979]  check_prev_add.constprop.32+0xc36/0x14f0
    [12538.971643]  ? keyring_compare_object+0x104/0x190
    [12538.992738]  ? check_usage+0x550/0x550
    [12539.009845]  ? sched_clock+0x5/0x10
    [12539.025484]  ? sched_clock_cpu+0x18/0x1e0
    [12539.043555]  __lock_acquire+0x1f12/0x38d0
    [12539.061551]  ? trace_hardirqs_on+0x10/0x10
    [12539.080554]  lock_acquire+0x14c/0x420
    [12539.100330]  ? __might_fault+0xc4/0x1b0
    [12539.119079]  __might_fault+0x119/0x1b0
    [12539.135869]  ? __might_fault+0xc4/0x1b0
    [12539.153234]  keyring_read_iterator+0x7e/0x170
    [12539.172787]  ? keyring_read+0x110/0x110
    [12539.190059]  assoc_array_subtree_iterate+0x97/0x280
    [12539.211526]  keyring_read+0xe9/0x110
    [12539.227561]  ? keyring_gc_check_iterator+0xc0/0xc0
    [12539.249076]  keyctl_read_key+0x1b9/0x220
    [12539.266660]  do_syscall_64+0xa5/0x4b0
    [12539.283091]  entry_SYSCALL_64_after_hwframe+0x6a/0xdf
    
    One way to prevent this deadlock scenario from happening is to not
    allow writing to userspace while holding the key semaphore. Instead,
    an internal buffer is allocated for getting the keys out from the
    read method first before copying them out to userspace without holding
    the lock.
    
    That requires taking out the __user modifier from all the relevant
    read methods as well as additional changes to not use any userspace
    write helpers. That is,
    
      1) The put_user() call is replaced by a direct copy.
      2) The copy_to_user() call is replaced by memcpy().
      3) All the fault handling code is removed.
    
    Compiling on a x86-64 system, the size of the rxrpc_read() function is
    reduced from 3795 bytes to 2384 bytes with this patch.
    
    Fixes: ^1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Waiman Long <longman@redhat.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce2a7dc84beeee70d429922ce0ccd1cc158c5683
Author: Wen Yang <wenyang@linux.alibaba.com>
Date:   Wed Mar 18 23:31:56 2020 +0800

    mtd: phram: fix a double free issue in error path
    
    commit 49c64df880570034308e4a9a49c4bc95cf8cdb33 upstream.
    
    The variable 'name' is released multiple times in the error path,
    which may cause double free issues.
    This problem is avoided by adding a goto label to release the memory
    uniformly. And this change also makes the code a bit more cleaner.
    
    Fixes: 4f678a58d335 ("mtd: fix memory leaks in phram_setup")
    Signed-off-by: Wen Yang <wenyang@linux.alibaba.com>
    Cc: Joern Engel <joern@lazybastard.org>
    Cc: Miquel Raynal <miquel.raynal@bootlin.com>
    Cc: Richard Weinberger <richard@nod.at>
    Cc: Vignesh Raghavendra <vigneshr@ti.com>
    Cc: linux-mtd@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20200318153156.25612-1-wenyang@linux.alibaba.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f752144572ff71ef56809a0cf87a8797f2fd425f
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Feb 28 12:25:54 2020 +0300

    mtd: lpddr: Fix a double free in probe()
    
    commit 4da0ea71ea934af18db4c63396ba2af1a679ef02 upstream.
    
    This function is only called from lpddr_probe().  We free "lpddr" both
    here and in the caller, so it's a double free.  The best place to free
    "lpddr" is in lpddr_probe() so let's delete this one.
    
    Fixes: 8dc004395d5e ("[MTD] LPDDR qinfo probing.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20200228092554.o57igp3nqhyvf66t@kili.mountain
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93814a21a812b9ce10296a5e2be16a568d857c4d
Author: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
Date:   Tue Feb 18 16:02:19 2020 +0100

    docs: Fix path to MTD command line partition parser
    
    commit fb2511247dc4061fd122d0195838278a4a0b7b59 upstream.
    
    cmdlinepart.c has been moved to drivers/mtd/parsers/.
    
    Fixes: a3f12a35c91d ("mtd: parsers: Move CMDLINE parser")
    Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
    Signed-off-by: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit beb316bf97cd7d42d9b40dcc53de5bdd30216050
Author: Frieder Schrempf <frieder.schrempf@kontron.de>
Date:   Tue Feb 18 10:05:25 2020 +0000

    mtd: spinand: Explicitly use MTD_OPS_RAW to write the bad block marker to OOB
    
    commit 621a7b780bd8b7054647d53d5071961f2c9e0873 upstream.
    
    When writing the bad block marker to the OOB area the access mode
    should be set to MTD_OPS_RAW as it is done for reading the marker.
    Currently this only works because req.mode is initialized to
    MTD_OPS_PLACE_OOB (0) and spinand_write_to_cache_op() checks for
    req.mode != MTD_OPS_AUTO_OOB.
    
    Fix this by explicitly setting req.mode to MTD_OPS_RAW.
    
    Fixes: 7529df465248 ("mtd: nand: Add core infrastructure to support SPI NANDs")
    Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de>
    Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20200218100432.32433-3-frieder.schrempf@kontron.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 09766d7091c5193df8fd9852fe836fc67ef0d554
Author: Christophe Kerello <christophe.kerello@st.com>
Date:   Thu Jan 23 09:22:48 2020 +0100

    mtd: rawnand: free the nand_device object
    
    commit 009264605cdf1b12962c3a46f75818d05452e890 upstream.
    
    This patch releases the resources allocated in nanddev_init function.
    
    Fixes: a7ab085d7c16 ("mtd: rawnand: Initialize the nand_device object")
    Signed-off-by: Christophe Kerello <christophe.kerello@st.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/1579767768-32295-1-git-send-email-christophe.kerello@st.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d940415b0733791b986444594299c3cc4545f2c8
Author: Paul E. McKenney <paulmck@kernel.org>
Date:   Thu Jan 23 09:19:01 2020 -0800

    locktorture: Print ratio of acquisitions, not failures
    
    commit 80c503e0e68fbe271680ab48f0fe29bc034b01b7 upstream.
    
    The __torture_print_stats() function in locktorture.c carefully
    initializes local variable "min" to statp[0].n_lock_acquired, but
    then compares it to statp[i].n_lock_fail.  Given that the .n_lock_fail
    field should normally be zero, and given the initialization, it seems
    reasonable to display the maximum and minimum number acquisitions
    instead of miscomputing the maximum and minimum number of failures.
    This commit therefore switches from failures to acquisitions.
    
    And this turns out to be not only a day-zero bug, but entirely my
    own fault.  I hate it when that happens!
    
    Fixes: 0af3fe1efa53 ("locktorture: Add a lock-torture kernel module")
    Reported-by: Will Deacon <will@kernel.org>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Acked-by: Will Deacon <will@kernel.org>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Josh Triplett <josh@joshtriplett.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f05e96fcc81b62e74cfb4de5fd42ddd15ccbbc75
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Jan 21 16:17:57 2020 +0000

    iio: st_sensors: handle memory allocation failure to fix null pointer dereference
    
    commit 9960c70949d4356abed8747a20637e0946bb0bad upstream.
    
    A null pointer deference on pdata can occur if the allocation of
    pdata fails.  Fix this by adding a null pointer check and handle
    the -ENOMEM failure in the caller.
    
    Addresses-Coverity: ("Dereference null return value")
    Fixes: 3ce85cc4fbb7 ("iio: st_sensors: get platform data from device tree")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50167bd50b7896ef34e2b783f6f1bcca1eda776e
Author: Stephen Rothwell <sfr@canb.auug.org.au>
Date:   Thu Jan 9 18:39:12 2020 +1100

    tty: evh_bytechan: Fix out of bounds accesses
    
    commit 3670664b5da555a2a481449b3baafff113b0ac35 upstream.
    
    ev_byte_channel_send() assumes that its third argument is a 16 byte
    array. Some places where it is called it may not be (or we can't
    easily tell if it is). Newer compilers have started producing warnings
    about this, so make sure we actually pass a 16 byte array.
    
    There may be more elegant solutions to this, but the driver is quite
    old and hasn't been updated in many years.
    
    The warnings (from a powerpc allyesconfig build) are:
    
      In file included from include/linux/byteorder/big_endian.h:5,
                       from arch/powerpc/include/uapi/asm/byteorder.h:14,
                       from include/asm-generic/bitops/le.h:6,
                       from arch/powerpc/include/asm/bitops.h:250,
                       from include/linux/bitops.h:29,
                       from include/linux/kernel.h:12,
                       from include/asm-generic/bug.h:19,
                       from arch/powerpc/include/asm/bug.h:109,
                       from include/linux/bug.h:5,
                       from include/linux/mmdebug.h:5,
                       from include/linux/gfp.h:5,
                       from include/linux/slab.h:15,
                       from drivers/tty/ehv_bytechan.c:24:
      drivers/tty/ehv_bytechan.c: In function ‘ehv_bc_udbg_putc’:
      arch/powerpc/include/asm/epapr_hcalls.h:298:20: warning: array subscript 1 is outside array bounds of ‘const char[1]’ [-Warray-bounds]
        298 |  r6 = be32_to_cpu(p[1]);
      include/uapi/linux/byteorder/big_endian.h:40:51: note: in definition of macro ‘__be32_to_cpu’
         40 | #define __be32_to_cpu(x) ((__force __u32)(__be32)(x))
            |                                                   ^
      arch/powerpc/include/asm/epapr_hcalls.h:298:7: note: in expansion of macro ‘be32_to_cpu’
        298 |  r6 = be32_to_cpu(p[1]);
            |       ^~~~~~~~~~~
      drivers/tty/ehv_bytechan.c:166:13: note: while referencing ‘data’
        166 | static void ehv_bc_udbg_putc(char c)
            |             ^~~~~~~~~~~~~~~~
    
    Fixes: dcd83aaff1c8 ("tty/powerpc: introduce the ePAPR embedded hypervisor byte channel driver")
    Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Tested-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
    [mpe: Trim warnings from change log]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200109183912.5fcb52aa@canb.auug.org.au
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6fa3e48e68528cafbce3a0c68b0f4069f2c26438
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Tue Dec 17 20:00:25 2019 -0700

    fbmem: Adjust indentation in fb_prepare_logo and fb_blank
    
    commit 93166f5f2e4dc593cff8ca77ef828ac6f148b0f3 upstream.
    
    Clang warns:
    
    ../drivers/video/fbdev/core/fbmem.c:665:3: warning: misleading
    indentation; statement is not part of the previous 'else'
    [-Wmisleading-indentation]
            if (fb_logo.depth > 4 && depth > 4) {
            ^
    ../drivers/video/fbdev/core/fbmem.c:661:2: note: previous statement is
    here
            else
            ^
    ../drivers/video/fbdev/core/fbmem.c:1075:3: warning: misleading
    indentation; statement is not part of the previous 'if'
    [-Wmisleading-indentation]
            return ret;
            ^
    ../drivers/video/fbdev/core/fbmem.c:1072:2: note: previous statement is
    here
            if (!ret)
            ^
    2 warnings generated.
    
    This warning occurs because there are spaces before the tabs on these
    lines. Normalize the indentation in these functions so that it is
    consistent with the Linux kernel coding style and clang no longer warns.
    
    Fixes: 1692b37c99d5 ("fbdev: Fix logo if logo depth is less than framebuffer depth")
    Link: https://github.com/ClangBuiltLinux/linux/issues/825
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20191218030025.10064-1-natechancellor@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47c00f107f5eed40e129e27d3b4c2e8fd52d75e5
Author: Maxime Roussin-Bélanger <maxime.roussinbelanger@gmail.com>
Date:   Wed Feb 19 12:40:08 2020 -0500

    iio: si1133: read 24-bit signed integer for measurement
    
    commit 328b50e9a0ad1fe8accdf8c19923deebab5e0c01 upstream.
    
    The chip is configured in 24 bit mode. The values read from
    it must always be treated as is. This fixes the issue by
    replacing the previous 16 bits value by a 24 bits buffer.
    
    This changes affects the value output by previous version of
    the driver, since the least significant byte was missing.
    The upper half of 16 bit values previously output are now
    the upper half of a 24 bit value.
    
    Fixes: e01e7eaf37d8 ("iio: light: introduce si1133")
    
    Reported-by: Simon Goyette <simon.goyette@gmail.com>
    Co-authored-by: Guillaume Champagne <champagne.guillaume.c@gmail.com>
    Signed-off-by: Maxime Roussin-Bélanger <maxime.roussinbelanger@gmail.com>
    Signed-off-by: Guillaume Champagne <champagne.guillaume.c@gmail.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a7074e27f7d72585d78542641a55076168cda97
Author: Jernej Skrabec <jernej.skrabec@siol.net>
Date:   Sat Jan 25 00:20:09 2020 +0100

    ARM: dts: sunxi: Fix DE2 clocks register range
    
    commit da180322582bd9db07f29e6d4a2d170afde0703f upstream.
    
    As it can be seen from DE2 manual, clock range is 0x10000.
    
    Fix it.
    
    Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
    Fixes: 73f122c82775 ("ARM: dts: sun8i: a83t: Add display pipeline")
    Fixes: 05a43a262d03 ("ARM: dts: sun8i: r40: Add HDMI pipeline")
    Fixes: 21b299209330 ("ARM: sun8i: v3s: add device nodes for DE2 display pipeline")
    Fixes: d8c6f1f0295c ("ARM: sun8i: h3/h5: add DE2 CCU device node for H3")
    [wens@csie.org: added fixes tags]
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de095fa19cacd22760e74b5f5e1321c0b4c45d39
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon Jan 13 14:08:14 2020 +0300

    fbdev: potential information leak in do_fb_ioctl()
    
    commit d3d19d6fc5736a798b118971935ce274f7deaa82 upstream.
    
    The "fix" struct has a 2 byte hole after ->ywrapstep and the
    "fix = info->fix;" assignment doesn't necessarily clear it.  It depends
    on the compiler.  The solution is just to replace the assignment with an
    memcpy().
    
    Fixes: 1f5e31d7e55a ("fbmem: don't call copy_from/to_user() with mutex held")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Andrea Righi <righi.andrea@gmail.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Sam Ravnborg <sam@ravnborg.org>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Daniel Thompson <daniel.thompson@linaro.org>
    Cc: Peter Rosin <peda@axentia.se>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Gerd Hoffmann <kraxel@redhat.com>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200113100132.ixpaymordi24n3av@kili.mountain
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b041c16eef495af3a6256f4f2f097ead5605336
Author: Grygorii Strashko <grygorii.strashko@ti.com>
Date:   Wed Apr 8 22:43:00 2020 +0300

    dma-debug: fix displaying of dma allocation type
    
    commit 9bb50ed7470944238ec8e30a94ef096caf9056ee upstream.
    
    The commit 2e05ea5cdc1a ("dma-mapping: implement dma_map_single_attrs using
    dma_map_page_attrs") removed "dma_debug_page" enum, but missed to update
    type2name string table. This causes incorrect displaying of dma allocation
    type.
    Fix it by removing "page" string from type2name string table and switch to
    use named initializers.
    
    Before (dma_alloc_coherent()):
    k3-ringacc 4b800000.ringacc: scather-gather idx 2208 P=d1140000 N=d114 D=d1140000 L=40 DMA_BIDIRECTIONAL dma map error check not applicable
    k3-ringacc 4b800000.ringacc: scather-gather idx 2216 P=d1150000 N=d115 D=d1150000 L=40 DMA_BIDIRECTIONAL dma map error check not applicable
    
    After:
    k3-ringacc 4b800000.ringacc: coherent idx 2208 P=d1140000 N=d114 D=d1140000 L=40 DMA_BIDIRECTIONAL dma map error check not applicable
    k3-ringacc 4b800000.ringacc: coherent idx 2216 P=d1150000 N=d115 D=d1150000 L=40 DMA_BIDIRECTIONAL dma map error check not applicable
    
    Fixes: 2e05ea5cdc1a ("dma-mapping: implement dma_map_single_attrs using dma_map_page_attrs")
    Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53e83828d352304fec5e19751f38ed8c65e6ec2f
Author: Aurelien Aptel <aaptel@suse.com>
Date:   Tue Apr 7 11:49:55 2020 +0200

    cifs: ignore cached share root handle closing errors
    
    commit e79b0332ae06b4895dcecddf4bbc5d3917e9383c upstream.
    
    Fix tcon use-after-free and NULL ptr deref.
    
    Customer system crashes with the following kernel log:
    
    [462233.169868] CIFS VFS: Cancelling wait for mid 4894753 cmd: 14       => a QUERY DIR
    [462233.228045] CIFS VFS: cifs_put_smb_ses: Session Logoff failure rc=-4
    [462233.305922] CIFS VFS: cifs_put_smb_ses: Session Logoff failure rc=-4
    [462233.306205] CIFS VFS: cifs_put_smb_ses: Session Logoff failure rc=-4
    [462233.347060] CIFS VFS: cifs_put_smb_ses: Session Logoff failure rc=-4
    [462233.347107] CIFS VFS: Close unmatched open
    [462233.347113] BUG: unable to handle kernel NULL pointer dereference at 0000000000000038
    ...
        [exception RIP: cifs_put_tcon+0xa0] (this is doing tcon->ses->server)
     #6 [...] smb2_cancelled_close_fid at ... [cifs]
     #7 [...] process_one_work at ...
     #8 [...] worker_thread at ...
     #9 [...] kthread at ...
    
    The most likely explanation we have is:
    
    * When we put the last reference of a tcon (refcount=0), we close the
      cached share root handle.
    * If closing a handle is interrupted, SMB2_close() will
      queue a SMB2_close() in a work thread.
    * The queued object keeps a tcon ref so we bump the tcon
      refcount, jumping from 0 to 1.
    * We reach the end of cifs_put_tcon(), we free the tcon object despite
      it now having a refcount of 1.
    * The queued work now runs, but the tcon, ses & server was freed in
      the meantime resulting in a crash.
    
    THREAD 1
    ========
    cifs_put_tcon                 => tcon refcount reach 0
      SMB2_tdis
       close_shroot_lease
        close_shroot_lease_locked => if cached root has lease && refcount = 0
         smb2_close_cached_fid    => if cached root valid
          SMB2_close              => retry close in a thread if interrupted
           smb2_handle_cancelled_close
            __smb2_handle_cancelled_close    => !! tcon refcount bump 0 => 1 !!
             INIT_WORK(&cancelled->work, smb2_cancelled_close_fid);
             queue_work(cifsiod_wq, &cancelled->work) => queue work
     tconInfoFree(tcon);    ==> freed!
     cifs_put_smb_ses(ses); ==> freed!
    
    THREAD 2 (workqueue)
    ========
    smb2_cancelled_close_fid
      SMB2_close(0, cancelled->tcon, ...); => use-after-free of tcon
      cifs_put_tcon(cancelled->tcon);      => tcon refcount reach 0 second time
      *CRASH*
    
    Fixes: d9191319358d ("CIFS: Close cached root handle only if it has a lease")
    Signed-off-by: Aurelien Aptel <aaptel@suse.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0058035f58cb0b50f0616b93ca636d32890cc399
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon Mar 30 14:38:46 2020 -0700

    net: dsa: bcm_sf2: Fix overflow checks
    
    commit d0802dc411f469569a537283b6f3833af47aece9 upstream.
    
    Commit f949a12fd697 ("net: dsa: bcm_sf2: fix buffer overflow doing
    set_rxnfc") tried to fix the some user controlled buffer overflows in
    bcm_sf2_cfp_rule_set() and bcm_sf2_cfp_rule_del() but the fix was using
    CFP_NUM_RULES, which while it is correct not to overflow the bitmaps, is
    not representative of what the device actually supports. Correct that by
    using bcm_sf2_cfp_rule_size() instead.
    
    The latter subtracts the number of rules by 1, so change the checks from
    greater than or equal to greater than accordingly.
    
    Fixes: f949a12fd697 ("net: dsa: bcm_sf2: fix buffer overflow doing set_rxnfc")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 360aba644f1fadc04cfd4f4486d07eb74399abdd
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Tue Mar 31 16:08:44 2020 +1000

    drm/nouveau/gr/gp107,gp108: implement workaround for HW hanging during init
    
    [ Upstream commit 028a12f5aa829b4ba6ac011530b815eda4960e89 ]
    
    Certain boards with GP107/GP108 chipsets hang (often, but randomly) for
    unknown reasons during GR initialisation.
    
    The first tell-tale symptom of this issue is:
    
    nouveau 0000:01:00.0: bus: MMIO read of 00000000 FAULT at 409800 [ TIMEOUT ]
    
    appearing in dmesg, likely followed by many other failures being logged.
    
    Karol found this WAR for the issue a while back, but efforts to isolate
    the root cause and proper fix have not yielded success so far.  I've
    modified the original patch to include a few more details, limit it to
    GP107/GP108 by default, and added a config option to override this choice.
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Reviewed-by: Karol Herbst <kherbst@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c03892126ffea1c822f771711e65ebb06256bbdc
Author: Yicheng Li <yichengli@chromium.org>
Date:   Mon Feb 3 14:53:56 2020 -0800

    platform/chrome: cros_ec: Query EC protocol version if EC transitions between RO/RW
    
    [ Upstream commit 42cd0ab476e2daffc23982c37822a78f9a53cdd5 ]
    
    RO and RW of EC may have different EC protocol version. If EC transitions
    between RO and RW, but AP does not reboot (this is true for fingerprint
    microcontroller / cros_fp, but not true for main ec / cros_ec), the AP
    still uses the protocol version queried before transition, which can
    cause problems. In the case of fingerprint microcontroller, this causes
    AP to send the wrong version of EC_CMD_GET_NEXT_EVENT to RO in the
    interrupt handler, which in turn prevents RO to clear the interrupt
    line to AP, in an infinite loop.
    
    Once an EC_HOST_EVENT_INTERFACE_READY is received, we know that there
    might have been a transition between RO and RW, so re-query the protocol.
    
    Signed-off-by: Yicheng Li <yichengli@chromium.org>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Reviewed-by: Gwendal Grignou <gwendal@chromium.org>
    Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b21e919dbe85d0728a06823b52a59a90e8067b69
Author: Chao Yu <chao@kernel.org>
Date:   Fri Feb 14 17:45:12 2020 +0800

    f2fs: fix to wait all node page writeback
    
    [ Upstream commit dc5a941223edd803f476a153abd950cc3a83c3e1 ]
    
    There is a race condition that we may miss to wait for all node pages
    writeback, fix it.
    
    - fsync()                               - shrink
     - f2fs_do_sync_file
                                             - __write_node_page
                                              - set_page_writeback(page#0)
                                              : remove DIRTY/TOWRITE flag
      - f2fs_fsync_node_pages
      : won't find page #0 as TOWRITE flag was removeD
      - f2fs_wait_on_node_pages_writeback
      : wont' wait page #0 writeback as it was not in fsync_node_list list.
                                               - f2fs_add_fsync_node_entry
    
    Fixes: 50fa53eccf9f ("f2fs: fix to avoid broken of dnode block list")
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ad9c27d18541defa6e156080c46b2e18d99bcde2
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Feb 20 20:50:37 2020 -0800

    f2fs: fix leaking uninitialized memory in compressed clusters
    
    [ Upstream commit 7fa6d59816e7d81cfd4f854468c477c12b85c789 ]
    
    When the compressed data of a cluster doesn't end on a page boundary,
    the remainder of the last page must be zeroed in order to avoid leaking
    uninitialized memory to disk.
    
    Fixes: 4c8ff7095bef ("f2fs: support data compression")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f0bca2390679e37937785720b08bd5031842bd29
Author: Adrian Huang <ahuang12@lenovo.com>
Date:   Fri Feb 14 18:44:51 2020 +0800

    iommu/amd: Fix the configuration of GCR3 table root pointer
    
    [ Upstream commit c20f36534666e37858a14e591114d93cc1be0d34 ]
    
    The SPA of the GCR3 table root pointer[51:31] masks 20 bits. However,
    this requires 21 bits (Please see the AMD IOMMU specification).
    This leads to the potential failure when the bit 51 of SPA of
    the GCR3 table root pointer is 1'.
    
    Signed-off-by: Adrian Huang <ahuang12@lenovo.com>
    Fixes: 52815b75682e2 ("iommu/amd: Add support for IOMMUv2 domain mode")
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c610c5403f387eb1cacfc9bc5ddd3a460e5df18d
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Feb 25 19:20:56 2020 +0300

    libnvdimm: Out of bounds read in __nd_ioctl()
    
    [ Upstream commit f84afbdd3a9e5e10633695677b95422572f920dc ]
    
    The "cmd" comes from the user and it can be up to 255.  It it's more
    than the number of bits in long, it results out of bounds read when we
    check test_bit(cmd, &cmd_mask).  The highest valid value for "cmd" is
    ND_CMD_CALL (10) so I added a compare against that.
    
    Fixes: 62232e45f4a2 ("libnvdimm: control (ioctl) messages for nvdimm_bus and nvdimm devices")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20200225162055.amtosfy7m35aivxg@kili.mountain
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 32b23896facb9c30ebd0faecb0ee8df0e9fb95af
Author: Jeffery Miller <jmiller@neverware.com>
Date:   Tue Feb 25 16:59:41 2020 -0600

    power: supply: axp288_fuel_gauge: Broaden vendor check for Intel Compute Sticks.
    
    [ Upstream commit e42fe5b29ac07210297e75f36deefe54edbdbf80 ]
    
    The Intel Compute Stick `STK1A32SC` can have a system vendor of
    "Intel(R) Client Systems".
    Broaden the Intel Compute Stick DMI checks so that they match "Intel
    Corporation" as well as "Intel(R) Client Systems".
    
    This fixes an issue where the STK1A32SC compute sticks were still
    exposing a battery with the existing blacklist entry.
    
    Signed-off-by: Jeffery Miller <jmiller@neverware.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ff5a60ad4de778426d63d351e3fb1a21527efcfe
Author: Guo Ren <guoren@linux.alibaba.com>
Date:   Wed Feb 26 10:23:26 2020 +0800

    csky: Fixup init_fpu compile warning with __init
    
    [ Upstream commit 12879bda3c2a974b7e4fe199a9c21f0c5f6bca04 ]
    
    WARNING: vmlinux.o(.text+0x2366): Section mismatch in reference from the
    function csky_start_secondary() to the function .init.text:init_fpu()
    
    The function csky_start_secondary() references
    the function __init init_fpu().
    This is often because csky_start_secondary lacks a __init
    annotation or the annotation of init_fpu is wrong.
    
    Reported-by: Lu Chongzhi <chongzhi.lcz@alibaba-inc.com>
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6ea3d6d40f1d73d32b54ce7361c098c706a7a561
Author: Yuantian Tang <andy.tang@nxp.com>
Date:   Tue Mar 3 16:46:41 2020 +0800

    thermal: qoriq: Fix a compiling issue
    
    [ Upstream commit cbe259fd80b7b02fba0dad79d8fdda8b70a8b963 ]
    
    Qoriq thermal driver is used by both PowerPC and ARM architecture.
    When built for PowerPC architecture, it reports error:
    undefined reference to `.__devm_regmap_init_mmio_clk'
    To fix it, select config REGMAP_MMIO.
    
    Fixes: 4316237bd627 (thermal: qoriq: Convert driver to use regmap API)
    Signed-off-by: Yuantian Tang <andy.tang@nxp.com>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Link: https://lore.kernel.org/r/20200303084641.35687-1-andy.tang@nxp.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2d00854b562a2b3e29d3d2ed9f9b254514963765
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Wed Mar 11 11:21:07 2020 -0400

    sunrpc: Fix gss_unwrap_resp_integ() again
    
    [ Upstream commit 4047aa909c4a40fceebc36fff708d465a4d3c6e2 ]
    
    xdr_buf_read_mic() tries to find unused contiguous space in a
    received xdr_buf in order to linearize the checksum for the call
    to gss_verify_mic. However, the corner cases in this code are
    numerous and we seem to keep missing them. I've just hit yet
    another buffer overrun related to it.
    
    This overrun is at the end of xdr_buf_read_mic():
    
    1284         if (buf->tail[0].iov_len != 0)
    1285                 mic->data = buf->tail[0].iov_base + buf->tail[0].iov_len;
    1286         else
    1287                 mic->data = buf->head[0].iov_base + buf->head[0].iov_len;
    1288         __read_bytes_from_xdr_buf(&subbuf, mic->data, mic->len);
    1289         return 0;
    
    This logic assumes the transport has set the length of the tail
    based on the size of the received message. base + len is then
    supposed to be off the end of the message but still within the
    actual buffer.
    
    In fact, the length of the tail is set by the upper layer when the
    Call is encoded so that the end of the tail is actually the end of
    the allocated buffer itself. This causes the logic above to set
    mic->data to point past the end of the receive buffer.
    
    The "mic->data = head" arm of this if statement is no less fragile.
    
    As near as I can tell, this has been a problem forever. I'm not sure
    that minimizing au_rslack recently changed this pathology much.
    
    So instead, let's use a more straightforward approach: kmalloc a
    separate buffer to linearize the checksum. This is similar to
    how gss_validate() currently works.
    
    Coming back to this code, I had some trouble understanding what
    was going on. So I've cleaned up the variable naming and added
    a few comments that point back to the XDR definition in RFC 2203
    to help guide future spelunkers, including myself.
    
    As an added clean up, the functionality that was in
    xdr_buf_read_mic() is folded directly into gss_unwrap_resp_integ(),
    as that is its only caller.
    
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 16119e8e86ba87bacdb943481183ffeac7dd5c1b
Author: Jan Kara <jack@suse.cz>
Date:   Tue Mar 17 12:40:02 2020 +0100

    ext2: fix debug reference to ext2_xattr_cache
    
    [ Upstream commit 32302085a8d90859c40cf1a5e8313f575d06ec75 ]
    
    Fix a debug-only build error in ext2/xattr.c:
    
    When building without extra debugging, (and with another patch that uses
    no_printk() instead of <empty> for the ext2-xattr debug-print macros,
    this build error happens:
    
    ../fs/ext2/xattr.c: In function ‘ext2_xattr_cache_insert’:
    ../fs/ext2/xattr.c:869:18: error: ‘ext2_xattr_cache’ undeclared (first use in
    this function); did you mean ‘ext2_xattr_list’?
         atomic_read(&ext2_xattr_cache->c_entry_count));
    
    Fix the problem by removing cached entry count from the debug message
    since otherwise we'd have to export the mbcache structure just for that.
    
    Fixes: be0726d33cb8 ("ext2: convert to mbcache2")
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7435523bb1b9a141c878fe2f2cc70aeab884727c
Author: Jacob Pan <jacob.jun.pan@linux.intel.com>
Date:   Tue Mar 17 09:10:18 2020 +0800

    iommu/vt-d: Fix page request descriptor size
    
    [ Upstream commit 52355fb1919ef7ed9a38e0f3de6e928de1f57217 ]
    
    Intel VT-d might support PRS (Page Reqest Support) when it's
    running in the scalable mode. Each page request descriptor
    occupies 32 bytes and is 32-bytes aligned. The page request
    descriptor offset mask should be 32-bytes aligned.
    
    Fixes: 5b438f4ba315d ("iommu/vt-d: Support page request in scalable mode")
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Liu Yi L <yi.l.liu@intel.com>
    Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fa2fa282240b6b5d5a82b344c1c706e685bbd398
Author: Qian Cai <cai@lca.pw>
Date:   Tue Mar 17 11:03:26 2020 -0400

    iommu/vt-d: Silence RCU-list debugging warning in dmar_find_atsr()
    
    [ Upstream commit c6f4ebdeba4cff590594df931ff1ee610c426431 ]
    
    dmar_find_atsr() calls list_for_each_entry_rcu() outside of an RCU read
    side critical section but with dmar_global_lock held. Silence this
    false positive.
    
     drivers/iommu/intel-iommu.c:4504 RCU-list traversed in non-reader section!!
     1 lock held by swapper/0/1:
     #0: ffffffff9755bee8 (dmar_global_lock){+.+.}, at: intel_iommu_init+0x1a6/0xe19
    
     Call Trace:
      dump_stack+0xa4/0xfe
      lockdep_rcu_suspicious+0xeb/0xf5
      dmar_find_atsr+0x1ab/0x1c0
      dmar_parse_one_atsr+0x64/0x220
      dmar_walk_remapping_entries+0x130/0x380
      dmar_table_init+0x166/0x243
      intel_iommu_init+0x1ab/0xe19
      pci_iommu_init+0x1a/0x44
      do_one_initcall+0xae/0x4d0
      kernel_init_freeable+0x412/0x4c5
      kernel_init+0x19/0x193
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b0d0decd3d51a1d81f0414c925de55303964d84e
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Sun Feb 9 13:23:28 2020 -0800

    f2fs: skip GC when section is full
    
    [ Upstream commit 2bac07635ddf9ed59268e61e415d8de9c5eaded7 ]
    
    This fixes skipping GC when segment is full in large section.
    
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d184d6c164d22e7506c914855bf2b6d8584ae9da
Author: Chao Yu <chao@kernel.org>
Date:   Thu Mar 12 10:45:29 2020 +0800

    f2fs: fix to account compressed blocks in f2fs_compressed_blocks()
    
    [ Upstream commit 1a67cbe141cf991af252a88143d0fd975be2d9e7 ]
    
    por_fsstress reports inconsistent status in orphan inode, the root cause
    of this is in f2fs_write_raw_pages() we decrease i_compr_blocks incorrectly
    due to wrong calculation in f2fs_compressed_blocks().
    
    So this patch exposes below two functions based on __f2fs_cluster_blocks:
    - f2fs_compressed_blocks: get count of compressed blocks in compressed cluster
    - f2fs_cluster_blocks: get count of valid blocks (including reserved blocks)
    in compressed cluster.
    
    Then use f2fs_compress_blocks() to get correct compressed blocks count in
    f2fs_write_raw_pages().
    
    sanity_check_inode: inode (ino=ad80) hash inconsistent i_compr_blocks:2, i_blocks:1, run fsck to fix
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 926952e6366ab3b8019d3e2c7ae0685e3547c6ca
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sun Mar 22 19:45:41 2020 -0700

    ext2: fix empty body warnings when -Wextra is used
    
    [ Upstream commit 44a52022e7f15cbaab957df1c14f7a4f527ef7cf ]
    
    When EXT2_ATTR_DEBUG is not defined, modify the 2 debug macros
    to use the no_printk() macro instead of <nothing>.
    This fixes gcc warnings when -Wextra is used:
    
    ../fs/ext2/xattr.c:252:42: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
    ../fs/ext2/xattr.c:258:42: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
    ../fs/ext2/xattr.c:330:42: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
    ../fs/ext2/xattr.c:872:45: warning: suggest braces around empty body in an ‘else’ statement [-Wempty-body]
    
    I have verified that the only object code change (with gcc 7.5.0) is
    the reversal of some instructions from 'cmp a,b' to 'cmp b,a'.
    
    Link: https://lore.kernel.org/r/e18a7395-61fb-2093-18e8-ed4f8cf56248@infradead.org
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Jan Kara <jack@suse.com>
    Cc: linux-ext4@vger.kernel.org
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aec3d682942d8024d427fc4f6ea080788bdb372c
Author: David Hildenbrand <david@redhat.com>
Date:   Wed Feb 5 17:34:02 2020 +0100

    virtio-balloon: Switch back to OOM handler for VIRTIO_BALLOON_F_DEFLATE_ON_OOM
    
    [ Upstream commit 5a6b4cc5b7a1892a8d7f63d6cbac6e0ae2a9d031 ]
    
    Commit 71994620bb25 ("virtio_balloon: replace oom notifier with shrinker")
    changed the behavior when deflation happens automatically. Instead of
    deflating when called by the OOM handler, the shrinker is used.
    
    However, the balloon is not simply some slab cache that should be
    shrunk when under memory pressure. The shrinker does not have a concept of
    priorities, so this behavior cannot be configured.
    
    There was a report that this results in undesired side effects when
    inflating the balloon to shrink the page cache. [1]
            "When inflating the balloon against page cache (i.e. no free memory
             remains) vmscan.c will both shrink page cache, but also invoke the
             shrinkers -- including the balloon's shrinker. So the balloon
             driver allocates memory which requires reclaim, vmscan gets this
             memory by shrinking the balloon, and then the driver adds the
             memory back to the balloon. Basically a busy no-op."
    
    The name "deflate on OOM" makes it pretty clear when deflation should
    happen - after other approaches to reclaim memory failed, not while
    reclaiming. This allows to minimize the footprint of a guest - memory
    will only be taken out of the balloon when really needed.
    
    Especially, a drop_slab() will result in the whole balloon getting
    deflated - undesired. While handling it via the OOM handler might not be
    perfect, it keeps existing behavior. If we want a different behavior, then
    we need a new feature bit and document it properly (although, there should
    be a clear use case and the intended effects should be well described).
    
    Keep using the shrinker for VIRTIO_BALLOON_F_FREE_PAGE_HINT, because
    this has no such side effects. Always register the shrinker with
    VIRTIO_BALLOON_F_FREE_PAGE_HINT now. We are always allowed to reuse free
    pages that are still to be processed by the guest. The hypervisor takes
    care of identifying and resolving possible races between processing a
    hinting request and the guest reusing a page.
    
    In contrast to pre commit 71994620bb25 ("virtio_balloon: replace oom
    notifier with shrinker"), don't add a moodule parameter to configure the
    number of pages to deflate on OOM. Can be re-added if really needed.
    Also, pay attention that leak_balloon() returns the number of 4k pages -
    convert it properly in virtio_balloon_oom_notify().
    
    Note1: using the OOM handler is frowned upon, but it really is what we
           need for this feature.
    
    Note2: without VIRTIO_BALLOON_F_MUST_TELL_HOST (iow, always with QEMU) we
           could actually skip sending deflation requests to our hypervisor,
           making the OOM path *very* simple. Besically freeing pages and
           updating the balloon. If the communication with the host ever
           becomes a problem on this call path.
    
    [1] https://www.spinics.net/lists/linux-virtualization/msg40863.html
    
    Test report by Tyler Sanderson:
    
    Test setup: VM with 16 CPU, 64GB RAM. Running Debian 10. We have a 42
    GB file full of random bytes that we continually cat to /dev/null.
    This fills the page cache as the file is read. Meanwhile we trigger
    the balloon to inflate, with a target size of 53 GB. This setup causes
    the balloon inflation to pressure the page cache as the page cache is
    also trying to grow. Afterwards we shrink the balloon back to zero (so
    total deflate = total inflate).
    
    Without patch (kernel 4.19.0-5):
    Inflation never reaches the target until we stop the "cat file >
    /dev/null" process. Total inflation time was 542 seconds. The longest
    period that made no net forward progress was 315 seconds (see attached
    graph).
    Result of "grep balloon /proc/vmstat" after the test:
    balloon_inflate 154828377
    balloon_deflate 154828377
    
    With patch (kernel 5.6.0-rc4+):
    Total inflation duration was 63 seconds. No deflate-queue activity
    occurs when pressuring the page-cache.
    Result of "grep balloon /proc/vmstat" after the test:
    balloon_inflate 12968539
    balloon_deflate 12968539
    
    Conclusion: This patch fixes the issue. In the test it reduced
    inflate/deflate activity by 12x, and reduced inflation time by 8.6x.
    But more importantly, if we hadn't killed the "grep balloon
    /proc/vmstat" process then, without the patch, the inflation process
    would never reach the target.
    
    Attached [1] is a png of a graph showing the problematic behavior without
    this patch. It shows deflate-queue activity increasing linearly while
    balloon size stays constant over the course of more than 8 minutes of
    the test.
    
    [1] https://lore.kernel.org/linux-mm/CAJuQAmphPcfew1v_EOgAdSFiprzjiZjmOf3iJDmFX0gD6b9TYQ@mail.gmail.com/2-without_patch.png
    
    Full test report and discussion [2]:
    
    [2] https://lore.kernel.org/r/CAJuQAmphPcfew1v_EOgAdSFiprzjiZjmOf3iJDmFX0gD6b9TYQ@mail.gmail.com
    
    Tested-by: Tyler Sanderson <tysand@google.com>
    Reported-by: Tyler Sanderson <tysand@google.com>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: Wei Wang <wei.w.wang@intel.com>
    Cc: Alexander Duyck <alexander.h.duyck@linux.intel.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Nadav Amit <namit@vmware.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Link: https://lore.kernel.org/r/20200205163402.42627-4-david@redhat.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 84f67aa45dee07af6272f49da2a6977cd5dcf0c4
Author: Olga Kornievskaia <olga.kornievskaia@gmail.com>
Date:   Thu Mar 26 10:24:51 2020 -0400

    SUNRPC: fix krb5p mount to provide large enough buffer in rq_rcvsize
    
    [ Upstream commit df513a7711712758b9cb1a48d86712e7e1ee03f4 ]
    
    Ever since commit 2c94b8eca1a2 ("SUNRPC: Use au_rslack when computing
    reply buffer size"). It changed how "req->rq_rcvsize" is calculated. It
    used to use au_cslack value which was nice and large and changed it to
    au_rslack value which turns out to be too small.
    
    Since 5.1, v3 mount with sec=krb5p fails against an Ontap server
    because client's receive buffer it too small.
    
    For gss krb5p, we need to account for the mic token in the verifier,
    and the wrap token in the wrap token.
    
    RFC 4121 defines:
    mic token
    Octet no   Name        Description
             --------------------------------------------------------------
             0..1     TOK_ID     Identification field.  Tokens emitted by
                                 GSS_GetMIC() contain the hex value 04 04
                                 expressed in big-endian order in this
                                 field.
             2        Flags      Attributes field, as described in section
                                 4.2.2.
             3..7     Filler     Contains five octets of hex value FF.
             8..15    SND_SEQ    Sequence number field in clear text,
                                 expressed in big-endian order.
             16..last SGN_CKSUM  Checksum of the "to-be-signed" data and
                                 octet 0..15, as described in section 4.2.4.
    
    that's 16bytes (GSS_KRB5_TOK_HDR_LEN) + chksum
    
    wrap token
    Octet no   Name        Description
             --------------------------------------------------------------
              0..1     TOK_ID    Identification field.  Tokens emitted by
                                 GSS_Wrap() contain the hex value 05 04
                                 expressed in big-endian order in this
                                 field.
              2        Flags     Attributes field, as described in section
                                 4.2.2.
              3        Filler    Contains the hex value FF.
              4..5     EC        Contains the "extra count" field, in big-
                                 endian order as described in section 4.2.3.
              6..7     RRC       Contains the "right rotation count" in big-
                                 endian order, as described in section
                                 4.2.5.
              8..15    SND_SEQ   Sequence number field in clear text,
                                 expressed in big-endian order.
              16..last Data      Encrypted data for Wrap tokens with
                                 confidentiality, or plaintext data followed
                                 by the checksum for Wrap tokens without
                                 confidentiality, as described in section
                                 4.2.4.
    
    Also 16bytes of header (GSS_KRB5_TOK_HDR_LEN), encrypted data, and cksum
    (other things like padding)
    
    RFC 3961 defines known cksum sizes:
    Checksum type              sumtype        checksum         section or
                                    value            size         reference
       ---------------------------------------------------------------------
       CRC32                            1               4           6.1.3
       rsa-md4                          2              16           6.1.2
       rsa-md4-des                      3              24           6.2.5
       des-mac                          4              16           6.2.7
       des-mac-k                        5               8           6.2.8
       rsa-md4-des-k                    6              16           6.2.6
       rsa-md5                          7              16           6.1.1
       rsa-md5-des                      8              24           6.2.4
       rsa-md5-des3                     9              24             ??
       sha1 (unkeyed)                  10              20             ??
       hmac-sha1-des3-kd               12              20            6.3
       hmac-sha1-des3                  13              20             ??
       sha1 (unkeyed)                  14              20             ??
       hmac-sha1-96-aes128             15              20         [KRB5-AES]
       hmac-sha1-96-aes256             16              20         [KRB5-AES]
       [reserved]                  0x8003               ?         [GSS-KRB5]
    
    Linux kernel now mainly supports type 15,16 so max cksum size is 20bytes.
    (GSS_KRB5_MAX_CKSUM_LEN)
    
    Re-use already existing define of GSS_KRB5_MAX_SLACK_NEEDED that's used
    for encoding the gss_wrap tokens (same tokens are used in reply).
    
    Fixes: 2c94b8eca1a2 ("SUNRPC: Use au_rslack when computing reply buffer size")
    Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
    Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2cf6e0ec9b7f970904e97a6d886862e974e3188b
Author: Jacob Pan <jacob.jun.pan@linux.intel.com>
Date:   Thu Mar 19 21:32:30 2020 -0700

    iommu/vt-d: Fix mm reference leak
    
    [ Upstream commit 902baf61adf6b187f0a6b789e70d788ea71ff5bc ]
    
    Move canonical address check before mmget_not_zero() to avoid mm
    reference leak.
    
    Fixes: 9d8c3af31607 ("iommu/vt-d: IOMMU Page Request needs to check if address is canonical.")
    Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
    Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 06cf124d3dbbfb71d01f87a2d9401af9a457c266
Author: Jacob Pan <jacob.jun.pan@linux.intel.com>
Date:   Thu Mar 19 21:32:31 2020 -0700

    iommu/vt-d: Add build dependency on IOASID
    
    [ Upstream commit 4a663dae47316ae8b97d5b77025fe7dfd9d3487f ]
    
    IOASID code is needed by VT-d scalable mode for PASID allocation.
    Add explicit dependency such that IOASID is built-in whenever Intel
    IOMMU is enabled.
    Otherwise, aux domain code will fail when IOMMU is built-in and IOASID
    is compiled as a module.
    
    Fixes: 59a623374dc38 ("iommu/vt-d: Replace Intel specific PASID allocator with IOASID")
    Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
    Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 387391620c961bb3bebca26ca94caecccbe92501
Author: Jean-Philippe Brucker <jean-philippe@linaro.org>
Date:   Thu Mar 26 10:35:57 2020 +0100

    iommu/virtio: Fix freeing of incomplete domains
    
    [ Upstream commit 7062af3ed2ba451029e3733d9f677c68f5ea9e77 ]
    
    Calling viommu_domain_free() on a domain that hasn't been finalised (not
    attached to any device, for example) can currently cause an Oops,
    because we attempt to call ida_free() on ID 0, which may either be
    unallocated or used by another domain.
    
    Only initialise the vdomain->viommu pointer, which denotes a finalised
    domain, at the end of a successful viommu_domain_finalise().
    
    Fixes: edcd69ab9a32 ("iommu: Add virtio-iommu driver")
    Reported-by: Eric Auger <eric.auger@redhat.com>
    Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
    Reviewed-by: Robin Murphy <robin.murphy@arm.com>
    Link: https://lore.kernel.org/r/20200326093558.2641019-3-jean-philippe@linaro.org
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bcb300408c8797830c3868a593db2bc55b2c827f
Author: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Date:   Thu Mar 26 13:20:01 2020 +0100

    drm/vc4: Fix HDMI mode validation
    
    [ Upstream commit b1e7396a1d0e6af6806337fdaaa44098d6b3343c ]
    
    Current mode validation impedes setting up some video modes which should
    be supported otherwise. Namely 1920x1200@60Hz.
    
    Fix this by lowering the minimum HDMI state machine clock to pixel clock
    ratio allowed.
    
    Fixes: 32e823c63e90 ("drm/vc4: Reject HDMI modes with too high of clocks.")
    Reported-by: Stefan Wahren <stefan.wahren@i2se.com>
    Suggested-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
    Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200326122001.22215-1-nsaenzjulienne@suse.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 341ec2df1b61cfb7da1dc41dee01f8bed221aa04
Author: Alan Maguire <alan.maguire@oracle.com>
Date:   Tue Mar 17 17:35:34 2020 +0000

    um: falloc.h needs to be directly included for older libc
    
    [ Upstream commit 35f3401317a3b26aa01fde8facfd320f2628fdcc ]
    
    When building UML with glibc 2.17 installed, compilation
    of arch/um/os-Linux/file.c fails due to failure to find
    FALLOC_FL_PUNCH_HOLE and FALLOC_FL_KEEP_SIZE definitions.
    
    It appears that /usr/include/bits/fcntl-linux.h (indirectly
    included by /usr/include/fcntl.h) does not include falloc.h
    with an older glibc, whereas a more up-to-date version
    does.
    
    Adding the direct include to file.c resolves the issue
    and does not cause problems for more recent glibc.
    
    Fixes: 50109b5a03b4 ("um: Add support for DISCARD in the UBD Driver")
    Cc: Brendan Higgins <brendanhiggins@google.com>
    Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
    Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
    Acked-By: Anton Ivanov <anton.ivanov@cambridgegreys.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 245a2768b370b457d8557951120e78f579e21719
Author: Prashant Malani <pmalani@chromium.org>
Date:   Mon Feb 10 11:06:24 2020 -0800

    mfd: cros_ec: Check DT node for usbpd-notify add
    
    [ Upstream commit f8db89d14efb770dd59aa0ca74386e5de68310d5 ]
    
    Add a check to ensure there is indeed an EC device tree entry before
    adding the cros-usbpd-notify device. This covers configs where both
    CONFIG_ACPI and CONFIG_OF are defined, but the EC device is defined
    using device tree and not in ACPI.
    
    Fixes: 4602dce0361e ("mfd: cros_ec: Add cros-usbpd-notify subdevice")
    Signed-off-by: Prashant Malani <pmalani@chromium.org>
    Tested-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cd556e9069bde271d961b9d27b71492737857049
Author: Luis Henriques <lhenriques@suse.com>
Date:   Mon Feb 24 13:44:32 2020 +0000

    ceph: re-org copy_file_range and fix some error paths
    
    [ Upstream commit 1b0c3b9f91f0df03088d293fc9e62743fd789ad2 ]
    
    This patch re-organizes copy_file_range, trying to fix a few issues in the
    error handling.  Here's the summary:
    
    - Abort copy if initial do_splice_direct() returns fewer bytes than
      requested.
    
    - Move the 'size' initialization (with i_size_read()) further down in the
      code, after the initial call to do_splice_direct().  This avoids issues
      with a possibly stale value if a manual copy is done.
    
    - Move the object copy loop into a separate function.  This makes it
      easier to handle errors (e.g, dirtying caps and updating the MDS
      metadata if only some objects have been copied before an error has
      occurred).
    
    - Added calls to ceph_oloc_destroy() to avoid leaking memory with src_oloc
      and dst_oloc
    
    - After the object copy loop, the new file size to be reported to the MDS
      (if there's file size change) is now the actual file size, and not the
      size after an eventual extra manual copy.
    
    - Added a few dout() to show the number of bytes copied in the two manual
      copies and in the object copy loop.
    
    Signed-off-by: Luis Henriques <lhenriques@suse.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d76d787744e428542828b1bcbc0a6c6b28f1b5ac
Author: Bob Moore <robert.moore@intel.com>
Date:   Fri Mar 27 15:21:09 2020 -0700

    ACPICA: Fixes for acpiExec namespace init file
    
    [ Upstream commit 9a1ae80412dcaa67a29eecf19de44f32b5f1c357 ]
    
    This is the result of squashing the following ACPICA commit ID's:
    6803997e5b4f3635cea6610b51ff69e29d251de3
    f31cdf8bfda22fe265c1a176d0e33d311c82a7f7
    
    This change fixes several problems with the support for the
    acpi_exec namespace init file (-fi option). Specifically, it
    fixes AE_ALREADY_EXISTS errors, as well as various seg faults.
    
    Link: https://github.com/acpica/acpica/commit/f31cdf8b
    Link: https://github.com/acpica/acpica/commit/6803997e
    Signed-off-by: Bob Moore <robert.moore@intel.com>
    Signed-off-by: Erik Kaneda <erik.kaneda@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d18a2b128d3902b5ef908a5077822ad0b3883186
Author: Chao Yu <chao@kernel.org>
Date:   Fri Mar 20 18:14:31 2020 +0800

    f2fs: fix potential deadlock on compressed quota file
    
    [ Upstream commit 466357dc9b5ff555d16b7f9a0ff264eb9d5d908b ]
    
    generic/232 reports below deadlock:
    
    fsstress        D    0 96980  96969 0x00084000
    Call Trace:
     schedule+0x4a/0xb0
     io_schedule+0x12/0x40
     __lock_page+0x127/0x1d0
     pagecache_get_page+0x1d8/0x250
     prepare_compress_overwrite+0xe0/0x490 [f2fs]
     f2fs_prepare_compress_overwrite+0x5d/0x80 [f2fs]
     f2fs_write_begin+0x833/0xb90 [f2fs]
     f2fs_quota_write+0x145/0x1e0 [f2fs]
     write_blk+0x36/0x80 [quota_tree]
     do_insert_tree+0x2ac/0x4a0 [quota_tree]
     do_insert_tree+0x26e/0x4a0 [quota_tree]
     qtree_write_dquot+0x70/0x190 [quota_tree]
     v2_write_dquot+0x43/0x90 [quota_v2]
     dquot_acquire+0x77/0x100
     f2fs_dquot_acquire+0x2f/0x60 [f2fs]
     dqget+0x310/0x450
     dquot_transfer+0xb2/0x120
     f2fs_setattr+0x11a/0x4a0 [f2fs]
     notify_change+0x349/0x480
     chown_common+0x168/0x1c0
     do_fchownat+0xbc/0xf0
     __x64_sys_lchown+0x21/0x30
     do_syscall_64+0x5f/0x220
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
      task                        PC stack   pid father
    kworker/u256:0  D    0 103444      2 0x80084000
    Workqueue: writeback wb_workfn (flush-251:1)
    Call Trace:
     schedule+0x4a/0xb0
     schedule_timeout+0x15e/0x2f0
     io_schedule_timeout+0x19/0x40
     congestion_wait+0x7e/0x120
     f2fs_write_multi_pages+0x12a/0x840 [f2fs]
     f2fs_write_cache_pages+0x48f/0x790 [f2fs]
     f2fs_write_data_pages+0x2db/0x330 [f2fs]
     do_writepages+0x1a/0x60
     __writeback_single_inode+0x3d/0x340
     writeback_sb_inodes+0x225/0x4a0
     wb_writeback+0xf7/0x320
     wb_workfn+0xba/0x470
     process_one_work+0x16c/0x3f0
     worker_thread+0x4c/0x440
     kthread+0xf8/0x130
     ret_from_fork+0x35/0x40
    
    fsstress        D    0  5277   5266 0x00084000
    Call Trace:
     schedule+0x4a/0xb0
     rwsem_down_write_slowpath+0x29d/0x540
     block_operations+0x105/0x360 [f2fs]
     f2fs_write_checkpoint+0x101/0x1010 [f2fs]
     f2fs_sync_fs+0xa8/0x130 [f2fs]
     f2fs_do_sync_file+0x1ad/0x890 [f2fs]
     do_fsync+0x38/0x60
     __x64_sys_fdatasync+0x13/0x20
     do_syscall_64+0x5f/0x220
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    The root cause is there is potential deadlock between quota data
    update and writeback.
    
    Kworker                                 Thread B                        Thread C
    - f2fs_write_cache_pages
     - lock whole cluster   --- A
     - f2fs_write_multi_pages
      - f2fs_write_raw_pages
       - f2fs_write_single_data_page
        - f2fs_do_write_data_page
                                            - f2fs_setattr
                                             - f2fs_lock_op --- B
                                                                            - f2fs_write_checkpoint
                                                                             - block_operations
                                                                              - f2fs_lock_all --- B
                                             - dquot_transfer
                                              - f2fs_quota_write
                                               - f2fs_prepare_compress_overwrite
                                                - pagecache_get_page --- A
         - f2fs_trylock_op failed   --- B
      - congestion_wait
      - goto rewrite
    
    To fix this issue, during quota file writeback, just redirty all pages
    left in cluster rather holding pages' lock in cluster and looping retrying
    lock cp_rwsem.
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 998756de57e489cb0752dbb4dd5e65a2a0230bb5
Author: Chao Yu <chao@kernel.org>
Date:   Thu Mar 19 19:58:00 2020 +0800

    f2fs: fix NULL pointer dereference in f2fs_write_begin()
    
    [ Upstream commit 62f63eea291b50a5677ae7503ac128803174698a ]
    
    BUG: kernel NULL pointer dereference, address: 0000000000000000
    RIP: 0010:f2fs_write_begin+0x823/0xb90 [f2fs]
    Call Trace:
     f2fs_quota_write+0x139/0x1d0 [f2fs]
     write_blk+0x36/0x80 [quota_tree]
     get_free_dqblk+0x42/0xa0 [quota_tree]
     do_insert_tree+0x235/0x4a0 [quota_tree]
     do_insert_tree+0x26e/0x4a0 [quota_tree]
     do_insert_tree+0x26e/0x4a0 [quota_tree]
     do_insert_tree+0x26e/0x4a0 [quota_tree]
     qtree_write_dquot+0x70/0x190 [quota_tree]
     v2_write_dquot+0x43/0x90 [quota_v2]
     dquot_acquire+0x77/0x100
     f2fs_dquot_acquire+0x2f/0x60 [f2fs]
     dqget+0x310/0x450
     dquot_transfer+0x7e/0x120
     f2fs_setattr+0x11a/0x4a0 [f2fs]
     notify_change+0x349/0x480
     chown_common+0x168/0x1c0
     do_fchownat+0xbc/0xf0
     __x64_sys_fchownat+0x20/0x30
     do_syscall_64+0x5f/0x220
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Passing fsdata parameter to .write_{begin,end} in f2fs_quota_write(),
    so that if quota file is compressed one, we can avoid above NULL
    pointer dereference when updating quota content.
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e21bd3d999975d7f919d804c6136f1e7733d025f
Author: Chao Yu <chao@kernel.org>
Date:   Mon Mar 23 17:43:04 2020 +0800

    f2fs: fix NULL pointer dereference in f2fs_verity_work()
    
    [ Upstream commit 79bbefb19f1359fb2cbd144d5a054649e7e583be ]
    
    If both compression and fsverity feature is on, generic/572 will
    report below NULL pointer dereference bug.
    
     BUG: kernel NULL pointer dereference, address: 0000000000000018
     RIP: 0010:f2fs_verity_work+0x60/0x90 [f2fs]
     #PF: supervisor read access in kernel mode
     Workqueue: fsverity_read_queue f2fs_verity_work [f2fs]
     RIP: 0010:f2fs_verity_work+0x60/0x90 [f2fs]
     Call Trace:
      process_one_work+0x16c/0x3f0
      worker_thread+0x4c/0x440
      ? rescuer_thread+0x350/0x350
      kthread+0xf8/0x130
      ? kthread_unpark+0x70/0x70
      ret_from_fork+0x35/0x40
    
    There are two issue in f2fs_verity_work():
    - it needs to traverse and verify all pages in bio.
    - if pages in bio belong to non-compressed cluster, accessing
    decompress IO context stored in page private will cause NULL
    pointer dereference.
    
    Fix them.
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cff529f5f9efc630e24f4149cc9985625b8ca80c
Author: Chao Yu <chao@kernel.org>
Date:   Mon Mar 23 11:18:07 2020 +0800

    f2fs: fix potential .flags overflow on 32bit architecture
    
    [ Upstream commit 7653b9d87516ed65e112d2273c65eca6f97d0a27 ]
    
    f2fs_inode_info.flags is unsigned long variable, it has 32 bits
    in 32bit architecture, since we introduced FI_MMAP_FILE flag
    when we support data compression, we may access memory cross
    the border of .flags field, corrupting .i_sem field, result in
    below deadlock.
    
    To fix this issue, let's expand .flags as an array to grab enough
    space to store new flags.
    
    Call Trace:
     __schedule+0x8d0/0x13fc
     ? mark_held_locks+0xac/0x100
     schedule+0xcc/0x260
     rwsem_down_write_slowpath+0x3ab/0x65d
     down_write+0xc7/0xe0
     f2fs_drop_nlink+0x3d/0x600 [f2fs]
     f2fs_delete_inline_entry+0x300/0x440 [f2fs]
     f2fs_delete_entry+0x3a1/0x7f0 [f2fs]
     f2fs_unlink+0x500/0x790 [f2fs]
     vfs_unlink+0x211/0x490
     do_unlinkat+0x483/0x520
     sys_unlink+0x4a/0x70
     do_fast_syscall_32+0x12b/0x683
     entry_SYSENTER_32+0xaa/0x102
    
    Fixes: 4c8ff7095bef ("f2fs: support data compression")
    Tested-by: Ondrej Jirman <megous@megous.com>
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a6fae3fa0f11ebc16add8253783912a9a4a4dc3b
Author: Chao Yu <chao@kernel.org>
Date:   Tue Mar 3 16:57:06 2020 +0800

    f2fs: compress: fix to call missing destroy_compress_ctx()
    
    [ Upstream commit 09ff48011e220e2b4f1d9ce2f472ecb63645cbfc ]
    
    Otherwise, it will cause memory leak.
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 01357ecc553ca507252790128d9c1b252e721113
Author: Guo Ren <guoren@linux.alibaba.com>
Date:   Tue Mar 31 23:45:52 2020 +0800

    csky: Fixup get wrong psr value from phyical reg
    
    [ Upstream commit 9c0e343d7654a329d1f9b53d253cbf7fb6eff85d ]
    
    We should get psr value from regs->psr in stack, not directly get
    it from phyiscal register then save the vector number in
    tsk->trap_no.
    
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a3f2e7c9133a9579e21f8e4925170b0e6ec2402b
Author: Gayatri Kammela <gayatri.kammela@intel.com>
Date:   Fri Mar 27 14:28:19 2020 -0700

    ACPI: Update Tiger Lake ACPI device IDs
    
    [ Upstream commit b62c770fee699a137359e1f1da9bf14a7f348567 ]
    
    Tiger Lake's new unique ACPI device IDs for DPTF and fan drivers are not
    valid as the IDs are missing 'C'. Fix the IDs by updating them.
    
    After the update, the new IDs should now look like
    INT1047 --> INTC1047
    INT1040 --> INTC1040
    INT1043 --> INTC1043
    INT1044 --> INTC1044
    
    Fixes: 55cfe6a5c582 ("ACPI: DPTF: Add Tiger Lake ACPI device IDs")
    Fixes: c248dfe7e0ca ("ACPI: fan: Add Tiger Lake ACPI device ID")
    Suggested-by: Srinivas Pandruvada <srinivas.pandruvada@intel.com>
    Signed-off-by: Gayatri Kammela <gayatri.kammela@intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c1e0d54c927ae4b9f47f8929865bfb07ab185956
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Sun Mar 29 20:06:45 2020 -0400

    NFS: Fix memory leaks in nfs_pageio_stop_mirroring()
    
    [ Upstream commit 862f35c94730c9270833f3ad05bd758a29f204ed ]
    
    If we just set the mirror count to 1 without first clearing out
    the mirrors, we can leak queued up requests.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b33c5a68a5bcb0e3eded766aded5b2c1ef9c4dad
Author: Jack Zhang <Jack.Zhang1@amd.com>
Date:   Wed Apr 1 20:06:58 2020 +0800

    drm/amdkfd: kfree the wrong pointer
    
    [ Upstream commit 3148a6a0ef3cf93570f30a477292768f7eb5d3c3 ]
    
    Originally, it kfrees the wrong pointer for mem_obj.
    It would cause memory leak under stress test.
    
    Signed-off-by: Jack Zhang <Jack.Zhang1@amd.com>
    Acked-by: Nirmoy Das <nirmoy.das@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f9d7cb1dbcfd1344c45c475c1e6ee48dd21e9c61
Author: Guo Ren <guoren@linux.alibaba.com>
Date:   Sat Mar 28 19:14:37 2020 +0800

    csky: Fixup cpu speculative execution to IO area
    
    [ Upstream commit aefd9461d34a1b0a2acad0750c43216c1c27b9d4 ]
    
    For the memory size ( > 512MB, < 1GB), the MSA setting is:
    
     - SSEG0: PHY_START        , PHY_START + 512MB
     - SSEG1: PHY_START + 512MB, PHY_START + 1GB
    
    But the real memory is no more than 1GB, there is a gap between the
    end size of memory and border of 1GB. CPU could speculatively
    execute to that gap and if the gap of the bus couldn't respond to
    the CPU request, then the crash will happen.
    
    Now make the setting with:
    
     - SSEG0: PHY_START        , PHY_START + 512MB (no change)
     - SSEG1: Disabled (We use highmem to use the memory of 512MB~1GB)
    
    We also deprecated zhole_szie[] settings, it's only used by arm
    style CPUs. All memory gap should use Reserved setting of dts in
    csky system.
    
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3875db666d95c1cbe98236d3034bbc863cca813c
Author: Qian Cai <cai@lca.pw>
Date:   Fri Apr 3 10:03:45 2020 -0400

    x86: ACPI: fix CPU hotplug deadlock
    
    [ Upstream commit 696ac2e3bf267f5a2b2ed7d34e64131f2287d0ad ]
    
    Similar to commit 0266d81e9bf5 ("acpi/processor: Prevent cpu hotplug
    deadlock") except this is for acpi_processor_ffh_cstate_probe():
    
    "The problem is that the work is scheduled on the current CPU from the
    hotplug thread associated with that CPU.
    
    It's not required to invoke these functions via the workqueue because
    the hotplug thread runs on the target CPU already.
    
    Check whether current is a per cpu thread pinned on the target CPU and
    invoke the function directly to avoid the workqueue."
    
     WARNING: possible circular locking dependency detected
     ------------------------------------------------------
     cpuhp/1/15 is trying to acquire lock:
     ffffc90003447a28 ((work_completion)(&wfc.work)){+.+.}-{0:0}, at: __flush_work+0x4c6/0x630
    
     but task is already holding lock:
     ffffffffafa1c0e8 (cpuidle_lock){+.+.}-{3:3}, at: cpuidle_pause_and_lock+0x17/0x20
    
     which lock already depends on the new lock.
    
     the existing dependency chain (in reverse order) is:
    
     -> #1 (cpu_hotplug_lock){++++}-{0:0}:
     cpus_read_lock+0x3e/0xc0
     irq_calc_affinity_vectors+0x5f/0x91
     __pci_enable_msix_range+0x10f/0x9a0
     pci_alloc_irq_vectors_affinity+0x13e/0x1f0
     pci_alloc_irq_vectors_affinity at drivers/pci/msi.c:1208
     pqi_ctrl_init+0x72f/0x1618 [smartpqi]
     pqi_pci_probe.cold.63+0x882/0x892 [smartpqi]
     local_pci_probe+0x7a/0xc0
     work_for_cpu_fn+0x2e/0x50
     process_one_work+0x57e/0xb90
     worker_thread+0x363/0x5b0
     kthread+0x1f4/0x220
     ret_from_fork+0x27/0x50
    
     -> #0 ((work_completion)(&wfc.work)){+.+.}-{0:0}:
     __lock_acquire+0x2244/0x32a0
     lock_acquire+0x1a2/0x680
     __flush_work+0x4e6/0x630
     work_on_cpu+0x114/0x160
     acpi_processor_ffh_cstate_probe+0x129/0x250
     acpi_processor_evaluate_cst+0x4c8/0x580
     acpi_processor_get_power_info+0x86/0x740
     acpi_processor_hotplug+0xc3/0x140
     acpi_soft_cpu_online+0x102/0x1d0
     cpuhp_invoke_callback+0x197/0x1120
     cpuhp_thread_fun+0x252/0x2f0
     smpboot_thread_fn+0x255/0x440
     kthread+0x1f4/0x220
     ret_from_fork+0x27/0x50
    
     other info that might help us debug this:
    
     Chain exists of:
     (work_completion)(&wfc.work) --> cpuhp_state-up --> cpuidle_lock
    
     Possible unsafe locking scenario:
    
     CPU0                    CPU1
     ----                    ----
     lock(cpuidle_lock);
                             lock(cpuhp_state-up);
                             lock(cpuidle_lock);
     lock((work_completion)(&wfc.work));
    
     *** DEADLOCK ***
    
     3 locks held by cpuhp/1/15:
     #0: ffffffffaf51ab10 (cpu_hotplug_lock){++++}-{0:0}, at: cpuhp_thread_fun+0x69/0x2f0
     #1: ffffffffaf51ad40 (cpuhp_state-up){+.+.}-{0:0}, at: cpuhp_thread_fun+0x69/0x2f0
     #2: ffffffffafa1c0e8 (cpuidle_lock){+.+.}-{3:3}, at: cpuidle_pause_and_lock+0x17/0x20
    
     Call Trace:
     dump_stack+0xa0/0xea
     print_circular_bug.cold.52+0x147/0x14c
     check_noncircular+0x295/0x2d0
     __lock_acquire+0x2244/0x32a0
     lock_acquire+0x1a2/0x680
     __flush_work+0x4e6/0x630
     work_on_cpu+0x114/0x160
     acpi_processor_ffh_cstate_probe+0x129/0x250
     acpi_processor_evaluate_cst+0x4c8/0x580
     acpi_processor_get_power_info+0x86/0x740
     acpi_processor_hotplug+0xc3/0x140
     acpi_soft_cpu_online+0x102/0x1d0
     cpuhp_invoke_callback+0x197/0x1120
     cpuhp_thread_fun+0x252/0x2f0
     smpboot_thread_fn+0x255/0x440
     kthread+0x1f4/0x220
     ret_from_fork+0x27/0x50
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Tested-by: Borislav Petkov <bp@suse.de>
    [ rjw: Subject ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c872cd2095b98e14401f036d7b13dd64d7f6b762
Author: Ricardo Ribalda Delgado <ribalda@kernel.org>
Date:   Wed Apr 1 11:51:47 2020 +0200

    leds: core: Fix warning message when init_data
    
    [ Upstream commit 64ed6588c2ea618d3f9ca9d8b365ae4c19f76225 ]
    
    The warning message when a led is renamed due to name collition can fail
    to show proper original name if init_data is used. Eg:
    
    [    9.073996] leds-gpio a0040000.leds_0: Led (null) renamed to red_led_1 due to name collision
    
    Fixes: bb4e9af0348d ("leds: core: Add support for composing LED class device names")
    Signed-off-by: Ricardo Ribalda Delgado <ribalda@kernel.org>
    Acked-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
    Signed-off-by: Pavel Machek <pavel@ucw.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dd4a3179e04c7a7cf4b0bcc949c16ce3a52905c2
Author: Karol Herbst <kherbst@redhat.com>
Date:   Tue Mar 24 21:29:23 2020 +0100

    drm/nouveau: workaround runpm fail by disabling PCI power management on certain intel bridges
    
    [ Upstream commit 434fdb51513bf3057ac144d152e6f2f2b509e857 ]
    
    Fixes the infamous 'runtime PM' bug many users are facing on Laptops with
    Nvidia Pascal GPUs by skipping said PCI power state changes on the GPU.
    
    Depending on the used kernel there might be messages like those in demsg:
    
    "nouveau 0000:01:00.0: Refused to change power state, currently in D3"
    "nouveau 0000:01:00.0: can't change power state from D3cold to D0 (config
    space inaccessible)"
    followed by backtraces of kernel crashes or timeouts within nouveau.
    
    It's still unkown why this issue exists, but this is a reliable workaround
    and solves a very annoying issue for user having to choose between a
    crashing kernel or higher power consumption of their Laptops.
    
    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Lyude Paul <lyude@redhat.com>
    Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
    Cc: Mika Westerberg <mika.westerberg@intel.com>
    Cc: linux-pci@vger.kernel.org
    Cc: linux-pm@vger.kernel.org
    Cc: dri-devel@lists.freedesktop.org
    Cc: nouveau@lists.freedesktop.org
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=205623
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 37ff2a60fef9dc451cfc9db74e2a6d52db482b28
Author: David Hildenbrand <david@redhat.com>
Date:   Fri Apr 3 17:30:48 2020 +0200

    KVM: s390: vsie: Fix possible race when shadowing region 3 tables
    
    [ Upstream commit 1493e0f944f3c319d11e067c185c904d01c17ae5 ]
    
    We have to properly retry again by returning -EINVAL immediately in case
    somebody else instantiated the table concurrently. We missed to add the
    goto in this function only. The code now matches the other, similar
    shadowing functions.
    
    We are overwriting an existing region 2 table entry. All allocated pages
    are added to the crst_list to be freed later, so they are not lost
    forever. However, when unshadowing the region 2 table, we wouldn't trigger
    unshadowing of the original shadowed region 3 table that we replaced. It
    would get unshadowed when the original region 3 table is modified. As it's
    not connected to the page table hierarchy anymore, it's not going to get
    used anymore. However, for a limited time, this page table will stick
    around, so it's in some sense a temporary memory leak.
    
    Identified by manual code inspection. I don't think this classifies as
    stable material.
    
    Fixes: 998f637cc4b9 ("s390/mm: avoid races on region/segment/page table shadowing")
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Link: https://lore.kernel.org/r/20200403153050.20569-4-david@redhat.com
    Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 123af2a26a2abbc9a0b0c6181a00e941e01236f7
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Mon Apr 6 20:09:37 2020 -0700

    compiler.h: fix error in BUILD_BUG_ON() reporting
    
    [ Upstream commit af9c5d2e3b355854ff0e4acfbfbfadcd5198a349 ]
    
    compiletime_assert() uses __LINE__ to create a unique function name.  This
    means that if you have more than one BUILD_BUG_ON() in the same source
    line (which can happen if they appear e.g.  in a macro), then the error
    message from the compiler might output the wrong condition.
    
    For this source file:
    
            #include <linux/build_bug.h>
    
            #define macro() \
                    BUILD_BUG_ON(1); \
                    BUILD_BUG_ON(0);
    
            void foo()
            {
                    macro();
            }
    
    gcc would output:
    
    ./include/linux/compiler.h:350:38: error: call to `__compiletime_assert_9' declared with attribute error: BUILD_BUG_ON failed: 0
      _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
    
    However, it was not the BUILD_BUG_ON(0) that failed, so it should say 1
    instead of 0. With this patch, we use __COUNTER__ instead of __LINE__, so
    each BUILD_BUG_ON() gets a different function name and the correct
    condition is printed:
    
    ./include/linux/compiler.h:350:38: error: call to `__compiletime_assert_0' declared with attribute error: BUILD_BUG_ON failed: 1
      _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
    
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Reviewed-by: Daniel Santos <daniel.santos@pobox.com>
    Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Cc: Ian Abbott <abbotti@mev.co.uk>
    Cc: Joe Perches <joe@perches.com>
    Link: http://lkml.kernel.org/r/20200331112637.25047-1-vegard.nossum@oracle.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0cb9feb46eb4feb6f5f20bdb81ab92ff02426b08
Author: Qian Cai <cai@lca.pw>
Date:   Mon Apr 6 20:10:25 2020 -0700

    percpu_counter: fix a data race at vm_committed_as
    
    [ Upstream commit 7e2345200262e4a6056580f0231cccdaffc825f3 ]
    
    "vm_committed_as.count" could be accessed concurrently as reported by
    KCSAN,
    
     BUG: KCSAN: data-race in __vm_enough_memory / percpu_counter_add_batch
    
     write to 0xffffffff9451c538 of 8 bytes by task 65879 on cpu 35:
      percpu_counter_add_batch+0x83/0xd0
      percpu_counter_add_batch at lib/percpu_counter.c:91
      __vm_enough_memory+0xb9/0x260
      dup_mm+0x3a4/0x8f0
      copy_process+0x2458/0x3240
      _do_fork+0xaa/0x9f0
      __do_sys_clone+0x125/0x160
      __x64_sys_clone+0x70/0x90
      do_syscall_64+0x91/0xb05
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
     read to 0xffffffff9451c538 of 8 bytes by task 66773 on cpu 19:
      __vm_enough_memory+0x199/0x260
      percpu_counter_read_positive at include/linux/percpu_counter.h:81
      (inlined by) __vm_enough_memory at mm/util.c:839
      mmap_region+0x1b2/0xa10
      do_mmap+0x45c/0x700
      vm_mmap_pgoff+0xc0/0x130
      ksys_mmap_pgoff+0x6e/0x300
      __x64_sys_mmap+0x33/0x40
      do_syscall_64+0x91/0xb05
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    The read is outside percpu_counter::lock critical section which results in
    a data race.  Fix it by adding a READ_ONCE() in
    percpu_counter_read_positive() which could also service as the existing
    compiler memory barrier.
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Marco Elver <elver@google.com>
    Link: http://lkml.kernel.org/r/1582302724-2804-1-git-send-email-cai@lca.pw
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a45bb566fa39e681c32958996b25bafc2346a761
Author: Steven Price <steven.price@arm.com>
Date:   Mon Apr 6 20:08:43 2020 -0700

    include/linux/swapops.h: correct guards for non_swap_entry()
    
    [ Upstream commit 3f3673d7d324d872d9d8ddb73b3e5e47fbf12e0d ]
    
    If CONFIG_DEVICE_PRIVATE is defined, but neither CONFIG_MEMORY_FAILURE nor
    CONFIG_MIGRATION, then non_swap_entry() will return 0, meaning that the
    condition (non_swap_entry(entry) && is_device_private_entry(entry)) in
    zap_pte_range() will never be true even if the entry is a device private
    one.
    
    Equally any other code depending on non_swap_entry() will not function as
    expected.
    
    I originally spotted this just by looking at the code, I haven't actually
    observed any problems.
    
    Looking a bit more closely it appears that actually this situation
    (currently at least) cannot occur:
    
    DEVICE_PRIVATE depends on ZONE_DEVICE
    ZONE_DEVICE depends on MEMORY_HOTREMOVE
    MEMORY_HOTREMOVE depends on MIGRATION
    
    Fixes: 5042db43cc26 ("mm/ZONE_DEVICE: new type of ZONE_DEVICE for unaddressable memory")
    Signed-off-by: Steven Price <steven.price@arm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Jérôme Glisse <jglisse@redhat.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Link: http://lkml.kernel.org/r/20200305130550.22693-1-steven.price@arm.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bca4d36a2a112a6eede285f029a743bb2d805fe3
Author: Ralph Campbell <rcampbell@nvidia.com>
Date:   Tue Mar 3 16:13:36 2020 -0800

    drm/nouveau/svm: fix vma range check for migration
    
    [ Upstream commit b92103b559c77abc5f8b7bec269230a219c880b7 ]
    
    find_vma_intersection(mm, start, end) only guarantees that end is greater
    than or equal to vma->vm_start but doesn't guarantee that start is
    greater than or equal to vma->vm_start. The calculation for the
    intersecting range in nouveau_svmm_bind() isn't accounting for this and
    can call migrate_vma_setup() with a starting address less than
    vma->vm_start. This results in migrate_vma_setup() returning -EINVAL for
    the range instead of nouveau skipping that part of the range and migrating
    the rest.
    
    Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ded30f112b5e835f7d2245a4d2f5b24618e3099c
Author: Ralph Campbell <rcampbell@nvidia.com>
Date:   Tue Mar 3 16:13:37 2020 -0800

    drm/nouveau/svm: check for SVM initialized before migrating
    
    [ Upstream commit 822cab6150d3002952407a8297ff5a0d32bb7b54 ]
    
    When migrating system memory to GPU memory, check that SVM has been
    enabled. Even though most errors can be ignored since migration is
    a performance optimization, return an error because this is a violation
    of the API.
    
    Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 102cccde0b7413a148076f4fcf0ecc7c979ec003
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Mon Apr 6 11:38:29 2020 +0200

    macsec: fix NULL dereference in macsec_upd_offload()
    
    [ Upstream commit aa81700cf2326e288c9ca1fe7b544039617f1fc2 ]
    
    macsec_upd_offload() gets the value of MACSEC_OFFLOAD_ATTR_TYPE
    without checking its presence in the request message, and this causes
    a NULL dereference. Fix it rejecting any configuration that does not
    include this attribute.
    
    Reported-and-tested-by: syzbot+7022ab7c383875c17eff@syzkaller.appspotmail.com
    Fixes: dcb780fb2795 ("net: macsec: add nla support for changing the offloading selection")
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9be5f7a0995e4f5abe85877403f596b624eaeaea
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Wed Apr 1 21:11:54 2020 -0700

    mm/hugetlb: fix build failure with HUGETLB_PAGE but not HUGEBTLBFS
    
    [ Upstream commit bb297bb2de517e41199185021f043bbc5d75b377 ]
    
    When CONFIG_HUGETLB_PAGE is set but not CONFIG_HUGETLBFS, the following
    build failure is encoutered:
    
      In file included from arch/powerpc/mm/fault.c:33:0:
      include/linux/hugetlb.h: In function 'hstate_inode':
      include/linux/hugetlb.h:477:9: error: implicit declaration of function 'HUGETLBFS_SB' [-Werror=implicit-function-declaration]
        return HUGETLBFS_SB(i->i_sb)->hstate;
               ^
      include/linux/hugetlb.h:477:30: error: invalid type argument of '->' (have 'int')
        return HUGETLBFS_SB(i->i_sb)->hstate;
                                    ^
    
    Gate hstate_inode() with CONFIG_HUGETLBFS instead of CONFIG_HUGETLB_PAGE.
    
    Fixes: a137e1cc6d6e ("hugetlbfs: per mount huge page sizes")
    Reported-by: kbuild test robot <lkp@intel.com>
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Nishanth Aravamudan <nacc@us.ibm.com>
    Cc: Nick Piggin <npiggin@suse.de>
    Cc: Adam Litke <agl@us.ibm.com>
    Cc: Andi Kleen <ak@suse.de>
    Link: http://lkml.kernel.org/r/7e8c3a3c9a587b9cd8a2f146df32a421b961f3a2.1584432148.git.christophe.leroy@c-s.fr
    Link: https://patchwork.ozlabs.org/patch/1255548/#2386036
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1c5301b47c6cfec688e7d4c5d26681ca99e1b870
Author: Gayatri Kammela <gayatri.kammela@intel.com>
Date:   Fri Mar 27 14:28:20 2020 -0700

    platform/x86: intel-hid: fix: Update Tiger Lake ACPI device ID
    
    [ Upstream commit d5764dc597467664a1a70ab66a2314a011aeccd4 ]
    
    Tiger Lake's new unique ACPI device IDs for intel-hid driver is not
    valid because of missing 'C' in the ID. Fix the ID by updating it.
    
    After the update, the new ID should now look like
    INT1051 --> INTC1051
    
    Fixes: bdd11b654035 ("platform/x86: intel-hid: Add Tiger Lake ACPI device ID")
    Suggested-by: Srinivas Pandruvada <srinivas.pandruvada@intel.com>
    Signed-off-by: Gayatri Kammela <gayatri.kammela@intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a40308ba866b6aba339b051fdbe0600481f8db37
Author: Rob Herring <robh@kernel.org>
Date:   Tue Mar 24 12:05:12 2020 -0600

    dt-bindings: thermal: tsens: Fix nvmem-cell-names schema
    
    [ Upstream commit b9589def9f9af93d9d4c5969c9a6c166f070e36e ]
    
    There's a typo 'nvmem-cells-names' in the schema which means the correct
    'nvmem-cell-names' in the examples are not checked. The possible values
    are wrong too both in that the 2nd entry is not specified correctly and the
    values are just wrong based on the dts files in the kernel.
    
    Fixes: a877e768f655 ("dt-bindings: thermal: tsens: Convert over to a yaml schema")
    Cc: Andy Gross <agross@kernel.org>
    Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
    Cc: Amit Kucheria <amit.kucheria@linaro.org>
    Cc: Zhang Rui <rui.zhang@intel.com>
    Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
    Cc: linux-arm-msm@vger.kernel.org
    Cc: linux-pm@vger.kernel.org
    Cc: devicetree@vger.kernel.org
    Signed-off-by: Rob Herring <robh@kernel.org>
    Reviewed-by: Amit Kucheria <amit.kucheria@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 59a6ea7ebf72a5c6159479ddc6f6b99a80b773bd
Author: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Date:   Mon Mar 30 13:29:46 2020 -0400

    drm/amd/display: Don't try hdcp1.4 when content_type is set to type1
    
    [ Upstream commit c2850c125d919efbb3a9ab46410d23912934f585 ]
    
    [Why]
    When content type property is set to 1. We should enable hdcp2.2 and if we cant
    then stop. Currently the way it works in DC is that if we fail hdcp2, we will
    try hdcp1 after.
    
    [How]
    Use link config to force disable hdcp1.4 when type1 is set.
    
    Signed-off-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
    Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c7735668d4f5a89bdf6e994442a7168ad01c0586
Author: Miroslav Benes <mbenes@suse.cz>
Date:   Thu Mar 26 10:26:02 2020 +0100

    x86/xen: Make the boot CPU idle task reliable
    
    [ Upstream commit 2f62f36e62daec43aa7b9633ef7f18e042a80bed ]
    
    The unwinder reports the boot CPU idle task's stack on XEN PV as
    unreliable, which affects at least live patching. There are two reasons
    for this. First, the task does not follow the x86 convention that its
    stack starts at the offset right below saved pt_regs. It allows the
    unwinder to easily detect the end of the stack and verify it. Second,
    startup_xen() function does not store the return address before jumping
    to xen_start_kernel() which confuses the unwinder.
    
    Amend both issues by moving the starting point of initial stack in
    startup_xen() and storing the return address before the jump, which is
    exactly what call instruction does.
    
    Signed-off-by: Miroslav Benes <mbenes@suse.cz>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0920eeac845271b0d490d9e723390ef36a13bf6e
Author: Long Li <longli@microsoft.com>
Date:   Thu Mar 26 22:09:20 2020 -0700

    cifs: Allocate encryption header through kmalloc
    
    [ Upstream commit 3946d0d04bb360acca72db5efe9ae8440012d9dc ]
    
    When encryption is used, smb2_transform_hdr is defined on the stack and is
    passed to the transport. This doesn't work with RDMA as the buffer needs to
    be DMA'ed.
    
    Fix it by using kmalloc.
    
    Signed-off-by: Long Li <longli@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 11917049debbba73882c57f5703bd9cbfb612091
Author: Gabriel Krisman Bertazi <krisman@collabora.com>
Date:   Mon Mar 16 20:45:06 2020 -0400

    um: ubd: Prevent buffer overrun on command completion
    
    [ Upstream commit 6e682d53fc1ef73a169e2a5300326cb23abb32ee ]
    
    On the hypervisor side, when completing commands and the pipe is full,
    we retry writing only the entries that failed, by offsetting
    io_req_buffer, but we don't reduce the number of bytes written, which
    can cause a buffer overrun of io_req_buffer, and write garbage to the
    pipe.
    
    Cc: Martyn Welch <martyn.welch@collabora.com>
    Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bf28c63c48bb03e4b2b76dcf6a1f8d30e71b41b3
Author: Eric Sandeen <sandeen@redhat.com>
Date:   Wed Mar 18 14:19:38 2020 -0500

    ext4: do not commit super on read-only bdev
    
    [ Upstream commit c96e2b8564adfb8ac14469ebc51ddc1bfecb3ae2 ]
    
    Under some circumstances we may encounter a filesystem error on a
    read-only block device, and if we try to save the error info to the
    superblock and commit it, we'll wind up with a noisy error and
    backtrace, i.e.:
    
    [ 3337.146838] EXT4-fs error (device pmem1p2): ext4_get_journal_inode:4634: comm mount: inode #0: comm mount: iget: illegal inode #
    ------------[ cut here ]------------
    generic_make_request: Trying to write to read-only block-device pmem1p2 (partno 2)
    WARNING: CPU: 107 PID: 115347 at block/blk-core.c:788 generic_make_request_checks+0x6b4/0x7d0
    ...
    
    To avoid this, commit the error info in the superblock only if the
    block device is writable.
    
    Reported-by: Ritesh Harjani <riteshh@linux.ibm.com>
    Signed-off-by: Eric Sandeen <sandeen@redhat.com>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Link: https://lore.kernel.org/r/4b6e774d-cc00-3469-7abb-108eb151071a@sandeen.net
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 48b3f393ca6649fe7c0d3ae6d37dc40410347564
Author: Liwei Song <liwei.song@windriver.com>
Date:   Wed Mar 25 11:50:13 2020 +0800

    nfsroot: set tcp as the default transport protocol
    
    [ Upstream commit 89c8023fd46167a41246a56b31d1b3c9a20b6970 ]
    
    UDP is disabled by default in commit b24ee6c64ca7 ("NFS: allow
    deprecation of NFS UDP protocol"), but the default mount options
    is still udp, change it to tcp to avoid the "Unsupported transport
    protocol udp" error if no protocol is specified when mount nfs.
    
    Fixes: b24ee6c64ca7 ("NFS: allow deprecation of NFS UDP protocol")
    Signed-off-by: Liwei Song <liwei.song@windriver.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 862b64cf8c01d82a64136df9b6d1e6cb86ca676b
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Mon Mar 23 11:09:07 2020 +0100

    s390/cpum_sf: Fix wrong page count in error message
    
    [ Upstream commit 4141b6a5e9f171325effc36a22eb92bf961e7a5c ]
    
    When perf record -e SF_CYCLES_BASIC_DIAG runs with very high
    frequency, the samples arrive faster than the perf process can
    save them to file. Eventually, for longer running processes, this
    leads to the siutation where the trace buffers allocated by perf
    slowly fills up. At one point the auxiliary trace buffer is full
    and  the CPU Measurement sampling facility is turned off. Furthermore
    a warning is printed to the kernel log buffer:
    
    cpum_sf: The AUX buffer with 0 pages for the diagnostic-sampling
            mode is full
    
    The number of allocated pages for the auxiliary trace buffer is shown
    as zero pages. That is wrong.
    
    Fix this by saving the number of allocated pages before entering the
    work loop in the interrupt handler. When the interrupt handler processes
    the samples, it may detect the buffer full condition and stop sampling,
    reducing the buffer size to zero.
    Print the correct value in the error message:
    
    cpum_sf: The AUX buffer with 256 pages for the diagnostic-sampling
            mode is full
    
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0c581aa4a53dfd61fb5d7e5f8072dcce26d8c7a2
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Mar 23 15:27:29 2020 -0700

    powerpc/maple: Fix declaration made after definition
    
    [ Upstream commit af6cf95c4d003fccd6c2ecc99a598fb854b537e7 ]
    
    When building ppc64 defconfig, Clang errors (trimmed for brevity):
    
      arch/powerpc/platforms/maple/setup.c:365:1: error: attribute declaration
      must precede definition [-Werror,-Wignored-attributes]
      machine_device_initcall(maple, maple_cpc925_edac_setup);
      ^
    
    machine_device_initcall expands to __define_machine_initcall, which in
    turn has the macro machine_is used in it, which declares mach_##name
    with an __attribute__((weak)). define_machine actually defines
    mach_##name, which in this file happens before the declaration, hence
    the warning.
    
    To fix this, move define_machine after machine_device_initcall so that
    the declaration occurs before the definition, which matches how
    machine_device_initcall and define_machine work throughout
    arch/powerpc.
    
    While we're here, remove some spaces before tabs.
    
    Fixes: 8f101a051ef0 ("edac: cpc925 MC platform device setup")
    Reported-by: Nick Desaulniers <ndesaulniers@google.com>
    Suggested-by: Ilie Halip <ilie.halip@gmail.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200323222729.15365-1-natechancellor@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aa3ae3cad9e83bfb0ff38f400bddd35401f6c4c1
Author: Alexey Kardashevskiy <aik@ozlabs.ru>
Date:   Thu Mar 12 18:44:04 2020 +1100

    powerpc/prom_init: Pass the "os-term" message to hypervisor
    
    [ Upstream commit 74bb84e5117146fa73eb9d01305975c53022b3c3 ]
    
    The "os-term" RTAS calls has one argument with a message address of OS
    termination cause. rtas_os_term() already passes it but the recently
    added prom_init's version of that missed it; it also does not fill
    args correctly.
    
    This passes the message address and initializes the number of arguments.
    
    Fixes: 6a9c930bd775 ("powerpc/prom_init: Add the ESM call to prom_init")
    Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200312074404.87293-1-aik@ozlabs.ru
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b2c639db78cf7e4f30452903ecce90ddeece4f58
Author: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
Date:   Fri Mar 6 12:22:43 2020 +0530

    btrfs: add RCU locks around block group initialization
    
    [ Upstream commit 29566c9c773456467933ee22bbca1c2b72a3506c ]
    
    The space_info list is normally RCU protected and should be traversed
    with rcu_read_lock held. There's a warning
    
      [29.104756] WARNING: suspicious RCU usage
      [29.105046] 5.6.0-rc4-next-20200305 #1 Not tainted
      [29.105231] -----------------------------
      [29.105401] fs/btrfs/block-group.c:2011 RCU-list traversed in non-reader section!!
    
    pointing out that the locking is missing in btrfs_read_block_groups.
    However this is not necessary as the list traversal happens at mount
    time when there's no other thread potentially accessing the list.
    
    To fix the warning and for consistency let's add the RCU lock/unlock,
    the code won't be affected much as it's doing some lightweight
    operations.
    
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b8bc5e7511bc98ea4ad76e5b3ecd9092ccb16535
Author: Domenico Andreoli <domenico.andreoli@linux.com>
Date:   Mon Mar 23 08:22:15 2020 -0700

    hibernate: Allow uswsusp to write to swap
    
    [ Upstream commit 56939e014a6c212b317414faa307029e2e80c3b9 ]
    
    It turns out that there is one use case for programs being able to
    write to swap devices, and that is the userspace hibernation code.
    
    Quick fix: disable the S_SWAPFILE check if hibernation is configured.
    
    Fixes: dc617f29dbe5 ("vfs: don't allow writes to swap files")
    Reported-by: Domenico Andreoli <domenico.andreoli@linux.com>
    Reported-by: Marian Klein <mkleinsoft@gmail.com>
    Signed-off-by: Domenico Andreoli <domenico.andreoli@linux.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 99d3ff43fc502bf08ca74bdce059c72009b1bac3
Author: Willy Wolff <willy.mh.wolff.ml@gmail.com>
Date:   Sat Mar 21 09:27:40 2020 +0000

    thermal/drivers/cpufreq_cooling: Fix return of cpufreq_set_cur_state
    
    [ Upstream commit ff44f672d74178b3be19d41a169b98b3e391d4ce ]
    
    When setting the cooling device current state from userspace via sysfs,
    the operation fails by returning an -EINVAL.
    
    It appears the recent changes with the per-policy frequency QoS
    introduced a regression as reported by:
    
     https://lkml.org/lkml/2020/3/20/599
    
    The function freq_qos_update_request returns 0 or 1 describing update
    effectiveness, and a negative error code on failure. However,
    cpufreq_set_cur_state returns 0 on success or an error code otherwise.
    
    Consider the QoS update as successful if the function does not return
    an error.
    
    Fixes: 3000ce3c52f8b ("cpufreq: Use per-policy frequency QoS")
    Signed-off-by: Willy Wolff <willy.mh.wolff.ml@gmail.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Link: https://lore.kernel.org/r/20200321092740.7vvwfxsebcrznydh@macmini.local
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e648f3ff7888562d97152dd803f949882ce7ecc6
Author: Alex Smith <alex.smith@imgtec.com>
Date:   Fri Mar 6 22:06:31 2020 +0100

    MIPS: DTS: CI20: add DT node for IR sensor
    
    [ Upstream commit f5e8fcf85a25bac26c32a0000dbab5857ead9113 ]
    
    The infrared sensor on the CI20 board is connected to a GPIO and can
    be operated by using the gpio-ir-recv driver. Add a DT node for the
    sensor to allow that driver to be used.
    
    Signed-off-by: Alex Smith <alex.smith@imgtec.com>
    Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
    Reviewed-by: Paul Cercueil <paul@crapouillou.net>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8eacf0577132a74f1416c5b120fb552f01475677
Author: Alexander Gordeev <agordeev@linux.ibm.com>
Date:   Mon Mar 16 12:39:55 2020 +0100

    s390/cpuinfo: fix wrong output when CPU0 is offline
    
    [ Upstream commit 872f27103874a73783aeff2aac2b41a489f67d7c ]
    
    /proc/cpuinfo should not print information about CPU 0 when it is offline.
    
    Fixes: 281eaa8cb67c ("s390/cpuinfo: simplify locking and skip offline cpus early")
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    [heiko.carstens@de.ibm.com: shortened commit message]
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a41add132bc44a1ab1b996c6441da237ead6cea3
Author: Sahitya Tummala <stummala@codeaurora.org>
Date:   Tue Mar 3 19:59:26 2020 +0530

    f2fs: Add a new CP flag to help fsck fix resize SPO issues
    
    [ Upstream commit c84ef3c5e65ccf99a7a91a4d731ebb5d6331a178 ]
    
    Add and set a new CP flag CP_RESIZEFS_FLAG during
    online resize FS to help fsck fix the metadata mismatch
    that may happen due to SPO during resize, where SB
    got updated but CP data couldn't be written yet.
    
    fsck errors -
    Info: CKPT version = 6ed7bccb
            Wrong user_block_count(2233856)
    [f2fs_do_mount:3365] Checkpoint is polluted
    
    Signed-off-by: Sahitya Tummala <stummala@codeaurora.org>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 06ade45c870291746e963b42e676ba93aa1a2d53
Author: Sahitya Tummala <stummala@codeaurora.org>
Date:   Tue Mar 3 19:59:25 2020 +0530

    f2fs: Fix mount failure due to SPO after a successful online resize FS
    
    [ Upstream commit 682756827501dc52593bf490f2d437c65ec9efcb ]
    
    Even though online resize is successfully done, a SPO immediately
    after resize, still causes below error in the next mount.
    
    [   11.294650] F2FS-fs (sda8): Wrong user_block_count: 2233856
    [   11.300272] F2FS-fs (sda8): Failed to get valid F2FS checkpoint
    
    This is because after FS metadata is updated in update_fs_metadata()
    if the SBI_IS_DIRTY is not dirty, then CP will not be done to reflect
    the new user_block_count.
    
    Signed-off-by: Sahitya Tummala <stummala@codeaurora.org>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6b2bfcf3040e4164846bfc2a9a9f82f5b839e4a1
Author: Chao Yu <chao@kernel.org>
Date:   Tue Mar 3 20:09:25 2020 +0800

    f2fs: fix to update f2fs_super_block fields under sb_lock
    
    [ Upstream commit a4ba5dfc5c88e49bb03385abfdd28c5a0acfbb54 ]
    
    Fields in struct f2fs_super_block should be updated under coverage
    of sb_lock, fix to adjust update_sb_metadata() for that rule.
    
    Fixes: 04f0b2eaa3b3 ("f2fs: ioctl for removing a range from F2FS")
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit befe23339890b4318a3b808ad33de5656b602b4b
Author: Misono Tomohiro <misono.tomohiro@jp.fujitsu.com>
Date:   Wed Aug 28 17:01:22 2019 +0900

    NFS: direct.c: Fix memory leak of dreq when nfs_get_lock_context fails
    
    [ Upstream commit 8605cf0e852af3b2c771c18417499dc4ceed03d5 ]
    
    When dreq is allocated by nfs_direct_req_alloc(), dreq->kref is
    initialized to 2. Therefore we need to call nfs_direct_req_release()
    twice to release the allocated dreq. Usually it is called in
    nfs_file_direct_{read, write}() and nfs_direct_complete().
    
    However, current code only calls nfs_direct_req_relese() once if
    nfs_get_lock_context() fails in nfs_file_direct_{read, write}().
    So, that case would result in memory leak.
    
    Fix this by adding the missing call.
    
    Signed-off-by: Misono Tomohiro <misono.tomohiro@jp.fujitsu.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ba10abbc08dffe1e485d9eea965cc4643b3d6a4e
Author: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
Date:   Thu Jan 30 15:52:41 2020 +0900

    phy: uniphier-usb3ss: Add Pro5 support
    
    [ Upstream commit 9376fa634afc207a3ce99e0957e04948c34d6510 ]
    
    Pro5 SoC has same scheme of USB3 ss-phy as Pro4, so the data for Pro5 is
    equivalent to Pro4.
    
    Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e9141ec88a782d34174d9edf110923d5651dcdf1
Author: Amit Kucheria <amit.kucheria@linaro.org>
Date:   Thu Mar 12 18:07:01 2020 +0530

    drivers: thermal: tsens: Release device in success path
    
    [ Upstream commit f22a3bf0d2225fba438c46a25d3ab8823585a5e0 ]
    
    We don't currently call put_device in case of successfully initialising
    the device. So we hold the reference and keep the device pinned forever.
    
    Allow control to fall through so we can use same code for success and
    error paths to put_device.
    
    As a part of this fixup, change devm_ioremap_resource to act on the same
    device pointer as that used to allocate regmap memory. That ensures that
    we are free to release op->dev after examining its resources.
    
    Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Link: https://lore.kernel.org/r/d3996667e9f976bb30e97e301585cb1023be422e.1584015867.git.amit.kucheria@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 60f91837d5d02072a615c07cdc48d0038c24267a
Author: Chao Yu <chao@kernel.org>
Date:   Fri Feb 14 17:45:11 2020 +0800

    f2fs: fix to show norecovery mount option
    
    [ Upstream commit a9117eca1de6b738e713d2142126db2cfbf6fb36 ]
    
    Previously, 'norecovery' mount option will be shown as
    'disable_roll_forward', fix to show original option name correctly.
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3180eb1431cf43365c24345d5ede76b498620b10
Author: Michael Roth <mdroth@linux.vnet.ibm.com>
Date:   Tue Mar 10 16:11:28 2020 -0500

    KVM: PPC: Book3S HV: Fix H_CEDE return code for nested guests
    
    [ Upstream commit 1f50cc1705350a4697923203fedd7d8fb1087fe2 ]
    
    The h_cede_tm kvm-unit-test currently fails when run inside an L1 guest
    via the guest/nested hypervisor.
    
      ./run-tests.sh -v
      ...
      TESTNAME=h_cede_tm TIMEOUT=90s ACCEL= ./powerpc/run powerpc/tm.elf -smp 2,threads=2 -machine cap-htm=on -append "h_cede_tm"
      FAIL h_cede_tm (2 tests, 1 unexpected failures)
    
    While the test relates to transactional memory instructions, the actual
    failure is due to the return code of the H_CEDE hypercall, which is
    reported as 224 instead of 0. This happens even when no TM instructions
    are issued.
    
    224 is the value placed in r3 to execute a hypercall for H_CEDE, and r3
    is where the caller expects the return code to be placed upon return.
    
    In the case of guest running under a nested hypervisor, issuing H_CEDE
    causes a return from H_ENTER_NESTED. In this case H_CEDE is
    specially-handled immediately rather than later in
    kvmppc_pseries_do_hcall() as with most other hcalls, but we forget to
    set the return code for the caller, hence why kvm-unit-test sees the
    224 return code and reports an error.
    
    Guest kernels generally don't check the return value of H_CEDE, so
    that likely explains why this hasn't caused issues outside of
    kvm-unit-tests so far.
    
    Fix this by setting r3 to 0 after we finish processing the H_CEDE.
    
    RHBZ: 1778556
    
    Fixes: 4bad77799fed ("KVM: PPC: Book3S HV: Handle hypercalls correctly when nested")
    Cc: linuxppc-dev@ozlabs.org
    Cc: David Gibson <david@gibson.dropbear.id.au>
    Cc: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
    Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ac8c737ddfe9e356cceb4fc0604362654057c9f3
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Fri Mar 13 13:57:58 2020 -0700

    xfs: fix incorrect test in xfs_alloc_ag_vextent_lastblock
    
    [ Upstream commit 77ca1eed5a7d2bf0905562eb1a15aac76bc19fe4 ]
    
    When I lifted the code in xfs_alloc_ag_vextent_lastblock out of a loop,
    I forgot to convert all the accesses to len to be pointer dereferences.
    
    Coverity-id: 1457918
    Fixes: 5113f8ec3753ed ("xfs: clean up weird while loop in xfs_alloc_ag_vextent_near")
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d2564bc4ae84417bd618b1ddf9b2fbfd38376e0d
Author: Johan Jonker <jbx6244@gmail.com>
Date:   Mon Mar 16 18:46:47 2020 +0100

    ARM: dts: rockchip: fix lvds-encoder ports subnode for rk3188-bqedison2qc
    
    [ Upstream commit 1a7e99599dffd836fcb720cdc0eaf3cd43d7af4a ]
    
    A test with the command below gives this error:
    
    arch/arm/boot/dts/rk3188-bqedison2qc.dt.yaml: lvds-encoder:
    'ports' is a required property
    
    Fix error by adding a ports wrapper for port@0 and port@1
    inside the 'lvds-encoder' node for rk3188-bqedison2qc.
    
    make ARCH=arm dtbs_check
    DT_SCHEMA_FILES=Documentation/devicetree/bindings/display/
    bridge/lvds-codec.yaml
    
    Signed-off-by: Johan Jonker <jbx6244@gmail.com>
    Link: https://lore.kernel.org/r/20200316174647.5598-1-jbx6244@gmail.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 709ddeb1a0b9d09a5cd2271b52055bda93057ec3
Author: Murphy Zhou <jencce.kernel@gmail.com>
Date:   Fri Feb 14 22:34:09 2020 +0800

    NFSv4.2: error out when relink swapfile
    
    [ Upstream commit f5fdf1243fb750598b46305dd03c553949cfa14f ]
    
    This fixes xfstests generic/356 failure on NFSv4.2.
    
    Signed-off-by: Murphy Zhou <jencce.kernel@gmail.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d13e32a306a6e92502b8bfa9ba55771a88bc0217
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Thu Feb 27 11:01:12 2020 -0500

    NFSv4/pnfs: Return valid stateids in nfs_layout_find_inode_by_stateid()
    
    [ Upstream commit d911c57a19551c6bef116a3b55c6b089901aacb0 ]
    
    Make sure to test the stateid for validity so that we catch instances
    where the server may have been reusing stateids in
    nfs_layout_find_inode_by_stateid().
    
    Fixes: 7b410d9ce460 ("pNFS: Delay getting the layout header in CB_LAYOUTRECALL handlers")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6d24247e765dde850cfa9bd3ac1e741cd3fc00ba
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Fri Feb 7 19:32:49 2020 -0500

    NFS: alloc_nfs_open_context() must use the file cred when available
    
    [ Upstream commit 1d179d6bd67369a52edea8562154b31ee20be1cc ]
    
    If we're creating a nfs_open_context() for a specific file pointer,
    we must use the cred assigned to that file.
    
    Fixes: a52458b48af1 ("NFS/NFSD/SUNRPC: replace generic creds with 'struct cred'.")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1cd62684afb7631f4ea7b5e50da6891bde7ed3b5
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Wed Mar 11 23:39:51 2020 +0100

    rtc: 88pm860x: fix possible race condition
    
    [ Upstream commit 9cf4789e6e4673d0b2c96fa6bb0c35e81b43111a ]
    
    The RTC IRQ is requested before the struct rtc_device is allocated,
    this may lead to a NULL pointer dereference in the IRQ handler.
    
    To fix this issue, allocating the rtc_device struct before requesting
    the RTC IRQ using devm_rtc_allocate_device, and use rtc_register_device
    to register the RTC device.
    
    Also remove the unnecessary error message as the core already prints the
    info.
    
    Link: https://lore.kernel.org/r/20200311223956.51352-1-alexandre.belloni@bootlin.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c8dacecdfc60b1acc0db77223c9af447cdeebe50
Author: Kevin Grandemange <kevin.grandemange@allegrodvt.com>
Date:   Thu Mar 12 15:41:45 2020 +0000

    dma-coherent: fix integer overflow in the reserved-memory dma allocation
    
    [ Upstream commit 286c21de32b904131f8cf6a36ce40b8b0c9c5da3 ]
    
    pageno is an int and the PAGE_SHIFT shift is done on an int,
    overflowing if the memory is bigger than 2G
    
    This can be reproduced using for example a reserved-memory of 4G
    
    reserved-memory {
                        #address-cells = <2>;
                        #size-cells = <2>;
                        ranges;
    
                        reserved_dma: buffer@0 {
                            compatible = "shared-dma-pool";
                            no-map;
                            reg = <0x5 0x00000000 0x1 0x0>;
            };
    };
    
    Signed-off-by: Kevin Grandemange <kevin.grandemange@allegrodvt.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c8db441f64d84983e54f6c43d12215f3a0b26835
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri Mar 13 11:09:12 2020 +0100

    soc: imx: gpc: fix power up sequencing
    
    [ Upstream commit e0ea2d11f8a08ba7066ff897e16c5217215d1e68 ]
    
    Currently we wait only until the PGC inverts the isolation setting
    before disabling the peripheral clocks. This doesn't ensure that the
    reset is properly propagated through the peripheral devices in the
    power domain.
    
    Wait until the PGC signals that the power up request is done and
    wait a bit for resets to propagate before disabling the clocks.
    
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 180b01b985a937fc073aa42d7c7b82b9fa97ab1d
Author: Amit Kucheria <amit.kucheria@linaro.org>
Date:   Fri Mar 6 03:30:15 2020 +0530

    arm64: dts: marvell: Fix cpu compatible for AP807-quad
    
    [ Upstream commit d136d2588b21b1a07515632ed61120c9f262909b ]
    
    make -k ARCH=arm64 dtbs_check shows the following errors. Fix them by
    removing the "arm,armv8" compatible.
    
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9130-db.dt.yaml:
    cpu@0: compatible: Additional items are not allowed ('arm,armv8' was
    unexpected)
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9130-db.dt.yaml:
    cpu@0: compatible: ['arm,cortex-a72', 'arm,armv8'] is too long CHECK
    arch/arm64/boot/dts/renesas/r8a774a1-hihope-rzg2m-ex.dt.yaml
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9130-db.dt.yaml:
    cpu@1: compatible: Additional items are not allowed ('arm,armv8' was
    unexpected)
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9130-db.dt.yaml:
    cpu@1: compatible: ['arm,cortex-a72', 'arm,armv8'] is too long
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9130-db.dt.yaml:
    cpu@100: compatible: Additional items are not allowed ('arm,armv8' was
    unexpected)
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9130-db.dt.yaml:
    cpu@100: compatible: ['arm,cortex-a72', 'arm,armv8'] is too long
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9130-db.dt.yaml:
    cpu@101: compatible: Additional items are not allowed ('arm,armv8' was
    unexpected)
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9130-db.dt.yaml:
    cpu@101: compatible: ['arm,cortex-a72', 'arm,armv8'] is too long
    
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9131-db.dt.yaml:
    cpu@0: compatible: Additional items are not allowed ('arm,armv8' was
    unexpected)
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9131-db.dt.yaml:
    cpu@0: compatible: ['arm,cortex-a72', 'arm,armv8'] is too long
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9131-db.dt.yaml:
    cpu@1: compatible: Additional items are not allowed ('arm,armv8' was
    unexpected)
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9131-db.dt.yaml:
    cpu@1: compatible: ['arm,cortex-a72', 'arm,armv8'] is too long
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9131-db.dt.yaml:
    cpu@100: compatible: Additional items are not allowed ('arm,armv8' was
    unexpected)
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9131-db.dt.yaml:
    cpu@100: compatible: ['arm,cortex-a72', 'arm,armv8'] is too long
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9131-db.dt.yaml:
    cpu@101: compatible: Additional items are not allowed ('arm,armv8' was
    unexpected)
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9131-db.dt.yaml:
    cpu@101: compatible: ['arm,cortex-a72', 'arm,armv8'] is too long
    
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9132-db.dt.yaml:
    cpu@0: compatible: Additional items are not allowed ('arm,armv8' was
    unexpected)
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9132-db.dt.yaml:
    cpu@0: compatible: ['arm,cortex-a72', 'arm,armv8'] is too long
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9132-db.dt.yaml:
    cpu@1: compatible: Additional items are not allowed ('arm,armv8' was
    unexpected)
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9132-db.dt.yaml:
    cpu@1: compatible: ['arm,cortex-a72', 'arm,armv8'] is too long
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9132-db.dt.yaml:
    cpu@100: compatible: Additional items are not allowed ('arm,armv8' was
    unexpected)
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9132-db.dt.yaml:
    cpu@100: compatible: ['arm,cortex-a72', 'arm,armv8'] is too long
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9132-db.dt.yaml:
    cpu@101: compatible: Additional items are not allowed ('arm,armv8' was
    unexpected)
    /home/amit/work/builds/build-check/arch/arm64/boot/dts/marvell/cn9132-db.dt.yaml:
    cpu@101: compatible: ['arm,cortex-a72', 'arm,armv8'] is too long
    
    Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d3cd1a6f90abd21271dbbbf138e9e8aed7bfb54
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Tue Feb 25 11:45:12 2020 +0000

    arm64: dts: clearfog-gt-8k: set gigabit PHY reset deassert delay
    
    [ Upstream commit 46f94c7818e7ab82758fca74935ef3d454340b4e ]
    
    If the mv88e6xxx DSA driver is built as a module, it causes the
    ethernet driver to re-probe when it's loaded. This in turn causes
    the gigabit PHY to be momentarily reset and reprogrammed. However,
    we attempt to reprogram the PHY immediately after deasserting reset,
    and the PHY ignores the writes.
    
    This results in the PHY operating in the wrong mode, and the copper
    link states down.
    
    Set a reset deassert delay of 10ms for the gigabit PHY to avoid this.
    
    Fixes: babc5544c293 ("arm64: dts: clearfog-gt-8k: 1G eth PHY reset signal")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Acked-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5d6f6d2c66be8b0074e641104268550bdcc31484
Author: Tomasz Maciej Nowak <tmn505@gmail.com>
Date:   Thu Feb 27 17:52:32 2020 +0100

    arm64: dts: marvell: espressobin: add ethernet alias
    
    [ Upstream commit 5253cb8c00a6f4356760efb38bca0e0393aa06de ]
    
    The maker of this board and its variants, stores MAC address in U-Boot
    environment. Add alias for bootloader to recognise, to which ethernet
    node inject the factory MAC address.
    
    Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 94b6df1cf6761672a03f733eea81f14482d2b70c
Author: Tommi Rantala <tommi.t.rantala@nokia.com>
Date:   Thu Mar 12 07:43:53 2020 -0700

    xfs: fix regression in "cleanup xfs_dir2_block_getdents"
    
    [ Upstream commit 3d28e7e278913a267b1de360efcd5e5274065ce2 ]
    
    Commit 263dde869bd09 ("xfs: cleanup xfs_dir2_block_getdents") introduced
    a getdents regression, when it converted the pointer arithmetics to
    offset calculations: offset is updated in the loop already for the next
    iteration, but the updated offset value is used incorrectly in two
    places, where we should have used the not-yet-updated value.
    
    This caused for example "git clean -ffdx" failures to cleanup certain
    directory structures when running in a container.
    
    Fix the regression by making sure we use proper offset in the loop body.
    Thanks to Christoph Hellwig for suggestion how to best fix the code.
    
    Cc: Christoph Hellwig <hch@lst.de>
    Fixes: 263dde869bd09 ("xfs: cleanup xfs_dir2_block_getdents")
    Signed-off-by: Tommi Rantala <tommi.t.rantala@nokia.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fd6d36892af482fafb7ed0c34a0efc59b865cf51
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Wed Mar 11 10:37:53 2020 -0700

    xfs: fix use-after-free when aborting corrupt attr inactivation
    
    [ Upstream commit 496b9bcd62b0b3a160be61e3265a086f97adcbd3 ]
    
    Log the corrupt buffer before we release the buffer.
    
    Fixes: a5155b870d687 ("xfs: always log corruption errors")
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 595f6853a92cb47d7da46c7a583693c9c5182cc6
Author: Jon Hunter <jonathanh@nvidia.com>
Date:   Fri Feb 14 13:53:53 2020 +0000

    arm64: tegra: Fix Tegra194 PCIe compatible string
    
    [ Upstream commit f9f711efd441ad0d22874be49986d92121862335 ]
    
    If the kernel configuration option CONFIG_PCIE_DW_PLAT_HOST is enabled
    then this can cause the kernel to incorrectly probe the generic
    designware PCIe platform driver instead of the Tegra194 designware PCIe
    driver. This causes a boot failure on Tegra194 because the necessary
    configuration to access the hardware is not performed.
    
    The order in which the compatible strings are populated in Device-Tree
    is not relevant in this case, because the kernel will attempt to probe
    the device as soon as a driver is loaded and if the generic designware
    PCIe driver is loaded first, then this driver will be probed first.
    Therefore, to fix this problem, remove the "snps,dw-pcie" string from
    the compatible string as we never want this driver to be probe on
    Tegra194.
    
    Fixes: 2602c32f15e7 ("arm64: tegra: Add P2U and PCIe controller nodes to Tegra194 DT")
    Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3cfb1d2a5744c230da7cc9639c8d6bd21f1653a7
Author: Vidya Sagar <vidyas@nvidia.com>
Date:   Tue Mar 3 23:40:50 2020 +0530

    arm64: tegra: Add PCIe endpoint controllers nodes for Tegra194
    
    [ Upstream commit 0c988b731e6430f0081991fdb4f63f7fc837df9a ]
    
    Add endpoint mode controllers nodes for the dual mode PCIe controllers
    present in Tegra194 SoC.
    
    Signed-off-by: Vidya Sagar <vidyas@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 84e39c0b286090a0de764b1d9344799f56f34992
Author: Sowjanya Komatineni <skomatineni@nvidia.com>
Date:   Mon Jan 13 23:24:09 2020 -0800

    clk: tegra: Fix Tegra PMC clock out parents
    
    [ Upstream commit 6fe38aa8cac3a5db38154331742835a4d9740788 ]
    
    Tegra PMC clocks clk_out_1, clk_out_2, and clk_out_3 supported parents
    are osc, osc_div2, osc_div4 and extern clock.
    
    Clock driver is using incorrect parents clk_m, clk_m_div2, clk_m_div4
    for PMC clocks.
    
    This patch fixes this.
    
    Tested-by: Dmitry Osipenko <digetx@gmail.com>
    Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b71e140fe3a1343e9d0ef76197145e71641e35d9
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Mon Mar 9 00:51:43 2020 +0300

    power: supply: bq27xxx_battery: Silence deferred-probe error
    
    [ Upstream commit 583b53ece0b0268c542a1eafadb62e3d4b0aab8c ]
    
    The driver fails to probe with -EPROBE_DEFER if battery's power supply
    (charger driver) isn't ready yet and this results in a bit noisy error
    message in KMSG during kernel's boot up. Let's silence the harmless
    error message.
    
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Reviewed-by: Andrew F. Davis <afd@ti.com>
    Reviewed-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 857da3e14acc2afbd432fea6a5d6150a53d600a1
Author: Jernej Skrabec <jernej.skrabec@siol.net>
Date:   Sat Jan 25 00:20:10 2020 +0100

    arm64: dts: allwinner: a64: Fix display clock register range
    
    [ Upstream commit 3e9a1a8b7f811de3eb1445d72f68766b704ad17c ]
    
    Register range of display clocks is 0x10000, as it can be seen from
    DE2 documentation.
    
    Fix it.
    
    Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
    Fixes: 2c796fc8f5dbd ("arm64: dts: allwinner: a64: add necessary device tree nodes for DE2 CCU")
    [wens@csie.org: added fixes tag]
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e13b8ceb4b43c3b8b6bb936adb2d6a6697210865
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Tue Feb 25 02:58:36 2020 +0300

    memory: tegra: Correct debugfs clk rate-range on Tegra124
    
    [ Upstream commit 141267bffd1dc19a76e4d50e3e4829f85a806875 ]
    
    Correctly set clk rate-range if number of available timings is zero.
    This fixes noisy "invalid range [4294967295, 0]" error messages during
    boot.
    
    Fixes: 6b9acd935546 ("memory: tegra: Refashion EMC debugfs interface on Tegra124")
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8a2864d65873300e9132f1e12ee7745bb5075e1b
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Tue Feb 25 02:58:35 2020 +0300

    memory: tegra: Correct debugfs clk rate-range on Tegra30
    
    [ Upstream commit a53670e1a734ba56fac84cf2b93b838bd4a6b835 ]
    
    Correctly set clk rate-range if number of available timings is zero.
    This fixes noisy "invalid range [4294967295, 0]" error messages during
    boot.
    
    Fixes: 8cee32b40040 ("memory: tegra: Implement EMC debugfs interface on Tegra30")
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 58db3e735afeeb2d830516449d45edd198eac174
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Tue Feb 25 02:58:34 2020 +0300

    memory: tegra: Correct debugfs clk rate-range on Tegra20
    
    [ Upstream commit 2243af41115d0e36e6414df6dd2a0386e022d9f8 ]
    
    Correctly set clk rate-range if number of available timings is zero.
    This fixes noisy "invalid range [4294967295, 0]" error messages during
    boot.
    
    Fixes: 8209eefa3d37 ("memory: tegra: Implement EMC debugfs interface on Tegra20")
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dad4044dbbd69f85f86bc65df1e8e046eec16ce5
Author: Dave Jiang <dave.jiang@intel.com>
Date:   Tue Mar 10 10:50:30 2020 -0700

    dmaengine: idxd: reflect shadow copy of traffic class programming
    
    [ Upstream commit a1fcaf07ec718bb1f11e29e952c9a4cb733d57a5 ]
    
    The traffic class are set to -1 at initialization until the user programs
    them. If the user choose not to, the driver will program appropriate
    defaults. The driver also needs to update the shadowed copies of the values
    after doing the programming.
    
    Fixes: c52ca478233c ("dmaengine: idxd: add configuration component of driver")
    Reported-by: Yixin Zhang <yixin.zhang@intel.com>
    Signed-off-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/158386263076.10898.4586509576813094559.stgit@djiang5-desk3.ch.intel.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f50a08556d46a213547e1727ff0d697fdc4021c7
Author: Johan Jonker <jbx6244@gmail.com>
Date:   Sat Mar 7 14:48:37 2020 +0100

    ARM: dts: rockchip: fix vqmmc-supply property name for rk3188-bqedison2qc
    
    [ Upstream commit 9cd568dc588c5d168615bf34f325fabe33b2c9a0 ]
    
    A test with the command below does not detect all errors
    in combination with 'additionalProperties: false' and
    allOf:
      - $ref: "synopsys-dw-mshc-common.yaml#"
    allOf:
      - $ref: "mmc-controller.yaml#"
    
    'additionalProperties' applies to all properties that are not
    accounted-for by 'properties' or 'patternProperties' in
    the immediate schema.
    
    First when we combine rockchip-dw-mshc.yaml,
    synopsys-dw-mshc-common.yaml and mmc-controller.yaml it gives
    this error:
    
    arch/arm/boot/dts/rk3188-bqedison2qc.dt.yaml: mmc@10218000:
    'vmmcq-supply' does not match any of the regexes:
    '^.*@[0-9]+$',
    '^clk-phase-(legacy|sd-hs|mmc-(hs|hs[24]00|ddr52)|
    uhs-(sdr(12|25|50|104)|ddr50))$',
    'pinctrl-[0-9]+'
    
    'vmmcq-supply' is not a valid property name for mmc nodes.
    Fix this error by renaming it to 'vqmmc-supply'.
    
    make ARCH=arm dtbs_check
    DT_SCHEMA_FILES=Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.yaml
    
    Signed-off-by: Johan Jonker <jbx6244@gmail.com>
    Link: https://lore.kernel.org/r/20200307134841.13803-1-jbx6244@gmail.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0563bdd84b98f0d64ff63705580607c9eb271a03
Author: Chao Yu <chao@kernel.org>
Date:   Fri Feb 28 18:08:46 2020 +0800

    f2fs: fix to avoid use-after-free in f2fs_write_multi_pages()
    
    [ Upstream commit 95978caa138948054e06d00bfc3432b518699f1b ]
    
    In compress cluster, if physical block number is less than logic
    page number, race condition will cause use-after-free issue as
    described below:
    
    - f2fs_write_compressed_pages
     - fio.page = cic->rpages[0];
     - f2fs_outplace_write_data
                                            - f2fs_compress_write_end_io
                                             - kfree(cic->rpages);
                                             - kfree(cic);
     - fio.page = cic->rpages[1];
    
    f2fs_write_multi_pages+0xfd0/0x1a98
    f2fs_write_data_pages+0x74c/0xb5c
    do_writepages+0x64/0x108
    __writeback_single_inode+0xdc/0x4b8
    writeback_sb_inodes+0x4d0/0xa68
    __writeback_inodes_wb+0x88/0x178
    wb_writeback+0x1f0/0x424
    wb_workfn+0x2f4/0x574
    process_one_work+0x210/0x48c
    worker_thread+0x2e8/0x44c
    kthread+0x110/0x120
    ret_from_fork+0x10/0x18
    
    Fixes: 4c8ff7095bef ("f2fs: support data compression")
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f642efe06ffd4bd872f9e689ce2a95c002ac1e2d
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Thu Mar 5 15:20:26 2020 -0800

    f2fs: fix wrong check on F2FS_IOC_FSSETXATTR
    
    [ Upstream commit 99eabb914e0f870445d065e83e857507f9728a33 ]
    
    This fixes the incorrect failure when enabling project quota on casefold-enabled
    file.
    
    Cc: Daniel Rosenberg <drosen@google.com>
    Cc: kernel-team@android.com
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 00b695c16e5f93bb95fc48467913fda4bd570576
Author: Brian Foster <bfoster@redhat.com>
Date:   Fri Feb 21 07:36:24 2020 -0800

    xfs: fix iclog release error check race with shutdown
    
    [ Upstream commit 6b789c337a5963ae57cbc7fe9e41488c40a9b014 ]
    
    Prior to commit df732b29c8 ("xfs: call xlog_state_release_iclog with
    l_icloglock held"), xlog_state_release_iclog() always performed a
    locked check of the iclog error state before proceeding into the
    sync state processing code. As of this commit, part of
    xlog_state_release_iclog() was open-coded into
    xfs_log_release_iclog() and as a result the locked error state check
    was lost.
    
    The lockless check still exists, but this doesn't account for the
    possibility of a race with a shutdown being performed by another
    task causing the iclog state to change while the original task waits
    on ->l_icloglock. This has reproduced very rarely via generic/475
    and manifests as an assert failure in __xlog_state_release_iclog()
    due to an unexpected iclog state.
    
    Restore the locked error state check in xlog_state_release_iclog()
    to ensure that an iclog state update via shutdown doesn't race with
    the iclog release state processing code.
    
    Fixes: df732b29c807 ("xfs: call xlog_state_release_iclog with l_icloglock held")
    Reported-by: Zorro Lang <zlang@redhat.com>
    Signed-off-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f06977f73ec0b3f0c14bc1005ffcb43edbb81796
Author: Andrii Nakryiko <andriin@fb.com>
Date:   Sun Mar 1 00:10:43 2020 -0800

    bpf: Reliably preserve btf_trace_xxx types
    
    [ Upstream commit 441420a1f0b3031f228453697406c86f110e59d4 ]
    
    btf_trace_xxx types, crucial for tp_btf BPF programs (raw tracepoint with
    verifier-checked direct memory access), have to be preserved in kernel BTF to
    allow verifier do its job and enforce type/memory safety. It was reported
    ([0]) that for kernels built with Clang current type-casting approach doesn't
    preserve these types.
    
    This patch fixes it by declaring an anonymous union for each registered
    tracepoint, capturing both struct bpf_raw_event_map information, as well as
    recording btf_trace_##call type reliably. Structurally, it's still the same
    content as for a plain struct bpf_raw_event_map, so no other changes are
    necessary.
    
      [0] https://github.com/iovisor/bcc/issues/2770#issuecomment-591007692
    
    Fixes: e8c423fb31fa ("bpf: Add typecast to raw_tracepoints to help BTF generation")
    Reported-by: Wenbo Zhang <ethercflow@gmail.com>
    Signed-off-by: Andrii Nakryiko <andriin@fb.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Yonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/bpf/20200301081045.3491005-2-andriin@fb.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 645050b5c5939998ee447770e8a81dd43bd67ecb
Author: Sahitya Tummala <stummala@codeaurora.org>
Date:   Tue Feb 18 09:19:07 2020 +0530

    f2fs: fix the panic in do_checkpoint()
    
    [ Upstream commit bf22c3cc8ce71454dddd772284773306a68031d8 ]
    
    There could be a scenario where f2fs_sync_meta_pages() will not
    ensure that all F2FS_DIRTY_META pages are submitted for IO. Thus,
    resulting in the below panic in do_checkpoint() -
    
    f2fs_bug_on(sbi, get_pages(sbi, F2FS_DIRTY_META) &&
                                    !f2fs_cp_error(sbi));
    
    This can happen in a low-memory condition, where shrinker could
    also be doing the writepage operation (stack shown below)
    at the same time when checkpoint is running on another core.
    
    schedule
    down_write
    f2fs_submit_page_write -> by this time, this page in page cache is tagged
                            as PAGECACHE_TAG_WRITEBACK and PAGECACHE_TAG_DIRTY
                            is cleared, due to which f2fs_sync_meta_pages()
                            cannot sync this page in do_checkpoint() path.
    f2fs_do_write_meta_page
    __f2fs_write_meta_page
    f2fs_write_meta_page
    shrink_page_list
    shrink_inactive_list
    shrink_node_memcg
    shrink_node
    kswapd
    
    Signed-off-by: Sahitya Tummala <stummala@codeaurora.org>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e8542437bb4070423c9754d5ba270ffdbae8c8d
Author: Chao Yu <chao@kernel.org>
Date:   Mon Feb 24 19:20:16 2020 +0800

    f2fs: fix to avoid potential deadlock
    
    [ Upstream commit df77fbd8c5b222c680444801ffd20e8bbc90a56e ]
    
    Using f2fs_trylock_op() in f2fs_write_compressed_pages() to avoid potential
    deadlock like we did in f2fs_write_single_data_page().
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef89145b8bfe79bae0ed2c9bcdc5a6606c8e75e1
Author: Torsten Duwe <duwe@suse.de>
Date:   Tue Feb 25 15:34:30 2020 +0100

    s390/crypto: explicitly memzero stack key material in aes_s390.c
    
    [ Upstream commit 4a559cd15dbc79958fa9b18ad4e8afe4a0bf4744 ]
    
    aes_s390.c has several functions which allocate space for key material on
    the stack and leave the used keys there. It is considered good practice
    to clean these locations before the function returns.
    
    Link: https://lkml.kernel.org/r/20200221165511.GB6928@lst.de
    Signed-off-by: Torsten Duwe <duwe@suse.de>
    Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1c6b3a695c391a2171bc70b87d2292fa0d521523
Author: Aya Levin <ayal@mellanox.com>
Date:   Tue Feb 11 14:32:49 2020 -0800

    net/mlx5e: Enforce setting of a single FEC mode
    
    [ Upstream commit 4bd9d5070b92da012f2715cf8e4859acb78b8f35 ]
    
    Ethtool command allow setting of several FEC modes in a single set
    command. The driver can only set a single FEC mode at a time. With this
    patch driver will reply not-supported on setting several FEC modes.
    
    Signed-off-by: Aya Levin <ayal@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 521092d99a8e57b73dfe4c919316efea2c464fb9
Author: Eneas U de Queiroz <cotequeiroz@gmail.com>
Date:   Fri Feb 7 12:02:25 2020 -0300

    crypto: qce - use cryptlen when adding extra sgl
    
    [ Upstream commit d6364b8128439a8c0e381f80c38667de9f15eef8 ]
    
    The qce crypto driver appends an extra entry to the dst sgl, to maintain
    private state information.
    
    When the gcm driver sends requests to the ctr skcipher, it passes the
    authentication tag after the actual crypto payload, but it must not be
    touched.
    
    Commit 1336c2221bee ("crypto: qce - save a sg table slot for result
    buf") limited the destination sgl to avoid overwriting the
    authentication tag but it assumed the tag would be in a separate sgl
    entry.
    
    This is not always the case, so it is better to limit the length of the
    destination buffer to req->cryptlen before appending the result buf.
    
    Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 255969d3a9cf1dd9ee2e41ede801fd6c5a5345e5
Author: Anson Huang <Anson.Huang@nxp.com>
Date:   Thu Jan 16 14:50:49 2020 +0800

    clk: imx: pll14xx: Add new frequency entries for pll1443x table
    
    [ Upstream commit 57795654fb553a78f07a9f92d87fb2582379cd93 ]
    
    Add new frequency entries to pll1443x table to meet different
    display settings requirement.
    
    Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
    Reviewed-by: Peng Fan <peng.fan@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6e4099a0005dae6e420b48dc2765578f28b4f9ba
Author: Claudiu Beznea <claudiu.beznea@microchip.com>
Date:   Fri Jan 17 13:36:46 2020 +0200

    clk: at91: usb: continue if clk_hw_round_rate() return zero
    
    [ Upstream commit b0ecf1c6c6e82da4847900fad0272abfd014666d ]
    
    clk_hw_round_rate() may call round rate function of its parents. In case
    of SAM9X60 two of USB parrents are PLLA and UPLL. These clocks are
    controlled by clk-sam9x60-pll.c driver. The round rate function for this
    driver is sam9x60_pll_round_rate() which call in turn
    sam9x60_pll_get_best_div_mul(). In case the requested rate is not in the
    proper range (rate < characteristics->output[0].min &&
    rate > characteristics->output[0].max) the sam9x60_pll_round_rate() will
    return a negative number to its caller (called by
    clk_core_round_rate_nolock()). clk_hw_round_rate() will return zero in
    case a negative number is returned by clk_core_round_rate_nolock(). With
    this, the USB clock will continue its rate computation even caller of
    clk_hw_round_rate() returned an error. With this, the USB clock on SAM9X60
    may not chose the best parent. I detected this after a suspend/resume
    cycle on SAM9X60.
    
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Link: https://lkml.kernel.org/r/1579261009-4573-2-git-send-email-claudiu.beznea@microchip.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d54af968eec82a400ae296f31e5b20e2a92cd875
Author: Stephen Boyd <sboyd@kernel.org>
Date:   Wed Feb 5 15:27:59 2020 -0800

    clk: Don't cache errors from clk_ops::get_phase()
    
    [ Upstream commit f21cf9c77ee82ef8adfeb2143adfacf21ec1d5cc ]
    
    We don't check for errors from clk_ops::get_phase() before storing away
    the result into the clk_core::phase member. This can lead to some fairly
    confusing debugfs information if these ops do return an error. Let's
    skip the store when this op fails to fix this. While we're here, move
    the locking outside of clk_core_get_phase() to simplify callers from
    the debugfs side.
    
    Cc: Douglas Anderson <dianders@chromium.org>
    Cc: Heiko Stuebner <heiko@sntech.de>
    Cc: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Link: https://lkml.kernel.org/r/20200205232802.29184-2-sboyd@kernel.org
    Acked-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6b5fed6d7bc046833d2ffcdd65110ad2f3e5b7b8
Author: Bob Peterson <rpeterso@redhat.com>
Date:   Wed Nov 13 11:47:09 2019 -0600

    gfs2: clear ail1 list when gfs2 withdraws
    
    [ Upstream commit 30fe70a85a909a23dcbc2c628ca6655b2c85e7a1 ]
    
    This patch fixes a bug in which function gfs2_log_flush can get into
    an infinite loop when a gfs2 file system is withdrawn. The problem
    is the infinite loop "for (;;)" in gfs2_log_flush which would never
    finish because the io error and subsequent withdraw prevented the
    items from being taken off the ail list.
    
    This patch tries to clean up the mess by allowing withdraw situations
    to move not-in-flight buffer_heads to the ail2 list, where they will
    be dealt with later.
    
    Signed-off-by: Bob Peterson <rpeterso@redhat.com>
    Reviewed-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 057843ef0833fa33846e57902ff11832b5b0ed2b
Author: xinhui pan <xinhui.pan@amd.com>
Date:   Wed Jan 15 14:07:45 2020 +0800

    drm/ttm: flush the fence on the bo after we individualize the reservation object
    
    [ Upstream commit 1bbcf69e42fe7fd49b6f4339c970729d0e343753 ]
    
    As we move the ttm_bo_individualize_resv() upwards, we need flush the
    copied fence too. Otherwise the driver keeps waiting for fence.
    
    run&Kill kfdtest, then perf top.
    
      25.53%  [ttm]                     [k] ttm_bo_delayed_delete
      24.29%  [kernel]                  [k] dma_resv_test_signaled_rcu
      19.72%  [kernel]                  [k] ww_mutex_lock
    
    Fix: 378e2d5b("drm/ttm: fix ttm_bo_cleanup_refs_or_queue once more")
    Signed-off-by: xinhui pan <xinhui.pan@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Link: https://patchwork.freedesktop.org/series/72339/
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4c1bf587687a0ad2ada910e7817394cb80520560
Author: Paolo Valente <paolo.valente@linaro.org>
Date:   Sat Mar 21 10:45:21 2020 +0100

    block, bfq: invoke flush_idle_tree after reparent_active_queues in pd_offline
    
    commit 4d38a87fbb77fb9ff2ff4e914162a8ae6453eff5 upstream.
    
    In bfq_pd_offline(), the function bfq_flush_idle_tree() is invoked to
    flush the rb tree that contains all idle entities belonging to the pd
    (cgroup) being destroyed. In particular, bfq_flush_idle_tree() is
    invoked before bfq_reparent_active_queues(). Yet the latter may happen
    to add some entities to the idle tree. It happens if, in some of the
    calls to bfq_bfqq_move() performed by bfq_reparent_active_queues(),
    the queue to move is empty and gets expired.
    
    This commit simply reverses the invocation order between
    bfq_flush_idle_tree() and bfq_reparent_active_queues().
    
    Tested-by: cki-project@redhat.com
    Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c49d414acda895e37ad54550c083a7657600d78b
Author: Paolo Valente <paolo.valente@linaro.org>
Date:   Sat Mar 21 10:45:20 2020 +0100

    block, bfq: make reparent_leaf_entity actually work only on leaf entities
    
    commit 576682fa52cbd95deb3773449566274f206acc58 upstream.
    
    bfq_reparent_leaf_entity() reparents the input leaf entity (a leaf
    entity represents just a bfq_queue in an entity tree). Yet, the input
    entity is guaranteed to always be a leaf entity only in two-level
    entity trees. In this respect, because of the error fixed by
    commit 14afc5936197 ("block, bfq: fix overwrite of bfq_group pointer
    in bfq_find_set_group()"), all (wrongly collapsed) entity trees happened
    to actually have only two levels. After the latter commit, this does not
    hold any longer.
    
    This commit fixes this problem by modifying
    bfq_reparent_leaf_entity(), so that it searches an active leaf entity
    down the path that stems from the input entity. Such a leaf entity is
    guaranteed to exist when bfq_reparent_leaf_entity() is invoked.
    
    Tested-by: cki-project@redhat.com
    Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1efbd1fdd35a8d1de91285db9b4ad3692b09c10
Author: Paolo Valente <paolo.valente@linaro.org>
Date:   Sat Mar 21 10:45:19 2020 +0100

    block, bfq: turn put_queue into release_process_ref in __bfq_bic_change_cgroup
    
    commit c8997736650060594845e42c5d01d3118aec8d25 upstream.
    
    A bfq_put_queue() may be invoked in __bfq_bic_change_cgroup(). The
    goal of this put is to release a process reference to a bfq_queue. But
    process-reference releases may trigger also some extra operation, and,
    to this goal, are handled through bfq_release_process_ref(). So, turn
    the invocation of bfq_put_queue() into an invocation of
    bfq_release_process_ref().
    
    Tested-by: cki-project@redhat.com
    Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e51f93f8866dbcc92ad0dbb2514d906124b0181
Author: David Howells <dhowells@redhat.com>
Date:   Fri Apr 10 15:23:27 2020 +0100

    afs: Fix race between post-modification dir edit and readdir/d_revalidate
    
    commit 2105c2820d366b76f38e6ad61c75771881ecc532 upstream.
    
    AFS directories are retained locally as a structured file, with lookup
    being effected by a local search of the file contents.  When a modification
    (such as mkdir) happens, the dir file content is modified locally rather
    than redownloading the directory.
    
    The directory contents are accessed in a number of ways, with a number of
    different locks schemes:
    
     (1) Download of contents - dvnode->validate_lock/write in afs_read_dir().
    
     (2) Lookup and readdir - dvnode->validate_lock/read in afs_dir_iterate(),
         downgrading from (1) if necessary.
    
     (3) d_revalidate of child dentry - dvnode->validate_lock/read in
         afs_do_lookup_one() downgrading from (1) if necessary.
    
     (4) Edit of dir after modification - page locks on individual dir pages.
    
    Unfortunately, because (4) uses different locking scheme to (1) - (3),
    nothing protects against the page being scanned whilst the edit is
    underway.  Even download is not safe as it doesn't lock the pages - relying
    instead on the validate_lock to serialise as a whole (the theory being that
    directory contents are treated as a block and always downloaded as a
    block).
    
    Fix this by write-locking dvnode->validate_lock around the edits.  Care
    must be taken in the rename case as there may be two different dirs - but
    they need not be locked at the same time.  In any case, once the lock is
    taken, the directory version must be rechecked, and the edit skipped if a
    later version has been downloaded by revalidation (there can't have been
    any local changes because the VFS holds the inode lock, but there can have
    been remote changes).
    
    Fixes: 63a4681ff39c ("afs: Locally edit directory data for mkdir/create/unlink/...")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c127d58c6205325dee90363d8a4ef82e3d587c0
Author: David Howells <dhowells@redhat.com>
Date:   Sat Apr 11 08:50:45 2020 +0100

    afs: Fix afs_d_validate() to set the right directory version
    
    commit 40fc81027f892284ce31f8b6de1e497f5b47e71f upstream.
    
    If a dentry's version is somewhere between invalid_before and the current
    directory version, we should be setting it forward to the current version,
    not backwards to the invalid_before version.  Note that we're only doing
    this at all because dentry::d_fsdata isn't large enough on a 32-bit system.
    
    Fix this by using a separate variable for invalid_before so that we don't
    accidentally clobber the current dir version.
    
    Fixes: a4ff7401fbfa ("afs: Keep track of invalid-before version for dentry coherency")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85261f5dcbaf4a9335fd69238b238e8a67f54af7
Author: David Howells <dhowells@redhat.com>
Date:   Wed Apr 8 20:56:20 2020 +0100

    afs: Fix rename operation status delivery
    
    commit b98f0ec91c42d87a70da42726b852ac8d78a3257 upstream.
    
    The afs_deliver_fs_rename() and yfs_deliver_fs_rename() functions both only
    decode the second file status returned unless the parent directories are
    different - unfortunately, this means that the xdr pointer isn't advanced
    and the volsync record will be read incorrectly in such an instance.
    
    Fix this by always decoding the second status into the second
    status/callback block which wasn't being used if the dirs were the same.
    
    The afs_update_dentry_version() calls that update the directory data
    version numbers on the dentries can then unconditionally use the second
    status record as this will always reflect the state of the destination dir
    (the two records will be identical if the destination dir is the same as
    the source dir)
    
    Fixes: 260a980317da ("[AFS]: Add "directory write" support.")
    Fixes: 30062bd13e36 ("afs: Implement YFS support in the fs client")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 68935b7f66d6feeab4552c97e89632e20d62c0a9
Author: David Howells <dhowells@redhat.com>
Date:   Wed Apr 8 17:32:10 2020 +0100

    afs: Fix decoding of inline abort codes from version 1 status records
    
    commit 3e0d9892c0e7fa426ca6bf921cb4b543ca265714 upstream.
    
    If we're decoding an AFSFetchStatus record and we see that the version is 1
    and the abort code is set and we're expecting inline errors, then we store
    the abort code and ignore the remaining status record (which is correct),
    but we don't set the flag to say we got a valid abort code.
    
    This can affect operation of YFS.RemoveFile2 when removing a file and the
    operation of {,Y}FS.InlineBulkStatus when prospectively constructing or
    updating of a set of inodes during a lookup.
    
    Fix this to indicate the reception of a valid abort code.
    
    Fixes: a38a75581e6e ("afs: Fix unlink to handle YFS.RemoveFile2 better")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb3723a89384433ad18f68bd7dc7f37c9bbc2433
Author: David Howells <dhowells@redhat.com>
Date:   Wed Apr 8 16:13:20 2020 +0100

    afs: Fix missing XDR advance in xdr_decode_{AFS,YFS}FSFetchStatus()
    
    commit c72057b56f7e24865840a6961d801a7f21d30a5f upstream.
    
    If we receive a status record that has VNOVNODE set in the abort field,
    xdr_decode_AFSFetchStatus() and xdr_decode_YFSFetchStatus() don't advance
    the XDR pointer, thereby corrupting anything subsequent decodes from the
    same block of data.
    
    This has the potential to affect AFS.InlineBulkStatus and
    YFS.InlineBulkStatus operation, but probably doesn't since the status
    records are extracted as individual blocks of data and the buffer pointer
    is reset between blocks.
    
    It does affect YFS.RemoveFile2 operation, corrupting the volsync record -
    though that is not currently used.
    
    Other operations abort the entire operation rather than returning an error
    inline, in which case there is no decoding to be done.
    
    Fix this by unconditionally advancing the xdr pointer.
    
    Fixes: 684b0f68cf1c ("afs: Fix AFSFetchStatus decoder to provide OpenAFS compatibility")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85c52f28bdb4d23af518f8cb06e88a5e58315b8c
Author: Tianyu Lan <Tianyu.Lan@microsoft.com>
Date:   Mon Apr 6 08:53:31 2020 -0700

    x86/Hyper-V: Report crash data in die() when panic_on_oops is set
    
    commit f3a99e761efa616028b255b4de58e9b5b87c5545 upstream.
    
    When oops happens with panic_on_oops unset, the oops
    thread is killed by die() and system continues to run.
    In such case, guest should not report crash register
    data to host since system still runs. Check panic_on_oops
    and return directly in hyperv_report_panic() when the function
    is called in the die() and panic_on_oops is unset. Fix it.
    
    Fixes: 7ed4325a44ea ("Drivers: hv: vmbus: Make panic reporting to be more useful")
    Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Link: https://lore.kernel.org/r/20200406155331.2105-7-Tianyu.Lan@microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e68e423a60002b8a2e6042008d8dff23244ac5d
Author: Tianyu Lan <Tianyu.Lan@microsoft.com>
Date:   Mon Apr 6 08:53:30 2020 -0700

    x86/Hyper-V: Report crash register data when sysctl_record_panic_msg is not set
    
    commit 040026df7088c56ccbad28f7042308f67bde63df upstream.
    
    When sysctl_record_panic_msg is not set, the panic will
    not be reported to Hyper-V via hyperv_report_panic_msg().
    So the crash should be reported via hyperv_report_panic().
    
    Fixes: 81b18bce48af ("Drivers: HV: Send one page worth of kmsg dump over Hyper-V during panic")
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
    Link: https://lore.kernel.org/r/20200406155331.2105-6-Tianyu.Lan@microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3e090ce368986f427ca70b3e6f391ef1461bd20
Author: Tianyu Lan <Tianyu.Lan@microsoft.com>
Date:   Mon Apr 6 08:53:29 2020 -0700

    x86/Hyper-V: Report crash register data or kmsg before running crash kernel
    
    commit a11589563e96bf262767294b89b25a9d44e7303b upstream.
    
    We want to notify Hyper-V when a Linux guest VM crash occurs, so
    there is a record of the crash even when kdump is enabled.   But
    crash_kexec_post_notifiers defaults to "false", so the kdump kernel
    runs before the notifiers and Hyper-V never gets notified.  Fix this by
    always setting crash_kexec_post_notifiers to be true for Hyper-V VMs.
    
    Fixes: 81b18bce48af ("Drivers: HV: Send one page worth of kmsg dump over Hyper-V during panic")
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
    Link: https://lore.kernel.org/r/20200406155331.2105-5-Tianyu.Lan@microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eec9231fae6af74bf1844ed9df553ffe3c425b33
Author: Tianyu Lan <Tianyu.Lan@microsoft.com>
Date:   Mon Apr 6 08:53:28 2020 -0700

    x86/Hyper-V: Trigger crash enlightenment only once during system crash.
    
    commit 73f26e526f19afb3a06b76b970a76bcac2cafd05 upstream.
    
    When a guest VM panics, Hyper-V should be notified only once via the
    crash synthetic MSRs.  Current Linux code might write these crash MSRs
    twice during a system panic:
    1) hyperv_panic/die_event() calling hyperv_report_panic()
    2) hv_kmsg_dump() calling hyperv_report_panic_msg()
    
    Fix this by not calling hyperv_report_panic() if a kmsg dump has been
    successfully registered.  The notification will happen later via
    hyperv_report_panic_msg().
    
    Fixes: 7ed4325a44ea ("Drivers: hv: vmbus: Make panic reporting to be more useful")
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
    Link: https://lore.kernel.org/r/20200406155331.2105-4-Tianyu.Lan@microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a964cdcfd263b5181ce03c39b0f6a337725e8fd5
Author: Tianyu Lan <Tianyu.Lan@microsoft.com>
Date:   Mon Apr 6 08:53:27 2020 -0700

    x86/Hyper-V: Free hv_panic_page when fail to register kmsg dump
    
    commit 7f11a2cc10a4ae3a70e2c73361f4a9a33503539b upstream.
    
    If kmsg_dump_register() fails, hv_panic_page will not be used
    anywhere.  So free and reset it.
    
    Fixes: 81b18bce48af ("Drivers: HV: Send one page worth of kmsg dump over Hyper-V during panic")
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
    Link: https://lore.kernel.org/r/20200406155331.2105-3-Tianyu.Lan@microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit caeeb3787167c884b955404a7e669fd77f267e44
Author: Tianyu Lan <Tianyu.Lan@microsoft.com>
Date:   Mon Apr 6 08:53:26 2020 -0700

    x86/Hyper-V: Unload vmbus channel in hv panic callback
    
    commit 74347a99e73ae00b8385f1209aaea193c670f901 upstream.
    
    When kdump is not configured, a Hyper-V VM might still respond to
    network traffic after a kernel panic when kernel parameter panic=0.
    The panic CPU goes into an infinite loop with interrupts enabled,
    and the VMbus driver interrupt handler still works because the
    VMbus connection is unloaded only in the kdump path.  The network
    responses make the other end of the connection think the VM is
    still functional even though it has panic'ed, which could affect any
    failover actions that should be taken.
    
    Fix this by unloading the VMbus connection during the panic process.
    vmbus_initiate_unload() could then be called twice (e.g., by
    hyperv_panic_event() and hv_crash_handler(), so reset the connection
    state in vmbus_initiate_unload() to ensure the unload is done only
    once.
    
    Fixes: 81b18bce48af ("Drivers: HV: Send one page worth of kmsg dump over Hyper-V during panic")
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
    Link: https://lore.kernel.org/r/20200406155331.2105-2-Tianyu.Lan@microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81276604d647cb968802b10fdae469eef01497ff
Author: Frank Rowand <frank.rowand@sony.com>
Date:   Thu Apr 16 16:42:49 2020 -0500

    of: overlay: kmemleak in dup_and_fixup_symbol_prop()
    
    commit 478ff649b1c8eb2409b1a54fb75eb46f7c29f140 upstream.
    
    kmemleak reports several memory leaks from devicetree unittest.
    This is the fix for problem 4 of 5.
    
    target_path was not freed in the non-error path.
    
    Fixes: e0a58f3e08d4 ("of: overlay: remove a dependency on device node full_name")
    Reported-by: Erhard F. <erhard_f@mailbox.org>
    Signed-off-by: Frank Rowand <frank.rowand@sony.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ea37822077efef0e92f28b487aad329f95dfad8
Author: Frank Rowand <frank.rowand@sony.com>
Date:   Thu Apr 16 16:42:48 2020 -0500

    of: unittest: kmemleak in of_unittest_overlay_high_level()
    
    commit 145fc138f9aae4f9e1331352e301df28e16aed35 upstream.
    
    kmemleak reports several memory leaks from devicetree unittest.
    This is the fix for problem 3 of 5.
    
    of_unittest_overlay_high_level() failed to kfree the newly created
    property when the property named 'name' is skipped.
    
    Fixes: 39a751a4cb7e ("of: change overlay apply input data from unflattened to FDT")
    Reported-by: Erhard F. <erhard_f@mailbox.org>
    Signed-off-by: Frank Rowand <frank.rowand@sony.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5cdd186311860632c2d7aed4e774486b75ce05c4
Author: Frank Rowand <frank.rowand@sony.com>
Date:   Thu Apr 16 16:42:47 2020 -0500

    of: unittest: kmemleak in of_unittest_platform_populate()
    
    commit 216830d2413cc61be3f76bc02ffd905e47d2439e upstream.
    
    kmemleak reports several memory leaks from devicetree unittest.
    This is the fix for problem 2 of 5.
    
    of_unittest_platform_populate() left an elevated reference count for
    grandchild nodes (which are platform devices).  Fix the platform
    device reference counts so that the memory will be freed.
    
    Fixes: fb2caa50fbac ("of/selftest: add testcase for nodes with same name and address")
    Reported-by: Erhard F. <erhard_f@mailbox.org>
    Signed-off-by: Frank Rowand <frank.rowand@sony.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52a76fc6b59b1b727be6fd297e612fbd68fc677d
Author: Frank Rowand <frank.rowand@sony.com>
Date:   Thu Apr 16 16:42:46 2020 -0500

    of: unittest: kmemleak on changeset destroy
    
    commit b3fb36ed694b05738d45218ea72cf7feb10ce2b1 upstream.
    
    kmemleak reports several memory leaks from devicetree unittest.
    This is the fix for problem 1 of 5.
    
    of_unittest_changeset() reaches deeply into the dynamic devicetree
    functions.  Several nodes were left with an elevated reference
    count and thus were not properly cleaned up.  Fix the reference
    counts so that the memory will be freed.
    
    Fixes: 201c910bd689 ("of: Transactional DT support.")
    Reported-by: Erhard F. <erhard_f@mailbox.org>
    Signed-off-by: Frank Rowand <frank.rowand@sony.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98d3c852e63b49129515dd18c875999efaf8530a
Author: Magnus Karlsson <magnus.karlsson@intel.com>
Date:   Tue Apr 14 09:35:15 2020 +0200

    xsk: Add missing check on user supplied headroom size
    
    commit 99e3a236dd43d06c65af0a2ef9cb44306aef6e02 upstream.
    
    Add a check that the headroom cannot be larger than the available
    space in the chunk. In the current code, a malicious user can set the
    headroom to a value larger than the chunk size minus the fixed XDP
    headroom. That way packets with a length larger than the supported
    size in the umem could get accepted and result in an out-of-bounds
    write.
    
    Fixes: c0c77d8fb787 ("xsk: add user memory registration support sockopt")
    Reported-by: Bui Quang Minh <minhquangbui99@gmail.com>
    Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=207225
    Link: https://lore.kernel.org/bpf/1586849715-23490-1-git-send-email-magnus.karlsson@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59da092eabc4911431945f37659a8659a9684998
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Apr 13 10:20:29 2020 +0200

    ALSA: hda: Don't release card at firmware loading error
    
    commit 25faa4bd37c10f19e4b848b9032a17a3d44c6f09 upstream.
    
    At the error path of the firmware loading error, the driver tries to
    release the card object and set NULL to drvdata.  This may be referred
    badly at the possible PM action, as the driver itself is still bound
    and the PM callbacks read the card object.
    
    Instead, we continue the probing as if it were no option set.  This is
    often a better choice than the forced abort, too.
    
    Fixes: 5cb543dba986 ("ALSA: hda - Deferred probing with request_firmware_nowait()")
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=207043
    Link: https://lore.kernel.org/r/20200413082034.25166-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d2e626d898c6179c3d264ac3e6eb6e8fd2b232f
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Mon Mar 16 17:16:28 2020 +0100

    rbd: don't test rbd_dev->opts in rbd_dev_image_release()
    
    commit b8776051529230f76e464d5ffc5d1cf8465576bf upstream.
    
    rbd_dev->opts is used to distinguish between the image that is being
    mapped and a parent.  However, because we no longer establish watch for
    read-only mappings, this test is imprecise and results in unnecessary
    rbd_unregister_watch() calls.
    
    Make it consistent with need_watch in rbd_dev_image_probe().
    
    Fixes: b9ef2b8858a0 ("rbd: don't establish watch for read-only mappings")
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Jason Dillaman <dillaman@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a62bf759cfae86c5db2a38f5baf2270046c5a7d6
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Mon Mar 16 15:52:54 2020 +0100

    rbd: call rbd_dev_unprobe() after unwatching and flushing notifies
    
    commit 952c48b0ed18919bff7528501e9a3fff8a24f8cd upstream.
    
    rbd_dev_unprobe() is supposed to undo most of rbd_dev_image_probe(),
    including rbd_dev_header_info(), which means that rbd_dev_header_info()
    isn't supposed to be called after rbd_dev_unprobe().
    
    However, rbd_dev_image_release() calls rbd_dev_unprobe() before
    rbd_unregister_watch().  This is racy because a header update notify
    can sneak in:
    
      "rbd unmap" thread                   ceph-watch-notify worker
    
      rbd_dev_image_release()
        rbd_dev_unprobe()
          free and zero out header
                                           rbd_watch_cb()
                                             rbd_dev_refresh()
                                               rbd_dev_header_info()
                                                 read in header
    
    The same goes for "rbd map" because rbd_dev_image_probe() calls
    rbd_dev_unprobe() on errors.  In both cases this results in a memory
    leak.
    
    Fixes: fd22aef8b47c ("rbd: move rbd_unregister_watch() call into rbd_dev_image_release()")
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Jason Dillaman <dillaman@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4ac5c5b98321d57f6446b6b564d88b5c89dc42b
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Fri Mar 13 11:20:51 2020 +0100

    rbd: avoid a deadlock on header_rwsem when flushing notifies
    
    commit 0e4e1de5b63fa423b13593337a27fd2d2b0bcf77 upstream.
    
    rbd_unregister_watch() flushes notifies and therefore cannot be called
    under header_rwsem because a header update notify takes header_rwsem to
    synchronize with "rbd map".  If mapping an image fails after the watch
    is established and a header update notify sneaks in, we deadlock when
    erroring out from rbd_dev_image_probe().
    
    Move watch registration and unregistration out of the critical section.
    The only reason they were put there was to make header_rwsem management
    slightly more obvious.
    
    Fixes: 811c66887746 ("rbd: fix rbd map vs notify races")
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Jason Dillaman <dillaman@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9538fb7d2c01a6483b37f1d9a7daebcc905d3bbd
Author: Zenghui Yu <yuzenghui@huawei.com>
Date:   Wed Apr 8 19:43:52 2020 +0800

    irqchip/mbigen: Free msi_desc on device teardown
    
    commit edfc23f6f9fdbd7825d50ac1f380243cde19b679 upstream.
    
    Using irq_domain_free_irqs_common() on the irqdomain free path will
    leave the MSI descriptor unfreed when platform devices get removed.
    Properly free it by MSI domain free function.
    
    Fixes: 9650c60ebfec0 ("irqchip/mbigen: Create irq domain for each mbigen device")
    Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20200408114352.1604-1-yuzenghui@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14db3551459b2c3655ae2c4e972055c68fff2086
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Tue Apr 7 14:10:11 2020 +0200

    netfilter: nf_tables: report EOPNOTSUPP on unsupported flags/object type
    
    commit d9583cdf2f38d0f526d9a8c8564dd2e35e649bc7 upstream.
    
    EINVAL should be used for malformed netlink messages. New userspace
    utility and old kernels might easily result in EINVAL when exercising
    new set features, which is misleading.
    
    Fixes: 8aeff920dcc9 ("netfilter: nf_tables: add stateful object reference to set elements")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f520683b90bf75a2278bc9d820dc96305fa8bd76
Author: Slava Bacherikov <slava@bacher09.org>
Date:   Thu Apr 2 23:41:39 2020 +0300

    kbuild, btf: Fix dependencies for DEBUG_INFO_BTF
    
    commit 7d32e69310d67e6b04af04f26193f79dfc2f05c7 upstream.
    
    Currently turning on DEBUG_INFO_SPLIT when DEBUG_INFO_BTF is also
    enabled will produce invalid btf file, since gen_btf function in
    link-vmlinux.sh script doesn't handle *.dwo files.
    
    Enabling DEBUG_INFO_REDUCED will also produce invalid btf file,
    and using GCC_PLUGIN_RANDSTRUCT with BTF makes no sense.
    
    Fixes: e83b9f55448a ("kbuild: add ability to generate BTF type info for vmlinux")
    Reported-by: Jann Horn <jannh@google.com>
    Reported-by: Liu Yiding <liuyd.fnst@cn.fujitsu.com>
    Signed-off-by: Slava Bacherikov <slava@bacher09.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Acked-by: KP Singh <kpsingh@google.com>
    Acked-by: Andrii Nakryiko <andriin@fb.com>
    Link: https://lore.kernel.org/bpf/20200402204138.408021-1-slava@bacher09.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44c7d0df1f1d8dd34fbbba6f22d75816492a4ab2
Author: Martin Fuzzey <martin.fuzzey@flowbird.group>
Date:   Thu Apr 2 15:51:28 2020 +0200

    ARM: dts: imx6: Use gpc for FEC interrupt controller to fix wake on LAN.
    
    commit 4141f1a40fc0789f6fd4330e171e1edf155426aa upstream.
    
    In order to wake from suspend by ethernet magic packets the GPC
    must be used as intc does not have wakeup functionality.
    
    But the FEC DT node currently uses interrupt-extended,
    specificying intc, thus breaking WoL.
    
    This problem is probably fallout from the stacked domain conversion
    as intc used to chain to GPC.
    
    So replace "interrupts-extended" by "interrupts" to use the default
    parent which is GPC.
    
    Fixes: b923ff6af0d5 ("ARM: imx6: convert GPC to stacked domains")
    
    Signed-off-by: Martin Fuzzey <martin.fuzzey@flowbird.group>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cdd19b1175fe987a5b21f49837a315c03ae9b188
Author: Andrii Nakryiko <andriin@fb.com>
Date:   Fri Apr 10 13:26:12 2020 -0700

    bpf: Prevent re-mmap()'ing BPF map as writable for initially r/o mapping
    
    commit 1f6cb19be2e231fe092f40decb71f066eba090d7 upstream.
    
    VM_MAYWRITE flag during initial memory mapping determines if already mmap()'ed
    pages can be later remapped as writable ones through mprotect() call. To
    prevent user application to rewrite contents of memory-mapped as read-only and
    subsequently frozen BPF map, remove VM_MAYWRITE flag completely on initially
    read-only mapping.
    
    Alternatively, we could treat any memory-mapping on unfrozen map as writable
    and bump writecnt instead. But there is little legitimate reason to map
    BPF map as read-only and then re-mmap() it as writable through mprotect(),
    instead of just mmap()'ing it as read/write from the very beginning.
    
    Also, at the suggestion of Jann Horn, drop unnecessary refcounting in mmap
    operations. We can just rely on VMA holding reference to BPF map's file
    properly.
    
    Fixes: fc9702273e2e ("bpf: Add mmap() support for BPF_MAP_TYPE_ARRAY")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: Andrii Nakryiko <andriin@fb.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Reviewed-by: Jann Horn <jannh@google.com>
    Link: https://lore.kernel.org/bpf/20200410202613.3679837-1-andriin@fb.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a24ea17725d5ccac04eb2e24321bec78e15b1f0f
Author: Luke Nelson <lukenels@cs.washington.edu>
Date:   Wed Apr 8 18:12:29 2020 +0000

    arm, bpf: Fix bugs with ALU64 {RSH, ARSH} BPF_K shift by 0
    
    commit bb9562cf5c67813034c96afb50bd21130a504441 upstream.
    
    The current arm BPF JIT does not correctly compile RSH or ARSH when the
    immediate shift amount is 0. This causes the "rsh64 by 0 imm" and "arsh64
    by 0 imm" BPF selftests to hang the kernel by reaching an instruction
    the verifier determines to be unreachable.
    
    The root cause is in how immediate right shifts are encoded on arm.
    For LSR and ASR (logical and arithmetic right shift), a bit-pattern
    of 00000 in the immediate encodes a shift amount of 32. When the BPF
    immediate is 0, the generated code shifts by 32 instead of the expected
    behavior (a no-op).
    
    This patch fixes the bugs by adding an additional check if the BPF
    immediate is 0. After the change, the above mentioned BPF selftests pass.
    
    Fixes: 39c13c204bb11 ("arm: eBPF JIT compiler")
    Co-developed-by: Xi Wang <xi.wang@gmail.com>
    Signed-off-by: Xi Wang <xi.wang@gmail.com>
    Signed-off-by: Luke Nelson <luke.r.nels@gmail.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20200408181229.10909-1-luke.r.nels@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc6365811e005a9c9b6c13ac98fc887db93432d5
Author: Andrey Ignatov <rdna@fb.com>
Date:   Mon Apr 6 22:09:45 2020 -0700

    libbpf: Fix bpf_get_link_xdp_id flags handling
    
    commit f07cbad29741407ace2a9688548fa93d9cb38df3 upstream.
    
    Currently if one of XDP_FLAGS_{DRV,HW,SKB}_MODE flags is passed to
    bpf_get_link_xdp_id() and there is a single XDP program attached to
    ifindex, that program's id will be returned by bpf_get_link_xdp_id() in
    prog_id argument no matter what mode the program is attached in, i.e.
    flags argument is not taken into account.
    
    For example, if there is a single program attached with
    XDP_FLAGS_SKB_MODE but user calls bpf_get_link_xdp_id() with flags =
    XDP_FLAGS_DRV_MODE, that skb program will be returned.
    
    Fix it by returning info->prog_id only if user didn't specify flags. If
    flags is specified then return corresponding mode-specific-field from
    struct xdp_link_info.
    
    The initial error was introduced in commit 50db9f073188 ("libbpf: Add a
    support for getting xdp prog id on ifindex") and then refactored in
    473f4e133a12 so 473f4e133a12 is used in the Fixes tag.
    
    Fixes: 473f4e133a12 ("libbpf: Add bpf_get_link_xdp_info() function to get more XDP information")
    Signed-off-by: Andrey Ignatov <rdna@fb.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Link: https://lore.kernel.org/bpf/0e9e30490b44b447bb2bebc69c7135e7fe7e4e40.1586236080.git.rdna@fb.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66c70a096e7d36b08ae585fefa21c59b9d81c35c
Author: Li RongQing <lirongqing@baidu.com>
Date:   Thu Apr 2 15:52:10 2020 +0800

    xsk: Fix out of boundary write in __xsk_rcv_memcpy
    
    commit db5c97f02373917efe2c218ebf8e3d8b19e343b6 upstream.
    
    first_len is the remainder of the first page we're copying.
    If this size is larger, then out of page boundary write will
    otherwise happen.
    
    Fixes: c05cd3645814 ("xsk: add support to allow unaligned chunk placement")
    Signed-off-by: Li RongQing <lirongqing@baidu.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Jonathan Lemon <jonathan.lemon@gmail.com>
    Acked-by: Björn Töpel <bjorn.topel@intel.com>
    Link: https://lore.kernel.org/bpf/1585813930-19712-1-git-send-email-lirongqing@baidu.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f47ed954c43f5d39ac99bb23f51325ff1aa58068
Author: Michael Walle <michael@walle.cc>
Date:   Fri Mar 27 17:24:50 2020 +0100

    watchdog: sp805: fix restart handler
    
    commit ea104a9e4d3e9ebc26fb78dac35585b142ee288b upstream.
    
    The restart handler is missing two things, first, the registers
    has to be unlocked and second there is no synchronization for the
    write_relaxed() calls.
    
    This was tested on a custom board with the NXP LS1028A SoC.
    
    Fixes: 6c5c0d48b686c ("watchdog: sp805: add restart handler")
    Signed-off-by: Michael Walle <michael@walle.cc>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20200327162450.28506-1-michael@walle.cc
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 247b8ae4c92a2fe0c858d88b72fc801351ce632c
Author: Roman Gushchin <guro@fb.com>
Date:   Fri Feb 28 16:14:11 2020 -0800

    ext4: use non-movable memory for superblock readahead
    
    commit d87f639258a6a5980183f11876c884931ad93da2 upstream.
    
    Since commit a8ac900b8163 ("ext4: use non-movable memory for the
    superblock") buffers for ext4 superblock were allocated using
    the sb_bread_unmovable() helper which allocated buffer heads
    out of non-movable memory blocks. It was necessarily to not block
    page migrations and do not cause cma allocation failures.
    
    However commit 85c8f176a611 ("ext4: preload block group descriptors")
    broke this by introducing pre-reading of the ext4 superblock.
    The problem is that __breadahead() is using __getblk() underneath,
    which allocates buffer heads out of movable memory.
    
    It resulted in page migration failures I've seen on a machine
    with an ext4 partition and a preallocated cma area.
    
    Fix this by introducing sb_breadahead_unmovable() and
    __breadahead_gfp() helpers which use non-movable memory for buffer
    head allocations and use them for the ext4 superblock readahead.
    
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Fixes: 85c8f176a611 ("ext4: preload block group descriptors")
    Signed-off-by: Roman Gushchin <guro@fb.com>
    Link: https://lore.kernel.org/r/20200229001411.128010-1-guro@fb.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b211ae62fd175a4039f12c2581746a469b9b692
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Apr 13 10:20:30 2020 +0200

    ALSA: hda: Honor PM disablement in PM freeze and thaw_noirq ops
    
    commit 10db5bccc390e8e4bd9fcd1fbd4f1b23f271a405 upstream.
    
    freeze_noirq and thaw_noirq need to check the PM availability like
    other PM ops.  There are cases where the device got disabled due to
    the error, and the PM operation should be ignored for that.
    
    Fixes: 3e6db33aaf1d ("ALSA: hda - Set SKL+ hda controller power at freeze() and thaw()")
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=207043
    Link: https://lore.kernel.org/r/20200413082034.25166-3-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 349807540259d6bfbbadc4373c76ba627693afb3
Author: Li Bin <huawei.libin@huawei.com>
Date:   Mon Apr 13 19:29:21 2020 +0800

    scsi: sg: add sg_remove_request in sg_common_write
    
    commit 849f8583e955dbe3a1806e03ecacd5e71cce0a08 upstream.
    
    If the dxfer_len is greater than 256M then the request is invalid and we
    need to call sg_remove_request in sg_common_write.
    
    Link: https://lore.kernel.org/r/1586777361-17339-1-git-send-email-huawei.libin@huawei.com
    Fixes: f930c7043663 ("scsi: sg: only check for dxfer_len greater than 256M")
    Acked-by: Douglas Gilbert <dgilbert@interlog.com>
    Signed-off-by: Li Bin <huawei.libin@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b30fbf9a59831c009d561c0c4fe40813aec94ab4
Author: Josh Poimboeuf <jpoimboe@redhat.com>
Date:   Wed Apr 1 13:23:28 2020 -0500

    objtool: Fix switch table detection in .text.unlikely
    
    commit b401efc120a399dfda1f4d2858a4de365c9b08ef upstream.
    
    If a switch jump table's indirect branch is in a ".cold" subfunction in
    .text.unlikely, objtool doesn't detect it, and instead prints a false
    warning:
    
      drivers/media/v4l2-core/v4l2-ioctl.o: warning: objtool: v4l_print_format.cold()+0xd6: sibling call from callable instruction with modified stack frame
      drivers/hwmon/max6650.o: warning: objtool: max6650_probe.cold()+0xa5: sibling call from callable instruction with modified stack frame
      drivers/media/dvb-frontends/drxk_hard.o: warning: objtool: init_drxk.cold()+0x16f: sibling call from callable instruction with modified stack frame
    
    Fix it by comparing the function, instead of the section and offset.
    
    Fixes: 13810435b9a7 ("objtool: Support GCC 8's cold subfunctions")
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Miroslav Benes <mbenes@suse.cz>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/157c35d42ca9b6354bbb1604fe9ad7d1153ccb21.1585761021.git.jpoimboe@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 738627e6428570c4015f010480240b63c4f0d02c
Author: Luke Nelson <lukenels@cs.washington.edu>
Date:   Thu Apr 9 15:17:52 2020 -0700

    arm, bpf: Fix offset overflow for BPF_MEM BPF_DW
    
    commit 4178417cc5359c329790a4a8f4a6604612338cca upstream.
    
    This patch fixes an incorrect check in how immediate memory offsets are
    computed for BPF_DW on arm.
    
    For BPF_LDX/ST/STX + BPF_DW, the 32-bit arm JIT breaks down an 8-byte
    access into two separate 4-byte accesses using off+0 and off+4. If off
    fits in imm12, the JIT emits a ldr/str instruction with the immediate
    and avoids the use of a temporary register. While the current check off
    <= 0xfff ensures that the first immediate off+0 doesn't overflow imm12,
    it's not sufficient for the second immediate off+4, which may cause the
    second access of BPF_DW to read/write the wrong address.
    
    This patch fixes the problem by changing the check to
    off <= 0xfff - 4 for BPF_DW, ensuring off+4 will never overflow.
    
    A side effect of simplifying the check is that it now allows using
    negative immediate offsets in ldr/str. This means that small negative
    offsets can also avoid the use of a temporary register.
    
    This patch introduces no new failures in test_verifier or test_bpf.c.
    
    Fixes: c5eae692571d6 ("ARM: net: bpf: improve 64-bit store implementation")
    Fixes: ec19e02b343db ("ARM: net: bpf: fix LDX instructions")
    Co-developed-by: Xi Wang <xi.wang@gmail.com>
    Signed-off-by: Xi Wang <xi.wang@gmail.com>
    Signed-off-by: Luke Nelson <luke.r.nels@gmail.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20200409221752.28448-1-luke.r.nels@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 455ae686a0cf7e9ea60bc0135628402360c46114
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Wed Apr 1 17:14:38 2020 +0200

    netfilter: nft_set_rbtree: Drop spurious condition for overlap detection on insertion
    
    commit 72239f2795fab9a58633bd0399698ff7581534a3 upstream.
    
    Case a1. for overlap detection in __nft_rbtree_insert() is not a valid
    one: start-after-start is not needed to detect any type of interval
    overlap and it actually results in a false positive if, while
    descending the tree, this is the only step we hit after starting from
    the root.
    
    This introduced a regression, as reported by Pablo, in Python tests
    cases ip/ip.t and ip/numgen.t:
    
      ip/ip.t: ERROR: line 124: add rule ip test-ip4 input ip hdrlength vmap { 0-4 : drop, 5 : accept, 6 : continue } counter: This rule should not have failed.
      ip/numgen.t: ERROR: line 7: add rule ip test-ip4 pre dnat to numgen inc mod 10 map { 0-5 : 192.168.10.100, 6-9 : 192.168.20.200}: This rule should not have failed.
    
    Drop case a1. and renumber others, so that they are a bit clearer. In
    order for these diagrams to be readily understandable, a bigger rework
    is probably needed, such as an ASCII art of the actual rbtree (instead
    of a flattened version).
    
    Shell script test sets/0044interval_overlap_0 should cover all
    possible cases for false negatives, so I consider that test case still
    sufficient after this change.
    
    v2: Fix comments for cases a3. and b3.
    
    Reported-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Fixes: 7c84d41416d8 ("netfilter: nft_set_rbtree: Detect partial overlaps on insertion")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>