From 198e728044cb776d3a64b6989e4a6254a2901329 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Fri, 23 Jul 2021 18:15:06 +0800 Subject: [PATCH 1/7] ANDROID: GKI: Add rockchip symbol list Initial list of rockchip symbols. These are all already included in the existing list of symbols supported, so no .xml file update is needed at this time. Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I3d31281597bf2e3fb0016629ff75bb304052b1c4 --- android/abi_gki_aarch64_rockchip | 1518 ++++++++++++++++++++++++++++++ build.config.gki.aarch64 | 1 + 2 files changed, 1519 insertions(+) create mode 100644 android/abi_gki_aarch64_rockchip diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip new file mode 100644 index 000000000000..6c4b0be95bf0 --- /dev/null +++ b/android/abi_gki_aarch64_rockchip @@ -0,0 +1,1518 @@ +[abi_symbol_list] + __ClearPageMovable + __SetPageMovable + ___ratelimit + __alloc_disk_node + __alloc_pages_nodemask + __alloc_percpu + __alloc_percpu_gfp + __alloc_skb + __arch_copy_from_user + __arch_copy_to_user + __arm_smccc_hvc + __arm_smccc_smc + __bitmap_and + __bitmap_andnot + __bitmap_clear + __bitmap_set + __bitmap_weight + __blk_rq_map_sg + __cfi_slowpath + __check_object_size + __class_create + __class_register + __clk_get_name + __const_udelay + __cpu_online_mask + __cpu_possible_mask + __cpufreq_driver_target + __cpuhp_remove_state + __cpuhp_setup_state + __cpuhp_state_add_instance + __cpuhp_state_remove_instance + __crypto_memneq + __crypto_xor + __dev_kfree_skb_any + __devm_iio_device_register + __devm_of_phy_provider_register + __devm_regmap_init + __devm_regmap_init_i2c + __devm_regmap_init_mmio_clk + __devm_reset_control_get + __do_once_done + __do_once_start + __drm_err + __fdget + __free_pages + __get_free_pages + __getblk_gfp + __i2c_smbus_xfer + __i2c_transfer + __init_rwsem + __init_swait_queue_head + __init_waitqueue_head + __ioremap + __ipv6_addr_type + __kfifo_alloc + __kfifo_free + __kfifo_in + __kfifo_out + __kfifo_to_user + __kmalloc + __list_add_valid + __list_del_entry_valid + __lock_buffer + __lock_page + __log_post_read_mmio + __log_read_mmio + __log_write_mmio + __mdiobus_register + __memcpy_fromio + __memcpy_toio + __memset_io + __module_get + __msecs_to_jiffies + __mutex_init + __napi_alloc_skb + __napi_schedule + __netdev_alloc_skb + __netif_napi_del + __num_online_cpus + __of_reset_control_get + __page_pinner_migration_failed + __pci_register_driver + __per_cpu_offset + __platform_driver_register + __pm_runtime_disable + __pm_runtime_idle + __pm_runtime_resume + __pm_runtime_set_status + __pm_runtime_suspend + __pm_runtime_use_autosuspend + __printk_ratelimit + __pskb_pull_tail + __put_net + __put_page + __put_task_struct + __rcu_read_lock + __rcu_read_unlock + __refrigerator + __register_chrdev + __rtc_register_device + __scsi_add_device + __scsi_execute + __scsi_print_sense + __sdhci_add_host + __sg_page_iter_next + __sg_page_iter_start + __sock_create + __spi_alloc_controller + __spi_register_driver + __srcu_read_unlock + __stack_chk_fail + __stack_chk_guard + __sw_hweight64 + __sysfs_match_string + __task_pid_nr_ns + __tasklet_hi_schedule + __tasklet_schedule + __traceiter_rwmmio_post_read + __traceiter_rwmmio_read + __traceiter_rwmmio_write + __tracepoint_rwmmio_post_read + __tracepoint_rwmmio_read + __tracepoint_rwmmio_write + __tty_insert_flip_char + __unregister_chrdev + __usecs_to_jiffies + __v4l2_ctrl_modify_range + __v4l2_find_nearest_size + __wait_on_buffer + __wake_up + __warn_printk + _copy_from_iter_full + _copy_to_iter + _ctype + _dev_crit + _dev_err + _dev_info + _dev_warn + _raw_read_lock + _raw_read_lock_bh + _raw_read_lock_irqsave + _raw_read_unlock + _raw_read_unlock_bh + _raw_read_unlock_irqrestore + _raw_spin_lock + _raw_spin_lock_bh + _raw_spin_lock_irq + _raw_spin_lock_irqsave + _raw_spin_trylock + _raw_spin_trylock_bh + _raw_spin_unlock + _raw_spin_unlock_bh + _raw_spin_unlock_irq + _raw_spin_unlock_irqrestore + _raw_write_lock + _raw_write_lock_bh + _raw_write_lock_irq + _raw_write_lock_irqsave + _raw_write_unlock + _raw_write_unlock_bh + _raw_write_unlock_irq + _raw_write_unlock_irqrestore + add_timer + add_uevent_var + add_wait_queue + aes_encrypt + aes_expandkey + alloc_anon_inode + alloc_chrdev_region + alloc_etherdev_mqs + alloc_netdev_mqs + alloc_pages_exact + alloc_workqueue + amba_driver_register + amba_driver_unregister + arc4_crypt + arc4_setkey + arm64_const_caps_ready + arm64_use_ng_mappings + async_schedule_node + atomic_notifier_chain_register + atomic_notifier_chain_unregister + autoremove_wake_function + backlight_device_register + backlight_device_unregister + bcmp + bd_set_nr_sectors + bdget_disk + bdput + bio_endio + bitmap_find_next_zero_area_off + bitmap_free + bitmap_zalloc + blk_alloc_queue + blk_cleanup_queue + blk_execute_rq + blk_execute_rq_nowait + blk_freeze_queue_start + blk_get_queue + blk_get_request + blk_mq_alloc_request + blk_mq_alloc_request_hctx + blk_mq_alloc_tag_set + blk_mq_complete_request + blk_mq_complete_request_remote + blk_mq_delay_kick_requeue_list + blk_mq_end_request + blk_mq_free_request + blk_mq_free_tag_set + blk_mq_freeze_queue + blk_mq_freeze_queue_wait + blk_mq_freeze_queue_wait_timeout + blk_mq_init_queue + blk_mq_map_queues + blk_mq_pci_map_queues + blk_mq_quiesce_queue + blk_mq_requeue_request + blk_mq_start_request + blk_mq_tag_to_rq + blk_mq_tagset_busy_iter + blk_mq_tagset_wait_completed_request + blk_mq_unfreeze_queue + blk_mq_unique_tag + blk_mq_unquiesce_queue + blk_mq_update_nr_hw_queues + blk_poll + blk_put_queue + blk_put_request + blk_queue_chunk_sectors + blk_queue_dma_alignment + blk_queue_flag_clear + blk_queue_flag_set + blk_queue_flag_test_and_set + blk_queue_io_min + blk_queue_io_opt + blk_queue_logical_block_size + blk_queue_max_discard_sectors + blk_queue_max_discard_segments + blk_queue_max_hw_sectors + blk_queue_max_segments + blk_queue_max_write_zeroes_sectors + blk_queue_physical_block_size + blk_queue_virt_boundary + blk_queue_write_cache + blk_rq_map_kern + blk_rq_map_user + blk_rq_map_user_iov + blk_rq_unmap_user + blk_set_queue_dying + blk_status_to_errno + blk_sync_queue + blk_verify_command + bpf_trace_run1 + bpf_trace_run2 + bpf_trace_run3 + bpf_trace_run4 + bpf_trace_run5 + bpf_trace_run6 + bpf_trace_run7 + bt_err + bus_register + bus_register_notifier + bus_unregister + bus_unregister_notifier + call_netdevice_notifiers + call_rcu + cancel_delayed_work + cancel_delayed_work_sync + cancel_work_sync + capable + cdev_add + cdev_alloc + cdev_del + cdev_device_add + cdev_device_del + cdev_init + ce_aes_expandkey + class_destroy + class_find_device + class_interface_unregister + class_unregister + cleanup_srcu_struct + clk_bulk_disable + clk_bulk_enable + clk_bulk_prepare + clk_bulk_unprepare + clk_disable + clk_enable + clk_get + clk_get_rate + clk_hw_get_name + clk_hw_set_rate_range + clk_notifier_register + clk_notifier_unregister + clk_prepare + clk_put + clk_register + clk_round_rate + clk_set_rate + clk_unprepare + clk_unregister + cma_alloc + cma_get_name + cma_release + compat_ptr_ioctl + complete + completion_done + consume_skb + contig_page_data + cpu_have_feature + cpu_hwcap_keys + cpu_hwcaps + cpu_number + cpufreq_cpu_get_raw + cpufreq_enable_boost_support + cpufreq_freq_attr_scaling_available_freqs + cpufreq_freq_attr_scaling_boost_freqs + cpufreq_generic_frequency_table_verify + cpufreq_generic_get + cpufreq_generic_suspend + cpufreq_register_driver + cpufreq_register_governor + cpufreq_table_index_unsorted + cpufreq_unregister_driver + cpufreq_unregister_governor + cpumask_next + cpus_read_lock + cpus_read_unlock + crc32_be + crc32_le + crypto_aead_decrypt + crypto_aead_encrypt + crypto_aead_setauthsize + crypto_aead_setkey + crypto_ahash_digest + crypto_ahash_setkey + crypto_alloc_aead + crypto_alloc_ahash + crypto_alloc_base + crypto_alloc_shash + crypto_comp_compress + crypto_comp_decompress + crypto_dequeue_request + crypto_destroy_tfm + crypto_enqueue_request + crypto_has_alg + crypto_inc + crypto_init_queue + crypto_register_aead + crypto_register_ahash + crypto_register_alg + crypto_register_scomp + crypto_register_shash + crypto_register_skcipher + crypto_req_done + crypto_sha1_finup + crypto_sha1_update + crypto_shash_final + crypto_shash_setkey + crypto_shash_update + crypto_unregister_aead + crypto_unregister_ahash + crypto_unregister_alg + crypto_unregister_scomp + crypto_unregister_shash + crypto_unregister_skcipher + csum_partial + current_time + d_add + d_make_root + datagram_poll + deactivate_locked_super + debugfs_create_dir + debugfs_create_file + debugfs_create_regset32 + debugfs_create_u32 + debugfs_create_x64 + debugfs_remove + debugfs_rename + dec_zone_page_state + default_llseek + default_wake_function + deferred_free + del_gendisk + del_timer + del_timer_sync + delayed_work_timer_fn + desc_to_gpio + destroy_workqueue + dev_close + dev_driver_string + dev_err_probe + dev_fetch_sw_netstats + dev_fwnode + dev_get_by_name + dev_get_by_name_rcu + dev_get_regmap + dev_open + dev_pm_opp_free_cpufreq_table + dev_pm_opp_get_max_transition_latency + dev_pm_opp_get_opp_count + dev_pm_opp_get_opp_table + dev_pm_opp_get_sharing_cpus + dev_pm_opp_get_suspend_opp_freq + dev_pm_opp_init_cpufreq_table + dev_pm_opp_of_cpumask_add_table + dev_pm_opp_of_cpumask_remove_table + dev_pm_opp_of_get_sharing_cpus + dev_pm_opp_of_register_em + dev_pm_opp_put_opp_table + dev_pm_opp_put_regulators + dev_pm_opp_set_rate + dev_pm_opp_set_regulators + dev_pm_opp_set_sharing_cpus + dev_pm_qos_expose_latency_tolerance + dev_pm_qos_hide_latency_tolerance + dev_pm_qos_update_user_latency_tolerance + dev_printk + dev_queue_xmit + dev_set_name + device_add + device_add_disk + device_create + device_del + device_destroy + device_for_each_child + device_get_child_node_count + device_get_next_child_node + device_get_phy_mode + device_init_wakeup + device_initialize + device_property_present + device_property_read_string + device_property_read_string_array + device_property_read_u32_array + device_property_read_u8_array + device_register + device_release_driver + device_remove_file_self + device_set_wakeup_capable + device_set_wakeup_enable + device_wakeup_enable + devm_add_action + devm_blk_ksm_init + devm_clk_bulk_get + devm_clk_get + devm_clk_get_optional + devm_clk_hw_register + devm_clk_register + devm_extcon_dev_allocate + devm_extcon_dev_register + devm_extcon_register_notifier + devm_free_irq + devm_get_clk_from_child + devm_gpio_request_one + devm_gpiochip_add_data_with_key + devm_gpiod_get + devm_gpiod_get_index + devm_gpiod_get_optional + devm_iio_channel_get + devm_iio_device_alloc + devm_input_allocate_device + devm_ioremap + devm_ioremap_resource + devm_kasprintf + devm_kfree + devm_kmalloc + devm_kmemdup + devm_kstrdup + devm_kvasprintf + devm_led_classdev_register_ext + devm_mfd_add_devices + devm_nvmem_register + devm_of_clk_add_hw_provider + devm_phy_create + devm_phy_get + devm_pinctrl_register + devm_platform_get_and_ioremap_resource + devm_platform_ioremap_resource + devm_power_supply_register + devm_pwm_get + devm_regmap_field_alloc + devm_regulator_bulk_get + devm_regulator_get + devm_regulator_get_optional + devm_regulator_register + devm_request_any_context_irq + devm_request_threaded_irq + devm_reset_control_array_get + devm_rtc_allocate_device + devm_snd_dmaengine_pcm_register + devm_snd_soc_register_card + devm_snd_soc_register_component + devm_spi_register_controller + devm_thermal_zone_of_sensor_register + devm_usb_get_phy + devres_add + devres_alloc_node + devres_free + devres_release + disable_irq + disk_end_io_acct + disk_start_io_acct + dma_alloc_attrs + dma_async_device_register + dma_async_device_unregister + dma_async_tx_descriptor_init + dma_buf_export + dma_buf_fd + dma_buf_put + dma_contiguous_default_area + dma_free_attrs + dma_get_required_mask + dma_get_slave_channel + dma_heap_add + dma_heap_get_dev + dma_heap_get_drvdata + dma_heap_get_name + dma_map_page_attrs + dma_map_resource + dma_map_sg_attrs + dma_max_mapping_size + dma_pool_alloc + dma_pool_create + dma_pool_destroy + dma_pool_free + dma_release_channel + dma_request_chan + dma_set_coherent_mask + dma_set_mask + dma_sync_sg_for_cpu + dma_sync_sg_for_device + dma_sync_single_for_cpu + dma_sync_single_for_device + dma_unmap_page_attrs + dma_unmap_resource + dma_unmap_sg_attrs + dmabuf_page_pool_alloc + dmabuf_page_pool_create + dmabuf_page_pool_destroy + dmabuf_page_pool_free + dmaengine_unmap_put + dmam_alloc_attrs + dmam_free_coherent + down + down_read + down_write + dput + dql_completed + dql_reset + driver_register + driver_unregister + drm_add_edid_modes + drm_atomic_helper_connector_destroy_state + drm_atomic_helper_connector_duplicate_state + drm_atomic_helper_connector_reset + drm_bridge_add + drm_bridge_remove + drm_connector_attach_encoder + drm_connector_cleanup + drm_connector_init + drm_connector_update_edid_property + drm_detect_hdmi_monitor + drm_display_mode_from_videomode + drm_get_edid + drm_hdmi_avi_infoframe_from_display_mode + drm_helper_hpd_irq_event + drm_helper_probe_single_connector_modes + drm_mode_create + drm_mode_duplicate + drm_mode_probed_add + drm_mode_set_name + drm_mode_vrefresh + drm_panel_add + drm_panel_disable + drm_panel_init + drm_panel_remove + drm_panel_unprepare + dump_stack + enable_irq + eth_commit_mac_addr_change + eth_mac_addr + eth_platform_get_mac_address + eth_prepare_mac_addr_change + eth_type_trans + eth_validate_addr + ether_setup + ethtool_op_get_ts_info + event_triggers_call + extcon_get_edev_by_phandle + extcon_get_property + extcon_get_state + extcon_set_state_sync + failure_tracking + fasync_helper + find_next_bit + find_next_zero_bit + find_vma + finish_wait + flush_dcache_page + flush_work + flush_workqueue + fpsimd_context_busy + fput + free_irq + free_netdev + free_pages + free_pages_exact + free_percpu + freezing_slow_path + fsync_bdev + full_name_hash + fwnode_device_is_available + fwnode_get_name + fwnode_graph_get_next_endpoint + fwnode_graph_get_port_parent + fwnode_graph_get_remote_endpoint + fwnode_graph_get_remote_port_parent + fwnode_graph_parse_endpoint + fwnode_handle_put + fwnode_property_get_reference_args + fwnode_property_present + fwnode_property_read_string + fwnode_property_read_u32_array + fwnode_property_read_u64_array + gcd + gen_pool_add_owner + gen_pool_alloc_algo_owner + gen_pool_best_fit + gen_pool_create + gen_pool_destroy + gen_pool_dma_alloc_align + gen_pool_dma_zalloc_align + gen_pool_free_owner + gen_pool_set_algo + gen_pool_virt_to_phys + generic_mii_ioctl + genphy_resume + get_cpu_device + get_cpu_idle_time_us + get_device + get_kernel_pages + get_random_bytes + get_random_u32 + get_sg_io_hdr + get_zeroed_page + gf128mul_lle + gic_nonsecure_priorities + glob_match + gpio_to_desc + gpiochip_add_pin_range + gpiochip_generic_free + gpiochip_generic_request + gpiochip_get_data + gpiod_count + gpiod_direction_output + gpiod_get_optional + gpiod_get_value + gpiod_get_value_cansleep + gpiod_set_consumer_name + gpiod_set_value + gpiod_set_value_cansleep + hdmi_audio_infoframe_init + hdmi_audio_infoframe_pack + hdmi_avi_infoframe_pack + hex_asc_upper + hid_add_device + hid_allocate_device + hid_debug + hid_destroy_device + hid_input_report + hid_parse_report + hrtimer_cancel + hrtimer_init + hrtimer_start_range_ns + hwrng_register + hwrng_unregister + i2c_adapter_type + i2c_add_adapter + i2c_add_numbered_adapter + i2c_bus_type + i2c_del_adapter + i2c_del_driver + i2c_for_each_dev + i2c_get_adapter + i2c_parse_fw_timings + i2c_put_adapter + i2c_register_driver + i2c_smbus_read_byte + i2c_smbus_read_byte_data + i2c_smbus_xfer + i2c_transfer + i2c_transfer_buffer_flags + i2c_verify_client + ida_alloc_range + ida_destroy + ida_free + idr_alloc + idr_destroy + idr_find + idr_for_each + idr_get_next + idr_preload + idr_remove + iio_alloc_pollfunc + iio_buffer_init + iio_buffer_put + iio_channel_get_all + iio_dealloc_pollfunc + iio_device_attach_buffer + iio_get_channel_type + iio_get_time_ns + iio_push_to_buffers + iio_read_channel_processed + iio_trigger_notify_done + import_iovec + in4_pton + in6_pton + in_egroup_p + inc_zone_page_state + init_net + init_pseudo + init_srcu_struct + init_timer_key + init_uts_ns + init_wait_entry + input_alloc_absinfo + input_allocate_device + input_event + input_free_device + input_mt_init_slots + input_mt_report_slot_state + input_mt_sync_frame + input_register_device + input_set_abs_params + input_set_capability + input_unregister_device + iounmap + iput + ipv6_stub + irq_get_irq_data + irq_set_irq_wake + irq_stat + is_vmalloc_addr + jiffies + jiffies_to_msecs + kasan_flag_enabled + kasprintf + kern_mount + kern_unmount + kernel_neon_begin + kernel_neon_end + kernel_sendmsg + kernel_sigaction + key_put + keyring_alloc + kfree + kfree_const + kfree_sensitive + kfree_skb + kill_anon_super + kill_fasync + kimage_voffset + kmalloc_caches + kmalloc_order_trace + kmem_cache_alloc + kmem_cache_alloc_trace + kmem_cache_create + kmem_cache_create_usercopy + kmem_cache_destroy + kmem_cache_free + kmemdup + kobject_get + kobject_put + kobject_uevent_env + kstrdup + kstrdup_const + kstrndup + kstrtobool + kstrtobool_from_user + kstrtoint + kstrtoll + kstrtou16 + kstrtou8 + kstrtouint + kstrtoull + kthread_cancel_delayed_work_sync + kthread_create_on_node + kthread_create_worker + kthread_delayed_work_timer_fn + kthread_destroy_worker + kthread_mod_delayed_work + kthread_queue_delayed_work + ktime_get + ktime_get_coarse_real_ts64 + ktime_get_mono_fast_ns + ktime_get_real_ts64 + ktime_get_snapshot + ktime_get_with_offset + kvfree + kvmalloc_node + led_classdev_register_ext + led_classdev_unregister + list_sort + lock_sock_nested + lockref_get + loops_per_jiffy + lzo1x_1_compress + lzo1x_decompress_safe + lzorle1x_1_compress + match_int + match_token + mdiobus_alloc_size + mdiobus_free + mdiobus_get_phy + mdiobus_read + mdiobus_unregister + mdiobus_write + media_entity_pads_init + memchr + memchr_inv + memcpy + memdup_user + memmove + memparse + mempool_alloc + mempool_alloc_slab + mempool_create + mempool_create_node + mempool_destroy + mempool_free + mempool_free_slab + mempool_kfree + mempool_kmalloc + memremap + memset + memset64 + memstart_addr + memunmap + mii_check_media + mii_ethtool_get_link_ksettings + mii_ethtool_gset + mii_ethtool_set_link_ksettings + mii_link_ok + mii_nway_restart + mipi_dsi_attach + mipi_dsi_detach + mipi_dsi_driver_register_full + mipi_dsi_driver_unregister + mktime64 + mmc_add_host + mmc_alloc_host + mmc_can_gpio_cd + mmc_cqe_request_done + mmc_detect_change + mmc_free_host + mmc_gpio_get_cd + mmc_gpio_get_ro + mmc_of_parse + mmc_regulator_get_supply + mmc_regulator_set_ocr + mmc_regulator_set_vqmmc + mmc_remove_host + mmc_request_done + mmc_send_tuning + mod_delayed_work_on + mod_timer + module_layout + module_put + msleep + msleep_interruptible + mutex_is_locked + mutex_lock + mutex_lock_interruptible + mutex_unlock + n_tty_ioctl_helper + napi_complete_done + napi_disable + napi_gro_receive + napi_schedule_prep + net_ratelimit + netdev_alert + netdev_err + netdev_info + netdev_pick_tx + netdev_update_features + netdev_upper_dev_link + netdev_upper_dev_unlink + netdev_warn + netif_carrier_off + netif_carrier_on + netif_device_attach + netif_device_detach + netif_napi_add + netif_rx + netif_rx_ni + netif_schedule_queue + netif_set_real_num_rx_queues + netif_set_real_num_tx_queues + netif_stacked_transfer_operstate + netif_tx_stop_all_queues + netif_tx_wake_queue + new_inode + no_llseek + nonseekable_open + noop_llseek + nr_cpu_ids + ns_to_timespec64 + of_alias_get_id + of_clk_add_hw_provider + of_clk_add_provider + of_clk_del_provider + of_clk_get + of_clk_get_by_name + of_clk_hw_onecell_get + of_clk_hw_simple_get + of_clk_src_simple_get + of_count_phandle_with_args + of_device_get_match_data + of_device_is_available + of_device_is_compatible + of_dma_controller_free + of_dma_controller_register + of_find_device_by_node + of_find_i2c_adapter_by_node + of_find_property + of_get_child_by_name + of_get_compatible_child + of_get_mac_address + of_get_named_gpio_flags + of_get_next_available_child + of_get_next_child + of_get_parent + of_get_property + of_get_regulator_init_data + of_graph_parse_endpoint + of_irq_get_byname + of_machine_is_compatible + of_match_device + of_match_node + of_mdiobus_register + of_node_name_eq + of_parse_phandle + of_parse_phandle_with_args + of_phy_is_fixed_link + of_phy_simple_xlate + of_platform_device_create + of_property_count_elems_of_size + of_property_read_string + of_property_read_string_helper + of_property_read_u32_index + of_property_read_variable_u16_array + of_property_read_variable_u32_array + of_property_read_variable_u8_array + of_pwm_xlate_with_flags + page_endio + page_mapping + panic_notifier_list + param_array_ops + param_get_int + param_get_uint + param_ops_bool + param_ops_byte + param_ops_charp + param_ops_int + param_ops_string + param_ops_uint + param_ops_ulong + param_ops_ushort + param_set_uint + pci_alloc_irq_vectors_affinity + pci_device_is_present + pci_disable_device + pci_disable_pcie_error_reporting + pci_enable_device_mem + pci_enable_pcie_error_reporting + pci_free_irq + pci_free_irq_vectors + pci_intx + pci_irq_vector + pci_load_saved_state + pci_match_id + pci_read_config_byte + pci_read_config_dword + pci_read_config_word + pci_release_selected_regions + pci_request_irq + pci_request_selected_regions + pci_restore_state + pci_save_state + pci_select_bars + pci_set_master + pci_set_power_state + pci_unregister_driver + pci_write_config_dword + pci_write_config_word + pcibios_resource_to_bus + pcie_aspm_enabled + pcim_enable_device + perf_trace_buf_alloc + perf_trace_run_bpf_submit + pfn_valid + phy_attached_info + phy_disconnect + phy_ethtool_get_link_ksettings + phy_ethtool_nway_reset + phy_ethtool_set_link_ksettings + phy_exit + phy_init + phy_init_eee + phy_mii_ioctl + phy_power_off + phy_power_on + phy_print_status + phy_reset + phy_set_mode_ext + phy_start + phy_stop + phylink_connect_phy + phylink_create + phylink_destroy + phylink_of_phy_connect + phylink_set_port_modes + pin_user_pages_fast + pinconf_generic_dt_node_to_map + pinctrl_dev_get_drvdata + pinctrl_gpio_direction_input + pinctrl_gpio_direction_output + pinctrl_pm_select_default_state + pinctrl_pm_select_sleep_state + pinctrl_utils_free_map + platform_device_put + platform_device_register_full + platform_driver_unregister + platform_get_irq + platform_get_irq_byname + platform_get_irq_byname_optional + platform_get_irq_optional + platform_get_resource + platform_get_resource_byname + pm_power_off + pm_runtime_enable + pm_runtime_forbid + pm_runtime_force_resume + pm_runtime_force_suspend + pm_runtime_get_if_active + pm_runtime_irq_safe + pm_runtime_set_autosuspend_delay + pm_suspend_global_flags + pm_wakeup_dev_event + policy_has_boost_freq + posix_clock_register + posix_clock_unregister + power_supply_changed + power_supply_get_drvdata + power_supply_register + power_supply_unregister + preempt_schedule + preempt_schedule_notrace + prepare_to_wait + prepare_to_wait_event + print_hex_dump + printk + proc_create + proc_create_single_data + proc_mkdir + proto_register + proto_unregister + pskb_expand_head + put_device + put_disk + put_sg_io_hdr + pwm_apply_state + pwmchip_add + pwmchip_remove + queue_delayed_work_on + queue_work_on + rational_best_approximation + rb_erase + rb_first + rb_insert_color + rb_next + rcu_barrier + rdev_get_drvdata + rdev_get_id + read_cache_page + refcount_warn_saturate + regcache_cache_only + regcache_mark_dirty + regcache_sync + register_blkdev + register_chrdev_region + register_filesystem + register_netdev + register_netdevice + register_netdevice_notifier + register_pernet_device + register_pernet_subsys + register_reboot_notifier + register_shrinker + regmap_add_irq_chip + regmap_bulk_read + regmap_bulk_write + regmap_del_irq_chip + regmap_field_read + regmap_field_update_bits_base + regmap_irq_get_domain + regmap_multi_reg_write + regmap_raw_read + regmap_raw_write + regmap_read + regmap_update_bits_base + regmap_write + regulator_bulk_disable + regulator_bulk_enable + regulator_disable + regulator_disable_regmap + regulator_enable + regulator_enable_regmap + regulator_get + regulator_get_voltage + regulator_get_voltage_sel_regmap + regulator_is_enabled + regulator_is_enabled_regmap + regulator_list_voltage_linear + regulator_list_voltage_linear_range + regulator_map_voltage_iterate + regulator_map_voltage_linear + regulator_map_voltage_linear_range + regulator_put + regulator_register_notifier + regulator_set_active_discharge_regmap + regulator_set_voltage_sel_regmap + regulator_set_voltage_time_sel + regulator_unregister_notifier + release_firmware + release_sock + remap_pfn_range + remove_proc_entry + remove_wait_queue + request_firmware + request_threaded_irq + reset_control_assert + reset_control_deassert + reset_control_put + reset_control_reset + revalidate_disk_size + rfkill_alloc + rfkill_destroy + rfkill_register + rfkill_unregister + round_jiffies_relative + rt_mutex_lock + rt_mutex_trylock + rt_mutex_unlock + rtc_time64_to_tm + rtc_tm_to_time64 + rtc_update_irq + rtnl_lock + rtnl_trylock + rtnl_unlock + sb800_prefetch + scatterwalk_map_and_copy + schedule + schedule_timeout + schedule_timeout_interruptible + schedule_timeout_uninterruptible + scmi_driver_register + scmi_driver_unregister + scnprintf + scsi_add_host_with_dma + scsi_autopm_get_device + scsi_autopm_put_device + scsi_block_when_processing_errors + scsi_command_size_tbl + scsi_compat_ioctl + scsi_device_get + scsi_device_lookup + scsi_device_put + scsi_host_put + scsi_ioctl + scsi_ioctl_block_when_processing_errors + scsi_normalize_sense + scsi_print_sense_hdr + scsi_remove_device + scsi_remove_host + sdev_prefix_printk + sdhci_add_host + sdhci_cleanup_host + sdhci_cqe_disable + sdhci_cqe_enable + sdhci_cqe_irq + sdhci_enable_clk + sdhci_get_property + sdhci_pltfm_free + sdhci_pltfm_init + sdhci_remove_host + sdhci_reset + sdhci_set_bus_width + sdhci_setup_host + sdio_signal_irq + send_sig + seq_lseek + seq_printf + seq_putc + seq_puts + seq_read + set_capacity_revalidate_and_notify + set_disk_ro + set_freezable + set_page_dirty + set_user_nice + sg_alloc_table + sg_alloc_table_from_pages + sg_copy_from_buffer + sg_copy_to_buffer + sg_free_table + sg_init_one + sg_init_table + sg_miter_next + sg_miter_start + sg_miter_stop + sg_next + sg_pcopy_from_buffer + sg_pcopy_to_buffer + sg_scsi_ioctl + sigprocmask + simple_dir_operations + simple_read_from_buffer + simple_strtoul + single_open + single_release + sk_alloc + sk_free + skb_add_rx_frag + skb_clone + skb_copy_bits + skb_copy_datagram_iter + skb_copy_expand + skb_dequeue + skb_pull + skb_pull_rcsum + skb_push + skb_put + skb_queue_purge + skb_queue_tail + skb_recv_datagram + skb_trim + skb_tstamp_tx + skcipher_walk_aead_decrypt + skcipher_walk_aead_encrypt + skcipher_walk_done + snd_ctl_add + snd_ctl_new1 + snd_pcm_add_chmap_ctls + snd_pcm_create_iec958_consumer_hw_params + snd_pcm_format_width + snd_pcm_hw_constraint_eld + snd_pcm_hw_constraint_list + snd_soc_card_jack_new + snd_soc_component_update_bits + snd_soc_component_write + snd_soc_dai_link_set_capabilities + snd_soc_dai_set_sysclk + snd_soc_dai_set_tdm_slot + snd_soc_dapm_add_routes + snd_soc_dapm_disable_pin_unlocked + snd_soc_dapm_force_enable_pin_unlocked + snd_soc_dapm_get_enum_double + snd_soc_dapm_get_pin_switch + snd_soc_dapm_get_volsw + snd_soc_dapm_info_pin_switch + snd_soc_dapm_put_enum_double + snd_soc_dapm_put_pin_switch + snd_soc_dapm_put_volsw + snd_soc_dapm_sync_unlocked + snd_soc_get_enum_double + snd_soc_get_volsw + snd_soc_info_enum_double + snd_soc_info_volsw + snd_soc_jack_add_gpios + snd_soc_jack_report + snd_soc_of_get_dai_name + snd_soc_of_parse_audio_routing + snd_soc_of_parse_audio_simple_widgets + snd_soc_of_parse_aux_devs + snd_soc_of_parse_card_name + snd_soc_of_parse_daifmt + snd_soc_of_parse_node_prefix + snd_soc_of_parse_tdm_slot + snd_soc_params_to_frame_size + snd_soc_pm_ops + snd_soc_put_enum_double + snd_soc_put_volsw + snd_soc_runtime_calc_hw + snprintf + sock_init_data + sock_no_accept + sock_no_listen + sock_no_mmap + sock_no_shutdown + sock_no_socketpair + sock_queue_rcv_skb + sock_release + sort + spi_controller_resume + spi_controller_suspend + spi_finalize_current_transfer + spi_setup + spi_sync + sprintf + sscanf + stpcpy + strcasecmp + strchr + strcmp + strcpy + strcspn + stream_open + strim + strlcat + strlcpy + strlen + strncasecmp + strnchr + strncmp + strncpy + strnlen + strpbrk + strscpy + strsep + strspn + synchronize_irq + synchronize_net + synchronize_rcu + synchronize_srcu + sys_tz + syscon_node_to_regmap + syscon_regmap_lookup_by_phandle + sysfs_add_file_to_group + sysfs_create_group + sysfs_create_link + sysfs_remove_file_from_group + sysfs_remove_group + sysfs_remove_link + sysfs_streq + system_freezing_cnt + system_long_wq + system_state + system_wq + tasklet_init + tasklet_kill + tasklet_setup + thermal_zone_device_disable + thermal_zone_device_enable + thermal_zone_device_update + time64_to_tm + trace_event_buffer_commit + trace_event_buffer_reserve + trace_event_ignore_this_pid + trace_event_raw_init + trace_event_reg + trace_handle_return + trace_print_symbols_seq + trace_raw_output_prep + trace_seq_printf + trace_seq_putc + try_module_get + try_wait_for_completion + tty_flip_buffer_push + tty_hangup + tty_insert_flip_string_fixed_flag + tty_kref_put + tty_mode_ioctl + tty_port_tty_get + tty_register_ldisc + tty_termios_baud_rate + tty_termios_encode_baud_rate + tty_unregister_ldisc + unlock_page + unpin_user_pages + unregister_blkdev + unregister_chrdev_region + unregister_filesystem + unregister_netdev + unregister_netdevice_many + unregister_netdevice_notifier + unregister_netdevice_queue + unregister_pernet_device + unregister_pernet_subsys + unregister_reboot_notifier + unregister_shrinker + up + up_read + up_write + usb_add_gadget_udc + usb_add_hcd + usb_alloc_coherent + usb_alloc_urb + usb_amd_dev_put + usb_amd_quirk_pll_disable + usb_amd_quirk_pll_enable + usb_anchor_urb + usb_bulk_msg + usb_calc_bus_time + usb_control_msg + usb_create_hcd + usb_debug_root + usb_del_gadget_udc + usb_deregister + usb_disabled + usb_ep_set_maxpacket_limit + usb_find_common_endpoints + usb_free_coherent + usb_free_urb + usb_gadget_giveback_request + usb_gadget_map_request + usb_gadget_set_state + usb_gadget_unmap_request + usb_get_dr_mode + usb_hc_died + usb_hcd_check_unlink_urb + usb_hcd_giveback_urb + usb_hcd_link_urb_to_ep + usb_hcd_map_urb_for_dma + usb_hcd_platform_shutdown + usb_hcd_poll_rh_status + usb_hcd_resume_root_hub + usb_hcd_unlink_urb_from_ep + usb_hcds_loaded + usb_hub_clear_tt_buffer + usb_ifnum_to_if + usb_kill_anchored_urbs + usb_kill_urb + usb_phy_set_charger_current + usb_poison_urb + usb_put_dev + usb_put_hcd + usb_register_driver + usb_remove_hcd + usb_role_switch_get_drvdata + usb_role_switch_register + usb_role_switch_unregister + usb_root_hub_lost_power + usb_speed_string + usb_submit_urb + usb_unanchor_urb + usbnet_change_mtu + usbnet_disconnect + usbnet_get_drvinfo + usbnet_get_endpoints + usbnet_get_link + usbnet_get_link_ksettings + usbnet_get_msglevel + usbnet_get_stats64 + usbnet_link_change + usbnet_nway_reset + usbnet_open + usbnet_probe + usbnet_read_cmd + usbnet_read_cmd_nopm + usbnet_resume + usbnet_set_link_ksettings + usbnet_set_msglevel + usbnet_skb_return + usbnet_start_xmit + usbnet_stop + usbnet_suspend + usbnet_tx_timeout + usbnet_write_cmd + usbnet_write_cmd_async + usbnet_write_cmd_nopm + usleep_range + utf16s_to_utf8s + uuid_null + v4l2_async_notifier_add_fwnode_subdev + v4l2_async_notifier_add_subdev + v4l2_async_notifier_cleanup + v4l2_async_notifier_init + v4l2_async_notifier_unregister + v4l2_async_register_subdev + v4l2_async_subdev_notifier_register + v4l2_async_unregister_subdev + v4l2_ctrl_auto_cluster + v4l2_ctrl_handler_free + v4l2_ctrl_handler_init_class + v4l2_ctrl_handler_setup + v4l2_ctrl_new_std + v4l2_ctrl_new_std_menu + v4l2_ctrl_new_std_menu_items + v4l2_i2c_subdev_init + vabits_actual + vfree + vmalloc + vmalloc_to_page + vmap + vscnprintf + vunmap + vzalloc + wait_for_completion + wait_for_completion_interruptible + wait_for_completion_io_timeout + wait_for_completion_killable + wait_for_completion_timeout + wait_woken + wake_up_process + watchdog_init_timeout + watchdog_register_device + watchdog_set_restart_priority + watchdog_unregister_device + woken_wake_function + xa_destroy + xa_erase + xa_find + xa_find_after + xa_load + xa_store diff --git a/build.config.gki.aarch64 b/build.config.gki.aarch64 index 1a6553bcc383..55229d9912a9 100644 --- a/build.config.gki.aarch64 +++ b/build.config.gki.aarch64 @@ -21,6 +21,7 @@ android/abi_gki_aarch64_hikey960 android/abi_gki_aarch64_mtk android/abi_gki_aarch64_oplus android/abi_gki_aarch64_qcom +android/abi_gki_aarch64_rockchip android/abi_gki_aarch64_virtual_device android/abi_gki_aarch64_vivo android/abi_gki_aarch64_xiaomi From e2e063f5074e2e14a96875e5e5670314a41e1c34 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Mon, 26 Jul 2021 09:27:15 -0700 Subject: [PATCH 2/7] ANDROID: scsi: ufs: add vendor hook to override key reprogramming Some hardware has a way to restore all keyslots at once that is significantly faster than restoring each keyslot individually, as is done by blk_ksm_reprogram_all_keys(). Add a hook "android_rvh_ufs_reprogram_all_keys" that allows overriding the restoration of all keyslots after UFS reset. This may sleep, so this must be a "restricted" Android vendor hook rather than a regular one. Note that currently this functionality can't be upstreamed, as support for the hardware that needs it would need to be upstreamed first. Bug: 162257402 Bug: 181905172 Change-Id: I0b25393a5131941f085892560e08a64e63cd1369 Signed-off-by: Eric Biggers --- drivers/android/vendor_hooks.c | 1 + drivers/scsi/ufs/ufshcd-crypto.c | 12 ++++++++++-- include/trace/hooks/ufshcd.h | 4 ++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 70dcac4b81ee..0ae5d2f5e055 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -213,6 +213,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_fault_cache_page); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_enable_thermal_genl_check); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_pm_notify_suspend); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_fill_prdt); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_ufs_reprogram_all_keys); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_prepare_command); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sysfs); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_command); diff --git a/drivers/scsi/ufs/ufshcd-crypto.c b/drivers/scsi/ufs/ufshcd-crypto.c index 734dd09ffb88..7604c0744746 100644 --- a/drivers/scsi/ufs/ufshcd-crypto.c +++ b/drivers/scsi/ufs/ufshcd-crypto.c @@ -6,6 +6,9 @@ #include "ufshcd.h" #include "ufshcd-crypto.h" +#undef CREATE_TRACE_POINTS +#include + /* Blk-crypto modes supported by UFS crypto */ static const struct ufs_crypto_alg_entry { enum ufs_crypto_alg ufs_alg; @@ -120,8 +123,13 @@ bool ufshcd_crypto_enable(struct ufs_hba *hba) return false; /* Reset might clear all keys, so reprogram all the keys. */ - if (hba->ksm.num_slots) - blk_ksm_reprogram_all_keys(&hba->ksm); + if (hba->ksm.num_slots) { + int err = -EOPNOTSUPP; + + trace_android_rvh_ufs_reprogram_all_keys(hba, &err); + if (err == -EOPNOTSUPP) + blk_ksm_reprogram_all_keys(&hba->ksm); + } if (hba->quirks & UFSHCD_QUIRK_BROKEN_CRYPTO_ENABLE) return false; diff --git a/include/trace/hooks/ufshcd.h b/include/trace/hooks/ufshcd.h index 362723ff50f2..ec8845a55076 100644 --- a/include/trace/hooks/ufshcd.h +++ b/include/trace/hooks/ufshcd.h @@ -19,6 +19,10 @@ DECLARE_HOOK(android_vh_ufs_fill_prdt, unsigned int segments, int *err), TP_ARGS(hba, lrbp, segments, err)); +DECLARE_RESTRICTED_HOOK(android_rvh_ufs_reprogram_all_keys, + TP_PROTO(struct ufs_hba *hba, int *err), + TP_ARGS(hba, err), 1); + DECLARE_HOOK(android_vh_ufs_prepare_command, TP_PROTO(struct ufs_hba *hba, struct request *rq, struct ufshcd_lrb *lrbp, int *err), From 98afdd197f900d909be8761c0a8a8b27fc9e434d Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Mon, 26 Jul 2021 10:35:26 -0700 Subject: [PATCH 3/7] ANDROID: ABI: update generic symbol list and ABI XML android_rvh_ufs_reprogram_all_keys is now used. Leaf changes summary: 2 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable 1 Added function: [A] 'function int __traceiter_android_rvh_ufs_reprogram_all_keys(void*, ufs_hba*, int*)' 1 Added variable: [A] 'tracepoint __tracepoint_android_rvh_ufs_reprogram_all_keys' Bug: 181905172 Change-Id: Ib08d1fa2733e890edf9205a33d804e49e2e67e62 Signed-off-by: Eric Biggers --- android/abi_gki_aarch64.xml | 119 +++++++++++++++++--------------- android/abi_gki_aarch64_generic | 2 + 2 files changed, 66 insertions(+), 55 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 52dc975d19ba..99b5cf9027fa 100755 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -313,6 +313,7 @@ + @@ -5063,6 +5064,7 @@ + @@ -109875,6 +109877,12 @@ + + + + + + @@ -110547,24 +110555,24 @@ - - - - + + + + - - - - - - + + + + + + - - - - + + + + @@ -110575,42 +110583,42 @@ - - - - - - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - @@ -110982,6 +110990,7 @@ + @@ -111097,16 +111106,16 @@ - - - + + + - - - - - - + + + + + + diff --git a/android/abi_gki_aarch64_generic b/android/abi_gki_aarch64_generic index c13cbabe6d35..e7929d5407e9 100644 --- a/android/abi_gki_aarch64_generic +++ b/android/abi_gki_aarch64_generic @@ -1916,6 +1916,7 @@ __traceiter_android_rvh_typec_tcpci_chk_contaminant __traceiter_android_rvh_typec_tcpci_get_vbus __traceiter_android_rvh_uclamp_eff_get + __traceiter_android_rvh_ufs_reprogram_all_keys __traceiter_android_rvh_util_est_update __traceiter_android_vh_arch_set_freq_scale __traceiter_android_vh_cma_alloc_finish @@ -1989,6 +1990,7 @@ __tracepoint_android_rvh_typec_tcpci_chk_contaminant __tracepoint_android_rvh_typec_tcpci_get_vbus __tracepoint_android_rvh_uclamp_eff_get + __tracepoint_android_rvh_ufs_reprogram_all_keys __tracepoint_android_rvh_util_est_update __tracepoint_android_vh_arch_set_freq_scale __tracepoint_android_vh_cma_alloc_finish From cf1646cba3583991e125d9cead17a21ae1e9b27e Mon Sep 17 00:00:00 2001 From: Vincent Palomares Date: Wed, 21 Jul 2021 18:37:58 -0700 Subject: [PATCH 4/7] FROMLIST: scsi: ufs: Allow async suspend/resume callbacks Allow UFS suspend/resume callbacks to run in parallel with other suspend/resume callbacks. This can recoup dozens of milliseconds on the resume path if UFS hardware needs to be powered back on. Suspending and resuming asynchronously is safe to do so long as the driver callbacks only depend on resources made available by either a) parent devices or b) devices explicitly marked as suppliers with device_link_add. Cc: Bjorn Helgaas Cc: Jaegeuk Kim Cc: Bart Van Assche Cc: Adrian Hunter Cc: Stanley Chu Cc: Can Guo Cc: Asutosh Das Cc: Avri Altman Cc: Martin K. Petersen Signed-off-by: Vincent Palomares Reviewed-by: Bart Van Assche Signed-off-by: Vincent Palomares Link: https://lore.kernel.org/linux-scsi/a7091f96-12a3-a244-040a-c41a7c5e3617@acm.org/T/#t Bug: 194213025 Change-Id: I46ff584d3a1342ab3b26ffdf196e7a65637294f3 --- drivers/scsi/ufs/ufshcd.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index a25cdf46a18a..eb2baf3b69b6 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -9541,6 +9541,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq) async_schedule(ufshcd_async_scan, hba); ufs_sysfs_add_nodes(hba); + device_enable_async_suspend(dev); return 0; free_tmf_queue: From fc2d64ec5d13b17da6c9f390cc7bd16933b52d91 Mon Sep 17 00:00:00 2001 From: Jaegeuk Kim Date: Thu, 22 Jul 2021 10:30:58 -0700 Subject: [PATCH 5/7] FROMGIT: f2fs: don't sleep while grabing nat_tree_lock This tries to fix priority inversion in the below condition resulting in long checkpoint delay. f2fs_get_node_info() - nat_tree_lock -> sleep to grab journal_rwsem by contention checkpoint - waiting for nat_tree_lock In order to let checkpoint go, let's release nat_tree_lock, if there's a journal_rwsem contention. Signed-off-by: Daeho Jeong Signed-off-by: Jaegeuk Kim Bug: 191987855 (cherry picked from commit 2eeb0dce728a7eac3e4dfe355d98af40d61f7a26 git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git dev) Change-Id: I97ac4f9d3bde399ab4f17f5b3a6e949ae9b79f0f Signed-off-by: Daeho Jeong --- fs/f2fs/node.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c index 2fc48321319f..28cfc9a86010 100644 --- a/fs/f2fs/node.c +++ b/fs/f2fs/node.c @@ -552,7 +552,7 @@ int f2fs_get_node_info(struct f2fs_sb_info *sbi, nid_t nid, int i; ni->nid = nid; - +retry: /* Check nat cache */ down_read(&nm_i->nat_tree_lock); e = __lookup_nat_cache(nm_i, nid); @@ -564,10 +564,19 @@ int f2fs_get_node_info(struct f2fs_sb_info *sbi, nid_t nid, return 0; } - memset(&ne, 0, sizeof(struct f2fs_nat_entry)); + /* + * Check current segment summary by trying to grab journal_rwsem first. + * This sem is on the critical path on the checkpoint requiring the above + * nat_tree_lock. Therefore, we should retry, if we failed to grab here + * while not bothering checkpoint. + */ + if (!rwsem_is_locked(&sbi->cp_global_sem)) { + down_read(&curseg->journal_rwsem); + } else if (!down_read_trylock(&curseg->journal_rwsem)) { + up_read(&nm_i->nat_tree_lock); + goto retry; + } - /* Check current segment summary */ - down_read(&curseg->journal_rwsem); i = f2fs_lookup_journal_in_cursum(journal, NAT_JOURNAL, nid, 0); if (i >= 0) { ne = nat_in_journal(journal, i); From 36fbb55631563638f7a5e6d53168361618c5c168 Mon Sep 17 00:00:00 2001 From: Kalesh Singh Date: Thu, 29 Jul 2021 15:52:49 +0100 Subject: [PATCH 6/7] FROMGIT: procfs: prevent unpriveleged processes accessing fdinfo dir MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The file permissions on the fdinfo dir from were changed from S_IRUSR|S_IXUSR to S_IRUGO|S_IXUGO, and a PTRACE_MODE_READ check was added for opening the fdinfo files [1]. However, the ptrace permission check was not added to the directory, allowing anyone to get the open FD numbers by reading the fdinfo directory. Add the missing ptrace permission check for opening the fdinfo directory. [1] https://lkml.kernel.org/r/20210308170651.919148-1-kaleshsingh@google.com Link: https://lkml.kernel.org/r/20210713162008.1056986-1-kaleshsingh@google.com Fixes: 7bc3fa0172a4 ("procfs: allow reading fdinfo with PTRACE_MODE_READ") Signed-off-by: Kalesh Singh Cc: Kees Cook Cc: Eric W. Biederman Cc: Christian Brauner Cc: Christian König Cc: Suren Baghdasaryan Cc: Hridya Valsaraju Cc: Jann Horn Signed-off-by: Andrew Morton Signed-off-by: Mark Brown Bug: 151772539 Change-Id: I274b30aa0a5ce8412eae7161d31c6ee955035da9 (cherry picked from commit fc73829fa54b0c7af32d6da7c972eb3390957da4 git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master) Signed-off-by: Kalesh Singh --- fs/proc/fd.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/fs/proc/fd.c b/fs/proc/fd.c index 6157913911f8..6b634c0a9b6e 100644 --- a/fs/proc/fd.c +++ b/fs/proc/fd.c @@ -71,7 +71,7 @@ out: return 0; } -static int seq_fdinfo_open(struct inode *inode, struct file *file) +static int proc_fdinfo_access_allowed(struct inode *inode) { bool allowed = false; struct task_struct *task = get_proc_task(inode); @@ -85,6 +85,16 @@ static int seq_fdinfo_open(struct inode *inode, struct file *file) if (!allowed) return -EACCES; + return 0; +} + +static int seq_fdinfo_open(struct inode *inode, struct file *file) +{ + int ret = proc_fdinfo_access_allowed(inode); + + if (ret) + return ret; + return single_open(file, seq_show, inode); } @@ -365,12 +375,23 @@ static int proc_readfdinfo(struct file *file, struct dir_context *ctx) proc_fdinfo_instantiate); } +static int proc_open_fdinfo(struct inode *inode, struct file *file) +{ + int ret = proc_fdinfo_access_allowed(inode); + + if (ret) + return ret; + + return 0; +} + const struct inode_operations proc_fdinfo_inode_operations = { .lookup = proc_lookupfdinfo, .setattr = proc_setattr, }; const struct file_operations proc_fdinfo_operations = { + .open = proc_open_fdinfo, .read = generic_read_dir, .iterate_shared = proc_readfdinfo, .llseek = generic_file_llseek, From 2a8bfea53d550cb4c8c2a56e7aff758b8f38166c Mon Sep 17 00:00:00 2001 From: Jianqun Xu Date: Fri, 5 Mar 2021 16:06:58 +0800 Subject: [PATCH 7/7] UPSTREAM: kernel/irq: export irq_gc_set_wake Module driver may use irq_gc_set_wake. Bug: 194515348 Change-Id: I52f43e1dff15d987532395e5151e65419b5904b2 Signed-off-by: Jianqun Xu Acked-by: Marc Zyngier Link: https://lore.kernel.org/r/20210305080658.2422114-1-jay.xu@rock-chips.com Signed-off-by: Linus Walleij (cherry picked from commit 024c79520ff5f8cfb9666cdb877af30c554c540f) Signed-off-by: Kever Yang --- kernel/irq/generic-chip.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c index e2999a070a99..79cb6d063b80 100644 --- a/kernel/irq/generic-chip.c +++ b/kernel/irq/generic-chip.c @@ -200,6 +200,7 @@ int irq_gc_set_wake(struct irq_data *d, unsigned int on) irq_gc_unlock(gc); return 0; } +EXPORT_SYMBOL_GPL(irq_gc_set_wake); static u32 irq_readl_be(void __iomem *addr) {