Skip to content
  1. May 08, 2021
    • Linus Torvalds's avatar
      Merge tag 'block-5.13-2021-05-07' of git://git.kernel.dk/linux-block · bd313968
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
      
       - dasd spelling fixes (Bhaskar)
      
       - Limit bio max size on multi-page bvecs to the hardware limit, to
         avoid overly large bio's (and hence latencies). Originally queued for
         the merge window, but needed a fix and was dropped from the initial
         pull (Changheun)
      
       - NVMe pull request (Christoph):
            - reset the bdev to ns head when failover (Daniel Wagner)
            - remove unsupported command noise (Keith Busch)
            - misc passthrough improvements (Kanchan Joshi)
            - fix controller ioctl through ns_head (Minwoo Im)
            - fix controller timeouts during reset (Tao Chiu)
      
       - rnbd fixes/cleanups (Gioh, Md, Dima)
      
       - Fix iov_iter re-expansion (yangerkun)
      
      * tag 'block-5.13-2021-05-07' of git://git.kernel.dk/linux-block:
        block: reexpand iov_iter after read/write
        nvmet: remove unsupported command noise
        nvme-multipath: reset bdev to ns head when failover
        nvme-pci: fix controller reset hang when racing with nvme_timeout
        nvme: move the fabrics queue ready check routines to core
        nvme: avoid memset for passthrough requests
        nvme: add nvme_get_ns helper
        nvme: fix controller ioctl through ns_head
        bio: limit bio max size
        RDMA/rtrs: fix uninitialized symbol 'cnt'
        s390: dasd: Mundane spelling fixes
        block/rnbd: Remove all likely and unlikely
        block/rnbd-clt: Check the return value of the function rtrs_clt_query
        block/rnbd: Fix style issues
        block/rnbd-clt: Change queue_depth type in rnbd_clt_session to size_t
      bd313968
    • Linus Torvalds's avatar
      Merge tag 'io_uring-5.13-2021-05-07' of git://git.kernel.dk/linux-block · 28b4afeb
      Linus Torvalds authored
      Pull io_uring fixes from Jens Axboe:
       "Mostly fixes for merge window merged code. In detail:
      
         - Error case memory leak fixes (Colin, Zqiang)
      
         - Add the tools/io_uring/ to the list of maintained files (Lukas)
      
         - Set of fixes for the modified buffer registration API (Pavel)
      
         - Sanitize io thread setup on x86 (Stefan)
      
         - Ensure we truncate transfer count for registered buffers (Thadeu)"
      
      * tag 'io_uring-5.13-2021-05-07' of git://git.kernel.dk/linux-block:
        x86/process: setup io_threads more like normal user space threads
        MAINTAINERS: add io_uring tool to IO_URING
        io_uring: truncate lengths larger than MAX_RW_COUNT on provide buffers
        io_uring: Fix memory leak in io_sqe_buffers_register()
        io_uring: Fix premature return from loop and memory leak
        io_uring: fix unchecked error in switch_start()
        io_uring: allow empty slots for reg buffers
        io_uring: add more build check for uapi
        io_uring: dont overlap internal and user req flags
        io_uring: fix drain with rsrc CQEs
      28b4afeb
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-5.13-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · a647034f
      Linus Torvalds authored
      Pull NFS client updates from Trond Myklebust:
       "Highlights include:
      
        Stable fixes:
      
         - Add validation of the UDP retrans parameter to prevent shift
           out-of-bounds
      
         - Don't discard pNFS layout segments that are marked for return
      
        Bugfixes:
      
         - Fix a NULL dereference crash in xprt_complete_bc_request() when the
           NFSv4.1 server misbehaves.
      
         - Fix the handling of NFS READDIR cookie verifiers
      
         - Sundry fixes to ensure attribute revalidation works correctly when
           the server does not return post-op attributes.
      
         - nfs4_bitmask_adjust() must not change the server global bitmasks
      
         - Fix major timeout handling in the RPC code.
      
         - NFSv4.2 fallocate() fixes.
      
         - Fix the NFSv4.2 SEEK_HOLE/SEEK_DATA end-of-file handling
      
         - Copy offload attribute revalidation fixes
      
         - Fix an incorrect filehandle size check in the pNFS flexfiles driver
      
         - Fix several RDMA transport setup/teardown races
      
         - Fix several RDMA queue wrapping issues
      
         - Fix a misplaced memory read barrier in sunrpc's call_decode()
      
        Features:
      
         - Micro optimisation of the TCP transmission queue using TCP_CORK
      
         - statx() performance improvements by further splitting up the
           tracking of invalid cached file metadata.
      
         - Support the NFSv4.2 'change_attr_type' attribute and use it to
           optimise handling of change attribute updates"
      
      * tag 'nfs-for-5.13-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (85 commits)
        xprtrdma: Fix a NULL dereference in frwr_unmap_sync()
        sunrpc: Fix misplaced barrier in call_decode
        NFSv4.2: Remove ifdef CONFIG_NFSD from NFSv4.2 client SSC code.
        xprtrdma: Move fr_mr field to struct rpcrdma_mr
        xprtrdma: Move the Work Request union to struct rpcrdma_mr
        xprtrdma: Move fr_linv_done field to struct rpcrdma_mr
        xprtrdma: Move cqe to struct rpcrdma_mr
        xprtrdma: Move fr_cid to struct rpcrdma_mr
        xprtrdma: Remove the RPC/RDMA QP event handler
        xprtrdma: Don't display r_xprt memory addresses in tracepoints
        xprtrdma: Add an rpcrdma_mr_completion_class
        xprtrdma: Add tracepoints showing FastReg WRs and remote invalidation
        xprtrdma: Avoid Send Queue wrapping
        xprtrdma: Do not wake RPC consumer on a failed LocalInv
        xprtrdma: Do not recycle MR after FastReg/LocalInv flushes
        xprtrdma: Clarify use of barrier in frwr_wc_localinv_done()
        xprtrdma: Rename frwr_release_mr()
        xprtrdma: rpcrdma_mr_pop() already does list_del_init()
        xprtrdma: Delete rpcrdma_recv_buffer_put()
        xprtrdma: Fix cwnd update ordering
        ...
      a647034f
    • Linus Torvalds's avatar
      Merge tag '9p-for-5.13-rc1' of git://github.com/martinetd/linux · e22e9832
      Linus Torvalds authored
      Pull 9p updates from Dominique Martinet:
       "An error handling fix and constification"
      
      * tag '9p-for-5.13-rc1' of git://github.com/martinetd/linux:
        fs: 9p: fix v9fs_file_open writeback fid error check
        9p: Constify static struct v9fs_attr_group
      e22e9832
  2. May 07, 2021
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · a48b0872
      Linus Torvalds authored
      Merge yet more updates from Andrew Morton:
       "This is everything else from -mm for this merge window.
      
        90 patches.
      
        Subsystems affected by this patch series: mm (cleanups and slub),
        alpha, procfs, sysctl, misc, core-kernel, bitmap, lib, compat,
        checkpatch, epoll, isofs, nilfs2, hpfs, exit, fork, kexec, gcov,
        panic, delayacct, gdb, resource, selftests, async, initramfs, ipc,
        drivers/char, and spelling"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (90 commits)
        mm: fix typos in comments
        mm: fix typos in comments
        treewide: remove editor modelines and cruft
        ipc/sem.c: spelling fix
        fs: fat: fix spelling typo of values
        kernel/sys.c: fix typo
        kernel/up.c: fix typo
        kernel/user_namespace.c: fix typos
        kernel/umh.c: fix some spelling mistakes
        include/linux/pgtable.h: few spelling fixes
        mm/slab.c: fix spelling mistake "disired" -> "desired"
        scripts/spelling.txt: add "overflw"
        scripts/spelling.txt: Add "diabled" typo
        scripts/spelling.txt: add "overlfow"
        arm: print alloc free paths for address in registers
        mm/vmalloc: remove vwrite()
        mm: remove xlate_dev_kmem_ptr()
        drivers/char: remove /dev/kmem for good
        mm: fix some typos and code style problems
        ipc/sem.c: mundane typo fixes
        ...
      a48b0872
    • Lu Jialin's avatar
      mm: fix typos in comments · baf2f90b
      Lu Jialin authored
      
      
      succed -> succeed in mm/hugetlb.c
      wil -> will in mm/mempolicy.c
      wit -> with in mm/page_alloc.c
      Retruns -> Returns in mm/page_vma_mapped.c
      confict -> conflict in mm/secretmem.c
      No functionality changed.
      
      Link: https://lkml.kernel.org/r/20210408140027.60623-1-lujialin4@huawei.com
      Signed-off-by: default avatarLu Jialin <lujialin4@huawei.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      baf2f90b
    • Ingo Molnar's avatar
      mm: fix typos in comments · f0953a1b
      Ingo Molnar authored
      
      
      Fix ~94 single-word typos in locking code comments, plus a few
      very obvious grammar mistakes.
      
      Link: https://lkml.kernel.org/r/20210322212624.GA1963421@gmail.com
      Link: https://lore.kernel.org/r/20210322205203.GB1959563@gmail.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Reviewed-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
      Reviewed-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Cc: Bhaskar Chowdhury <unixbhaskar@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f0953a1b
    • Masahiro Yamada's avatar
      treewide: remove editor modelines and cruft · fa60ce2c
      Masahiro Yamada authored
      
      
      The section "19) Editor modelines and other cruft" in
      Documentation/process/coding-style.rst clearly says, "Do not include any
      of these in source files."
      
      I recently receive a patch to explicitly add a new one.
      
      Let's do treewide cleanups, otherwise some people follow the existing code
      and attempt to upstream their favoriate editor setups.
      
      It is even nicer if scripts/checkpatch.pl can check it.
      
      If we like to impose coding style in an editor-independent manner, I think
      editorconfig (patch [1]) is a saner solution.
      
      [1] https://lore.kernel.org/lkml/20200703073143.423557-1-danny@kdrag0n.dev/
      
      Link: https://lkml.kernel.org/r/20210324054457.1477489-1-masahiroy@kernel.org
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Acked-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Reviewed-by: Miguel Ojeda <ojeda@kernel.org>	[auxdisplay]
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      fa60ce2c
    • Bhaskar Chowdhury's avatar
      ipc/sem.c: spelling fix · 7497835f
      Bhaskar Chowdhury authored
      
      
      s/purpuse/purpose/
      
      Link: https://lkml.kernel.org/r/20210319221432.26631-1-unixbhaskar@gmail.com
      Signed-off-by: default avatarBhaskar Chowdhury <unixbhaskar@gmail.com>
      Acked-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7497835f
    • dingsenjie's avatar
      fs: fat: fix spelling typo of values · a109ae2a
      dingsenjie authored
      
      
      vaules -> values
      
      Link: https://lkml.kernel.org/r/20210302034817.30384-1-dingsenjie@163.com
      Signed-off-by: default avatardingsenjie <dingsenjie@yulong.com>
      Acked-by: default avatarOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a109ae2a
    • Xiaofeng Cao's avatar
      kernel/sys.c: fix typo · 5afe69c2
      Xiaofeng Cao authored
      
      
      change 'infite'     to 'infinite'
      change 'concurent'  to 'concurrent'
      change 'memvers'    to 'members'
      change 'decendants' to 'descendants'
      change 'argumets'   to 'arguments'
      
      Link: https://lkml.kernel.org/r/20210316112904.10661-1-cxfcosmos@gmail.com
      Signed-off-by: default avatarXiaofeng Cao <caoxiaofeng@yulong.com>
      Acked-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5afe69c2
    • Bhaskar Chowdhury's avatar
      kernel/up.c: fix typo · f0fffaff
      Bhaskar Chowdhury authored
      
      
      s/condtions/conditions/
      
      Link: https://lkml.kernel.org/r/20210317032732.3260835-1-unixbhaskar@gmail.com
      Signed-off-by: default avatarBhaskar Chowdhury <unixbhaskar@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f0fffaff
    • Xiaofeng Cao's avatar
      kernel/user_namespace.c: fix typos · a12f4f85
      Xiaofeng Cao authored
      
      
      change 'verifing' to 'verifying'
      change 'certaint' to 'certain'
      change 'approprpiate' to 'appropriate'
      
      Link: https://lkml.kernel.org/r/20210317100129.12440-1-caoxiaofeng@yulong.com
      Signed-off-by: default avatarXiaofeng Cao <caoxiaofeng@yulong.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a12f4f85
    • zhouchuangao's avatar
      kernel/umh.c: fix some spelling mistakes · 48207f7d
      zhouchuangao authored
      
      
      Fix some spelling mistakes, and modify the order of the parameter comments
      to be consistent with the order of the parameters passed to the function.
      
      Link: https://lkml.kernel.org/r/1615636139-4076-1-git-send-email-zhouchuangao@vivo.com
      Signed-off-by: default avatarzhouchuangao <zhouchuangao@vivo.com>
      Acked-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      48207f7d
    • Bhaskar Chowdhury's avatar
      include/linux/pgtable.h: few spelling fixes · 2eb70aab
      Bhaskar Chowdhury authored
      
      
      Few spelling fixes throughout the file.
      
      Link: https://lkml.kernel.org/r/20210318201404.6380-1-unixbhaskar@gmail.com
      Signed-off-by: default avatarBhaskar Chowdhury <unixbhaskar@gmail.com>
      Acked-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2eb70aab
    • Colin Ian King's avatar
      mm/slab.c: fix spelling mistake "disired" -> "desired" · 80d01558
      Colin Ian King authored
      
      
      There is a spelling mistake in a comment. Fix it.
      
      Link: https://lkml.kernel.org/r/20210317094158.5762-1-colin.king@canonical.com
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      80d01558
    • Drew Fustini's avatar
      scripts/spelling.txt: add "overflw" · d4e3e52b
      Drew Fustini authored
      
      
      Add typo "overflw" for "overflow".  This typo was found and fixed in
      drivers/clocksource/timer-pistachio.c.
      
      Link: https://lore.kernel.org/lkml/20210305090315.384547-1-drew@beagleboard.org/
      Link: https://lkml.kernel.org/r/20210305095151.388182-1-drew@beagleboard.org
      Signed-off-by: default avatarDrew Fustini <drew@beagleboard.org>
      Suggested-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d4e3e52b
    • zuoqilin's avatar
      scripts/spelling.txt: Add "diabled" typo · a4799be5
      zuoqilin authored
      
      
      Increase "diabled" spelling error check.
      
      Link: https://lkml.kernel.org/r/20210304070106.2313-1-zuoqilin1@163.com
      Signed-off-by: default avatarzuoqilin <zuoqilin@yulong.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a4799be5
    • Drew Fustini's avatar
      scripts/spelling.txt: add "overlfow" · 702850a4
      Drew Fustini authored
      
      
      Add typo "overlfow" for "overflow". This typo was found and fixed in
      net/sctp/tsnmap.c.
      
      Link: https://lore.kernel.org/netdev/20210304055548.56829-1-drew@beagleboard.org/
      Link: https://lkml.kernel.org/r/20210304072657.64577-1-drew@beagleboard.org
      Signed-off-by: default avatarDrew Fustini <drew@beagleboard.org>
      Suggested-by: default avatarKees Cook <keescook@chromium.org>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      702850a4
    • Maninder Singh's avatar
      arm: print alloc free paths for address in registers · 5aa6b70e
      Maninder Singh authored
      
      
      In case of a use after free kernel oops, the freeing path of the object
      is required to debug futher.  In most of cases the object address is
      present in one of the registers.
      
      Thus check the register's address and if it belongs to slab, print its
      alloc and free path.
      
      e.g. in the below issue register r6 belongs to slab, and a use after
      free issue occurred on one of its dereferenced values:
      
        Unable to handle kernel paging request at virtual address 6b6b6b6f
        ....
        pc : [<c0538afc>]    lr : [<c0465674>]    psr: 60000013
        sp : c8927d40  ip : ffffefff  fp : c8aa8020
        r10: c8927e10  r9 : 00000001  r8 : 00400cc0
        r7 : 00000000  r6 : c8ab0180  r5 : c1804a80  r4 : c8aa8008
        r3 : c1a5661c  r2 : 00000000  r1 : 6b6b6b6b  r0 : c139bf48
        .....
        Register r6 information: slab kmalloc-64 start c8ab0140 data offset 64 pointer offset 0 size 64 allocated at meminfo_proc_show+0x40/0x4fc
            meminfo_proc_show+0x40/0x4fc
            seq_read_iter+0x18c/0x4c4
            proc_reg_read_iter+0x84/0xac
            generic_file_splice_read+0xe8/0x17c
            splice_direct_to_actor+0xb8/0x290
            do_splice_direct+0xa0/0xe0
            do_sendfile+0x2d0/0x438
            sys_sendfile64+0x12c/0x140
            ret_fast_syscall+0x0/0x58
            0xbeeacde4
         Free path:
            meminfo_proc_show+0x5c/0x4fc
            seq_read_iter+0x18c/0x4c4
            proc_reg_read_iter+0x84/0xac
            generic_file_splice_read+0xe8/0x17c
            splice_direct_to_actor+0xb8/0x290
            do_splice_direct+0xa0/0xe0
            do_sendfile+0x2d0/0x438
            sys_sendfile64+0x12c/0x140
            ret_fast_syscall+0x0/0x58
            0xbeeacde4
      
      Link: https://lkml.kernel.org/r/1615891032-29160-3-git-send-email-maninder1.s@samsung.com
      Co-developed-by: default avatarVaneet Narang <v.narang@samsung.com>
      Signed-off-by: default avatarVaneet Narang <v.narang@samsung.com>
      Signed-off-by: default avatarManinder Singh <maninder1.s@samsung.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Dmitry Safonov <0x7f454c46@gmail.com>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: Paul E. McKenney <paulmck@kernel.org>
      Cc: Pekka Enberg <penberg@kernel.org>
      Cc: Russell King <linux@armlinux.org.uk>
      Cc: Vlastimil Babka <vbabka@suse.cz>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5aa6b70e
    • David Hildenbrand's avatar
      mm/vmalloc: remove vwrite() · f7c8ce44
      David Hildenbrand authored
      
      
      The last user (/dev/kmem) is gone. Let's drop it.
      
      Link: https://lkml.kernel.org/r/20210324102351.6932-4-david@redhat.com
      Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Hillf Danton <hdanton@sina.com>
      Cc: Matthew Wilcox <willy@infradead.org>
      Cc: Oleksiy Avramchenko <oleksiy.avramchenko@sonymobile.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: huang ying <huang.ying.caritas@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f7c8ce44
    • David Hildenbrand's avatar
      mm: remove xlate_dev_kmem_ptr() · f2e762ba
      David Hildenbrand authored
      
      
      Since /dev/kmem has been removed, let's remove the xlate_dev_kmem_ptr()
      leftovers.
      
      Link: https://lkml.kernel.org/r/20210324102351.6932-3-david@redhat.com
      Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
      Acked-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      Cc: Matt Turner <mattst88@gmail.com>
      Cc: Russell King <linux@armlinux.org.uk>
      Cc: Brian Cain <bcain@codeaurora.org>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
      Cc: Helge Deller <deller@gmx.de>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Heiko Carstens <hca@linux.ibm.com>
      Cc: Vasily Gorbik <gor@linux.ibm.com>
      Cc: Christian Borntraeger <borntraeger@de.ibm.com>
      Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
      Cc: Rich Felker <dalias@libc.org>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: David Hildenbrand <david@redhat.com>
      Cc: Krzysztof Kozlowski <krzk@kernel.org>
      Cc: Mikulas Patocka <mpatocka@redhat.com>
      Cc: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
      Cc: Mike Rapoport <rppt@kernel.org>
      Cc: Palmer Dabbelt <palmerdabbelt@google.com>
      Cc: Luis Chamberlain <mcgrof@kernel.org>
      Cc: Greentime Hu <green.hu@gmail.com>
      Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
      Cc: Randy Dunlap <rdunlap@infradead.org>
      Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>
      Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org>
      Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
      Cc: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
      Cc: Niklas Schnelle <schnelle@linux.ibm.com>
      Cc: Pierre Morel <pmorel@linux.ibm.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f2e762ba
    • David Hildenbrand's avatar
      drivers/char: remove /dev/kmem for good · bbcd53c9
      David Hildenbrand authored
      
      
      Patch series "drivers/char: remove /dev/kmem for good".
      
      Exploring /dev/kmem and /dev/mem in the context of memory hot(un)plug and
      memory ballooning, I started questioning the existence of /dev/kmem.
      
      Comparing it with the /proc/kcore implementation, it does not seem to be
      able to deal with things like
      
      a) Pages unmapped from the direct mapping (e.g., to be used by secretmem)
        -> kern_addr_valid(). virt_addr_valid() is not sufficient.
      
      b) Special cases like gart aperture memory that is not to be touched
        -> mem_pfn_is_ram()
      
      Unless I am missing something, it's at least broken in some cases and might
      fault/crash the machine.
      
      Looks like its existence has been questioned before in 2005 and 2010 [1],
      after ~11 additional years, it might make sense to revive the discussion.
      
      CONFIG_DEVKMEM is only enabled in a single defconfig (on purpose or by
      mistake?).  All distributions disable it: in Ubuntu it has been disabled
      for more than 10 years, in Debian since 2.6.31, in Fedora at least
      starting with FC3, in RHEL starting with RHEL4, in SUSE starting from
      15sp2, and OpenSUSE has it disabled as well.
      
      1) /dev/kmem was popular for rootkits [2] before it got disabled
         basically everywhere. Ubuntu documents [3] "There is no modern user of
         /dev/kmem any more beyond attackers using it to load kernel rootkits.".
         RHEL documents in a BZ [5] "it served no practical purpose other than to
         serve as a potential security problem or to enable binary module drivers
         to access structures/functions they shouldn't be touching"
      
      2) /proc/kcore is a decent interface to have a controlled way to read
         kernel memory for debugging puposes. (will need some extensions to
         deal with memory offlining/unplug, memory ballooning, and poisoned
         pages, though)
      
      3) It might be useful for corner case debugging [1]. KDB/KGDB might be a
         better fit, especially, to write random memory; harder to shoot
         yourself into the foot.
      
      4) "Kernel Memory Editor" [4] hasn't seen any updates since 2000 and seems
         to be incompatible with 64bit [1]. For educational purposes,
         /proc/kcore might be used to monitor value updates -- or older
         kernels can be used.
      
      5) It's broken on arm64, and therefore, completely disabled there.
      
      Looks like it's essentially unused and has been replaced by better
      suited interfaces for individual tasks (/proc/kcore, KDB/KGDB). Let's
      just remove it.
      
      [1] https://lwn.net/Articles/147901/
      [2] https://www.linuxjournal.com/article/10505
      [3] https://wiki.ubuntu.com/Security/Features#A.2Fdev.2Fkmem_disabled
      [4] https://sourceforge.net/projects/kme/
      [5] https://bugzilla.redhat.com/show_bug.cgi?id=154796
      
      Link: https://lkml.kernel.org/r/20210324102351.6932-1-david@redhat.com
      Link: https://lkml.kernel.org/r/20210324102351.6932-2-david@redhat.com
      Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: "Alexander A. Klimov" <grandmaster@al2klimov.de>
      Cc: Alexander Viro <viro@zeniv.linux.org.uk>
      Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Brian Cain <bcain@codeaurora.org>
      Cc: Christian Borntraeger <borntraeger@de.ibm.com>
      Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
      Cc: Chris Zankel <chris@zankel.net>
      Cc: Corentin Labbe <clabbe@baylibre.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
      Cc: Greentime Hu <green.hu@gmail.com>
      Cc: Gregory Clement <gregory.clement@bootlin.com>
      Cc: Heiko Carstens <hca@linux.ibm.com>
      Cc: Helge Deller <deller@gmx.de>
      Cc: Hillf Danton <hdanton@sina.com>
      Cc: huang ying <huang.ying.caritas@gmail.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
      Cc: James Troup <james.troup@canonical.com>
      Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>
      Cc: Jonas Bonn <jonas@southpole.se>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Cc: Kairui Song <kasong@redhat.com>
      Cc: Krzysztof Kozlowski <krzk@kernel.org>
      Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Cc: Liviu Dudau <liviu.dudau@arm.com>
      Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Cc: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
      Cc: Luis Chamberlain <mcgrof@kernel.org>
      Cc: Matthew Wilcox <willy@infradead.org>
      Cc: Matt Turner <mattst88@gmail.com>
      Cc: Max Filippov <jcmvbkbc@gmail.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Mike Rapoport <rppt@kernel.org>
      Cc: Mikulas Patocka <mpatocka@redhat.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Niklas Schnelle <schnelle@linux.ibm.com>
      Cc: Oleksiy Avramchenko <oleksiy.avramchenko@sonymobile.com>
      Cc: openrisc@lists.librecores.org
      Cc: Palmer Dabbelt <palmerdabbelt@google.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: "Pavel Machek (CIP)" <pavel@denx.de>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org>
      Cc: Pierre Morel <pmorel@linux.ibm.com>
      Cc: Randy Dunlap <rdunlap@infradead.org>
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: Rich Felker <dalias@libc.org>
      Cc: Robert Richter <rric@kernel.org>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Russell King <linux@armlinux.org.uk>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
      Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
      Cc: sparclinux@vger.kernel.org
      Cc: Stafford Horne <shorne@gmail.com>
      Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Sudeep Holla <sudeep.holla@arm.com>
      Cc: Theodore Dubois <tblodt@icloud.com>
      Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vasily Gorbik <gor@linux.ibm.com>
      Cc: Viresh Kumar <viresh.kumar@linaro.org>
      Cc: William Cohen <wcohen@redhat.com>
      Cc: Xiaoming Ni <nixiaoming@huawei.com>
      Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      bbcd53c9
    • Shijie Luo's avatar
      mm: fix some typos and code style problems · cb152a1a
      Shijie Luo authored
      
      
      fix some typos and code style problems in mm.
      
      gfp.h: s/MAXNODES/MAX_NUMNODES
      mmzone.h: s/then/than
      rmap.c: s/__vma_split()/__vma_adjust()
      swap.c: s/__mod_zone_page_stat/__mod_zone_page_state, s/is is/is
      swap_state.c: s/whoes/whose
      z3fold.c: code style problem fix in z3fold_unregister_migration
      zsmalloc.c: s/of/or, s/give/given
      
      Link: https://lkml.kernel.org/r/20210419083057.64820-1-luoshijie1@huawei.com
      Signed-off-by: default avatarShijie Luo <luoshijie1@huawei.com>
      Signed-off-by: default avatarMiaohe Lin <linmiaohe@huawei.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      cb152a1a
    • Bhaskar Chowdhury's avatar
      ipc/sem.c: mundane typo fixes · b1989a3d
      Bhaskar Chowdhury authored
      
      
      s/runtine/runtime/
      s/AQUIRE/ACQUIRE/
      s/seperately/separately/
      s/wont/won\'t/
      s/succesfull/successful/
      
      Link: https://lkml.kernel.org/r/20210326022240.26375-1-unixbhaskar@gmail.com
      Signed-off-by: default avatarBhaskar Chowdhury <unixbhaskar@gmail.com>
      Acked-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b1989a3d
    • Rasmus Villemoes's avatar
      modules: add CONFIG_MODPROBE_PATH · 17652f42
      Rasmus Villemoes authored
      
      
      Allow the developer to specifiy the initial value of the modprobe_path[]
      string.  This can be used to set it to the empty string initially, thus
      effectively disabling request_module() during early boot until userspace
      writes a new value via the /proc/sys/kernel/modprobe interface.  [1]
      
      When building a custom kernel (often for an embedded target), it's normal
      to build everything into the kernel that is needed for booting, and indeed
      the initramfs often contains no modules at all, so every such
      request_module() done before userspace init has mounted the real rootfs is
      a waste of time.
      
      This is particularly useful when combined with the previous patch, which
      made the initramfs unpacking asynchronous - for that to work, it had to
      make any usermodehelper call wait for the unpacking to finish before
      attempting to invoke the userspace helper.  By eliminating all such
      (known-to-be-futile) calls of usermodehelper, the initramfs unpacking and
      the {device,late}_initcalls can proceed in parallel for much longer.
      
      For a relatively slow ppc board I'm working on, the two patches combined
      lead to 0.2s faster boot - but more importantly, the fact that the
      initramfs unpacking proceeds completely in the background while devices
      get probed means I get to handle the gpio watchdog in time without getting
      reset.
      
      [1] __request_module() already has an early -ENOENT return when
      modprobe_path is the empty string.
      
      Link: https://lkml.kernel.org/r/20210313212528.2956377-3-linux@rasmusvillemoes.dk
      Signed-off-by: default avatarRasmus Villemoes <linux@rasmusvillemoes.dk>
      Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Acked-by: default avatarJessica Yu <jeyu@kernel.org>
      Acked-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Takashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      17652f42
    • Rasmus Villemoes's avatar
      init/initramfs.c: do unpacking asynchronously · e7cb072e
      Rasmus Villemoes authored
      
      
      Patch series "background initramfs unpacking, and CONFIG_MODPROBE_PATH", v3.
      
      These two patches are independent, but better-together.
      
      The second is a rather trivial patch that simply allows the developer to
      change "/sbin/modprobe" to something else - e.g.  the empty string, so
      that all request_module() during early boot return -ENOENT early, without
      even spawning a usermode helper, needlessly synchronizing with the
      initramfs unpacking.
      
      The first patch delegates decompressing the initramfs to a worker thread,
      allowing do_initcalls() in main.c to proceed to the device_ and late_
      initcalls without waiting for that decompression (and populating of
      rootfs) to finish.  Obviously, some of those later calls may rely on the
      initramfs being available, so I've added synchronization points in the
      firmware loader and usermodehelper paths - there might be other places
      that would need this, but so far no one has been able to think of any
      places I have missed.
      
      There's not much to win if most of the functionality needed during boot is
      only available as modules.  But systems with a custom-made .config and
      initramfs can boot faster, partly due to utilizing more than one cpu
      earlier, partly by avoiding known-futile modprobe calls (which would still
      trigger synchronization with the initramfs unpacking, thus eliminating
      most of the first benefit).
      
      This patch (of 2):
      
      Most of the boot process doesn't actually need anything from the
      initramfs, until of course PID1 is to be executed.  So instead of doing
      the decompressing and populating of the initramfs synchronously in
      populate_rootfs() itself, push that off to a worker thread.
      
      This is primarily motivated by an embedded ppc target, where unpacking
      even the rather modest sized initramfs takes 0.6 seconds, which is long
      enough that the external watchdog becomes unhappy that it doesn't get
      attention soon enough.  By doing the initramfs decompression in a worker
      thread, we get to do the device_initcalls and hence start petting the
      watchdog much sooner.
      
      Normal desktops might benefit as well.  On my mostly stock Ubuntu kernel,
      my initramfs is a 26M xz-compressed blob, decompressing to around 126M.
      That takes almost two seconds:
      
      [    0.201454] Trying to unpack rootfs image as initramfs...
      [    1.976633] Freeing initrd memory: 29416K
      
      Before this patch, these lines occur consecutively in dmesg.  With this
      patch, the timestamps on these two lines is roughly the same as above, but
      with 172 lines inbetween - so more than one cpu has been kept busy doing
      work that would otherwise only happen after the populate_rootfs()
      finished.
      
      Should one of the initcalls done after rootfs_initcall time (i.e., device_
      and late_ initcalls) need something from the initramfs (say, a kernel
      module or a firmware blob), it will simply wait for the initramfs
      unpacking to be done before proceeding, which should in theory make this
      completely safe.
      
      But if some driver pokes around in the filesystem directly and not via one
      of the official kernel interfaces (i.e.  request_firmware*(),
      call_usermodehelper*) that theory may not hold - also, I certainly might
      have missed a spot when sprinkling wait_for_initramfs().  So there is an
      escape hatch in the form of an initramfs_async= command line parameter.
      
      Link: https://lkml.kernel.org/r/20210313212528.2956377-1-linux@rasmusvillemoes.dk
      Link: https://lkml.kernel.org/r/20210313212528.2956377-2-linux@rasmusvillemoes.dk
      Signed-off-by: default avatarRasmus Villemoes <linux@rasmusvillemoes.dk>
      Reviewed-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
      Cc: Jessica Yu <jeyu@kernel.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Takashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e7cb072e
    • Rasmus Villemoes's avatar
      kernel/async.c: remove async_unregister_domain() · a065c0fa
      Rasmus Villemoes authored
      
      
      No callers in the tree.
      
      Link: https://lkml.kernel.org/r/20210309151723.1907838-2-linux@rasmusvillemoes.dk
      Signed-off-by: default avatarRasmus Villemoes <linux@rasmusvillemoes.dk>
      Cc: Tejun Heo <tj@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a065c0fa
    • Rasmus Villemoes's avatar
      kernel/async.c: stop guarding pr_debug() statements · 07416af1
      Rasmus Villemoes authored
      
      
      It's currently nigh impossible to get these pr_debug()s to print
      something.  Being guarded by initcall_debug means one has to enable tons
      of other debug output during boot, and the system_state condition further
      means it's impossible to get them when loading modules later.
      
      Also, the compiler can't know that these global conditions do not change,
      so there are W=2 warnings
      
      kernel/async.c:125:9: warning: `calltime' may be used uninitialized in this function [-Wmaybe-uninitialized]
      kernel/async.c:300:9: warning: `starttime' may be used uninitialized in this function [-Wmaybe-uninitialized]
      
      Make it possible, for a DYNAMIC_DEBUG kernel, to get these to print their
      messages by booting with appropriate 'dyndbg="file async.c +p"' command
      line argument.  For a non-DYNAMIC_DEBUG kernel, pr_debug() compiles to
      nothing.
      
      This does cost doing an unconditional ktime_get() for the starttime value,
      but the corresponding ktime_get for the end time can be elided by
      factoring it into a function which only gets called if the printk()
      arguments end up being evaluated.
      
      Link: https://lkml.kernel.org/r/20210309151723.1907838-1-linux@rasmusvillemoes.dk
      Signed-off-by: default avatarRasmus Villemoes <linux@rasmusvillemoes.dk>
      Cc: Tejun Heo <tj@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      07416af1
    • Zhang Yunkai's avatar
      selftests: remove duplicate include · 9c39c6ff
      Zhang Yunkai authored
      
      
      'assert.h' included in 'sparsebit.c' is duplicated.
      It is also included in the 161th line.
      'string.h' included in 'mincore_selftest.c' is duplicated.
      It is also included in the 15th line.
      'sched.h' included in 'tlbie_test.c' is duplicated.
      It is also included in the 33th line.
      
      Link: https://lkml.kernel.org/r/20210316073336.426255-1-zhang.yunkai@zte.com.cn
      Signed-off-by: default avatarZhang Yunkai <zhang.yunkai@zte.com.cn>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Shuah Khan <shuah@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9c39c6ff
    • Alistair Popple's avatar
      kernel/resource: fix locking in request_free_mem_region · 56fd9491
      Alistair Popple authored
      
      
      request_free_mem_region() is used to find an empty range of physical
      addresses for hotplugging ZONE_DEVICE memory.  It does this by iterating
      over the range of possible addresses using region_intersects() to see if
      the range is free before calling request_mem_region() to allocate the
      region.
      
      However the resource_lock is dropped between these two calls meaning by
      the time request_mem_region() is called in request_free_mem_region()
      another thread may have already reserved the requested region.  This
      results in unexpected failures and a message in the kernel log from
      hitting this condition:
      
              /*
               * mm/hmm.c reserves physical addresses which then
               * become unavailable to other users.  Conflicts are
               * not expected.  Warn to aid debugging if encountered.
               */
              if (conflict->desc == IORES_DESC_DEVICE_PRIVATE_MEMORY) {
                      pr_warn("Unaddressable device %s %pR conflicts with %pR",
                              conflict->name, conflict, res);
      
      These unexpected failures can be corrected by holding resource_lock across
      the two calls.  This also requires memory allocation to be performed prior
      to taking the lock.
      
      Link: https://lkml.kernel.org/r/20210419070109.4780-3-apopple@nvidia.com
      Signed-off-by: default avatarAlistair Popple <apopple@nvidia.com>
      Reviewed-by: default avatarDavid Hildenbrand <david@redhat.com>
      Cc: Balbir Singh <bsingharora@gmail.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Jerome Glisse <jglisse@redhat.com>
      Cc: John Hubbard <jhubbard@nvidia.com>
      Cc: Muchun Song <smuchun@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      56fd9491
    • Alistair Popple's avatar
      kernel/resource: refactor __request_region to allow external locking · 63cdafe0
      Alistair Popple authored
      
      
      Refactor the portion of __request_region() done whilst holding the
      resource_lock into a separate function to allow callers to hold the lock.
      
      Link: https://lkml.kernel.org/r/20210419070109.4780-2-apopple@nvidia.com
      Signed-off-by: default avatarAlistair Popple <apopple@nvidia.com>
      Reviewed-by: default avatarDavid Hildenbrand <david@redhat.com>
      Cc: Balbir Singh <bsingharora@gmail.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Jerome Glisse <jglisse@redhat.com>
      Cc: John Hubbard <jhubbard@nvidia.com>
      Cc: Muchun Song <smuchun@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      63cdafe0
    • Alistair Popple's avatar
      kernel/resource: allow region_intersects users to hold resource_lock · d486ccb2
      Alistair Popple authored
      
      
      Introduce a version of region_intersects() that can be called with the
      resource_lock already held.
      
      This will be used in a future fix to __request_free_mem_region().
      
      [akpm@linux-foundation.org: make __region_intersects static]
      
      Link: https://lkml.kernel.org/r/20210419070109.4780-1-apopple@nvidia.com
      Signed-off-by: default avatarAlistair Popple <apopple@nvidia.com>
      Cc: David Hildenbrand <david@redhat.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: John Hubbard <jhubbard@nvidia.com>
      Cc: Jerome Glisse <jglisse@redhat.com>
      Cc: Balbir Singh <bsingharora@gmail.com>
      Cc: Muchun Song <smuchun@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d486ccb2
    • David Hildenbrand's avatar
      kernel/resource: remove first_lvl / siblings_only logic · 97523a4e
      David Hildenbrand authored
      
      
      All functions that search for IORESOURCE_SYSTEM_RAM or IORESOURCE_MEM
      resources now properly consider the whole resource tree, not just the
      first level.  Let's drop the unused first_lvl / siblings_only logic.
      
      Remove documentation that indicates that some functions behave differently,
      all consider the full resource tree now.
      
      Link: https://lkml.kernel.org/r/20210325115326.7826-4-david@redhat.com
      Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
      Reviewed-by: default avatarDan Williams <dan.j.williams@intel.com>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
      Cc: Dave Young <dyoung@redhat.com>
      Cc: Baoquan He <bhe@redhat.com>
      Cc: Vivek Goyal <vgoyal@redhat.com>
      Cc: Dave Hansen <dave.hansen@linux.intel.com>
      Cc: Keith Busch <keith.busch@intel.com>
      Cc: Michal Hocko <mhocko@suse.com>
      Cc: Qian Cai <cai@lca.pw>
      Cc: Oscar Salvador <osalvador@suse.de>
      Cc: Eric Biederman <ebiederm@xmission.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Tom Lendacky <thomas.lendacky@amd.com>
      Cc: Brijesh Singh <brijesh.singh@amd.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      97523a4e
    • David Hildenbrand's avatar
      kernel/resource: make walk_mem_res() find all busy IORESOURCE_MEM resources · 3c9c7975
      David Hildenbrand authored
      It used to be true that we can have system RAM (IORESOURCE_SYSTEM_RAM |
      IORESOURCE_BUSY) only on the first level in the resource tree.  However,
      this is no longer holds for driver-managed system RAM (i.e., added via
      dax/kmem and virtio-mem), which gets added on lower levels, for example,
      inside device containers.
      
      IORESOURCE_SYSTEM_RAM is defined as IORESOURCE_MEM | IORESOURCE_SYSRAM and
      just a special type of IORESOURCE_MEM.
      
      The function walk_mem_res() only considers the first level and is used in
      arch/x86/mm/ioremap.c:__ioremap_check_mem() only.  We currently fail to
      identify System RAM added by dax/kmem and virtio-mem as
      "IORES_MAP_SYSTEM_RAM", for example, allowing for remapping of such
      "normal RAM" in __ioremap_caller().
      
      Let's find all IORESOURCE_MEM | IORESOURCE_BUSY resources, making the
      function behave similar to walk_system_ram_res().
      
      Link: https://lkml.kernel.org/r/20210325115326.7826-3-david@redhat.com
      Fixes: ebf71552 ("virtio-mem: Add parent resource for all added "System RAM"")
      Fixes: c221c0b0
      
       ("device-dax: "Hotplug" persistent memory for use like normal RAM")
      Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
      Reviewed-by: default avatarDan Williams <dan.j.williams@intel.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
      Cc: Dave Young <dyoung@redhat.com>
      Cc: Baoquan He <bhe@redhat.com>
      Cc: Vivek Goyal <vgoyal@redhat.com>
      Cc: Dave Hansen <dave.hansen@linux.intel.com>
      Cc: Keith Busch <keith.busch@intel.com>
      Cc: Michal Hocko <mhocko@suse.com>
      Cc: Qian Cai <cai@lca.pw>
      Cc: Oscar Salvador <osalvador@suse.de>
      Cc: Eric Biederman <ebiederm@xmission.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Tom Lendacky <thomas.lendacky@amd.com>
      Cc: Brijesh Singh <brijesh.singh@amd.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3c9c7975
    • David Hildenbrand's avatar
      kernel/resource: make walk_system_ram_res() find all busy IORESOURCE_SYSTEM_RAM resources · 97f61c8f
      David Hildenbrand authored
      Patch series "kernel/resource: make walk_system_ram_res() and walk_mem_res() search the whole tree", v2.
      
      Playing with kdump+virtio-mem I noticed that kexec_file_load() does not
      consider System RAM added via dax/kmem and virtio-mem when preparing the
      elf header for kdump.  Looking into the details, the logic used in
      walk_system_ram_res() and walk_mem_res() seems to be outdated.
      
      walk_system_ram_range() already does the right thing, let's change
      walk_system_ram_res() and walk_mem_res(), and clean up.
      
      Loading a kdump kernel via "kexec -p -s" ...  will result in the kdump
      kernel to also dump dax/kmem and virtio-mem added System RAM now.
      
      Note: kexec-tools on x86-64 also have to be updated to consider this
      memory in the kexec_load() case when processing /proc/iomem.
      
      This patch (of 3):
      
      It used to be true that we can have system RAM (IORESOURCE_SYSTEM_RAM |
      IORESOURCE_BUSY) only on the first level in the resource tree.  However,
      this is no longer holds for driver-managed system RAM (i.e., added via
      dax/kmem and virtio-mem), which gets added on lower levels, for example,
      inside device containers.
      
      We have two users of walk_system_ram_res(), which currently only
      consideres the first level:
      
      a) kernel/kexec_file.c:kexec_walk_resources() -- We properly skip
         IORESOURCE_SYSRAM_DRIVER_MANAGED resources via
         locate_mem_hole_callback(), so even after this change, we won't be
         placing kexec images onto dax/kmem and virtio-mem added memory.  No
         change.
      
      b) arch/x86/kernel/crash.c:fill_up_crash_elf_data() -- we're currently
         not adding relevant ranges to the crash elf header, resulting in them
         not getting dumped via kdump.
      
      This change fixes loading a crashkernel via kexec_file_load() and
      including dax/kmem and virtio-mem added System RAM in the crashdump on
      x86-64.  Note that e.g,, arm64 relies on memblock data and, therefore,
      always considers all added System RAM already.
      
      Let's find all IORESOURCE_SYSTEM_RAM | IORESOURCE_BUSY resources, making
      the function behave like walk_system_ram_range().
      
      Link: https://lkml.kernel.org/r/20210325115326.7826-1-david@redhat.com
      Link: https://lkml.kernel.org/r/20210325115326.7826-2-david@redhat.com
      Fixes: ebf71552 ("virtio-mem: Add parent resource for all added "System RAM"")
      Fixes: c221c0b0
      
       ("device-dax: "Hotplug" persistent memory for use like normal RAM")
      Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
      Reviewed-by: default avatarDan Williams <dan.j.williams@intel.com>
      Acked-by: default avatarBaoquan He <bhe@redhat.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
      Cc: Dave Young <dyoung@redhat.com>
      Cc: Baoquan He <bhe@redhat.com>
      Cc: Vivek Goyal <vgoyal@redhat.com>
      Cc: Dave Hansen <dave.hansen@linux.intel.com>
      Cc: Keith Busch <keith.busch@intel.com>
      Cc: Michal Hocko <mhocko@suse.com>
      Cc: Qian Cai <cai@lca.pw>
      Cc: Oscar Salvador <osalvador@suse.de>
      Cc: Eric Biederman <ebiederm@xmission.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Tom Lendacky <thomas.lendacky@amd.com>
      Cc: Brijesh Singh <brijesh.singh@amd.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      97f61c8f
    • Barry Song's avatar
      scripts/gdb: add lx_current support for arm64 · 526940e3
      Barry Song authored
      
      
      arm64 uses SP_EL0 to save the current task_struct address.  While running
      in EL0, SP_EL0 is clobbered by userspace.  So if the upper bit is not 1
      (not TTBR1), the current address is invalid.  This patch checks the upper
      bit of SP_EL0, if the upper bit is 1, lx_current() of arm64 will return
      the derefrence of current task.  Otherwise, lx_current() will tell users
      they are running in userspace(EL0).
      
      While arm64 is running in EL0, it is actually pointless to print current
      task as the memory of kernel space is not accessible in EL0.
      
      Link: https://lkml.kernel.org/r/20210314203444.15188-3-song.bao.hua@hisilicon.com
      Signed-off-by: default avatarBarry Song <song.bao.hua@hisilicon.com>
      Cc: Jan Kiszka <jan.kiszka@siemens.com>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Cc: Kieran Bingham <kbingham@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      526940e3
    • Barry Song's avatar
      scripts/gdb: document lx_current is only supported by x86 · dc958682
      Barry Song authored
      
      
      Patch series "scripts/gdb: clarify the platforms supporting lx_current and add arm64 support", v2.
      
      lx_current depends on per_cpu current_task variable which exists on x86
      only.  so it actually works on x86 only.  the 1st patch documents this
      clearly; the 2nd patch adds support for arm64.
      
      This patch (of 2):
      
      x86 is the only architecture which has per_cpu current_task:
      
        arch$ git grep current_task | grep -i per_cpu
        x86/include/asm/current.h:DECLARE_PER_CPU(struct task_struct *, current_task);
        x86/kernel/cpu/common.c:DEFINE_PER_CPU(struct task_struct *, current_task) ____cacheline_aligned =
        x86/kernel/cpu/common.c:EXPORT_PER_CPU_SYMBOL(current_task);
        x86/kernel/cpu/common.c:DEFINE_PER_CPU(struct task_struct *, current_task) = &init_task;
        x86/kernel/cpu/common.c:EXPORT_PER_CPU_SYMBOL(current_task);
        x86/kernel/smpboot.c:	per_cpu(current_task, cpu) = idle;
      
      On other architectures, lx_current() will lead to a python exception:
      
        (gdb) p $lx_current().pid
        Python Exception <class 'gdb.error'> No symbol "current_task" in current context.:
        Error occurred in Python: No symbol "current_task" in current context.
      
      To avoid more people struggling and wasting time in other architectures,
      document it.
      
      Link: https://lkml.kernel.org/r/20210314203444.15188-1-song.bao.hua@hisilicon.com
      Link: https://lkml.kernel.org/r/20210314203444.15188-2-song.bao.hua@hisilicon.com
      Signed-off-by: default avatarBarry Song <song.bao.hua@hisilicon.com>
      Cc: Jan Kiszka <jan.kiszka@siemens.com>
      Cc: Kieran Bingham <kbingham@kernel.org>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      dc958682
    • Johannes Berg's avatar
      gdb: lx-symbols: store the abspath() · 23921540
      Johannes Berg authored
      
      
      If we store the relative path, the user might later cd to a different
      directory, and that would break the automatic symbol resolving that
      happens when a module is loaded into the target kernel.  Fix this by
      storing the abspath() of each path given, just like we already do for the
      cwd (os.getcwd() is absolute.)
      
      Link: https://lkml.kernel.org/r/20201217091747.bf4332cf2b35.I10ebbdb7e9b80ab1a5cddebf53d073be8232d656@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Reviewed-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
      Cc: Kieran Bingham <kbingham@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      23921540
    • Yafang Shao's avatar
      delayacct: clear right task's flag after blkio completes · 3d1c7fd9
      Yafang Shao authored
      When I was implementing a latency analyzer tool by using task->delays
      and other things, I found an issue in delayacct.  The issue is it should
      clear the target's flag instead of current's in delayacct_blkio_end().
      
      When I git blame delayacct, I found there're some similar issues we have
      fixed in delayacct_blkio_end().
      
       - Commit c96f5471 ("delayacct: Account blkio completion on the
         correct task") fixed the issue that it should account blkio
         completion on the target task instead of current.
      
       - Commit b512719f
      
       ("delayacct: fix crash in delayacct_blkio_end()
         after delayacct init failure") fixed the issue that it should check
         target task's delays instead of current task'.
      
      It seems that delayacct_blkio_{begin, end} are error prone.
      
      So I introduce a new paratmeter - the target task 'p' - to these
      helpers.  After that change, the callsite will specifilly set the right
      task, which should make it less error prone.
      
      Link: https://lkml.kernel.org/r/20210414083720.24083-1-laoar.shao@gmail.com
      Signed-off-by: default avatarYafang Shao <laoar.shao@gmail.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Josh Snyder <joshs@netflix.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Ingo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3d1c7fd9