1. 04 Jul, 2022 1 commit
  2. 29 Jun, 2022 2 commits
    • Aneesh Kumar K.V's avatar
      powerpc/memhotplug: Add add_pages override for PPC · ac790d09
      Aneesh Kumar K.V authored
      With commit ffa0b64e ("powerpc: Fix virt_addr_valid() for 64-bit Book3E & 32-bit")
      the kernel now validate the addr against high_memory value. This results
      in the below BUG_ON with dax pfns.
      
      [  635.798741][T26531] kernel BUG at mm/page_alloc.c:5521!
      1:mon> e
      cpu 0x1: Vector: 700 (Program Check) at [c000000007287630]
          pc: c00000000055ed48: free_pages.part.0+0x48/0x110
          lr: c00000000053ca70: tlb_finish_mmu+0x80/0xd0
          sp: c0000000072878d0
         msr: 800000000282b033
        current = 0xc00000000afabe00
        paca    = 0xc00000037ffff300   irqmask: 0x03   irq_happened: 0x05
          pid   = 26531, comm = 50-landscape-sy
      kernel BUG at :5521!
      Linux version 5.19.0-rc3-14659-g4ec05be7c2e1 (kvaneesh@ltc-boston8) (gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #625 SMP Thu Jun 23 00:35:43 CDT 2022
      1:mon> t
      [link register   ] c00000000053ca70 tlb_finish_mmu+0x80/0xd0
      [c0000000072878d0] c00000000053ca54 tlb_finish_mmu+0x64/0xd0 (unreliable)
      [c000000007287900] c000000000539424 exit_mmap+0xe4/0x2a0
      [c0000000072879e0] c00000000019fc1c mmput+0xcc/0x210
      [c000000007287a20] c000000000629230 begin_new_exec+0x5e0/0xf40
      [c000000007287ae0] c00000000070b3cc load_elf_binary+0x3ac/0x1e00
      [c000000007287c10] c000000000627af0 bprm_execve+0x3b0/0xaf0
      [c000000007287cd0] c000000000628414 do_execveat_common.isra.0+0x1e4/0x310
      [c000000007287d80] c00000000062858c sys_execve+0x4c/0x60
      [c000000007287db0] c00000000002c1b0 system_call_exception+0x160/0x2c0
      [c000000007287e10] c00000000000c53c system_call_common+0xec/0x250
      
      The fix is to make sure we update high_memory on memory hotplug.
      This is similar to what x86 does in commit 3072e413 ("mm/memory_hotplug: introduce add_pages")
      
      Fixes: ffa0b64e ("powerpc: Fix virt_addr_valid() for 64-bit Book3E & 32-bit")
      Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
      Reviewed-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20220629050925.31447-1-aneesh.kumar@linux.ibm.com
      ac790d09
    • Naveen N. Rao's avatar
      powerpc/bpf: Fix use of user_pt_regs in uapi · b21bd5a4
      Naveen N. Rao authored
      Trying to build a .c file that includes <linux/bpf_perf_event.h>:
        $ cat test_bpf_headers.c
        #include <linux/bpf_perf_event.h>
      
      throws the below error:
        /usr/include/linux/bpf_perf_event.h:14:28: error: field ‘regs’ has incomplete type
           14 |         bpf_user_pt_regs_t regs;
      	|                            ^~~~
      
      This is because we typedef bpf_user_pt_regs_t to 'struct user_pt_regs'
      in arch/powerpc/include/uaps/asm/bpf_perf_event.h, but 'struct
      user_pt_regs' is not exposed to userspace.
      
      Powerpc has both pt_regs and user_pt_regs structures. However, unlike
      arm64 and s390, we expose user_pt_regs to userspace as just 'pt_regs'.
      As such, we should typedef bpf_user_pt_regs_t to 'struct pt_regs' for
      userspace.
      
      Within the kernel though, we want to typedef bpf_user_pt_regs_t to
      'struct user_pt_regs'.
      
      Remove arch/powerpc/include/uapi/asm/bpf_perf_event.h so that the
      uapi/asm-generic version of the header is exposed to userspace.
      Introduce arch/powerpc/include/asm/bpf_perf_event.h so that we can
      typedef bpf_user_pt_regs_t to 'struct user_pt_regs' for use within the
      kernel.
      
      Note that this was not showing up with the bpf selftest build since
      tools/include/uapi/asm/bpf_perf_event.h didn't include the powerpc
      variant.
      
      Fixes: a6460b03 ("powerpc/bpf: Fix broken uapi for BPF_PROG_TYPE_PERF_EVENT")
      Cc: stable@vger.kernel.org # v4.20+
      Signed-off-by: default avatarNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
      [mpe: Use typical naming for header include guard]
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20220627191119.142867-1-naveen.n.rao@linux.vnet.ibm.com
      b21bd5a4
  3. 24 Jun, 2022 3 commits
    • Liam Howlett's avatar
      powerpc/prom_init: Fix kernel config grep · 6886da5f
      Liam Howlett authored
      When searching for config options, use the KCONFIG_CONFIG shell variable
      so that builds using non-standard config locations work.
      
      Fixes: 26deb043 ("powerpc: prepare string/mem functions for KASAN")
      Cc: stable@vger.kernel.org # v5.2+
      Signed-off-by: default avatarLiam R. Howlett <Liam.Howlett@oracle.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20220624011745.4060795-1-Liam.Howlett@oracle.com
      6886da5f
    • Christophe Leroy's avatar
      powerpc/book3e: Fix PUD allocation size in map_kernel_page() · 98648161
      Christophe Leroy authored
      Commit 2fb47060 ("powerpc: add support for folded p4d page tables")
      erroneously changed PUD setup to a mix of PMD and PUD. Fix it.
      
      While at it, use PTE_TABLE_SIZE instead of PAGE_SIZE for PTE tables
      in order to avoid any confusion.
      
      Fixes: 2fb47060 ("powerpc: add support for folded p4d page tables")
      Cc: stable@vger.kernel.org # v5.8+
      Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
      Acked-by: default avatarMike Rapoport <rppt@linux.ibm.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/95ddfd6176d53e6c85e13bd1c358359daa56775f.1655974558.git.christophe.leroy@csgroup.eu
      98648161
    • Nathan Lynch's avatar
      powerpc/xive/spapr: correct bitmap allocation size · 19fc5bb9
      Nathan Lynch authored
      kasan detects access beyond the end of the xibm->bitmap allocation:
      
      BUG: KASAN: slab-out-of-bounds in _find_first_zero_bit+0x40/0x140
      Read of size 8 at addr c00000001d1d0118 by task swapper/0/1
      
      CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.19.0-rc2-00001-g90df023b36dd #28
      Call Trace:
      [c00000001d98f770] [c0000000012baab8] dump_stack_lvl+0xac/0x108 (unreliable)
      [c00000001d98f7b0] [c00000000068faac] print_report+0x37c/0x710
      [c00000001d98f880] [c0000000006902c0] kasan_report+0x110/0x354
      [c00000001d98f950] [c000000000692324] __asan_load8+0xa4/0xe0
      [c00000001d98f970] [c0000000011c6ed0] _find_first_zero_bit+0x40/0x140
      [c00000001d98f9b0] [c0000000000dbfbc] xive_spapr_get_ipi+0xcc/0x260
      [c00000001d98fa70] [c0000000000d6d28] xive_setup_cpu_ipi+0x1e8/0x450
      [c00000001d98fb30] [c000000004032a20] pSeries_smp_probe+0x5c/0x118
      [c00000001d98fb60] [c000000004018b44] smp_prepare_cpus+0x944/0x9ac
      [c00000001d98fc90] [c000000004009f9c] kernel_init_freeable+0x2d4/0x640
      [c00000001d98fd90] [c0000000000131e8] kernel_init+0x28/0x1d0
      [c00000001d98fe10] [c00000000000cd54] ret_from_kernel_thread+0x5c/0x64
      
      Allocated by task 0:
       kasan_save_stack+0x34/0x70
       __kasan_kmalloc+0xb4/0xf0
       __kmalloc+0x268/0x540
       xive_spapr_init+0x4d0/0x77c
       pseries_init_irq+0x40/0x27c
       init_IRQ+0x44/0x84
       start_kernel+0x2a4/0x538
       start_here_common+0x1c/0x20
      
      The buggy address belongs to the object at c00000001d1d0118
       which belongs to the cache kmalloc-8 of size 8
      The buggy address is located 0 bytes inside of
       8-byte region [c00000001d1d0118, c00000001d1d0120)
      
      The buggy address belongs to the physical page:
      page:c00c000000074740 refcount:1 mapcount:0 mapping:0000000000000000 index:0xc00000001d1d0558 pfn:0x1d1d
      flags: 0x7ffff000000200(slab|node=0|zone=0|lastcpupid=0x7ffff)
      raw: 007ffff000000200 c00000001d0003c8 c00000001d0003c8 c00000001d010480
      raw: c00000001d1d0558 0000000001e1000a 00000001ffffffff 0000000000000000
      page dumped because: kasan: bad access detected
      
      Memory state around the buggy address:
       c00000001d1d0000: fc 00 fc fc fc fc fc fc fc fc fc fc fc fc fc fc
       c00000001d1d0080: fc fc 00 fc fc fc fc fc fc fc fc fc fc fc fc fc
      >c00000001d1d0100: fc fc fc 02 fc fc fc fc fc fc fc fc fc fc fc fc
                                  ^
       c00000001d1d0180: fc fc fc fc 04 fc fc fc fc fc fc fc fc fc fc fc
       c00000001d1d0200: fc fc fc fc fc 04 fc fc fc fc fc fc fc fc fc fc
      
      This happens because the allocation uses the wrong unit (bits) when it
      should pass (BITS_TO_LONGS(count) * sizeof(long)) or equivalent. With small
      numbers of bits, the allocated object can be smaller than sizeof(long),
      which results in invalid accesses.
      
      Use bitmap_zalloc() to allocate and initialize the irq bitmap, paired with
      bitmap_free() for consistency.
      Signed-off-by: default avatarNathan Lynch <nathanl@linux.ibm.com>
      Reviewed-by: default avatarCédric Le Goater <clg@kaod.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20220623182509.3985625-1-nathanl@linux.ibm.com
      19fc5bb9
  4. 22 Jun, 2022 1 commit
  5. 19 Jun, 2022 1 commit
  6. 18 Jun, 2022 5 commits
  7. 12 Jun, 2022 10 commits
  8. 11 Jun, 2022 9 commits
    • Linus Torvalds's avatar
      Merge tag 'gpio-fixes-for-v5.19-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux · 7a68065e
      Linus Torvalds authored
      Pull gpio fixes from Bartosz Golaszewski:
       "A set of fixes. Most address the new warning we emit at build time
        when irq chips are not immutable with some additional tweaks to
        gpio-crystalcove from Andy and a small tweak to gpio-dwapd.
      
         - make irq_chip structs immutable in several Diolan and intel drivers
           to get rid of the new warning we emit when fiddling with irq chips
      
         - don't print error messages on probe deferral in gpio-dwapb"
      
      * tag 'gpio-fixes-for-v5.19-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
        gpio: dwapb: Don't print error on -EPROBE_DEFER
        gpio: dln2: make irq_chip immutable
        gpio: sch: make irq_chip immutable
        gpio: merrifield: make irq_chip immutable
        gpio: wcove: make irq_chip immutable
        gpio: crystalcove: Join function declarations and long lines
        gpio: crystalcove: Use specific type and API for IRQ number
        gpio: crystalcove: make irq_chip immutable
      7a68065e
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · cecb3540
      Linus Torvalds authored
      Pull SCSI fixes from James Bottomley:
       "Driver fixes and and one core patch.
      
        Nine of the driver patches are minor fixes and reworks to lpfc and the
        rest are trivial and minor fixes elsewhere"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        scsi: pmcraid: Fix missing resource cleanup in error case
        scsi: ipr: Fix missing/incorrect resource cleanup in error case
        scsi: mpt3sas: Fix out-of-bounds compiler warning
        scsi: lpfc: Update lpfc version to 14.2.0.4
        scsi: lpfc: Allow reduced polling rate for nvme_admin_async_event cmd completion
        scsi: lpfc: Add more logging of cmd and cqe information for aborted NVMe cmds
        scsi: lpfc: Fix port stuck in bypassed state after LIP in PT2PT topology
        scsi: lpfc: Resolve NULL ptr dereference after an ELS LOGO is aborted
        scsi: lpfc: Address NULL pointer dereference after starget_to_rport()
        scsi: lpfc: Resolve some cleanup issues following SLI path refactoring
        scsi: lpfc: Resolve some cleanup issues following abort path refactoring
        scsi: lpfc: Correct BDE type for XMIT_SEQ64_WQE in lpfc_ct_reject_event()
        scsi: vmw_pvscsi: Expand vcpuHint to 16 bits
        scsi: sd: Fix interpretation of VPD B9h length
      cecb3540
    • Linus Torvalds's avatar
      Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost · abe71eb3
      Linus Torvalds authored
      Pull virtio fixes from Michael Tsirkin:
       "Fixes all over the place, most notably fixes for latent bugs in
        drivers that got exposed by suppressing interrupts before DRIVER_OK,
        which in turn has been done by 8b4ec69d ("virtio: harden vring
        IRQ")"
      
      * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
        um: virt-pci: set device ready in probe()
        vdpa: make get_vq_group and set_group_asid optional
        virtio: Fix all occurences of the "the the" typo
        vduse: Fix NULL pointer dereference on sysfs access
        vringh: Fix loop descriptors check in the indirect cases
        vdpa/mlx5: clean up indenting in handle_ctrl_vlan()
        vdpa/mlx5: fix error code for deleting vlan
        virtio-mmio: fix missing put_device() when vm_cmdline_parent registration failed
        vdpa/mlx5: Fix syntax errors in comments
        virtio-rng: make device ready before making request
      abe71eb3
    • Linus Torvalds's avatar
      Merge tag 'loongarch-fixes-5.19-1' of... · 0678afa6
      Linus Torvalds authored
      Merge tag 'loongarch-fixes-5.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
      
      Pull LoongArch fixes from Huacai Chen.
       "Fix build errors and a stale comment"
      
      * tag 'loongarch-fixes-5.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson:
        LoongArch: Remove MIPS comment about cycle counter
        LoongArch: Fix copy_thread() build errors
        LoongArch: Fix the !CONFIG_SMP build
      0678afa6
    • Linus Torvalds's avatar
      iov_iter: fix build issue due to possible type mis-match · 1c27f1fc
      Linus Torvalds authored
      Commit 6c776766 ("iov_iter: Fix iter_xarray_get_pages{,_alloc}()")
      introduced a problem on some 32-bit architectures (at least arm, xtensa,
      csky,sparc and mips), that have a 'size_t' that is 'unsigned int'.
      
      The reason is that we now do
      
          min(nr * PAGE_SIZE - offset, maxsize);
      
      where 'nr' and 'offset' and both 'unsigned int', and PAGE_SIZE is
      'unsigned long'.  As a result, the normal C type rules means that the
      first argument to 'min()' ends up being 'unsigned long'.
      
      In contrast, 'maxsize' is of type 'size_t'.
      
      Now, 'size_t' and 'unsigned long' are always the same physical type in
      the kernel, so you'd think this doesn't matter, and from an actual
      arithmetic standpoint it doesn't.
      
      But on 32-bit architectures 'size_t' is commonly 'unsigned int', even if
      it could also be 'unsigned long'.  In that situation, both are unsigned
      32-bit types, but they are not the *same* type.
      
      And as a result 'min()' will complain about the distinct types (ignore
      the "pointer types" part of the error message: that's an artifact of the
      way we have made 'min()' check types for being the same):
      
        lib/iov_iter.c: In function 'iter_xarray_get_pages':
        include/linux/minmax.h:20:35: error: comparison of distinct pointer types lacks a cast [-Werror]
           20 |         (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
              |                                   ^~
        lib/iov_iter.c:1464:16: note: in expansion of macro 'min'
         1464 |         return min(nr * PAGE_SIZE - offset, maxsize);
              |                ^~~
      
      This was not visible on 64-bit architectures (where we always define
      'size_t' to be 'unsigned long').
      
      Force these cases to use 'min_t(size_t, x, y)' to make the type explicit
      and avoid the issue.
      
      [ Nit-picky note: technically 'size_t' doesn't have to match 'unsigned
        long' arithmetically. We've certainly historically seen environments
        with 16-bit address spaces and 32-bit 'unsigned long'.
      
        Similarly, even in 64-bit modern environments, 'size_t' could be its
        own type distinct from 'unsigned long', even if it were arithmetically
        identical.
      
        So the above type commentary is only really descriptive of the kernel
        environment, not some kind of universal truth for the kinds of wild
        and crazy situations that are allowed by the C standard ]
      Reported-by: default avatarSudip Mukherjee <sudipm.mukherjee@gmail.com>
      Link: https://lore.kernel.org/all/YqRyL2sIqQNDfky2@debian/
      Cc: Jeff Layton <jlayton@kernel.org>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1c27f1fc
    • Jason A. Donenfeld's avatar
      wireguard: selftests: use maximum cpu features and allow rng seeding · 17b0128a
      Jason A. Donenfeld authored
      By forcing the maximum CPU that QEMU has available, we expose additional
      capabilities, such as the RNDR instruction, which increases test
      coverage. This then allows the CI to skip the fake seeding step in some
      cases. Also enable STRICT_KERNEL_RWX to catch issues related to early
      jump labels when the RNG is initialized at boot.
      Signed-off-by: default avatarJason A. Donenfeld <Jason@zx2c4.com>
      17b0128a
    • Kuan-Ying Lee's avatar
      scripts/gdb: change kernel config dumping method · 1f7a6cf6
      Kuan-Ying Lee authored
      MAGIC_START("IKCFG_ST") and MAGIC_END("IKCFG_ED") are moved out
      from the kernel_config_data variable.
      
      Thus, we parse kernel_config_data directly instead of considering
      offset of MAGIC_START and MAGIC_END.
      
      Fixes: 13610aa9 ("kernel/configs: use .incbin directive to embed config_data.gz")
      Signed-off-by: default avatarKuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      1f7a6cf6
    • Vincent Whitchurch's avatar
      um: virt-pci: set device ready in probe() · eacea844
      Vincent Whitchurch authored
      Call virtio_device_ready() to make this driver work after commit
      b4ec69d7e09 ("virtio: harden vring IRQ"), since the driver uses the
      virtqueues in the probe function.  (The virtio core sets the device
      ready when probe returns.)
      
      Fixes: 8b4ec69d ("virtio: harden vring IRQ")
      Fixes: 68f5d3f3 ("um: add PCI over virtio emulation driver")
      Signed-off-by: default avatarVincent Whitchurch <vincent.whitchurch@axis.com>
      Message-Id: <20220610151203.3492541-1-vincent.whitchurch@axis.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Tested-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      eacea844
    • Linus Torvalds's avatar
      Merge tag 'nfsd-5.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux · 0885eacd
      Linus Torvalds authored
      Pull nfsd fixes from Chuck Lever:
       "Notable changes:
      
         - There is now a backup maintainer for NFSD
      
        Notable fixes:
      
         - Prevent array overruns in svc_rdma_build_writes()
      
         - Prevent buffer overruns when encoding NFSv3 READDIR results
      
         - Fix a potential UAF in nfsd_file_put()"
      
      * tag 'nfsd-5.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux:
        SUNRPC: Remove pointer type casts from xdr_get_next_encode_buffer()
        SUNRPC: Clean up xdr_get_next_encode_buffer()
        SUNRPC: Clean up xdr_commit_encode()
        SUNRPC: Optimize xdr_reserve_space()
        SUNRPC: Fix the calculation of xdr->end in xdr_get_next_encode_buffer()
        SUNRPC: Trap RDMA segment overflows
        NFSD: Fix potential use-after-free in nfsd_file_put()
        MAINTAINERS: reciprocal co-maintainership for file locking and nfsd
      0885eacd
  9. 10 Jun, 2022 8 commits