1. 05 Apr, 2024 7 commits
    • David Hildenbrand's avatar
      x86/mm/pat: fix VM_PAT handling in COW mappings · 04c35ab3
      David Hildenbrand authored
      PAT handling won't do the right thing in COW mappings: the first PTE (or,
      in fact, all PTEs) can be replaced during write faults to point at anon
      folios.  Reliably recovering the correct PFN and cachemode using
      follow_phys() from PTEs will not work in COW mappings.
      
      Using follow_phys(), we might just get the address+protection of the anon
      folio (which is very wrong), or fail on swap/nonswap entries, failing
      follow_phys() and triggering a WARN_ON_ONCE() in untrack_pfn() and
      track_pfn_copy(), not properly calling free_pfn_range().
      
      In free_pfn_range(), we either wouldn't call memtype_free() or would call
      it with the wrong range, possibly leaking memory.
      
      To fix that, let's update follow_phys() to refuse returning anon folios,
      and fallback to using the stored PFN inside vma->vm_pgoff for COW mappings
      if we run into that.
      
      We will now properly handle untrack_pfn() with COW mappings, where we
      don't need the cachemode.  We'll have to fail fork()->track_pfn_copy() if
      the first page was replaced by an anon folio, though: we'd have to store
      the cachemode in the VMA to make this work, likely growing the VMA size.
      
      For now, lets keep it simple and let track_pfn_copy() just fail in that
      case: it would have failed in the past with swap/nonswap entries already,
      and it would have done the wrong thing with anon folios.
      
      Simple reproducer to trigger the WARN_ON_ONCE() in untrack_pfn():
      
      <--- C reproducer --->
       #include <stdio.h>
       #include <sys/mman.h>
       #include <unistd.h>
       #include <liburing.h>
      
       int main(void)
       {
               struct io_uring_params p = {};
               int ring_fd;
               size_t size;
               char *map;
      
               ring_fd = io_uring_setup(1, &p);
               if (ring_fd < 0) {
                       perror("io_uring_setup");
                       return 1;
               }
               size = p.sq_off.array + p.sq_entries * sizeof(unsigned);
      
               /* Map the submission queue ring MAP_PRIVATE */
               map = mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE,
                          ring_fd, IORING_OFF_SQ_RING);
               if (map == MAP_FAILED) {
                       perror("mmap");
                       return 1;
               }
      
               /* We have at least one page. Let's COW it. */
               *map = 0;
               pause();
               return 0;
       }
      <--- C reproducer --->
      
      On a system with 16 GiB RAM and swap configured:
       # ./iouring &
       # memhog 16G
       # killall iouring
      [  301.552930] ------------[ cut here ]------------
      [  301.553285] WARNING: CPU: 7 PID: 1402 at arch/x86/mm/pat/memtype.c:1060 untrack_pfn+0xf4/0x100
      [  301.553989] Modules linked in: binfmt_misc nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_g
      [  301.558232] CPU: 7 PID: 1402 Comm: iouring Not tainted 6.7.5-100.fc38.x86_64 #1
      [  301.558772] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebu4
      [  301.559569] RIP: 0010:untrack_pfn+0xf4/0x100
      [  301.559893] Code: 75 c4 eb cf 48 8b 43 10 8b a8 e8 00 00 00 3b 6b 28 74 b8 48 8b 7b 30 e8 ea 1a f7 000
      [  301.561189] RSP: 0018:ffffba2c0377fab8 EFLAGS: 00010282
      [  301.561590] RAX: 00000000ffffffea RBX: ffff9208c8ce9cc0 RCX: 000000010455e047
      [  301.562105] RDX: 07fffffff0eb1e0a RSI: 0000000000000000 RDI: ffff9208c391d200
      [  301.562628] RBP: 0000000000000000 R08: ffffba2c0377fab8 R09: 0000000000000000
      [  301.563145] R10: ffff9208d2292d50 R11: 0000000000000002 R12: 00007fea890e0000
      [  301.563669] R13: 0000000000000000 R14: ffffba2c0377fc08 R15: 0000000000000000
      [  301.564186] FS:  0000000000000000(0000) GS:ffff920c2fbc0000(0000) knlGS:0000000000000000
      [  301.564773] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  301.565197] CR2: 00007fea88ee8a20 CR3: 00000001033a8000 CR4: 0000000000750ef0
      [  301.565725] PKRU: 55555554
      [  301.565944] Call Trace:
      [  301.566148]  <TASK>
      [  301.566325]  ? untrack_pfn+0xf4/0x100
      [  301.566618]  ? __warn+0x81/0x130
      [  301.566876]  ? untrack_pfn+0xf4/0x100
      [  301.567163]  ? report_bug+0x171/0x1a0
      [  301.567466]  ? handle_bug+0x3c/0x80
      [  301.567743]  ? exc_invalid_op+0x17/0x70
      [  301.568038]  ? asm_exc_invalid_op+0x1a/0x20
      [  301.568363]  ? untrack_pfn+0xf4/0x100
      [  301.568660]  ? untrack_pfn+0x65/0x100
      [  301.568947]  unmap_single_vma+0xa6/0xe0
      [  301.569247]  unmap_vmas+0xb5/0x190
      [  301.569532]  exit_mmap+0xec/0x340
      [  301.569801]  __mmput+0x3e/0x130
      [  301.570051]  do_exit+0x305/0xaf0
      ...
      
      Link: https://lkml.kernel.org/r/20240403212131.929421-3-david@redhat.comSigned-off-by: default avatarDavid Hildenbrand <david@redhat.com>
      Reported-by: default avatarWupeng Ma <mawupeng1@huawei.com>
      Closes: https://lkml.kernel.org/r/20240227122814.3781907-1-mawupeng1@huawei.com
      Fixes: b1a86e15 ("x86, pat: remove the dependency on 'vm_pgoff' in track/untrack pfn vma routines")
      Fixes: 5899329b ("x86: PAT: implement track/untrack of pfnmap regions for x86 - v3")
      Acked-by: default avatarIngo Molnar <mingo@kernel.org>
      Cc: Dave Hansen <dave.hansen@linux.intel.com>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      04c35ab3
    • Alexey Makhalov's avatar
      MAINTAINERS: change vmware.com addresses to broadcom.com · 87f0e65c
      Alexey Makhalov authored
      Update all remaining vmware.com email addresses to actual broadcom.com.
      
      Add corresponding .mailmap entries for maintainers who contributed in the
      past as the vmware.com address will start bouncing soon.
      
      Maintainership update. Jeff Sipek has left VMware, Nick Shi will be
      maintaining VMware PTP.
      
      Link: https://lkml.kernel.org/r/20240402232334.33167-1-alexey.makhalov@broadcom.comSigned-off-by: default avatarAlexey Makhalov <alexey.makhalov@broadcom.com>
      Acked-by: default avatarFlorian Fainelli <florian.fainelli@broadcom.com>
      Acked-by: default avatarAjay Kaher <ajay.kaher@broadcom.com>
      Acked-by: default avatarRonak Doshi <ronak.doshi@broadcom.com>
      Acked-by: default avatarNick Shi <nick.shi@broadcom.com>
      Acked-by: default avatarBryan Tan <bryan-bt.tan@broadcom.com>
      Acked-by: default avatarVishnu Dasa <vishnu.dasa@broadcom.com>
      Acked-by: default avatarVishal Bhakta <vishal.bhakta@broadcom.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      87f0e65c
    • Edward Liaw's avatar
      selftests/mm: include strings.h for ffsl · 176517c9
      Edward Liaw authored
      Got a compilation error on Android for ffsl after 91b80cc5
      ("selftests: mm: fix map_hugetlb failure on 64K page size systems")
      included vm_util.h.
      
      Link: https://lkml.kernel.org/r/20240329185814.16304-1-edliaw@google.com
      Fixes: af605d26 ("selftests/mm: merge util.h into vm_util.h")
      Signed-off-by: default avatarEdward Liaw <edliaw@google.com>
      Reviewed-by: default avatarMuhammad Usama Anjum <usama.anjum@collabora.com>
      Cc: Axel Rasmussen <axelrasmussen@google.com>
      Cc: David Hildenbrand <david@redhat.com>
      Cc: "Mike Rapoport (IBM)" <rppt@kernel.org>
      Cc: Peter Xu <peterx@redhat.com>
      Cc: Shuah Khan <shuah@kernel.org>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      176517c9
    • Uladzislau Rezki (Sony)'s avatar
      mm: vmalloc: fix lockdep warning · fc2c2269
      Uladzislau Rezki (Sony) authored
      A lockdep reports a possible deadlock in the find_vmap_area_exceed_addr_lock()
      function:
      
      ============================================
      WARNING: possible recursive locking detected
      6.9.0-rc1-00060-ged3ccc57b108-dirty #6140 Not tainted
      --------------------------------------------
      drgn/455 is trying to acquire lock:
      ffff0000c00131d0 (&vn->busy.lock/1){+.+.}-{2:2}, at: find_vmap_area_exceed_addr_lock+0x64/0x124
      
      but task is already holding lock:
      ffff0000c0011878 (&vn->busy.lock/1){+.+.}-{2:2}, at: find_vmap_area_exceed_addr_lock+0x64/0x124
      
      other info that might help us debug this:
       Possible unsafe locking scenario:
      
             CPU0
             ----
        lock(&vn->busy.lock/1);
        lock(&vn->busy.lock/1);
      
       *** DEADLOCK ***
      
      indeed it can happen if the find_vmap_area_exceed_addr_lock() gets called
      concurrently because it tries to acquire two nodes locks.  It was done to
      prevent removing a lowest VA found on a previous step.
      
      To address this a lowest VA is found first without holding a node lock
      where it resides.  As a last step we check if a VA still there because it
      can go away, if removed, proceed with next lowest.
      
      [akpm@linux-foundation.org: fix comment typos, per Baoquan]
      Link: https://lkml.kernel.org/r/20240328140330.4747-1-urezki@gmail.com
      Fixes: 53becf32 ("mm: vmalloc: support multiple nodes in vread_iter")
      Signed-off-by: default avatarUladzislau Rezki (Sony) <urezki@gmail.com>
      Tested-by: default avatarJens Axboe <axboe@kernel.dk>
      Tested-by: default avatarOmar Sandoval <osandov@fb.com>
      Reported-by: default avatarJens Axboe <axboe@kernel.dk>
      Cc: Baoquan He <bhe@redhat.com>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Dave Chinner <david@fromorbit.com>
      Cc: Lorenzo Stoakes <lstoakes@gmail.com>
      Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
      Cc: Oleksiy Avramchenko <oleksiy.avramchenko@sony.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      fc2c2269
    • Uladzislau Rezki (Sony)'s avatar
      mm: vmalloc: bail out early in find_vmap_area() if vmap is not init · 4ed91fa9
      Uladzislau Rezki (Sony) authored
      During the boot the s390 system triggers "spinlock bad magic" messages
      if the spinlock debugging is enabled:
      
      [    0.465445] BUG: spinlock bad magic on CPU#0, swapper/0
      [    0.465490]  lock: single+0x1860/0x1958, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
      [    0.466067] CPU: 0 PID: 0 Comm: swapper Not tainted 6.8.0-12955-g8e938e39 #1
      [    0.466188] Hardware name: QEMU 8561 QEMU (KVM/Linux)
      [    0.466270] Call Trace:
      [    0.466470]  [<00000000011f26c8>] dump_stack_lvl+0x98/0xd8
      [    0.466516]  [<00000000001dcc6a>] do_raw_spin_lock+0x8a/0x108
      [    0.466545]  [<000000000042146c>] find_vmap_area+0x6c/0x108
      [    0.466572]  [<000000000042175a>] find_vm_area+0x22/0x40
      [    0.466597]  [<000000000012f152>] __set_memory+0x132/0x150
      [    0.466624]  [<0000000001cc0398>] vmem_map_init+0x40/0x118
      [    0.466651]  [<0000000001cc0092>] paging_init+0x22/0x68
      [    0.466677]  [<0000000001cbbed2>] setup_arch+0x52a/0x708
      [    0.466702]  [<0000000001cb6140>] start_kernel+0x80/0x5c8
      [    0.466727]  [<0000000000100036>] startup_continue+0x36/0x40
      
      it happens because such system tries to access some vmap areas
      whereas the vmalloc initialization is not even yet done:
      
      [    0.465490] lock: single+0x1860/0x1958, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
      [    0.466067] CPU: 0 PID: 0 Comm: swapper Not tainted 6.8.0-12955-g8e938e39 #1
      [    0.466188] Hardware name: QEMU 8561 QEMU (KVM/Linux)
      [    0.466270] Call Trace:
      [    0.466470] dump_stack_lvl (lib/dump_stack.c:117)
      [    0.466516] do_raw_spin_lock (kernel/locking/spinlock_debug.c:87 kernel/locking/spinlock_debug.c:115)
      [    0.466545] find_vmap_area (mm/vmalloc.c:1059 mm/vmalloc.c:2364)
      [    0.466572] find_vm_area (mm/vmalloc.c:3150)
      [    0.466597] __set_memory (arch/s390/mm/pageattr.c:360 arch/s390/mm/pageattr.c:393)
      [    0.466624] vmem_map_init (./arch/s390/include/asm/set_memory.h:55 arch/s390/mm/vmem.c:660)
      [    0.466651] paging_init (arch/s390/mm/init.c:97)
      [    0.466677] setup_arch (arch/s390/kernel/setup.c:972)
      [    0.466702] start_kernel (init/main.c:899)
      [    0.466727] startup_continue (arch/s390/kernel/head64.S:35)
      [    0.466811] INFO: lockdep is turned off.
      ...
      [    0.718250] vmalloc init - busy lock init 0000000002871860
      [    0.718328] vmalloc init - busy lock init 00000000028731b8
      
      Some background. It worked before because the lock that is in question
      was statically defined and initialized. As of now, the locks and data
      structures are initialized in the vmalloc_init() function.
      
      To address that issue add the check whether the "vmap_initialized"
      variable is set, if not find_vmap_area() bails out on entry returning NULL.
      
      Link: https://lkml.kernel.org/r/20240323141544.4150-1-urezki@gmail.com
      Fixes: 72210662 ("mm: vmalloc: offload free_vmap_area_lock lock")
      Signed-off-by: default avatarUladzislau Rezki (Sony) <urezki@gmail.com>
      Tested-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Reviewed-by: default avatarBaoquan He <bhe@redhat.com>
      Acked-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Dave Chinner <david@fromorbit.com>
      Cc: Lorenzo Stoakes <lstoakes@gmail.com>
      Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
      Cc: Oleksiy Avramchenko <oleksiy.avramchenko@sony.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      4ed91fa9
    • John Sperbeck's avatar
      init: open output files from cpio unpacking with O_LARGEFILE · 8434f9aa
      John Sperbeck authored
      If a member of a cpio archive for an initrd or initrams is larger than
      2Gb, we'll eventually fail to write to that file when we get to that
      limit, unless O_LARGEFILE is set.
      
      The problem can be seen with this recipe, assuming that BLK_DEV_RAM
      is not configured:
      
      cd /tmp
      dd if=/dev/zero of=BIGFILE bs=1048576 count=2200
      echo BIGFILE | cpio -o -H newc -R root:root > initrd.img
      kexec -l /boot/vmlinuz-$(uname -r) --initrd=initrd.img --reuse-cmdline
      kexec -e
      
      The console will show 'Initramfs unpacking failed: write error'.  With
      the patch, the error is gone.
      
      Link: https://lkml.kernel.org/r/20240323152934.3307391-1-jsperbeck@google.comSigned-off-by: default avatarJohn Sperbeck <jsperbeck@google.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Randy Dunlap <rdunlap@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      8434f9aa
    • David Hildenbrand's avatar
      mm/secretmem: fix GUP-fast succeeding on secretmem folios · 65291dcf
      David Hildenbrand authored
      folio_is_secretmem() currently relies on secretmem folios being LRU
      folios, to save some cycles.
      
      However, folios might reside in a folio batch without the LRU flag set, or
      temporarily have their LRU flag cleared.  Consequently, the LRU flag is
      unreliable for this purpose.
      
      In particular, this is the case when secretmem_fault() allocates a fresh
      page and calls filemap_add_folio()->folio_add_lru().  The folio might be
      added to the per-cpu folio batch and won't get the LRU flag set until the
      batch was drained using e.g., lru_add_drain().
      
      Consequently, folio_is_secretmem() might not detect secretmem folios and
      GUP-fast can succeed in grabbing a secretmem folio, crashing the kernel
      when we would later try reading/writing to the folio, because the folio
      has been unmapped from the directmap.
      
      Fix it by removing that unreliable check.
      
      Link: https://lkml.kernel.org/r/20240326143210.291116-2-david@redhat.com
      Fixes: 1507f512 ("mm: introduce memfd_secret system call to create "secret" memory areas")
      Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
      Reported-by: default avatarxingwei lee <xrivendell7@gmail.com>
      Reported-by: default avataryue sun <samsun1006219@gmail.com>
      Closes: https://lore.kernel.org/lkml/CABOYnLyevJeravW=QrH0JUPYEcDN160aZFb7kwndm-J2rmz0HQ@mail.gmail.com/Debugged-by: default avatarMiklos Szeredi <miklos@szeredi.hu>
      Tested-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      Reviewed-by: default avatarMike Rapoport (IBM) <rppt@kernel.org>
      Cc: Lorenzo Stoakes <lstoakes@gmail.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      65291dcf
  2. 31 Mar, 2024 12 commits
  3. 30 Mar, 2024 8 commits
    • Mikulas Patocka's avatar
      objtool: Fix compile failure when using the x32 compiler · 6205125b
      Mikulas Patocka authored
      When compiling the v6.9-rc1 kernel with the x32 compiler, the following
      errors are reported. The reason is that we take an "unsigned long"
      variable and print it using "PRIx64" format string.
      
      	In file included from check.c:16:
      	check.c: In function ‘add_dead_ends’:
      	/usr/src/git/linux-2.6/tools/objtool/include/objtool/warn.h:46:17: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘long unsigned int’ [-Werror=format=]
      	   46 |                 "%s: warning: objtool: " format "\n",   \
      	      |                 ^~~~~~~~~~~~~~~~~~~~~~~~
      	check.c:613:33: note: in expansion of macro ‘WARN’
      	  613 |                                 WARN("can't find unreachable insn at %s+0x%" PRIx64,
      	      |                                 ^~~~
      	...
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Cc: Josh Poimboeuf <jpoimboe@redhat.com>
      Cc: linux-kernel@vger.kernel.org
      6205125b
    • Linus Torvalds's avatar
      Merge tag 'xfs-6.9-fixes-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · 712e1425
      Linus Torvalds authored
      Pull xfs fixes from Chandan Babu:
      
       - Allow stripe unit/width value passed via mount option to be written
         over existing values in the super block
      
       - Do not set current->journal_info to avoid its value from being miused
         by another filesystem context
      
      * tag 'xfs-6.9-fixes-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
        xfs: don't use current->journal_info
        xfs: allow sunit mount option to repair bad primary sb stripe values
      712e1425
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · fe764a75
      Linus Torvalds authored
      Pull SCSI fixes and updates from James Bottomley:
       "Fully half this pull is updates to lpfc and qla2xxx which got
        committed just as the merge window opened. A sizeable fraction of the
        driver updates are simple bug fixes (and lock reworks for bug fixes in
        the case of lpfc), so rather than splitting the few actual
        enhancements out, we're just adding the drivers to the -rc1 pull.
      
        The enhancements for lpfc are log message removals, copyright updates
        and three patches redefining types. For qla2xxx it's just removing a
        debug message on module removal and the manufacturer detail update.
      
        The two major fixes are the sg teardown race and a core error leg
        problem with the procfs directory not being removed if we destroy a
        created host that never got to the running state. The rest are minor
        fixes and constifications"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (41 commits)
        scsi: bnx2fc: Remove spin_lock_bh while releasing resources after upload
        scsi: core: Fix unremoved procfs host directory regression
        scsi: mpi3mr: Avoid memcpy field-spanning write WARNING
        scsi: sd: Fix TCG OPAL unlock on system resume
        scsi: sg: Avoid sg device teardown race
        scsi: lpfc: Copyright updates for 14.4.0.1 patches
        scsi: lpfc: Update lpfc version to 14.4.0.1
        scsi: lpfc: Define types in a union for generic void *context3 ptr
        scsi: lpfc: Define lpfc_dmabuf type for ctx_buf ptr
        scsi: lpfc: Define lpfc_nodelist type for ctx_ndlp ptr
        scsi: lpfc: Use a dedicated lock for ras_fwlog state
        scsi: lpfc: Release hbalock before calling lpfc_worker_wake_up()
        scsi: lpfc: Replace hbalock with ndlp lock in lpfc_nvme_unregister_port()
        scsi: lpfc: Update lpfc_ramp_down_queue_handler() logic
        scsi: lpfc: Remove IRQF_ONESHOT flag from threaded IRQ handling
        scsi: lpfc: Move NPIV's transport unregistration to after resource clean up
        scsi: lpfc: Remove unnecessary log message in queuecommand path
        scsi: qla2xxx: Update version to 10.02.09.200-k
        scsi: qla2xxx: Delay I/O Abort on PCI error
        scsi: qla2xxx: Change debug message during driver unload
        ...
      fe764a75
    • Linus Torvalds's avatar
      Merge tag 'i2c-for-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · ac672718
      Linus Torvalds authored
      Pull i2c fix from Wolfram Sang:
       "A fix from Andi for I2C host drivers"
      
      * tag 'i2c-for-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        i2c: i801: Fix a refactoring that broke a touchpad on Lenovo P1
      ac672718
    • Linus Torvalds's avatar
      Merge tag 'usb-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · ff789a26
      Linus Torvalds authored
      Pull USB fixes from Greg KH:
       "Here are a bunch of small USB fixes for reported problems and
        regressions for 6.9-rc2. Included in here are:
      
         - deadlock fixes for long-suffering issues
      
         - USB phy driver revert for reported problem
      
         - typec fixes for reported problems
      
         - duplicate id in dwc3 dropped
      
         - dwc2 driver fixes
      
         - udc driver warning fix
      
         - cdc-wdm race bugfix
      
         - other tiny USB bugfixes
      
        All of these have been in linux-next this past week with no reported
        issues"
      
      * tag 'usb-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (26 commits)
        USB: core: Fix deadlock in port "disable" sysfs attribute
        USB: core: Add hub_get() and hub_put() routines
        usb: typec: ucsi: Check capabilities before cable and identity discovery
        usb: typec: ucsi: Clear UCSI_CCI_RESET_COMPLETE before reset
        usb: typec: ucsi_acpi: Refactor and fix DELL quirk
        usb: typec: ucsi: Ack unsupported commands
        usb: typec: ucsi: Check for notifications after init
        usb: typec: ucsi: Clear EVENT_PENDING under PPM lock
        usb: typec: Return size of buffer if pd_set operation succeeds
        usb: udc: remove warning when queue disabled ep
        usb: dwc3: pci: Drop duplicate ID
        usb: dwc3: Properly set system wakeup
        Revert "usb: phy: generic: Get the vbus supply"
        usb: cdc-wdm: close race between read and workqueue
        usb: dwc2: gadget: LPM flow fix
        usb: dwc2: gadget: Fix exiting from clock gating
        usb: dwc2: host: Fix ISOC flow in DDMA mode
        usb: dwc2: host: Fix remote wakeup from hibernation
        usb: dwc2: host: Fix hibernation flow
        USB: core: Fix deadlock in usb_deauthorize_interface()
        ...
      ff789a26
    • Linus Torvalds's avatar
      Merge tag 'staging-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging · 4e6e4229
      Linus Torvalds authored
      Pull staging driver fixes from Greg KH:
       "Here are two small staging driver fixes for the vc04_services driver
        that resolve reported problems:
      
         - strncpy fix for information leak
      
         - another information leak discovered by the previous strncpy fix
      
        Both of these have been in linux-next all this past week with no
        reported issues"
      
      * tag 'staging-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
        staging: vc04_services: fix information leak in create_component()
        staging: vc04_services: changen strncpy() to strscpy_pad()
      4e6e4229
    • Wolfram Sang's avatar
      Merge tag 'i2c-host-fixes-6.9-rc2' of... · 2953eb02
      Wolfram Sang authored
      Merge tag 'i2c-host-fixes-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux into i2c/for-current
      
      One fix in the i801 driver where a bug caused touchpad
      malfunctions on some Lenovo P1 models by incorrectly overwriting
      a status variable during successful SMBUS transactions.
      2953eb02
    • Masahiro Yamada's avatar
      x86/build: Use obj-y to descend into arch/x86/virt/ · 3f1a9bc5
      Masahiro Yamada authored
      Commit c33621b4 ("x86/virt/tdx: Wire up basic SEAMCALL functions")
      introduced a new instance of core-y instead of the standardized obj-y
      syntax.
      
      X86 Makefiles descend into subdirectories of arch/x86/virt inconsistently;
      into arch/x86/virt/ via core-y defined in arch/x86/Makefile, but into
      arch/x86/virt/svm/ via obj-y defined in arch/x86/Kbuild.
      
      This is problematic when you build a single object in parallel because
      multiple threads attempt to build the same file.
      
        $ make -j$(nproc) arch/x86/virt/vmx/tdx/seamcall.o
          [ snip ]
          AS      arch/x86/virt/vmx/tdx/seamcall.o
          AS      arch/x86/virt/vmx/tdx/seamcall.o
        fixdep: error opening file: arch/x86/virt/vmx/tdx/.seamcall.o.d: No such file or directory
        make[4]: *** [scripts/Makefile.build:362: arch/x86/virt/vmx/tdx/seamcall.o] Error 2
      
      Use the obj-y syntax, as it works correctly.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Link: https://lore.kernel.org/r/20240330060554.18524-1-masahiroy@kernel.org
      3f1a9bc5
  4. 29 Mar, 2024 13 commits
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2024-03-30' of https://gitlab.freedesktop.org/drm/kernel · 486291a0
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Regular fixes for rc2, quite a few i915/amdgpu as usual, some xe, and
        then mostly scattered around. rc3 might be quieter with the holidays
        but we shall see.
      
        bridge:
         - select DRM_KMS_HELPER
      
        dma-buf:
         - fix NULL-pointer deref
      
        dp:
         - fix div-by-zero in DP MST unplug code
      
        fbdev:
         - select FB_IOMEM_FOPS for SBus
      
        sched:
         - fix NULL-pointer deref
      
        xe:
         - Fix build on mips
         - Fix wrong bound checks
         - Fix use of msec rather than jiffies
         - Remove dead code
      
        amdgpu:
         - SMU 14.0.1 updates
         - DCN 3.5.x updates
         - VPE fix
         - eDP panel flickering fix
         - Suspend fix
         - PSR fix
         - DCN 3.0+ fix
         - VCN 4.0.6 updates
         - debugfs fix
      
        amdkfd:
         - DMA-Buf fix
         - GFX 9.4.2 TLB flush fix
         - CP interrupt fix
      
        i915:
         - Fix for BUG_ON/BUILD_BUG_ON IN I915_memcpy.c
         - Update a MTL workaround
         - Fix locking inversion in hwmon's sysfs
         - Remove a bogus error message around PXP
         - Fix UAF on VMA
         - Reset queue_priority_hint on parking
         - Display Fixes:
         - Remove duplicated audio enable/disable on SDVO and DP
         - Disable AuxCCS for Xe driver
         - Revert init order of MIPI DSI
         - DRRS debugfs fix with an extra refactor patch
         - VRR related fixes
         - Fix a JSL eDP corruption
         - Fix the cursor physical dma address
         - BIOS VBT related fix
      
        nouveau:
         - dmem: handle kcalloc() allocation failures
      
        qxl:
         - remove unused variables
      
        rockchip:
         - vop2: remove support for AR30 and AB30 formats
      
        vmwgfx:
         - debugfs: create ttm_resource_manager entry only if needed"
      
      * tag 'drm-fixes-2024-03-30' of https://gitlab.freedesktop.org/drm/kernel: (55 commits)
        drm/i915/bios: Tolerate devdata==NULL in intel_bios_encoder_supports_dp_dual_mode()
        drm/i915: Pre-populate the cursor physical dma address
        drm/i915/gt: Reset queue_priority_hint on parking
        drm/i915/vma: Fix UAF on destroy against retire race
        drm/i915: Do not print 'pxp init failed with 0' when it succeed
        drm/i915: Do not match JSL in ehl_combo_pll_div_frac_wa_needed()
        drm/i915/hwmon: Fix locking inversion in sysfs getter
        drm/i915/dsb: Fix DSB vblank waits when using VRR
        drm/i915/vrr: Generate VRR "safe window" for DSB
        drm/i915/display/debugfs: Fix duplicate checks in i915_drrs_status
        drm/i915/drrs: Refactor CPU transcoder DRRS check
        drm/i915/mtl: Update workaround 14018575942
        drm/i915/dsi: Go back to the previous INIT_OTP/DISPLAY_ON order, mostly
        drm/i915/display: Disable AuxCCS framebuffers if built for Xe
        drm/i915: Stop doing double audio enable/disable on SDVO and g4x+ DP
        drm/i915: Add includes for BUG_ON/BUILD_BUG_ON in i915_memcpy.c
        drm/qxl: remove unused variable from `qxl_process_single_command()`
        drm/qxl: remove unused `count` variable from `qxl_surface_id_alloc()`
        drm/i915: add bug.h include to i915_memcpy.c
        drm/vmwgfx: Create debugfs ttm_resource_manager entry only if needed
        ...
      486291a0
    • Linus Torvalds's avatar
      Merge tag 'linux_kselftest-fixes-6.9-rc2' of... · 1ab5c8a3
      Linus Torvalds authored
      Merge tag 'linux_kselftest-fixes-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull kselftest fixes from Shuah Khan:
       "Fixes to seccomp and ftrace tests and a change to add config file for
        dmabuf-heap test to increase coverage"
      
      * tag 'linux_kselftest-fixes-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
        selftests: dmabuf-heap: add config file for the test
        selftests/seccomp: Try to fit runtime of benchmark into timeout
        selftests/ftrace: Fix event filter target_func selection
      1ab5c8a3
    • Linus Torvalds's avatar
      Merge tag 'linux_kselftest-kunit-fixes-6.9-rc2' of... · a2ad5d9e
      Linus Torvalds authored
      Merge tag 'linux_kselftest-kunit-fixes-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull KUnit fixes from Shuah Khan:
       "One urgent fix for --alltests build failure related to renaming of
        CONFIG_DAMON_DBGFS to DAMON_DBGFS_DEPRECATED to the missing config
        option"
      
      * tag 'linux_kselftest-kunit-fixes-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
        kunit: configs: Enable CONFIG_DAMON_DBGFS_DEPRECATED for --alltests
      a2ad5d9e
    • Muhammad Usama Anjum's avatar
      selftests: dmabuf-heap: add config file for the test · 224fe424
      Muhammad Usama Anjum authored
      The config fragment enlists all the config options needed for the test.
      This config is merged into the kernel's config on which this test is
      run.
      
      Fixed whitespace errors during commit:
      Shuah Khan <skhan@linuxfoundation.org>
      Reviewed-by: default avatarT.J. Mercier <tjmercier@google.com>
      Signed-off-by: default avatarMuhammad Usama Anjum <usama.anjum@collabora.com>
      Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
      224fe424
    • Mark Brown's avatar
      selftests/seccomp: Try to fit runtime of benchmark into timeout · 7155cc45
      Mark Brown authored
      The seccomp benchmark runs five scenarios, one calibration run with no
      seccomp filters enabled then four further runs each adding a filter. The
      calibration run times itself for 15s and then each additional run executes
      for the same number of times.
      
      Currently the seccomp tests, including the benchmark, run with an extended
      120s timeout but this is not sufficient to robustly run the tests on a lot
      of platforms. Sample timings from some recent runs:
      
         Platform          Run 1  Run 2  Run 3  Run 4
         ---------         -----  -----  -----  -----
         PowerEdge R200    16.6s  16.6s  31.6s  37.4s
         BBB (arm)         20.4s  20.4s  54.5s
         Synquacer (arm64) 20.7s  23.7s  40.3s
      
      The x86 runs from the PowerEdge are quite marginal and routinely fail, for
      the successful run reported here the timed portions of the run are at
      117.2s leaving less than 3s of margin which is frequently breached. The
      added overhead of adding filters on the other platforms is such that there
      is no prospect of their runs fitting into the 120s timeout, especially
      on 32 bit arm where there is no BPF JIT.
      
      While we could lower the time we calibrate for I'm also already seeing the
      currently completing runs reporting issues with the per filter overheads
      not matching expectations:
      
      Let's instead raise the timeout to 180s which is only a 50% increase on the
      current timeout which is itself not *too* large given that there's only two
      tests in this suite.
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
      7155cc45
    • Mark Rutland's avatar
      selftests/ftrace: Fix event filter target_func selection · 8ecab2e6
      Mark Rutland authored
      The event filter function test has been failing in our internal test
      farm:
      
      | # not ok 33 event filter function - test event filtering on functions
      
      Running the test in verbose mode indicates that this is because the test
      erroneously determines that kmem_cache_free() is the most common caller
      of kmem_cache_free():
      
        # # + cut -d: -f3 trace
        # # + sed s/call_site=([^+]*)+0x.*/1/
        # # + sort
        # # + uniq -c
        # # + sort
        # # + tail -n 1
        # # + sed s/^[ 0-9]*//
        # # + target_func=kmem_cache_free
      
      ... and as kmem_cache_free() doesn't call itself, setting this as the
      filter function for kmem_cache_free() results in no hits, and
      consequently the test fails:
      
        # # + grep kmem_cache_free trace
        # # + grep kmem_cache_free
        # # + wc -l
        # # + hitcnt=0
        # # + grep kmem_cache_free trace
        # # + grep -v kmem_cache_free
        # # + wc -l
        # # + misscnt=0
        # # + [ 0 -eq 0 ]
        # # + exit_fail
      
      This seems to be because the system in question has tasks with ':' in
      their name (which a number of kernel worker threads have). These show up
      in the trace, e.g.
      
        test:.sh-1299    [004] .....  2886.040608: kmem_cache_free: call_site=putname+0xa4/0xc8 ptr=000000000f4d22f4 name=names_cache
      
      ... and so when we try to extact the call_site with:
      
        cut -d: -f3 trace | sed 's/call_site=\([^+]*\)+0x.*/\1/'
      
      ... the 'cut' command will extrace the column containing
      'kmem_cache_free' rather than the column containing 'call_site=...', and
      the 'sed' command will leave this unchanged. Consequently, the test will
      decide to use 'kmem_cache_free' as the filter function, resulting in the
      failure seen above.
      
      Fix this by matching the 'call_site=<func>' part specifically to extract
      the function name.
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Reported-by: default avatarAishwarya TCV <aishwarya.tcv@arm.com>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Shuah Khan <shuah@kernel.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-kselftest@vger.kernel.org
      Cc: linux-trace-kernel@vger.kernel.org
      Acked-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
      Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
      8ecab2e6
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2024-03-28' of... · b01f596a
      Dave Airlie authored
      Merge tag 'drm-intel-fixes-2024-03-28' of https://anongit.freedesktop.org/git/drm/drm-intel into drm-fixes
      
      Core/GT Fixes:
      - Fix for BUG_ON/BUILD_BUG_ON IN I915_memcpy.c (Joonas)
      - Update a MTL workaround (Tejas)
      - Fix locking inversion in hwmon's sysfs (Janusz)
      - Remove a bogus error message around PXP (Jose)
      - Fix UAF on VMA (Janusz)
      - Reset queue_priority_hint on parking (Chris)
      
      Display Fixes:
      - Remove duplicated audio enable/disable on SDVO and DP (Ville)
      - Disable AuxCCS for Xe driver (Juha-Pekka)
      - Revert init order of MIPI DSI (Ville)
      - DRRS debugfs fix with an extra refactor patch (Bhanuprakash)
      - VRR related fixes (Ville)
      - Fix a JSL eDP corruption (Jonathon)
      - Fix the cursor physical dma address (Ville)
      - BIOS VBT related fix (Ville)
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/ZgYaIVgjIs30mIvS@intel.com
      b01f596a
    • Borislav Petkov (AMD)'s avatar
      x86/bugs: Fix the SRSO mitigation on Zen3/4 · 4535e1a4
      Borislav Petkov (AMD) authored
      The original version of the mitigation would patch in the calls to the
      untraining routines directly.  That is, the alternative() in UNTRAIN_RET
      will patch in the CALL to srso_alias_untrain_ret() directly.
      
      However, even if commit e7c25c44 ("x86/cpu: Cleanup the untrain
      mess") meant well in trying to clean up the situation, due to micro-
      architectural reasons, the untraining routine srso_alias_untrain_ret()
      must be the target of a CALL instruction and not of a JMP instruction as
      it is done now.
      
      Reshuffle the alternative macros to accomplish that.
      
      Fixes: e7c25c44 ("x86/cpu: Cleanup the untrain mess")
      Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
      Reviewed-by: default avatarIngo Molnar <mingo@kernel.org>
      Cc: stable@kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4535e1a4
    • Linus Torvalds's avatar
      Merge tag '6.9-rc1-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6 · 091619ba
      Linus Torvalds authored
      Pull smb client fixes from Steve French:
      
       - Add missing trace point (noticed when debugging the recent mknod LSM
         regression)
      
       - fscache fix
      
      * tag '6.9-rc1-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: Fix duplicate fscache cookie warnings
        smb3: add trace event for mknod
      091619ba
    • Linus Torvalds's avatar
      Merge tag 'thermal-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 3a3c0de6
      Linus Torvalds authored
      Pull thermal control fixes from Rafael Wysocki:
       "These revert a problematic optimization commit and address a devfreq
        cooling device issue.
      
        Specifics:
      
         - Revert thermal core optimization that introduced a functional issue
           causing a critical trip point to be crossed in some cases (Daniel
           Lezcano)
      
         - Add missing conversion between different state ranges to the
           devfreq cooling device driver (Ye Zhang)"
      
      * tag 'thermal-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        thermal: devfreq_cooling: Fix perf state when calculate dfc res_util
        Revert "thermal: core: Don't update trip points inside the hysteresis range"
      3a3c0de6
    • Linus Torvalds's avatar
      Merge tag 'acpi-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · ab317b32
      Linus Torvalds authored
      Pull ACPI fixes from Rafael Wysocki:
       "These fix two issues that may lead to attempts to use memory that has
        been freed already.
      
        Specifics:
      
         - Drop __exit annotation from einj_remove() in the ACPI APEI code
           because this function can be called during runtime (Arnd Bergmann)
      
         - Make acpi_db_walk_for_fields() check acpi_evaluate_object() return
           value to avoid accessing memory that has been freed (Nikita
           Kiryushin)"
      
      * tag 'acpi-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPICA: debugger: check status of acpi_evaluate_object() in acpi_db_walk_for_fields()
        ACPI: APEI: EINJ: mark remove callback as non-__exit
      ab317b32
    • Linus Torvalds's avatar
      mm: clean up populate_vma_page_range() FOLL_* flag handling · 1096bc93
      Linus Torvalds authored
      The code wasn't exactly wrong, but it was very odd, and it used
      FOLL_FORCE together with FOLL_WRITE when it really didn't need to (it
      only set FOLL_WRITE for writable mappings, so then the FOLL_FORCE was
      pointless).
      
      It also pointlessly called __get_user_pages() even when it knew it
      wouldn't populate anything because the vma wasn't accessible and it
      explicitly tested for and did *not* set FOLL_FORCE for inaccessible
      vma's.
      
      This code does need to use FOLL_FORCE, because we want to do fault in
      writable shared mappings, but then the mapping may not actually be
      readable.  And we don't want to use FOLL_WRITE (which would match the
      permission of the vma), because that would also dirty the pages, which
      we don't want to do.
      
      For very similar reasons, FOLL_FORCE populates a executable-only mapping
      with no read permissions. We don't have a FOLL_EXEC flag.
      
      Yes, it would probably be cleaner to split FOLL_WRITE into two bits (for
      separate permission and dirty bit handling), and add a FOLL_EXEC flag
      for the "GUP executable page" case.  That would allow us to avoid
      FOLL_FORCE entirely here.
      
      But that's not how our FOLL_xyz bits have traditionally worked, and that
      would be a much bigger patch.
      
      So this at least avoids the FOLL_FORCE | FOLL_WRITE combination that
      made one of my experimental validation patches trigger a warning.  That
      warning was a false positive (and my experimental patch was incomplete
      anyway), but it all made me look at this and decide to clean at least
      this small case up.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1096bc93
    • Rafael J. Wysocki's avatar
      Merge branch 'acpica' · 6af71633
      Rafael J. Wysocki authored
      * acpica:
        ACPICA: debugger: check status of acpi_evaluate_object() in acpi_db_walk_for_fields()
      6af71633