Merge branch 'android13-5.10' into android13-5.10-lts Catch up on the non-lts branch changes. Commits in here include: * 1524a5cab607 Merge tag 'android13-5.10.234_r00' into android13-5.10 * 5039b2dffe4a BACKPORT: usb: xhci: Fix NULL pointer dereference on certain command aborts * 6b7c856caf89 UPSTREAM: Revert "PCI: Use preserve_config in place of pci_flags" * 37e047edf179 ANDROID: GKI: Update rockchip symbols to add iova APIs * 76b049b5861c UPSTREAM: binder: log transaction code on failure * 894f9150d02a UPSTREAM: binder: add failed transaction logging info * deba2e8f0eb7 UPSTREAM: f2fs: Introduce linear search for dentries * 00f88ea1b71f BACKPORT: sched/fair: Move update_nohz_stats() to the CONFIG_NO_HZ_COMMON block to simplify the code & fix an unused function warning * baac115536de ANDROID: KABI macros to release excess KABI fields for use with backports * e3c68400aafc Merge tag 'android13-5.10.233_r00' into android13-5.10 * 3e93d4249b82 ANDROID: GKI: Add Paragon symbol list * cbc1671ddfcc UPSTREAM: selinux: ignore unknown extended permissions * 0bc810b14580 UPSTREAM: KVM: arm64: Release pfn, i.e. put page, if copying MTE tags hits ZONE_DEVICE * 608ac7d1391e UPSTREAM: KVM: arm64: Fix AArch32 register narrowing on userspace write * 0c1ae322c416 UPSTREAM: coresight: etm4x: Do not hardcode IOMEM access for register restore * 7282ad778034 UPSTREAM: coresight: etm4x: Fix unbalanced pm_runtime_enable() * 15122b56a834 UPSTREAM: ASoC: hdmi-codec: fix missing report for jack initial status * 8e928fe4d94d UPSTREAM: bpf: sync_linked_regs() must preserve subreg_def * 07e17f7f8788 UPSTREAM: ALSA: usb-audio: Fix a DMA to stack memory bug * 5415f35f0d70 UPSTREAM: ALSA: usb-audio: Fix out of bounds reads when finding clock sources * 9f71abb43117 ANDROID: fix kernelci build break: redefinition of 'kallsyms_on_each_symbol' * 114c458f409b UPSTREAM: ALSA: usb-audio: Fix potential out-of-bound accesses for Extigy and Mbox devices Change-Id: I55e45c3b156c0938389cc57b141d6ad147f36a60 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
diff --git a/BUILD.bazel b/BUILD.bazel index e3bae9b24..887e08e 100644 --- a/BUILD.bazel +++ b/BUILD.bazel
@@ -19,6 +19,7 @@ "android/abi_gki_aarch64_galaxy", "android/abi_gki_aarch64_generic", "android/abi_gki_aarch64_hikey960", + "android/abi_gki_aarch64_paragon", "android/abi_gki_aarch64_rockchip", "android/abi_gki_aarch64_rtkstb", "android/abi_gki_aarch64_telechips",
diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index e9d3618..937726c 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml
@@ -553,6 +553,7 @@ <elf-symbol name='alloc_chrdev_region' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xe3ec2f2b'/> <elf-symbol name='alloc_etherdev_mqs' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x35259fd5'/> <elf-symbol name='alloc_io_pgtable_ops' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x15b12fac'/> + <elf-symbol name='alloc_iova' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x9e7955a7'/> <elf-symbol name='alloc_iova_fast' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x7c9bed48'/> <elf-symbol name='alloc_netdev_mqs' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x2c573a3e'/> <elf-symbol name='alloc_pages_exact' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x5fc72f0e'/> @@ -2042,6 +2043,7 @@ <elf-symbol name='free_buffer_head' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x3e9f259e'/> <elf-symbol name='free_candev' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xe568f91'/> <elf-symbol name='free_io_pgtable_ops' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x9e5c5bed'/> + <elf-symbol name='free_iova' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xcc5b5fba'/> <elf-symbol name='free_iova_fast' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x6907c213'/> <elf-symbol name='free_irq' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xc1514a3b'/> <elf-symbol name='free_netdev' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xd67e457b'/> @@ -3857,6 +3859,7 @@ <elf-symbol name='serio_unregister_port' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x501fdc15'/> <elf-symbol name='set_bh_page' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x93d90098'/> <elf-symbol name='set_blocksize' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x3a10b4e3'/> + <elf-symbol name='set_cached_acl' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x4d70e944'/> <elf-symbol name='set_capacity_revalidate_and_notify' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xd52ef3a6'/> <elf-symbol name='set_cpus_allowed_ptr' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xbd179a66'/> <elf-symbol name='set_disk_ro' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x24462b13'/> @@ -80750,6 +80753,7 @@ <parameter type-id='7292109c'/> <return type-id='95e97e5e'/> </function-type> + <pointer-type-def type-id='f3a719f4' size-in-bits='64' id='b2ea0a72'/> <pointer-type-def type-id='751b0878' size-in-bits='64' id='b2edd032'/> <function-type size-in-bits='64' id='b2f05574'> <parameter type-id='666fb412'/> @@ -122065,6 +122069,13 @@ <parameter type-id='eaa32e2f' name='cookie' filepath='drivers/iommu/io-pgtable.c' line='31' column='1'/> <return type-id='bf4bdb64'/> </function-decl> + <function-decl name='alloc_iova' mangled-name='alloc_iova' filepath='drivers/iommu/iova.c' line='388' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='alloc_iova'> + <parameter type-id='0c2c419d' name='iovad' filepath='drivers/iommu/iova.c' line='388' column='1'/> + <parameter type-id='7359adad' name='size' filepath='drivers/iommu/iova.c' line='388' column='1'/> + <parameter type-id='7359adad' name='limit_pfn' filepath='drivers/iommu/iova.c' line='389' column='1'/> + <parameter type-id='b50a4934' name='size_aligned' filepath='drivers/iommu/iova.c' line='390' column='1'/> + <return type-id='b2ea0a72'/> + </function-decl> <function-decl name='alloc_iova_fast' mangled-name='alloc_iova_fast' filepath='drivers/iommu/iova.c' line='511' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='alloc_iova_fast'> <parameter type-id='0c2c419d' name='iovad' filepath='drivers/iommu/iova.c' line='511' column='1'/> <parameter type-id='7359adad' name='size' filepath='drivers/iommu/iova.c' line='511' column='1'/> @@ -130057,6 +130068,11 @@ <parameter type-id='bf4bdb64' name='ops' filepath='drivers/iommu/io-pgtable.c' line='59' column='1'/> <return type-id='48b5725f'/> </function-decl> + <function-decl name='free_iova' mangled-name='free_iova' filepath='drivers/iommu/iova.c' line='490' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='free_iova'> + <parameter type-id='0c2c419d' name='iovad' filepath='drivers/iommu/iova.c' line='490' column='1'/> + <parameter type-id='7359adad' name='pfn' filepath='drivers/iommu/iova.c' line='490' column='1'/> + <return type-id='48b5725f'/> + </function-decl> <function-decl name='free_iova_fast' mangled-name='free_iova_fast' filepath='drivers/iommu/iova.c' line='550' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='free_iova_fast'> <parameter type-id='0c2c419d' name='iovad' filepath='drivers/iommu/iova.c' line='550' column='1'/> <parameter type-id='7359adad' name='pfn' filepath='drivers/iommu/iova.c' line='550' column='1'/> @@ -138666,38 +138682,38 @@ <parameter type-id='f23e2572' name='p' filepath='kernel/sched/core.c' line='6721' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='sched_trace_cfs_rq_avg' mangled-name='sched_trace_cfs_rq_avg' filepath='kernel/sched/fair.c' line='11738' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_cfs_rq_avg'> - <parameter type-id='a6892387' name='cfs_rq' filepath='kernel/sched/fair.c' line='11738' column='1'/> + <function-decl name='sched_trace_cfs_rq_avg' mangled-name='sched_trace_cfs_rq_avg' filepath='kernel/sched/fair.c' line='11734' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_cfs_rq_avg'> + <parameter type-id='a6892387' name='cfs_rq' filepath='kernel/sched/fair.c' line='11734' column='1'/> <return type-id='847e6fee'/> </function-decl> - <function-decl name='sched_trace_cfs_rq_cpu' mangled-name='sched_trace_cfs_rq_cpu' filepath='kernel/sched/fair.c' line='11762' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_cfs_rq_cpu'> - <parameter type-id='a6892387' name='cfs_rq' filepath='kernel/sched/fair.c' line='11762' column='1'/> + <function-decl name='sched_trace_cfs_rq_cpu' mangled-name='sched_trace_cfs_rq_cpu' filepath='kernel/sched/fair.c' line='11758' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_cfs_rq_cpu'> + <parameter type-id='a6892387' name='cfs_rq' filepath='kernel/sched/fair.c' line='11758' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sched_trace_cfs_rq_path' mangled-name='sched_trace_cfs_rq_path' filepath='kernel/sched/fair.c' line='11748' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_cfs_rq_path'> - <parameter type-id='a6892387' name='cfs_rq' filepath='kernel/sched/fair.c' line='11748' column='1'/> - <parameter type-id='26a90f95' name='str' filepath='kernel/sched/fair.c' line='11748' column='1'/> - <parameter type-id='95e97e5e' name='len' filepath='kernel/sched/fair.c' line='11748' column='1'/> + <function-decl name='sched_trace_cfs_rq_path' mangled-name='sched_trace_cfs_rq_path' filepath='kernel/sched/fair.c' line='11744' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_cfs_rq_path'> + <parameter type-id='a6892387' name='cfs_rq' filepath='kernel/sched/fair.c' line='11744' column='1'/> + <parameter type-id='26a90f95' name='str' filepath='kernel/sched/fair.c' line='11744' column='1'/> + <parameter type-id='95e97e5e' name='len' filepath='kernel/sched/fair.c' line='11744' column='1'/> <return type-id='26a90f95'/> </function-decl> - <function-decl name='sched_trace_rd_span' mangled-name='sched_trace_rd_span' filepath='kernel/sched/fair.c' line='11816' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_rd_span'> - <parameter type-id='c13bca88' name='rd' filepath='kernel/sched/fair.c' line='11816' column='1'/> + <function-decl name='sched_trace_rd_span' mangled-name='sched_trace_rd_span' filepath='kernel/sched/fair.c' line='11812' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_rd_span'> + <parameter type-id='c13bca88' name='rd' filepath='kernel/sched/fair.c' line='11812' column='1'/> <return type-id='5f8a1ac4'/> </function-decl> - <function-decl name='sched_trace_rq_avg_dl' mangled-name='sched_trace_rq_avg_dl' filepath='kernel/sched/fair.c' line='11778' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_rq_avg_dl'> - <parameter type-id='6ed6b432' name='rq' filepath='kernel/sched/fair.c' line='11778' column='1'/> + <function-decl name='sched_trace_rq_avg_dl' mangled-name='sched_trace_rq_avg_dl' filepath='kernel/sched/fair.c' line='11774' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_rq_avg_dl'> + <parameter type-id='6ed6b432' name='rq' filepath='kernel/sched/fair.c' line='11774' column='1'/> <return type-id='847e6fee'/> </function-decl> - <function-decl name='sched_trace_rq_avg_irq' mangled-name='sched_trace_rq_avg_irq' filepath='kernel/sched/fair.c' line='11788' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_rq_avg_irq'> - <parameter type-id='6ed6b432' name='rq' filepath='kernel/sched/fair.c' line='11788' column='1'/> + <function-decl name='sched_trace_rq_avg_irq' mangled-name='sched_trace_rq_avg_irq' filepath='kernel/sched/fair.c' line='11784' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_rq_avg_irq'> + <parameter type-id='6ed6b432' name='rq' filepath='kernel/sched/fair.c' line='11784' column='1'/> <return type-id='847e6fee'/> </function-decl> - <function-decl name='sched_trace_rq_avg_rt' mangled-name='sched_trace_rq_avg_rt' filepath='kernel/sched/fair.c' line='11768' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_rq_avg_rt'> - <parameter type-id='6ed6b432' name='rq' filepath='kernel/sched/fair.c' line='11768' column='1'/> + <function-decl name='sched_trace_rq_avg_rt' mangled-name='sched_trace_rq_avg_rt' filepath='kernel/sched/fair.c' line='11764' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_rq_avg_rt'> + <parameter type-id='6ed6b432' name='rq' filepath='kernel/sched/fair.c' line='11764' column='1'/> <return type-id='847e6fee'/> </function-decl> - <function-decl name='sched_trace_rq_cpu' mangled-name='sched_trace_rq_cpu' filepath='kernel/sched/fair.c' line='11798' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_rq_cpu'> - <parameter type-id='6ed6b432' name='rq' filepath='kernel/sched/fair.c' line='11798' column='1'/> + <function-decl name='sched_trace_rq_cpu' mangled-name='sched_trace_rq_cpu' filepath='kernel/sched/fair.c' line='11794' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_trace_rq_cpu'> + <parameter type-id='6ed6b432' name='rq' filepath='kernel/sched/fair.c' line='11794' column='1'/> <return type-id='95e97e5e'/> </function-decl> <var-decl name='sched_uclamp_used' type-id='237c0d27' mangled-name='sched_uclamp_used' visibility='default' filepath='kernel/sched/core.c' line='972' column='1' elf-symbol-id='sched_uclamp_used'/> @@ -139344,6 +139360,12 @@ <parameter type-id='95e97e5e' name='size' filepath='fs/block_dev.c' line='157' column='1'/> <return type-id='95e97e5e'/> </function-decl> + <function-decl name='set_cached_acl' mangled-name='set_cached_acl' filepath='fs/posix_acl.c' line='63' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='set_cached_acl'> + <parameter type-id='7e666abe' name='inode' filepath='fs/posix_acl.c' line='63' column='1'/> + <parameter type-id='95e97e5e' name='type' filepath='fs/posix_acl.c' line='63' column='1'/> + <parameter type-id='2871909b' name='acl' filepath='fs/posix_acl.c' line='63' column='1'/> + <return type-id='48b5725f'/> + </function-decl> <function-decl name='set_capacity_revalidate_and_notify' mangled-name='set_capacity_revalidate_and_notify' filepath='block/genhd.c' line='52' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='set_capacity_revalidate_and_notify'> <parameter type-id='33c599da' name='disk' filepath='block/genhd.c' line='52' column='1'/> <parameter type-id='a42536cd' name='size' filepath='block/genhd.c' line='52' column='1'/>
diff --git a/android/abi_gki_aarch64_paragon b/android/abi_gki_aarch64_paragon new file mode 100644 index 0000000..872b459 --- /dev/null +++ b/android/abi_gki_aarch64_paragon
@@ -0,0 +1,156 @@ +[abi_symbol_list] + vfs_llseek + zlib_inflateEnd + zlib_inflate + zlib_inflateInit2 + zlib_inflate_workspacesize + vm_zone_stat + unload_nls + sync_inodes_sb + kfree_link + iov_iter_zero + iov_iter_revert + __blockdev_direct_IO + grab_cache_page_write_begin + add_to_page_cache_locked + lru_cache_add + write_cache_pages + errseq_set + __filemap_set_wb_err + mark_buffer_async_write + redirty_page_for_writepage + __test_set_page_writeback + end_page_writeback + generic_error_remove_page + block_is_partially_uptodate + buffer_migrate_page + block_invalidatepage + __set_page_dirty_buffers + truncate_pagecache + generic_file_splice_read + iter_file_splice_write + generic_file_mmap + vfs_fsync_range + balance_dirty_pages_ratelimited + pagecache_write_end + pagecache_write_begin + create_empty_buffers + try_to_writeback_inodes_sb + generic_perform_write + generic_file_direct_write + file_remove_privs + generic_write_checks + generic_fillattr + sync_inode + filemap_write_and_wait_range + igrab + generic_file_open + generic_read_dir + fiemap_fill_next_extent + lockref_get + drop_nlink + inc_nlink + d_instantiate + __posix_acl_create + d_splice_alias + d_move + d_rehash + d_find_alias + truncate_setsize + posix_acl_chmod + in_group_p + inode_dio_wait + setattr_prepare + generic_permission + inode_nohighmem + init_special_inode + unlock_new_inode + iget5_locked + d_obtain_alias + ilookup + shrink_dcache_sb + invalidate_bdev + clear_inode + truncate_inode_pages + inode_get_bytes + __mark_inode_dirty + posix_acl_equiv_mode + posix_acl_valid + posix_acl_from_xattr + posix_acl_to_xattr + make_bad_inode + set_nlink + load_nls + load_nls_default + current_umask + d_drop + mount_bdev + kill_block_super + inode_init_once + pagecache_get_page + blkdev_issue_flush + __bread_gfp + __lock_buffer + __getblk_gfp + I_BDEV + inode_set_bytes + sb_set_blocksize + blkdev_issue_zeroout + blkdev_issue_discard + __bforget + sync_dirty_buffer + unlock_buffer + mark_buffer_dirty + __wait_on_buffer + copy_page + submit_bh + end_buffer_read_sync + sync_blockdev + clean_bdev_aliases + blk_finish_plug + mpage_readpage + blk_start_plug + put_pages_list + ktime_get_coarse_real_ts64 + wait_for_completion_io + blkdev_issue_write_same + try_to_free_buffers + set_bh_page + alloc_buffer_head + __getblk_gfp + __cond_resched_lock + free_buffer_head + submit_bh + __bread_gfp + __find_get_block + bdevname + __lock_buffer + bit_waitqueue + wake_bit_function + unlock_buffer + yield + sync_dirty_buffer + mark_buffer_dirty + blkdev_issue_flush + __wait_on_buffer + blk_finish_plug + write_dirty_buffer + blk_start_plug + __brelse + congestion_wait + add_to_page_cache_lru + wait_on_page_writeback + inode_newsize_ok + __insert_inode_hash + d_add_ci + generic_fh_to_dentry + generic_fh_to_parent + ihold + is_bad_inode + overflowgid + overflowuid + read_cache_page + sb_min_blocksize + sync_filesystem + truncate_inode_pages_final + set_cached_acl
diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index b335c27..2cb6486 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip
@@ -2327,6 +2327,7 @@ proc_remove # required by rknpu.ko + alloc_iova dev_pm_domain_attach_by_name drm_gem_dumb_destroy drm_gem_handle_delete @@ -2334,6 +2335,7 @@ drm_gem_prime_import_dev drm_gem_vm_open drm_prime_gem_destroy + free_iova set_user_nice vmf_insert_mixed vm_insert_page
diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c index e319134..b820587 100644 --- a/arch/arm64/kvm/guest.c +++ b/arch/arm64/kvm/guest.c
@@ -255,7 +255,7 @@ static int set_core_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg) if (*vcpu_cpsr(vcpu) & PSR_MODE32_BIT) { int i, nr_reg; - switch (*vcpu_cpsr(vcpu)) { + switch (*vcpu_cpsr(vcpu) & PSR_AA32_MODE_MASK) { /* * Either we are dealing with user mode, and only the * first 15 registers (+ PC) must be narrowed to 32bit. @@ -1037,6 +1037,7 @@ int kvm_vm_ioctl_mte_copy_tags(struct kvm *kvm, page = pfn_to_online_page(pfn); if (!page) { /* Reject ZONE_DEVICE memory */ + kvm_release_pfn_clean(pfn); ret = -EFAULT; goto out; }
diff --git a/build.config.gki.aarch64 b/build.config.gki.aarch64 index c7410ba..b1c263f 100644 --- a/build.config.gki.aarch64 +++ b/build.config.gki.aarch64
@@ -21,6 +21,7 @@ android/abi_gki_aarch64_virtual_device android/abi_gki_aarch64_db845c android/abi_gki_aarch64_hikey960 +android/abi_gki_aarch64_paragon android/abi_gki_aarch64_rockchip android/abi_gki_aarch64_rtkstb android/abi_gki_aarch64_telechips
diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 5de5258..bebc982 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c
@@ -3824,9 +3824,13 @@ static void binder_transaction(struct binder_proc *proc, } binder_debug(BINDER_DEBUG_FAILED_TRANSACTION, - "%d:%d transaction failed %d/%d, size %lld-%lld line %d\n", - proc->pid, thread->pid, return_error, return_error_param, - (u64)tr->data_size, (u64)tr->offsets_size, + "%d:%d transaction %s to %d:%d failed %d/%d/%d, code %u size %lld-%lld line %d\n", + proc->pid, thread->pid, reply ? "reply" : + (tr->flags & TF_ONE_WAY ? "async" : "call"), + target_proc ? target_proc->pid : 0, + target_thread ? target_thread->pid : 0, + t_debug_id, return_error, return_error_param, + tr->code, (u64)tr->data_size, (u64)tr->offsets_size, return_error_line); {
diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c index 3ddf957..11ea9d8 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x-core.c +++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c
@@ -1715,8 +1715,10 @@ static void __etm4_cpu_restore(struct etmv4_drvdata *drvdata) { int i; struct etmv4_save_state *state = drvdata->save_state; - struct csdev_access tmp_csa = CSDEV_ACCESS_IOMEM(drvdata->base); - struct csdev_access *csa = &tmp_csa; + struct csdev_access *csa = &drvdata->csdev->access; + + if (WARN_ON(!drvdata->csdev)) + return; etm4_cs_unlock(drvdata, csa); etm4x_relaxed_write32(csa, state->trcclaimset, TRCCLAIMSET); @@ -2033,6 +2035,9 @@ static int etm4_probe_platform_dev(struct platform_device *pdev) ret = etm4_probe(&pdev->dev, NULL, 0); pm_runtime_put(&pdev->dev); + if (ret) + pm_runtime_disable(&pdev->dev); + return ret; }
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 21241f5..b89c1ab 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c
@@ -378,7 +378,8 @@ static void xhci_handle_stopped_cmd_ring(struct xhci_hcd *xhci, if ((xhci->cmd_ring->dequeue != xhci->cmd_ring->enqueue) && !(xhci->xhc_state & XHCI_STATE_DYING)) { xhci->current_cmd = cur_cmd; - xhci_mod_cmd_timer(xhci, XHCI_CMD_DEFAULT_TIMEOUT); + if (cur_cmd) + xhci_mod_cmd_timer(xhci, XHCI_CMD_DEFAULT_TIMEOUT); xhci_ring_cmd_db(xhci); } }
diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c index 14a010d..f182d4f 100644 --- a/fs/f2fs/dir.c +++ b/fs/f2fs/dir.c
@@ -199,7 +199,8 @@ static unsigned long dir_block_index(unsigned int level, static struct f2fs_dir_entry *find_in_block(struct inode *dir, struct page *dentry_page, const struct f2fs_filename *fname, - int *max_slots) + int *max_slots, + bool use_hash) { struct f2fs_dentry_block *dentry_blk; struct f2fs_dentry_ptr d; @@ -207,7 +208,7 @@ static struct f2fs_dir_entry *find_in_block(struct inode *dir, dentry_blk = (struct f2fs_dentry_block *)page_address(dentry_page); make_dentry_ptr_block(dir, &d, dentry_blk); - return f2fs_find_target_dentry(&d, fname, max_slots); + return f2fs_find_target_dentry(&d, fname, max_slots, use_hash); } #ifdef CONFIG_UNICODE @@ -284,7 +285,8 @@ static inline int f2fs_match_name(const struct inode *dir, } struct f2fs_dir_entry *f2fs_find_target_dentry(const struct f2fs_dentry_ptr *d, - const struct f2fs_filename *fname, int *max_slots) + const struct f2fs_filename *fname, int *max_slots, + bool use_hash) { struct f2fs_dir_entry *de; unsigned long bit_pos = 0; @@ -307,7 +309,7 @@ struct f2fs_dir_entry *f2fs_find_target_dentry(const struct f2fs_dentry_ptr *d, continue; } - if (de->hash_code == fname->hash) { + if (!use_hash || de->hash_code == fname->hash) { res = f2fs_match_name(d->inode, fname, d->filename[bit_pos], le16_to_cpu(de->name_len)); @@ -334,11 +336,12 @@ struct f2fs_dir_entry *f2fs_find_target_dentry(const struct f2fs_dentry_ptr *d, static struct f2fs_dir_entry *find_in_level(struct inode *dir, unsigned int level, const struct f2fs_filename *fname, - struct page **res_page) + struct page **res_page, + bool use_hash) { int s = GET_DENTRY_SLOTS(fname->disk_name.len); unsigned int nbucket, nblock; - unsigned int bidx, end_block; + unsigned int bidx, end_block, bucket_no; struct page *dentry_page; struct f2fs_dir_entry *de = NULL; bool room = false; @@ -347,8 +350,11 @@ static struct f2fs_dir_entry *find_in_level(struct inode *dir, nbucket = dir_buckets(level, F2FS_I(dir)->i_dir_level); nblock = bucket_blocks(level); + bucket_no = use_hash ? le32_to_cpu(fname->hash) % nbucket : 0; + +start_find_bucket: bidx = dir_block_index(level, F2FS_I(dir)->i_dir_level, - le32_to_cpu(fname->hash) % nbucket); + bucket_no); end_block = bidx + nblock; for (; bidx < end_block; bidx++) { @@ -364,7 +370,7 @@ static struct f2fs_dir_entry *find_in_level(struct inode *dir, } } - de = find_in_block(dir, dentry_page, fname, &max_slots); + de = find_in_block(dir, dentry_page, fname, &max_slots, use_hash); if (IS_ERR(de)) { *res_page = ERR_CAST(de); de = NULL; @@ -379,12 +385,18 @@ static struct f2fs_dir_entry *find_in_level(struct inode *dir, f2fs_put_page(dentry_page, 0); } - if (!de && room && F2FS_I(dir)->chash != fname->hash) { - F2FS_I(dir)->chash = fname->hash; - F2FS_I(dir)->clevel = level; - } + if (de) + return de; - return de; + if (likely(use_hash)) { + if (room && F2FS_I(dir)->chash != fname->hash) { + F2FS_I(dir)->chash = fname->hash; + F2FS_I(dir)->clevel = level; + } + } else if (++bucket_no < nbucket) { + goto start_find_bucket; + } + return NULL; } struct f2fs_dir_entry *__f2fs_find_entry(struct inode *dir, @@ -395,11 +407,15 @@ struct f2fs_dir_entry *__f2fs_find_entry(struct inode *dir, struct f2fs_dir_entry *de = NULL; unsigned int max_depth; unsigned int level; + bool use_hash = true; *res_page = NULL; +#if IS_ENABLED(CONFIG_UNICODE) +start_find_entry: +#endif if (f2fs_has_inline_dentry(dir)) { - de = f2fs_find_in_inline_dir(dir, fname, res_page); + de = f2fs_find_in_inline_dir(dir, fname, res_page, use_hash); goto out; } @@ -415,11 +431,18 @@ struct f2fs_dir_entry *__f2fs_find_entry(struct inode *dir, } for (level = 0; level < max_depth; level++) { - de = find_in_level(dir, level, fname, res_page); + de = find_in_level(dir, level, fname, res_page, use_hash); if (de || IS_ERR(*res_page)) break; } + out: +#if IS_ENABLED(CONFIG_UNICODE) + if (IS_CASEFOLDED(dir) && !de && use_hash) { + use_hash = false; + goto start_find_entry; + } +#endif /* This is to increase the speed of f2fs_create */ if (!de) F2FS_I(dir)->task = current;
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index 7685c42..8f2cb935 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h
@@ -3475,7 +3475,8 @@ int f2fs_prepare_lookup(struct inode *dir, struct dentry *dentry, struct f2fs_filename *fname); void f2fs_free_filename(struct f2fs_filename *fname); struct f2fs_dir_entry *f2fs_find_target_dentry(const struct f2fs_dentry_ptr *d, - const struct f2fs_filename *fname, int *max_slots); + const struct f2fs_filename *fname, int *max_slots, + bool use_hash); int f2fs_fill_dentries(struct dir_context *ctx, struct f2fs_dentry_ptr *d, unsigned int start_pos, struct fscrypt_str *fstr); void f2fs_do_make_empty_dir(struct inode *inode, struct inode *parent, @@ -4090,7 +4091,8 @@ int f2fs_write_inline_data(struct inode *inode, struct page *page); int f2fs_recover_inline_data(struct inode *inode, struct page *npage); struct f2fs_dir_entry *f2fs_find_in_inline_dir(struct inode *dir, const struct f2fs_filename *fname, - struct page **res_page); + struct page **res_page, + bool use_hash); int f2fs_make_empty_inline_dir(struct inode *inode, struct inode *parent, struct page *ipage); int f2fs_add_inline_entry(struct inode *dir, const struct f2fs_filename *fname,
diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c index 5bcd242..9ae6833 100644 --- a/fs/f2fs/inline.c +++ b/fs/f2fs/inline.c
@@ -351,7 +351,8 @@ int f2fs_recover_inline_data(struct inode *inode, struct page *npage) struct f2fs_dir_entry *f2fs_find_in_inline_dir(struct inode *dir, const struct f2fs_filename *fname, - struct page **res_page) + struct page **res_page, + bool use_hash) { struct f2fs_sb_info *sbi = F2FS_SB(dir->i_sb); struct f2fs_dir_entry *de; @@ -368,7 +369,7 @@ struct f2fs_dir_entry *f2fs_find_in_inline_dir(struct inode *dir, inline_dentry = inline_data_addr(dir, ipage); make_dentry_ptr_inline(dir, &d, inline_dentry); - de = f2fs_find_target_dentry(&d, fname, NULL); + de = f2fs_find_target_dentry(&d, fname, NULL, use_hash); unlock_page(ipage); if (IS_ERR(de)) { *res_page = ERR_CAST(de);
diff --git a/include/linux/android_kabi.h b/include/linux/android_kabi.h index e4a4f85..ee60f4c 100644 --- a/include/linux/android_kabi.h +++ b/include/linux/android_kabi.h
@@ -86,6 +86,14 @@ */ #define ANDROID_KABI_RESERVE(number) _ANDROID_KABI_RESERVE(number) +/* + * ANDROID_KABI_BACKPORT_OK + * Used to allow padding originally reserved with ANDROID_KABI_RESERVE + * to be used for backports of non-LTS patches by partners. These + * fields can by used by replacing with ANDROID_KABI_BACKPORT_USE() + * for partner backports. + */ +#define ANDROID_KABI_BACKPORT_OK(number) ANDROID_KABI_RESERVE(number) /* * Macros to use _after_ the ABI is frozen @@ -101,6 +109,17 @@ _ANDROID_KABI_REPLACE(_ANDROID_KABI_RESERVE(number), _new) /* + * ANDROID_KABI_BACKPORT_USE(number, _new) + * Use a previous padding entry that was defined with + * ANDROID_KABI_BACKPORT_OK(). This is functionally identical + * to ANDROID_KABI_USE() except that it differentiates the + * normal use of KABI fields for LTS from KABI fields that + * were released for use with other backports from upstream. + */ +#define ANDROID_KABI_BACKPORT_USE(number, _new) \ + ANDROID_KABI_USE(number, _new) + +/* * ANDROID_KABI_USE2(number, _new1, _new2) * Use a previous padding entry that was defined with ANDROID_KABI_RESERVE for * two new variables that fit into 64 bits. This is good for when you do not
diff --git a/include/linux/kallsyms.h b/include/linux/kallsyms.h index 4dbf49c..40ca2559 100644 --- a/include/linux/kallsyms.h +++ b/include/linux/kallsyms.h
@@ -108,14 +108,6 @@ static inline unsigned long kallsyms_lookup_name(const char *name) return 0; } -static inline int kallsyms_on_each_symbol(int (*fn)(void *, const char *, - struct module *, - unsigned long), - void *data) -{ - return 0; -} - static inline int kallsyms_lookup_size_offset(unsigned long addr, unsigned long *symbolsize, unsigned long *offset)
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 1854c3a..8799455 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c
@@ -8757,28 +8757,6 @@ group_type group_classify(unsigned int imbalance_pct, return group_has_spare; } -static bool update_nohz_stats(struct rq *rq) -{ -#ifdef CONFIG_NO_HZ_COMMON - unsigned int cpu = rq->cpu; - - if (!rq->has_blocked_load) - return false; - - if (!cpumask_test_cpu(cpu, nohz.idle_cpus_mask)) - return false; - - if (!time_after(jiffies, rq->last_blocked_load_update_tick)) - return true; - - update_blocked_averages(cpu); - - return rq->has_blocked_load; -#else - return false; -#endif -} - /** * update_sg_lb_stats - Update sched_group's statistics for load balancing. * @env: The load balancing environment. @@ -10766,6 +10744,24 @@ void nohz_balance_enter_idle(int cpu) WRITE_ONCE(nohz.has_blocked, 1); } +static bool update_nohz_stats(struct rq *rq) +{ + unsigned int cpu = rq->cpu; + + if (!rq->has_blocked_load) + return false; + + if (!cpumask_test_cpu(cpu, nohz.idle_cpus_mask)) + return false; + + if (!time_after(jiffies, rq->last_blocked_load_update_tick)) + return true; + + update_blocked_averages(cpu); + + return rq->has_blocked_load; +} + /* * Internal function that runs load balance for all idle cpus. The load balance * can be a simple update of blocked load or a complete load balance with
diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c index 6cc0283..6791807 100644 --- a/sound/soc/codecs/hdmi-codec.c +++ b/sound/soc/codecs/hdmi-codec.c
@@ -836,8 +836,9 @@ static int hdmi_dai_probe(struct snd_soc_dai *dai) static void hdmi_codec_jack_report(struct hdmi_codec_priv *hcp, unsigned int jack_status) { - if (hcp->jack && jack_status != hcp->jack_status) { - snd_soc_jack_report(hcp->jack, jack_status, SND_JACK_LINEOUT); + if (jack_status != hcp->jack_status) { + if (hcp->jack) + snd_soc_jack_report(hcp->jack, jack_status, SND_JACK_LINEOUT); hcp->jack_status = jack_status; } } @@ -866,6 +867,13 @@ static int hdmi_codec_set_jack(struct snd_soc_component *component, if (hcp->hcd.ops->hook_plugged_cb) { hcp->jack = jack; + + /* + * Report the initial jack status which may have been provided + * by the parent hdmi driver while the hpd hook was registered. + */ + snd_soc_jack_report(jack, hcp->jack_status, SND_JACK_LINEOUT); + return 0; }