Skip to content
  1. Oct 22, 2022
    • Linus Torvalds's avatar
      Merge tag 'mm-hotfixes-stable-2022-10-20' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm · 440b7895
      Linus Torvalds authored
      Pull misc fixes from Andrew Morron:
       "Seventeen hotfixes, mainly for MM.
      
        Five are cc:stable and the remainder address post-6.0 issues"
      
      * tag 'mm-hotfixes-stable-2022-10-20' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm:
        nouveau: fix migrate_to_ram() for faulting page
        mm/huge_memory: do not clobber swp_entry_t during THP split
        hugetlb: fix memory leak associated with vma_lock structure
        mm/page_alloc: reduce potential fragmentation in make_alloc_exact()
        mm: /proc/pid/smaps_rollup: fix maple tree search
        mm,hugetlb: take hugetlb_lock before decrementing h->resv_huge_pages
        mm/mmap: fix MAP_FIXED address return on VMA merge
        mm/mmap.c: __vma_adjust(): suppress uninitialized var warning
        mm/mmap: undo ->mmap() when mas_preallocate() fails
        init: Kconfig: fix spelling mistake "satify" -> "satisfy"
        ocfs2: clear dinode links count in case of error
        ocfs2: fix BUG when iput after ocfs2_mknod fails
        gcov: support GCC 12.1 and newer compilers
        zsmalloc: zs_destroy_pool: add size_class NULL check
        mm/mempolicy: fix mbind_range() arguments to vma_merge()
        mailmap: update email for Qais Yousef
        mailmap: update Dan Carpenter's email address
      440b7895
    • Linus Torvalds's avatar
      Merge tag 'trace-tools-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace · ce3d90a8
      Linus Torvalds authored
      Pull tracing tool update from Steven Rostedt:
      
       - Make dot2c generate monitor's automata definition static
      
      * tag 'trace-tools-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
        rv/dot2c: Make automaton definition static
      ce3d90a8
    • Linus Torvalds's avatar
      Merge tag 'linux-watchdog-6.1-rc2' of git://www.linux-watchdog.org/linux-watchdog · 4f1e0c18
      Linus Torvalds authored
      Pull watchdog updates from Wim Van Sebroeck:
      
       - Add tracing events for the most common watchdog events
      
      * tag 'linux-watchdog-6.1-rc2' of git://www.linux-watchdog.org/linux-watchdog:
        watchdog: Add tracing events for the most usual watchdog events
      4f1e0c18
  2. Oct 21, 2022
    • Alistair Popple's avatar
      nouveau: fix migrate_to_ram() for faulting page · 97061d44
      Alistair Popple authored
      Commit 16ce101d ("mm/memory.c: fix race when faulting a device private
      page") changed the migrate_to_ram() callback to take a reference on the
      device page to ensure it can't be freed while handling the fault. 
      Unfortunately the corresponding update to Nouveau to accommodate this
      change was inadvertently dropped from that patch causing GPU to CPU
      migration to fail so add it here.
      
      Link: https://lkml.kernel.org/r/20221019122934.866205-1-apopple@nvidia.com
      Fixes: 16ce101d
      
       ("mm/memory.c: fix race when faulting a device private page")
      Signed-off-by: default avatarAlistair Popple <apopple@nvidia.com>
      Cc: John Hubbard <jhubbard@nvidia.com>
      Cc: Ralph Campbell <rcampbell@nvidia.com>
      Cc: Lyude Paul <lyude@redhat.com>
      Cc: Ben Skeggs <bskeggs@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      97061d44
    • Mel Gorman's avatar
      mm/huge_memory: do not clobber swp_entry_t during THP split · 71e2d666
      Mel Gorman authored
      The following has been observed when running stressng mmap since commit
      b653db77 ("mm: Clear page->private when splitting or migrating a page")
      
         watchdog: BUG: soft lockup - CPU#75 stuck for 26s! [stress-ng:9546]
         CPU: 75 PID: 9546 Comm: stress-ng Tainted: G            E      6.0.0-revert-b653db77-fix+ #29 0357d79b60fb09775f678e4f3f64ef0579ad1374
         Hardware name: SGI.COM C2112-4GP3/X10DRT-P-Series, BIOS 2.0a 05/09/2016
         RIP: 0010:xas_descend+0x28/0x80
         Code: cc cc 0f b6 0e 48 8b 57 08 48 d3 ea 83 e2 3f 89 d0 48 83 c0 04 48 8b 44 c6 08 48 89 77 18 48 89 c1 83 e1 03 48 83 f9 02 75 08 <48> 3d fd 00 00 00 76 08 88 57 12 c3 cc cc cc cc 48 c1 e8 02 89 c2
         RSP: 0018:ffffbbf02a2236a8 EFLAGS: 00000246
         RAX: ffff9cab7d6a0002 RBX: ffffe04b0af88040 RCX: 0000000000000002
         RDX: 0000000000000030 RSI: ffff9cab60509b60 RDI: ffffbbf02a2236c0
         RBP: 0000000000000000 R08: ffff9cab60509b60 R09: ffffbbf02a2236c0
         R10: 0000000000000001 R11: ffffbbf02a223698 R12: 0000000000000000
         R13: ffff9cab4e28da80 R14: 0000000000039c01 R15: ffff9cab4e28da88
         FS:  00007fab89b85e40(0000) GS:ffff9cea3fcc0000(0000) knlGS:0000000000000000
         CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
         CR2: 00007fab84e00000 CR3: 00000040b73a4003 CR4: 00000000003706e0
         DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
         DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
         Call Trace:
          <TASK>
          xas_load+0x3a/0x50
          __filemap_get_folio+0x80/0x370
          ? put_swap_page+0x163/0x360
          pagecache_get_page+0x13/0x90
          __try_to_reclaim_swap+0x50/0x190
          scan_swap_map_slots+0x31e/0x670
          get_swap_pages+0x226/0x3c0
          folio_alloc_swap+0x1cc/0x240
          add_to_swap+0x14/0x70
          shrink_page_list+0x968/0xbc0
          reclaim_page_list+0x70/0xf0
          reclaim_pages+0xdd/0x120
          madvise_cold_or_pageout_pte_range+0x814/0xf30
          walk_pgd_range+0x637/0xa30
          __walk_page_range+0x142/0x170
          walk_page_range+0x146/0x170
          madvise_pageout+0xb7/0x280
          ? asm_common_interrupt+0x22/0x40
          madvise_vma_behavior+0x3b7/0xac0
          ? find_vma+0x4a/0x70
          ? find_vma+0x64/0x70
          ? madvise_vma_anon_name+0x40/0x40
          madvise_walk_vmas+0xa6/0x130
          do_madvise+0x2f4/0x360
          __x64_sys_madvise+0x26/0x30
          do_syscall_64+0x5b/0x80
          ? do_syscall_64+0x67/0x80
          ? syscall_exit_to_user_mode+0x17/0x40
          ? do_syscall_64+0x67/0x80
          ? syscall_exit_to_user_mode+0x17/0x40
          ? do_syscall_64+0x67/0x80
          ? do_syscall_64+0x67/0x80
          ? common_interrupt+0x8b/0xa0
          entry_SYSCALL_64_after_hwframe+0x63/0xcd
      
      The problem can be reproduced with the mmtests config
      config-workload-stressng-mmap.  It does not always happen and when it
      triggers is variable but it has happened on multiple machines.
      
      The intent of commit b653db77 patch was to avoid the case where
      PG_private is clear but folio->private is not-NULL.  However, THP tail
      pages uses page->private for "swp_entry_t if folio_test_swapcache()" as
      stated in the documentation for struct folio.  This patch only clobbers
      page->private for tail pages if the head page was not in swapcache and
      warns once if page->private had an unexpected value.
      
      Link: https://lkml.kernel.org/r/20221019134156.zjyyn5aownakvztf@techsingularity.net
      Fixes: b653db77
      
       ("mm: Clear page->private when splitting or migrating a page")
      Signed-off-by: default avatarMel Gorman <mgorman@techsingularity.net>
      Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
      Cc: Mel Gorman <mgorman@techsingularity.net>
      Cc: Yang Shi <shy828301@gmail.com>
      Cc: Brian Foster <bfoster@redhat.com>
      Cc: Dan Streetman <ddstreet@ieee.org>
      Cc: Miaohe Lin <linmiaohe@huawei.com>
      Cc: Oleksandr Natalenko <oleksandr@natalenko.name>
      Cc: Seth Jennings <sjenning@redhat.com>
      Cc: Vitaly Wool <vitaly.wool@konsulko.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      71e2d666
    • Mike Kravetz's avatar
      hugetlb: fix memory leak associated with vma_lock structure · 612b8a31
      Mike Kravetz authored
      The hugetlb vma_lock structure hangs off the vm_private_data pointer of
      sharable hugetlb vmas.  The structure is vma specific and can not be
      shared between vmas.  At fork and various other times, vmas are duplicated
      via vm_area_dup().  When this happens, the pointer in the newly created
      vma must be cleared and the structure reallocated.  Two hugetlb specific
      routines deal with this hugetlb_dup_vma_private and hugetlb_vm_op_open. 
      Both routines are called for newly created vmas.  hugetlb_dup_vma_private
      would always clear the pointer and hugetlb_vm_op_open would allocate the
      new vms_lock structure.  This did not work in the case of this calling
      sequence pointed out in [1].
      
        move_vma
          copy_vma
            new_vma = vm_area_dup(vma);
            new_vma->vm_ops->open(new_vma); --> new_vma has its own vma lock.
          is_vm_hugetlb_page(vma)
            clear_vma_resv_huge_pages
              hugetlb_dup_vma_private --> vma->vm_private_data is set to NULL
      
      When clearing hugetlb_dup_vma_private we actually leak the associated
      vma_lock structure.
      
      The vma_lock structure contains a pointer to the associated vma.  This
      information can be used in hugetlb_dup_vma_private and hugetlb_vm_op_open
      to ensure we only clear the vm_private_data of newly created (copied)
      vmas.  In such cases, the vma->vma_lock->vma field will not point to the
      vma.
      
      Update hugetlb_dup_vma_private and hugetlb_vm_op_open to not clear
      vm_private_data if vma->vma_lock->vma == vma.  Also, log a warning if
      hugetlb_vm_op_open ever encounters the case where vma_lock has already
      been correctly allocated for the vma.
      
      [1] https://lore.kernel.org/linux-mm/5154292a-4c55-28cd-0935-82441e512fc3@huawei.com/
      
      Link: https://lkml.kernel.org/r/20221019201957.34607-1-mike.kravetz@oracle.com
      Fixes: 131a79b4
      
       ("hugetlb: fix vma lock handling during split vma and range unmapping")
      Signed-off-by: default avatarMike Kravetz <mike.kravetz@oracle.com>
      Reviewed-by: default avatarMiaohe Lin <linmiaohe@huawei.com>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
      Cc: Axel Rasmussen <axelrasmussen@google.com>
      Cc: David Hildenbrand <david@redhat.com>
      Cc: Davidlohr Bueso <dave@stgolabs.net>
      Cc: James Houghton <jthoughton@google.com>
      Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
      Cc: Michal Hocko <mhocko@suse.com>
      Cc: Mina Almasry <almasrymina@google.com>
      Cc: Muchun Song <songmuchun@bytedance.com>
      Cc: Naoya Horiguchi <naoya.horiguchi@linux.dev>
      Cc: Pasha Tatashin <pasha.tatashin@soleen.com>
      Cc: Peter Xu <peterx@redhat.com>
      Cc: Prakash Sangappa <prakash.sangappa@oracle.com>
      Cc: Sven Schnelle <svens@linux.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      612b8a31
    • Liam R. Howlett's avatar
      mm/page_alloc: reduce potential fragmentation in make_alloc_exact() · df48a5f7
      Liam R. Howlett authored
      
      
      Try to avoid using the left over split page on the next request for a page
      by calling __free_pages_ok() with FPI_TO_TAIL.  This increases the
      potential of defragmenting memory when it's used for a short period of
      time.
      
      Link: https://lkml.kernel.org/r/20220531185626.yvlmymbxyoe5vags@revolver
      Signed-off-by: default avatarLiam R. Howlett <Liam.Howlett@oracle.com>
      Suggested-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      df48a5f7
    • Hugh Dickins's avatar
      mm: /proc/pid/smaps_rollup: fix maple tree search · 08ac8552
      Hugh Dickins authored
      /proc/pid/smaps_rollup showed 0 kB for everything: now find first vma.
      
      Link: https://lkml.kernel.org/r/3011bee7-182-97a2-1083-d5f5b688e54b@google.com
      Fixes: c4c84f06
      
       ("fs/proc/task_mmu: stop using linked list and highest_vm_end")
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Reviewed-by: default avatarLiam R. Howlett <Liam.Howlett@oracle.com>
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
      Cc: Vlastimil Babka <vbabka@suse.cz>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      08ac8552
    • Rik van Riel's avatar
      mm,hugetlb: take hugetlb_lock before decrementing h->resv_huge_pages · 12df140f
      Rik van Riel authored
      The h->*_huge_pages counters are protected by the hugetlb_lock, but
      alloc_huge_page has a corner case where it can decrement the counter
      outside of the lock.
      
      This could lead to a corrupted value of h->resv_huge_pages, which we have
      observed on our systems.
      
      Take the hugetlb_lock before decrementing h->resv_huge_pages to avoid a
      potential race.
      
      Link: https://lkml.kernel.org/r/20221017202505.0e6a4fcd@imladris.surriel.com
      Fixes: a88c7695
      
       ("mm: hugetlb: fix hugepage memory leak caused by wrong reserve count")
      Signed-off-by: default avatarRik van Riel <riel@surriel.com>
      Reviewed-by: default avatarMike Kravetz <mike.kravetz@oracle.com>
      Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Cc: Glen McCready <gkmccready@meta.com>
      Cc: Mike Kravetz <mike.kravetz@oracle.com>
      Cc: Muchun Song <songmuchun@bytedance.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      12df140f
    • Liam Howlett's avatar
      mm/mmap: fix MAP_FIXED address return on VMA merge · a57b7051
      Liam Howlett authored
      mmap should return the start address of newly mapped area when successful.
      On a successful merge of a VMA, the return address was changed and thus
      was violating that expectation from userspace.
      
      This is a restoration of functionality provided by 309d08d9
      (mm/mmap.c: fix mmap return value when vma is merged after call_mmap()). 
      For completeness of fixing MAP_FIXED, implement the comments from the
      previous discussion to never update the address and fail if the address
      changes.  Leaving the error as a WARN_ON() to avoid crashing the kernel.
      
      Link: https://lkml.kernel.org/r/20221018191613.4133459-1-Liam.Howlett@oracle.com
      Link: https://lore.kernel.org/all/Y06yk66SKxlrwwfb@lakrids/
      Link: https://lore.kernel.org/all/20201203085350.22624-1-liuzixian4@huawei.com/
      Fixes: 4dd1b841
      
       ("mm/mmap: use advanced maple tree API for mmap_region()")
      Signed-off-by: default avatarLiam R. Howlett <Liam.Howlett@oracle.com>
      Reported-by: default avatarMark Rutland <mark.rutland@arm.com>
      Cc: Liu Zixian <liuzixian4@huawei.com>
      Cc: David Hildenbrand <david@redhat.com>
      Cc: Jason Gunthorpe <jgg@nvidia.com>
      Cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      a57b7051
    • Andrew Morton's avatar
      mm/mmap.c: __vma_adjust(): suppress uninitialized var warning · 1cd916d0
      Andrew Morton authored
      The code is OK, but it fools gcc.
      
      mm/mmap.c:802 __vma_adjust() error: uninitialized symbol 'next_next'.
      
      Fixes: 524e00b3
      
       ("mm: remove rb tree.")
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Cc: Liam R. Howlett <Liam.Howlett@Oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      1cd916d0
    • Mike Kravetz's avatar
      mm/mmap: undo ->mmap() when mas_preallocate() fails · 5789151e
      Mike Kravetz authored
      A memory leak in hugetlb_reserve_pages was reported in [1].  The root
      cause was traced to an error path in mmap_region when mas_preallocate()
      fails.  In this case, the vma is freed after a successful call to
      filesystem specific mmap.  The hugetlbfs mmap routine may allocate data
      structures pointed to by m_private_data.  These need to be cleaned up by
      the hugetlb vm_ops->close() routine.
      
      The same issue was addressed by commit deb0f656 ("mm/mmap: undo
      ->mmap() when arch_validate_flags() fails") for the arch_validate_flags()
      test.  Go to the same close_and_free_vma label if mas_preallocate() fails.
      
      [1] https://lore.kernel.org/linux-mm/CAKXUXMxf7OiCwbxib7MwfR4M1b5+b3cNTU7n5NV9Zm4967=FPQ@mail.gmail.com/
      
      Link: https://lkml.kernel.org/r/20221018024945.415036-1-mike.kravetz@oracle.com
      Fixes: d4af56c5
      
       ("mm: start tracking VMAs with maple tree")
      Signed-off-by: default avatarMike Kravetz <mike.kravetz@oracle.com>
      Reported-by: default avatarLukas Bulwahn <lukas.bulwahn@gmail.com>
      Reviewed-by: default avatarLiam R. Howlett <Liam.Howlett@oracle.com>
      Cc: Andrii Nakryiko <andrii@kernel.org>
      Cc: Carlos Llamas <cmllamas@google.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Muchun Song <songmuchun@bytedance.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      5789151e
    • Colin Ian King's avatar
      init: Kconfig: fix spelling mistake "satify" -> "satisfy" · eacf96d2
      Colin Ian King authored
      
      
      There is a spelling mistake in a Kconfig description.  Fix it.
      
      Link: https://lkml.kernel.org/r/20221007204339.2757753-1-colin.i.king@gmail.com
      Signed-off-by: default avatarColin Ian King <colin.i.king@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      eacf96d2
    • Joseph Qi's avatar
      ocfs2: clear dinode links count in case of error · 28f4821b
      Joseph Qi authored
      
      
      In ocfs2_mknod(), if error occurs after dinode successfully allocated,
      ocfs2 i_links_count will not be 0.
      
      So even though we clear inode i_nlink before iput in error handling, it
      still won't wipe inode since we'll refresh inode from dinode during inode
      lock.  So just like clear inode i_nlink, we clear ocfs2 i_links_count as
      well.  Also do the same change for ocfs2_symlink().
      
      Link: https://lkml.kernel.org/r/20221017130227.234480-2-joseph.qi@linux.alibaba.com
      Signed-off-by: default avatarJoseph Qi <joseph.qi@linux.alibaba.com>
      Reported-by: default avatarYan Wang <wangyan122@huawei.com>
      Cc: Mark Fasheh <mark@fasheh.com>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Cc: Changwei Ge <gechangwei@live.cn>
      Cc: Gang He <ghe@suse.com>
      Cc: Jun Piao <piaojun@huawei.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      28f4821b
    • Joseph Qi's avatar
      ocfs2: fix BUG when iput after ocfs2_mknod fails · 759a7c61
      Joseph Qi authored
      Commit b1529a41 "ocfs2: should reclaim the inode if
      '__ocfs2_mknod_locked' returns an error" tried to reclaim the claimed
      inode if __ocfs2_mknod_locked() fails later.  But this introduce a race,
      the freed bit may be reused immediately by another thread, which will
      update dinode, e.g.  i_generation.  Then iput this inode will lead to BUG:
      inode->i_generation != le32_to_cpu(fe->i_generation)
      
      We could make this inode as bad, but we did want to do operations like
      wipe in some cases.  Since the claimed inode bit can only affect that an
      dinode is missing and will return back after fsck, it seems not a big
      problem.  So just leave it as is by revert the reclaim logic.
      
      Link: https://lkml.kernel.org/r/20221017130227.234480-1-joseph.qi@linux.alibaba.com
      Fixes: b1529a41
      
       ("ocfs2: should reclaim the inode if '__ocfs2_mknod_locked' returns an error")
      Signed-off-by: default avatarJoseph Qi <joseph.qi@linux.alibaba.com>
      Reported-by: default avatarYan Wang <wangyan122@huawei.com>
      Cc: Mark Fasheh <mark@fasheh.com>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Cc: Changwei Ge <gechangwei@live.cn>
      Cc: Gang He <ghe@suse.com>
      Cc: Jun Piao <piaojun@huawei.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      759a7c61
    • Martin Liska's avatar
      gcov: support GCC 12.1 and newer compilers · 977ef30a
      Martin Liska authored
      
      
      Starting with GCC 12.1, the created .gcda format can't be read by gcov
      tool.  There are 2 significant changes to the .gcda file format that
      need to be supported:
      
      a) [gcov: Use system IO buffering]
         (23eb66d1d46a34cb28c4acbdf8a1deb80a7c5a05) changed that all sizes in
         the format are in bytes and not in words (4B)
      
      b) [gcov: make profile merging smarter]
         (72e0c742bd01f8e7e6dcca64042b9ad7e75979de) add a new checksum to the
         file header.
      
      Tested with GCC 7.5, 10.4, 12.2 and the current master.
      
      Link: https://lkml.kernel.org/r/624bda92-f307-30e9-9aaa-8cc678b2dfb2@suse.cz
      Signed-off-by: default avatarMartin Liska <mliska@suse.cz>
      Tested-by: default avatarPeter Oberparleiter <oberpar@linux.ibm.com>
      Reviewed-by: default avatarPeter Oberparleiter <oberpar@linux.ibm.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      977ef30a
    • Alexey Romanov's avatar
      zsmalloc: zs_destroy_pool: add size_class NULL check · 4249a05f
      Alexey Romanov authored
      Inside the zs_destroy_pool() function, there can still be NULL size_class
      pointers: if when the next size_class is allocated, inside
      zs_create_pool() function, kzalloc will return NULL and handling the error
      condition, zs_create_pool() will call zs_destroy_pool().
      
      Link: https://lkml.kernel.org/r/20221013112825.61869-1-avromanov@sberdevices.ru
      Fixes: f24263a5
      
       ("zsmalloc: remove unnecessary size_class NULL check")
      Signed-off-by: default avatarAlexey Romanov <avromanov@sberdevices.ru>
      Reviewed-by: default avatarSergey Senozhatsky <senozhatsky@chromium.org>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      4249a05f
    • Liam Howlett's avatar
      mm/mempolicy: fix mbind_range() arguments to vma_merge() · 7329e3eb
      Liam Howlett authored
      Fuzzing produced an invalid argument to vma_merge() which was caught by
      the newly added verification of the number of VMAs being removed on
      process exit.  Analyzing the failure eventually resulted in finding an
      issue with the search of a VMA that started at address 0, which caused an
      underflow and thus the loss of many VMAs being tracked in the tree.  Fix
      the underflow by changing the search of the maple tree to use the start
      address directly.
      
      Link: https://lkml.kernel.org/r/20221015021135.2816178-1-Liam.Howlett@oracle.com
      Fixes: 66850be5
      
       ("mm/mempolicy: use vma iterator & maple state instead of vma linked list")
      Signed-off-by: default avatarLiam R. Howlett <Liam.Howlett@oracle.com>
      Reported-by: default avatarkernel test robot <oliver.sang@intel.com>
        Link: https://lore.kernel.org/r/202210052318.5ad10912-oliver.sang@intel.com
      Cc: Yu Zhao <yuzhao@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      7329e3eb
    • Qais Yousef's avatar
      mailmap: update email for Qais Yousef · cef408e7
      Qais Yousef authored
      
      
      Update my email address for old entry and add a new entry for my
      contribution while working with arm to continue support that work.
      
      Link: https://lkml.kernel.org/r/20221014141016.539625-1-qyousef@layalina.io
      Signed-off-by: default avatarQais Yousef <qyousef@layalina.io>
      Acked-by: default avatarQais Yousef <qais.yousef@arm.com>
      Acked-by: default avatarQais Yousef <qsyousef@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      cef408e7
    • Dan Carpenter's avatar
      mailmap: update Dan Carpenter's email address · 5ad15f1b
      Dan Carpenter authored
      
      
      My time at Oracle is ending at the end of the month.  Update my email
      address accordingly.
      
      Link: https://lkml.kernel.org/r/Y0a+6+5SHMdvUnpg@kili
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Cc: Joe Perches <joe@perches.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      5ad15f1b
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2022-10-21' of git://anongit.freedesktop.org/drm/drm · e35184f3
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Usual fixes for the week.
      
        The amdgpu contains fixes for two regressions, one reported in
        response to rc1 which broke on SI GPUs, and one gfx9 APU regression.
      
        Otherwise it's mostly fixes for new IP, and some GPU reset fixes. vc4
        is just HDMI fixes, and panfrost has some mnor types fixes.
      
        Core:
         - fix connector DDC pointer
         - fix buffer overflow in format_helper_test
      
        amdgpu:
         - Mode2 reset fixes for Sienna Cichlid
         - Revert broken fan speed sensor fix
         - SMU 13.x fixes
         - GC 11.x fixes
         - RAS fixes
         - SR-IOV fixes
         - Fix BO move breakage on SI
         - Misc compiler fixes
         - Fix gfx9 APU regression caused by PCI AER fix
      
        vc4:
         - HDMI fixes
      
        panfrost:
         - compiler fixes"
      
      * tag 'drm-fixes-2022-10-21' of git://anongit.freedesktop.org/drm/drm: (35 commits)
        drm/amdgpu: fix sdma doorbell init ordering on APUs
        drm/panfrost: replace endian-specific types with native ones
        drm/panfrost: Remove type name from internal structs
        drm/connector: Set DDC pointer in drmm_connector_init
        drm: tests: Fix a buffer overflow in format_helper_test
        drm/amdgpu: use DRM_SCHED_FENCE_DONT_PIPELINE for VM updates
        drm/sched: add DRM_SCHED_FENCE_DONT_PIPELINE flag
        drm/amdgpu: Fix for BO move issue
        drm/amdgpu: dequeue mes scheduler during fini
        drm/amd/pm: enable thermal alert on smu_v13_0_10
        drm/amdgpu: Program GC registers through RLCG interface in gfx_v11/gmc_v11
        drm/amdkfd: Fix type of reset_type parameter in hqd_destroy() callback
        drm/amd/display: Increase frame size limit for display_mode_vba_util_32.o
        drm/amd/pm: add SMU IP v13.0.4 IF version define to V7
        drm/amd/pm: update SMU IP v13.0.4 driver interface version
        drm/amd/pm: Init pm_attr_list when dpm is disabled
        drm/amd/pm: disable cstate feature for gpu reset scenario
        drm/amd/pm: fulfill SMU13.0.7 cstate control interface
        drm/amd/pm: fulfill SMU13.0.0 cstate control interface
        drm/amdgpu: Add sriov vf ras support in amdgpu_ras_asic_supported
        ...
      e35184f3
    • Linus Torvalds's avatar
      Merge tag 'net-6.1-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 6d36c728
      Linus Torvalds authored
      Pull networking fixes from Paolo Abeni:
       "Including fixes from netfilter.
      
        Current release - regressions:
      
         - revert "net: fix cpu_max_bits_warn() usage in
           netif_attrmask_next{,_and}"
      
         - revert "net: sched: fq_codel: remove redundant resource cleanup in
           fq_codel_init()"
      
         - dsa: uninitialized variable in dsa_slave_netdevice_event()
      
         - eth: sunhme: uninitialized variable in happy_meal_init()
      
        Current release - new code bugs:
      
         - eth: octeontx2: fix resource not freed after malloc
      
        Previous releases - regressions:
      
         - sched: fix return value of qdisc ingress handling on success
      
         - sched: fix race condition in qdisc_graft()
      
         - udp: update reuse->has_conns under reuseport_lock.
      
         - tls: strp: make sure the TCP skbs do not have overlapping data
      
         - hsr: avoid possible NULL deref in skb_clone()
      
         - tipc: fix an information leak in tipc_topsrv_kern_subscr
      
         - phylink: add mac_managed_pm in phylink_config structure
      
         - eth: i40e: fix DMA mappings leak
      
         - eth: hyperv: fix a RX-path warning
      
         - eth: mtk: fix memory leaks
      
        Previous releases - always broken:
      
         - sched: cake: fix null pointer access issue when cake_init() fails"
      
      * tag 'net-6.1-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (43 commits)
        net: phy: dp83822: disable MDI crossover status change interrupt
        net: sched: fix race condition in qdisc_graft()
        net: hns: fix possible memory leak in hnae_ae_register()
        wwan_hwsim: fix possible memory leak in wwan_hwsim_dev_new()
        sfc: include vport_id in filter spec hash and equal()
        genetlink: fix kdoc warnings
        selftests: add selftest for chaining of tc ingress handling to egress
        net: Fix return value of qdisc ingress handling on success
        net: sched: sfb: fix null pointer access issue when sfb_init() fails
        Revert "net: sched: fq_codel: remove redundant resource cleanup in fq_codel_init()"
        net: sched: cake: fix null pointer access issue when cake_init() fails
        ethernet: marvell: octeontx2 Fix resource not freed after malloc
        netfilter: nf_tables: relax NFTA_SET_ELEM_KEY_END set flags requirements
        netfilter: rpfilter/fib: Set ->flowic_uid correctly for user namespaces.
        ionic: catch NULL pointer issue on reconfig
        net: hsr: avoid possible NULL deref in skb_clone()
        bnxt_en: fix memory leak in bnxt_nvm_test()
        ip6mr: fix UAF issue in ip6mr_sk_done() when addrconf_init_net() failed
        udp: Update reuse->has_conns under reuseport_lock.
        net: ethernet: mediatek: ppe: Remove the unused function mtk_foe_entry_usable()
        ...
      6d36c728
    • Linus Torvalds's avatar
      Merge tag 'ata-6.1-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata · c7b00652
      Linus Torvalds authored
      Pull ata fixes from Damien Le Moal:
       "Several minor fixes:
      
         - Fix the module alias for the ahci_imx driver to get autoloading to
           work (Alexander)
      
         - Fix a potential array-index-out-of-bounds problem with the
           enclosure managment support in the ahci driver (Kai-Heng)
      
         - Several patches to fix compilation warnings thrown by clang in the
           ahci_st, sata_rcar, ahci_brcm, ahci_xgene, ahci_imx and ahci_qoriq
           drivers (me)"
      
      * tag 'ata-6.1-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata:
        ata: ahci_qoriq: Fix compilation warning
        ata: ahci_imx: Fix compilation warning
        ata: ahci_xgene: Fix compilation warning
        ata: ahci_brcm: Fix compilation warning
        ata: sata_rcar: Fix compilation warning
        ata: ahci_st: Fix compilation warning
        ata: ahci: Match EM_MAX_SLOTS with SATA_PMP_MAX_PORTS
        ata: ahci-imx: Fix MODULE_ALIAS
      c7b00652
    • Linus Torvalds's avatar
      Merge tag 'for-6.1/dm-changes-v2' of... · a3ccea6e
      Linus Torvalds authored
      Merge tag 'for-6.1/dm-changes-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm
      
      Pull device mapper updates from Mike Snitzer:
      
       - Fix dm-bufio to use test_bit_acquire to properly test_bit on arches
         with weaker memory ordering.
      
       - DM core replace DMWARN with DMERR or DMCRIT for fatal errors.
      
       - Enable WQ_HIGHPRI on DM verity target's verify_wq.
      
       - Add documentation for DM verity's try_verify_in_tasklet option.
      
       - Various typo and redundant word fixes in code and/or comments.
      
      * tag 'for-6.1/dm-changes-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
        dm clone: Fix typo in block_device format specifier
        dm: remove unnecessary assignment statement in alloc_dev()
        dm verity: Add documentation for try_verify_in_tasklet option
        dm cache: delete the redundant word 'each' in comment
        dm raid: fix typo in analyse_superblocks code comment
        dm verity: enable WQ_HIGHPRI on verify_wq
        dm raid: delete the redundant word 'that' in comment
        dm: change from DMWARN to DMERR or DMCRIT for fatal errors
        dm bufio: use the acquire memory barrier when testing for B_READING
      a3ccea6e
    • Dave Airlie's avatar
      Merge tag 'drm-misc-fixes-2022-10-20' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes · cbc543c5
      Dave Airlie authored
      
      
      drm-misc-fixes for v6.1-rc2:
      - Fix a buffer overflow in format_helper_test.
      - Set DDC pointer in drmm_connector_init.
      - Compiler fixes for panfrost.
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/c4d05683-8ebe-93b8-d24c-d1d2c68f12c4@linux.intel.com
      cbc543c5
    • Dave Airlie's avatar
      Merge tag 'amd-drm-fixes-6.1-2022-10-20' of... · a4294d5c
      Dave Airlie authored
      
      Merge tag 'amd-drm-fixes-6.1-2022-10-20' of https://gitlab.freedesktop.org/agd5f/linux into drm-fixes
      
      amd-drm-fixes-6.1-2022-10-20:
      
      amdgpu:
      - Fix gfx9 APU regression caused by PCI AER fix
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Alex Deucher <alexander.deucher@amd.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20221020135225.562807-1-alexander.deucher@amd.com
      a4294d5c
    • Dave Airlie's avatar
      Merge tag 'amd-drm-fixes-6.1-2022-10-19' of... · f046ca4a
      Dave Airlie authored
      
      Merge tag 'amd-drm-fixes-6.1-2022-10-19' of https://gitlab.freedesktop.org/agd5f/linux into drm-fixes
      
      amd-drm-fixes-6.1-2022-10-19:
      
      amdgpu:
      - Mode2 reset fixes for Sienna Cichlid
      - Revert broken fan speed sensor fix
      - SMU 13.x fixes
      - GC 11.x fixes
      - RAS fixes
      - SR-IOV fixes
      - Fix BO move breakage on SI
      - Misc compiler fixes
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Alex Deucher <alexander.deucher@amd.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20221019191357.6208-1-alexander.deucher@amd.com
      f046ca4a
    • Dave Airlie's avatar
      Merge tag 'drm-misc-fixes-2022-10-13' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes · 8865dd75
      Dave Airlie authored
      
      
      Short summary of fixes pull:
      
       * vc4: HDMI fixes
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Thomas Zimmermann <tzimmermann@suse.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/Y0gGdlujszCstDeP@linux-uq9g
      8865dd75
    • Daniel Bristot de Oliveira's avatar
      rv/dot2c: Make automaton definition static · 21a1994b
      Daniel Bristot de Oliveira authored
      Monitor's automata definition is only used locally, so make dot2c generate
      a static definition.
      
      Link: https://lore.kernel.org/all/202208210332.gtHXje45-lkp@intel.com
      Link: https://lore.kernel.org/all/202208210358.6HH3OrVs-lkp@intel.com
      Link: https://lkml.kernel.org/r/ffbb92010f643307766c9307fd42f416e5b85fa0.1661266564.git.bristot@kernel.org
      
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Fixes: e3c9fc78
      
       ("tools/rv: Add dot2c")
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Signed-off-by: default avatarDaniel Bristot de Oliveira <bristot@kernel.org>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      21a1994b
  3. Oct 20, 2022
    • Alex Deucher's avatar
      drm/amdgpu: fix sdma doorbell init ordering on APUs · 50b0e4d4
      Alex Deucher authored
      Commit 8795e182 ("PCI/portdrv: Don't disable AER reporting in get_port_device_capability()")
      uncovered a bug in amdgpu that required a reordering of the driver
      init sequence to avoid accessing a special register on the GPU
      before it was properly set up leading to an PCI AER error.  This
      reordering uncovered a different hw programming ordering dependency
      in some APUs where the SDMA doorbells need to be programmed before
      the GFX doorbells. To fix this, move the SDMA doorbell programming
      back into the soc15 common code, but use the actual doorbell range
      values directly rather than the values stored in the ring structure
      since those will not be initialized at this point.
      
      This is a partial revert, but with the doorbell assignment
      fixed so the proper doorbell index is set before it's used.
      
      Fixes: e3163bc8
      
       ("drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega")
      Acked-by: default avatarChristian König <christian.koenig@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Cc: skhan@linuxfoundation.org
      Cc: stable@vger.kernel.org
      50b0e4d4
    • Steven Price's avatar
      drm/panfrost: replace endian-specific types with native ones · 72655fb9
      Steven Price authored
      __le32 and __le64 types aren't portable and are not available on
      FreeBSD (which uses the same uAPI).
      
      Instead of attempting to always output little endian, just use native
      endianness in the dumps. Tools can detect the endianness in use by
      looking at the 'magic' field, but equally we don't expect big-endian to
      be used with Mali (there are no known implementations out there).
      
      Bug: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7252
      Fixes: 730c2bf4
      
       ("drm/panfrost: Add support for devcoredump")
      Reviewed-by: default avatarAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
      Signed-off-by: default avatarSteven Price <steven.price@arm.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20221017104602.142992-3-steven.price@arm.com
      72655fb9
    • Steven Price's avatar
      drm/panfrost: Remove type name from internal structs · 7228d9d7
      Steven Price authored
      
      
      The two structs internal to struct panfrost_dump_object_header were
      named, but sadly that is incompatible with C++, causing an error: "an
      anonymous union may only have public non-static data members".
      
      However nothing refers to struct pan_reg_hdr and struct pan_bomap_hdr
      and there's no need to export these definitions, so lets drop them. This
      fixes the C++ build error with the minimum change in userspace API.
      
      Reported-by: default avatarAdrián Larumbe <adrian.larumbe@collabora.com>
      Fixes: 730c2bf4
      
       ("drm/panfrost: Add support for devcoredump")
      Reviewed-by: default avatarAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
      Signed-off-by: default avatarSteven Price <steven.price@arm.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20221017104602.142992-2-steven.price@arm.com
      7228d9d7
    • Maxime Ripard's avatar
      drm/connector: Set DDC pointer in drmm_connector_init · a91e5e3e
      Maxime Ripard authored
      Commit 35a3b82f ("drm/connector: Introduce drmm_connector_init")
      introduced the function drmm_connector_init() with a parameter for an
      optional ddc pointer to the i2c controller used to access the DDC bus.
      
      However, the underlying call to __drm_connector_init() was always
      setting it to NULL instead of passing the ddc argument around.
      
      This resulted in unexpected null pointer dereference on platforms
      expecting to get a DDC controller.
      
      Fixes: 35a3b82f
      
       ("drm/connector: Introduce drmm_connector_init")
      Reviewed-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
      Link: https://lore.kernel.org/r/20221019143442.1798964-1-maxime@cerno.tech
      Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
      a91e5e3e
    • David Gow's avatar
      drm: tests: Fix a buffer overflow in format_helper_test · 70890033
      David Gow authored
      
      
      The xrgb2101010 format conversion test (unlike for other formats) does
      an endianness conversion on the results. However, it always converts
      TEST_BUF_SIZE 32-bit integers, which results in reading from (and
      writing to) more memory than in present in the result buffer. Instead,
      use the buffer size, divided by sizeof(u32).
      
      The issue could be reproduced with KASAN:
      ./tools/testing/kunit/kunit.py run --kunitconfig drivers/gpu/drm/tests \
      	--kconfig_add CONFIG_KASAN=y --kconfig_add CONFIG_KASAN_VMALLOC=y \
      	--kconfig_add CONFIG_KASAN_KUNIT_TEST=y \
      	drm_format_helper_test.*xrgb2101010
      
      Reported-by: default avatarLinux Kernel Functional Testing <lkft@linaro.org>
      Fixes: 45311431
      
       ("drm/format-helper: Add KUnit tests for drm_fb_xrgb8888_to_xrgb2101010()")
      Signed-off-by: default avatarDavid Gow <davidgow@google.com>
      Reviewed-by: default avatarMaíra Canal <mairacanal@riseup.net>
      Reviewed-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
      Reviewed-by: default avatarJosé Expósito <jose.exposito89@gmail.com>
      Signed-off-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20221019073239.3779180-1-davidgow@google.com
      70890033
    • Thomas Zimmermann's avatar
      Merge drm/drm-fixes into drm-misc-fixes · 1aca5ce0
      Thomas Zimmermann authored
      
      
      Backmerging to get v6.1-rc1.
      
      Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
      1aca5ce0
    • Felix Riemann's avatar
      net: phy: dp83822: disable MDI crossover status change interrupt · 7f378c03
      Felix Riemann authored
      If the cable is disconnected the PHY seems to toggle between MDI and
      MDI-X modes. With the MDI crossover status interrupt active this causes
      roughly 10 interrupts per second.
      
      As the crossover status isn't checked by the driver, the interrupt can
      be disabled to reduce the interrupt load.
      
      Fixes: 87461f7a
      
       ("net: phy: DP83822 initial driver submission")
      Signed-off-by: default avatarFelix Riemann <felix.riemann@sma.de>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Link: https://lore.kernel.org/r/20221018104755.30025-1-svc.sw.rte.linux@sma.de
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      7f378c03
    • Eric Dumazet's avatar
      net: sched: fix race condition in qdisc_graft() · ebda44da
      Eric Dumazet authored
      We had one syzbot report [1] in syzbot queue for a while.
      I was waiting for more occurrences and/or a repro but
      Dmitry Vyukov spotted the issue right away.
      
      <quoting Dmitry>
      qdisc_graft() drops reference to qdisc in notify_and_destroy
      while it's still assigned to dev->qdisc
      </quoting>
      
      Indeed, RCU rules are clear when replacing a data structure.
      The visible pointer (dev->qdisc in this case) must be updated
      to the new object _before_ RCU grace period is started
      (qdisc_put(old) in this case).
      
      [1]
      BUG: KASAN: use-after-free in __tcf_qdisc_find.part.0+0xa3a/0xac0 net/sched/cls_api.c:1066
      Read of size 4 at addr ffff88802065e038 by task syz-executor.4/21027
      
      CPU: 0 PID: 21027 Comm: syz-executor.4 Not tainted 6.0.0-rc3-syzkaller-00363-g7726d4c3e60b #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/26/2022
      Call Trace:
      <TASK>
      __dump_stack lib/dump_stack.c:88 [inline]
      dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
      print_address_description mm/kasan/report.c:317 [inline]
      print_report.cold+0x2ba/0x719 mm/kasan/report.c:433
      kasan_report+0xb1/0x1e0 mm/kasan/report.c:495
      __tcf_qdisc_find.part.0+0xa3a/0xac0 net/sched/cls_api.c:1066
      __tcf_qdisc_find net/sched/cls_api.c:1051 [inline]
      tc_new_tfilter+0x34f/0x2200 net/sched/cls_api.c:2018
      rtnetlink_rcv_msg+0x955/0xca0 net/core/rtnetlink.c:6081
      netlink_rcv_skb+0x153/0x420 net/netlink/af_netlink.c:2501
      netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
      netlink_unicast+0x543/0x7f0 net/netlink/af_netlink.c:1345
      netlink_sendmsg+0x917/0xe10 net/netlink/af_netlink.c:1921
      sock_sendmsg_nosec net/socket.c:714 [inline]
      sock_sendmsg+0xcf/0x120 net/socket.c:734
      ____sys_sendmsg+0x6eb/0x810 net/socket.c:2482
      ___sys_sendmsg+0x110/0x1b0 net/socket.c:2536
      __sys_sendmsg+0xf3/0x1c0 net/socket.c:2565
      do_syscall_x64 arch/x86/entry/common.c:50 [inline]
      do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
      entry_SYSCALL_64_after_hwframe+0x63/0xcd
      RIP: 0033:0x7f5efaa89279
      Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
      RSP: 002b:00007f5efbc31168 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
      RAX: ffffffffffffffda RBX: 00007f5efab9bf80 RCX: 00007f5efaa89279
      RDX: 0000000000000000 RSI: 0000000020000140 RDI: 0000000000000005
      RBP: 00007f5efaae32e9 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
      R13: 00007f5efb0cfb1f R14: 00007f5efbc31300 R15: 0000000000022000
      </TASK>
      
      Allocated by task 21027:
      kasan_save_stack+0x1e/0x40 mm/kasan/common.c:38
      kasan_set_track mm/kasan/common.c:45 [inline]
      set_alloc_info mm/kasan/common.c:437 [inline]
      ____kasan_kmalloc mm/kasan/common.c:516 [inline]
      ____kasan_kmalloc mm/kasan/common.c:475 [inline]
      __kasan_kmalloc+0xa9/0xd0 mm/kasan/common.c:525
      kmalloc_node include/linux/slab.h:623 [inline]
      kzalloc_node include/linux/slab.h:744 [inline]
      qdisc_alloc+0xb0/0xc50 net/sched/sch_generic.c:938
      qdisc_create_dflt+0x71/0x4a0 net/sched/sch_generic.c:997
      attach_one_default_qdisc net/sched/sch_generic.c:1152 [inline]
      netdev_for_each_tx_queue include/linux/netdevice.h:2437 [inline]
      attach_default_qdiscs net/sched/sch_generic.c:1170 [inline]
      dev_activate+0x760/0xcd0 net/sched/sch_generic.c:1229
      __dev_open+0x393/0x4d0 net/core/dev.c:1441
      __dev_change_flags+0x583/0x750 net/core/dev.c:8556
      rtnl_configure_link+0xee/0x240 net/core/rtnetlink.c:3189
      rtnl_newlink_create net/core/rtnetlink.c:3371 [inline]
      __rtnl_newlink+0x10b8/0x17e0 net/core/rtnetlink.c:3580
      rtnl_newlink+0x64/0xa0 net/core/rtnetlink.c:3593
      rtnetlink_rcv_msg+0x43a/0xca0 net/core/rtnetlink.c:6090
      netlink_rcv_skb+0x153/0x420 net/netlink/af_netlink.c:2501
      netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
      netlink_unicast+0x543/0x7f0 net/netlink/af_netlink.c:1345
      netlink_sendmsg+0x917/0xe10 net/netlink/af_netlink.c:1921
      sock_sendmsg_nosec net/socket.c:714 [inline]
      sock_sendmsg+0xcf/0x120 net/socket.c:734
      ____sys_sendmsg+0x6eb/0x810 net/socket.c:2482
      ___sys_sendmsg+0x110/0x1b0 net/socket.c:2536
      __sys_sendmsg+0xf3/0x1c0 net/socket.c:2565
      do_syscall_x64 arch/x86/entry/common.c:50 [inline]
      do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
      entry_SYSCALL_64_after_hwframe+0x63/0xcd
      
      Freed by task 21020:
      kasan_save_stack+0x1e/0x40 mm/kasan/common.c:38
      kasan_set_track+0x21/0x30 mm/kasan/common.c:45
      kasan_set_free_info+0x20/0x30 mm/kasan/generic.c:370
      ____kasan_slab_free mm/kasan/common.c:367 [inline]
      ____kasan_slab_free+0x166/0x1c0 mm/kasan/common.c:329
      kasan_slab_free include/linux/kasan.h:200 [inline]
      slab_free_hook mm/slub.c:1754 [inline]
      slab_free_freelist_hook+0x8b/0x1c0 mm/slub.c:1780
      slab_free mm/slub.c:3534 [inline]
      kfree+0xe2/0x580 mm/slub.c:4562
      rcu_do_batch kernel/rcu/tree.c:2245 [inline]
      rcu_core+0x7b5/0x1890 kernel/rcu/tree.c:2505
      __do_softirq+0x1d3/0x9c6 kernel/softirq.c:571
      
      Last potentially related work creation:
      kasan_save_stack+0x1e/0x40 mm/kasan/common.c:38
      __kasan_record_aux_stack+0xbe/0xd0 mm/kasan/generic.c:348
      call_rcu+0x99/0x790 kernel/rcu/tree.c:2793
      qdisc_put+0xcd/0xe0 net/sched/sch_generic.c:1083
      notify_and_destroy net/sched/sch_api.c:1012 [inline]
      qdisc_graft+0xeb1/0x1270 net/sched/sch_api.c:1084
      tc_modify_qdisc+0xbb7/0x1a00 net/sched/sch_api.c:1671
      rtnetlink_rcv_msg+0x43a/0xca0 net/core/rtnetlink.c:6090
      netlink_rcv_skb+0x153/0x420 net/netlink/af_netlink.c:2501
      netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
      netlink_unicast+0x543/0x7f0 net/netlink/af_netlink.c:1345
      netlink_sendmsg+0x917/0xe10 net/netlink/af_netlink.c:1921
      sock_sendmsg_nosec net/socket.c:714 [inline]
      sock_sendmsg+0xcf/0x120 net/socket.c:734
      ____sys_sendmsg+0x6eb/0x810 net/socket.c:2482
      ___sys_sendmsg+0x110/0x1b0 net/socket.c:2536
      __sys_sendmsg+0xf3/0x1c0 net/socket.c:2565
      do_syscall_x64 arch/x86/entry/common.c:50 [inline]
      do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
      entry_SYSCALL_64_after_hwframe+0x63/0xcd
      
      Second to last potentially related work creation:
      kasan_save_stack+0x1e/0x40 mm/kasan/common.c:38
      __kasan_record_aux_stack+0xbe/0xd0 mm/kasan/generic.c:348
      kvfree_call_rcu+0x74/0x940 kernel/rcu/tree.c:3322
      neigh_destroy+0x431/0x630 net/core/neighbour.c:912
      neigh_release include/net/neighbour.h:454 [inline]
      neigh_cleanup_and_release+0x1f8/0x330 net/core/neighbour.c:103
      neigh_del net/core/neighbour.c:225 [inline]
      neigh_remove_one+0x37d/0x460 net/core/neighbour.c:246
      neigh_forced_gc net/core/neighbour.c:276 [inline]
      neigh_alloc net/core/neighbour.c:447 [inline]
      ___neigh_create+0x18b5/0x29a0 net/core/neighbour.c:642
      ip6_finish_output2+0xfb8/0x1520 net/ipv6/ip6_output.c:125
      __ip6_finish_output net/ipv6/ip6_output.c:195 [inline]
      ip6_finish_output+0x690/0x1160 net/ipv6/ip6_output.c:206
      NF_HOOK_COND include/linux/netfilter.h:296 [inline]
      ip6_output+0x1ed/0x540 net/ipv6/ip6_output.c:227
      dst_output include/net/dst.h:451 [inline]
      NF_HOOK include/linux/netfilter.h:307 [inline]
      NF_HOOK include/linux/netfilter.h:301 [inline]
      mld_sendpack+0xa09/0xe70 net/ipv6/mcast.c:1820
      mld_send_cr net/ipv6/mcast.c:2121 [inline]
      mld_ifc_work+0x71c/0xdc0 net/ipv6/mcast.c:2653
      process_one_work+0x991/0x1610 kernel/workqueue.c:2289
      worker_thread+0x665/0x1080 kernel/workqueue.c:2436
      kthread+0x2e4/0x3a0 kernel/kthread.c:376
      ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:306
      
      The buggy address belongs to the object at ffff88802065e000
      which belongs to the cache kmalloc-1k of size 1024
      The buggy address is located 56 bytes inside of
      1024-byte region [ffff88802065e000, ffff88802065e400)
      
      The buggy address belongs to the physical page:
      page:ffffea0000819600 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x20658
      head:ffffea0000819600 order:3 compound_mapcount:0 compound_pincount:0
      flags: 0xfff00000010200(slab|head|node=0|zone=1|lastcpupid=0x7ff)
      raw: 00fff00000010200 0000000000000000 dead000000000001 ffff888011841dc0
      raw: 0000000000000000 0000000000100010 00000001ffffffff 0000000000000000
      page dumped because: kasan: bad access detected
      page_owner tracks the page as allocated
      page last allocated via order 3, migratetype Unmovable, gfp_mask 0xd20c0(__GFP_IO|__GFP_FS|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC), pid 3523, tgid 3523 (sshd), ts 41495190986, free_ts 41417713212
      prep_new_page mm/page_alloc.c:2532 [inline]
      get_page_from_freelist+0x109b/0x2ce0 mm/page_alloc.c:4283
      __alloc_pages+0x1c7/0x510 mm/page_alloc.c:5515
      alloc_pages+0x1a6/0x270 mm/mempolicy.c:2270
      alloc_slab_page mm/slub.c:1824 [inline]
      allocate_slab+0x27e/0x3d0 mm/slub.c:1969
      new_slab mm/slub.c:2029 [inline]
      ___slab_alloc+0x7f1/0xe10 mm/slub.c:3031
      __slab_alloc.constprop.0+0x4d/0xa0 mm/slub.c:3118
      slab_alloc_node mm/slub.c:3209 [inline]
      __kmalloc_node_track_caller+0x2f2/0x380 mm/slub.c:4955
      kmalloc_reserve net/core/skbuff.c:358 [inline]
      __alloc_skb+0xd9/0x2f0 net/core/skbuff.c:430
      alloc_skb_fclone include/linux/skbuff.h:1307 [inline]
      tcp_stream_alloc_skb+0x38/0x580 net/ipv4/tcp.c:861
      tcp_sendmsg_locked+0xc36/0x2f80 net/ipv4/tcp.c:1325
      tcp_sendmsg+0x2b/0x40 net/ipv4/tcp.c:1483
      inet_sendmsg+0x99/0xe0 net/ipv4/af_inet.c:819
      sock_sendmsg_nosec net/socket.c:714 [inline]
      sock_sendmsg+0xcf/0x120 net/socket.c:734
      sock_write_iter+0x291/0x3d0 net/socket.c:1108
      call_write_iter include/linux/fs.h:2187 [inline]
      new_sync_write fs/read_write.c:491 [inline]
      vfs_write+0x9e9/0xdd0 fs/read_write.c:578
      ksys_write+0x1e8/0x250 fs/read_write.c:631
      page last free stack trace:
      reset_page_owner include/linux/page_owner.h:24 [inline]
      free_pages_prepare mm/page_alloc.c:1449 [inline]
      free_pcp_prepare+0x5e4/0xd20 mm/page_alloc.c:1499
      free_unref_page_prepare mm/page_alloc.c:3380 [inline]
      free_unref_page+0x19/0x4d0 mm/page_alloc.c:3476
      __unfreeze_partials+0x17c/0x1a0 mm/slub.c:2548
      qlink_free mm/kasan/quarantine.c:168 [inline]
      qlist_free_all+0x6a/0x170 mm/kasan/quarantine.c:187
      kasan_quarantine_reduce+0x180/0x200 mm/kasan/quarantine.c:294
      __kasan_slab_alloc+0xa2/0xc0 mm/kasan/common.c:447
      kasan_slab_alloc include/linux/kasan.h:224 [inline]
      slab_post_alloc_hook mm/slab.h:727 [inline]
      slab_alloc_node mm/slub.c:3243 [inline]
      slab_alloc mm/slub.c:3251 [inline]
      __kmem_cache_alloc_lru mm/slub.c:3258 [inline]
      kmem_cache_alloc+0x267/0x3b0 mm/slub.c:3268
      kmem_cache_zalloc include/linux/slab.h:723 [inline]
      alloc_buffer_head+0x20/0x140 fs/buffer.c:2974
      alloc_page_buffers+0x280/0x790 fs/buffer.c:829
      create_empty_buffers+0x2c/0xee0 fs/buffer.c:1558
      ext4_block_write_begin+0x1004/0x1530 fs/ext4/inode.c:1074
      ext4_da_write_begin+0x422/0xae0 fs/ext4/inode.c:2996
      generic_perform_write+0x246/0x560 mm/filemap.c:3738
      ext4_buffered_write_iter+0x15b/0x460 fs/ext4/file.c:270
      ext4_file_write_iter+0x44a/0x1660 fs/ext4/file.c:679
      call_write_iter include/linux/fs.h:2187 [inline]
      new_sync_write fs/read_write.c:491 [inline]
      vfs_write+0x9e9/0xdd0 fs/read_write.c:578
      
      Fixes: af356afa
      
       ("net_sched: reintroduce dev->qdisc for use by sch_api")
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Diagnosed-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Link: https://lore.kernel.org/r/20221018203258.2793282-1-edumazet@google.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      ebda44da
    • Yang Yingliang's avatar
      net: hns: fix possible memory leak in hnae_ae_register() · ff2f5ec5
      Yang Yingliang authored
      Inject fault while probing module, if device_register() fails,
      but the refcount of kobject is not decreased to 0, the name
      allocated in dev_set_name() is leaked. Fix this by calling
      put_device(), so that name can be freed in callback function
      kobject_cleanup().
      
      unreferenced object 0xffff00c01aba2100 (size 128):
        comm "systemd-udevd", pid 1259, jiffies 4294903284 (age 294.152s)
        hex dump (first 32 bytes):
          68 6e 61 65 30 00 00 00 18 21 ba 1a c0 00 ff ff  hnae0....!......
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        backtrace:
          [<0000000034783f26>] slab_post_alloc_hook+0xa0/0x3e0
          [<00000000748188f2>] __kmem_cache_alloc_node+0x164/0x2b0
          [<00000000ab0743e8>] __kmalloc_node_track_caller+0x6c/0x390
          [<000000006c0ffb13>] kvasprintf+0x8c/0x118
          [<00000000fa27bfe1>] kvasprintf_const+0x60/0xc8
          [<0000000083e10ed7>] kobject_set_name_vargs+0x3c/0xc0
          [<000000000b87affc>] dev_set_name+0x7c/0xa0
          [<000000003fd8fe26>] hnae_ae_register+0xcc/0x190 [hnae]
          [<00000000fe97edc9>] hns_dsaf_ae_init+0x9c/0x108 [hns_dsaf]
          [<00000000c36ff1eb>] hns_dsaf_probe+0x548/0x748 [hns_dsaf]
      
      Fixes: 6fe6611f
      
       ("net: add Hisilicon Network Subsystem hnae framework support")
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Reviewed-by: default avatarLeon Romanovsky <leonro@nvidia.com>
      Link: https://lore.kernel.org/r/20221018122451.1749171-1-yangyingliang@huawei.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      ff2f5ec5
    • Yang Yingliang's avatar
      wwan_hwsim: fix possible memory leak in wwan_hwsim_dev_new() · 258ad2fe
      Yang Yingliang authored
      Inject fault while probing module, if device_register() fails,
      but the refcount of kobject is not decreased to 0, the name
      allocated in dev_set_name() is leaked. Fix this by calling
      put_device(), so that name can be freed in callback function
      kobject_cleanup().
      
      unreferenced object 0xffff88810152ad20 (size 8):
        comm "modprobe", pid 252, jiffies 4294849206 (age 22.713s)
        hex dump (first 8 bytes):
          68 77 73 69 6d 30 00 ff                          hwsim0..
        backtrace:
          [<000000009c3504ed>] __kmalloc_node_track_caller+0x44/0x1b0
          [<00000000c0228a5e>] kvasprintf+0xb5/0x140
          [<00000000cff8c21f>] kvasprintf_const+0x55/0x180
          [<0000000055a1e073>] kobject_set_name_vargs+0x56/0x150
          [<000000000a80b139>] dev_set_name+0xab/0xe0
      
      Fixes: f36a111a
      
       ("wwan_hwsim: WWAN device simulator")
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Reviewed-by: default avatarLoic Poulain <loic.poulain@linaro.org>
      Acked-by: default avatarSergey Ryazanov <ryazanov.s.a@gmail.com>
      Link: https://lore.kernel.org/r/20221018131607.1901641-1-yangyingliang@huawei.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      258ad2fe
    • Pieter Jansen van Vuuren's avatar
      sfc: include vport_id in filter spec hash and equal() · c2bf23e4
      Pieter Jansen van Vuuren authored
      Filters on different vports are qualified by different implicit MACs and/or
      VLANs, so shouldn't be considered equal even if their other match fields
      are identical.
      
      Fixes: 7c460d9b
      
       ("sfc: Extend and abstract efx_filter_spec to cover Huntington/EF10")
      Co-developed-by: default avatarEdward Cree <ecree.xilinx@gmail.com>
      Signed-off-by: default avatarEdward Cree <ecree.xilinx@gmail.com>
      Signed-off-by: default avatarPieter Jansen van Vuuren <pieter.jansen-van-vuuren@amd.com>
      Reviewed-by: default avatarMartin Habets <habetsm.xilinx@gmail.com>
      Link: https://lore.kernel.org/r/20221018092841.32206-1-pieter.jansen-van-vuuren@amd.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c2bf23e4