From 5d835560a3344d8fea2194d63930583f7cb916e9 Mon Sep 17 00:00:00 2001 From: Sudarshan Rajagopalan Date: Wed, 28 Oct 2020 14:31:09 -0700 Subject: [PATCH 1/5] ANDROID: mm/memblock: export memblock_end_of_DRAM Export memblock_end_of_DRAM() so that module drivers can know the physical end address of memory blocks that system booted with. Bug: 174547201 Change-Id: Ib0c90b736f16d1abbf47d4f3288443c35f9e17b4 Signed-off-by: Sudarshan Rajagopalan Signed-off-by: Stanley Chu --- mm/memblock.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/memblock.c b/mm/memblock.c index 1256c0c3a997..ce64a6b6f2c0 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -1626,6 +1626,7 @@ phys_addr_t __init_memblock memblock_end_of_DRAM(void) return (memblock.memory.regions[idx].base + memblock.memory.regions[idx].size); } +EXPORT_SYMBOL_GPL(memblock_end_of_DRAM); static phys_addr_t __init_memblock __find_max_addr(phys_addr_t limit) { From e0b1644a472e806b7b8c0110de81913bb2dbc918 Mon Sep 17 00:00:00 2001 From: Charan Teja Reddy Date: Mon, 14 Dec 2020 11:18:09 +0800 Subject: [PATCH 2/5] BACKPORT: dmabuf: fix NULL pointer dereference in dma_buf_release() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit NULL pointer dereference is observed while exporting the dmabuf but failed to allocate the 'struct file' which results into the dropping of the allocated dentry corresponding to this file in the dmabuf fs, which is ending up in dma_buf_release() and accessing the uninitialzed dentry->d_fsdata. Call stack on 5.4 is below: dma_buf_release+0x2c/0x254 drivers/dma-buf/dma-buf.c:88 __dentry_kill+0x294/0x31c fs/dcache.c:584 dentry_kill fs/dcache.c:673 [inline] dput+0x250/0x380 fs/dcache.c:859 path_put+0x24/0x40 fs/namei.c:485 alloc_file_pseudo+0x1a4/0x200 fs/file_table.c:235 dma_buf_getfile drivers/dma-buf/dma-buf.c:473 [inline] dma_buf_export+0x25c/0x3ec drivers/dma-buf/dma-buf.c:585 Fix this by checking for the valid pointer in the dentry->d_fsdata. cherry picked from commit 19a508bd1ad8e444de86873bf2f2b2ab8edd6552 Bug: 175512919 Link: https://patchwork.freedesktop.org/patch/391319/ Change-Id: I3856a387d1902fd2b39b016e81283f082089131c Cc: [5.7+] Signed-off-by: Charan Teja Reddy Signed-off-by: Christian König Reviewed-by: Christian König Signed-off-by: Chao Hao Signed-off-by: Chun-Hung Wu --- drivers/dma-buf/dma-buf.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index 92f04a31c326..8e820bb0ec85 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -59,6 +59,8 @@ static void dma_buf_release(struct dentry *dentry) struct dma_buf *dmabuf; dmabuf = dentry->d_fsdata; + if (unlikely(!dmabuf)) + return; BUG_ON(dmabuf->vmapping_counter); From ed5c049cade042d2c4f45a98399317fd513e53a7 Mon Sep 17 00:00:00 2001 From: "J. Avila" Date: Mon, 14 Dec 2020 17:08:37 +0000 Subject: [PATCH 3/5] ANDROID: sched: Export sched_setattr_nocheck This symbol is needed for certain vendor modules which cannot rely on only the sysfs interface for uclamp alone. Bug: 170697030 Signed-off-by: J. Avila Change-Id: Ic904ade83a45d259cfc95501e6b81e6c5a0e90a0 (cherry picked from commit 0edac9cb95fb2fa292a4b25ac77b125cde28b674) --- kernel/sched/core.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 26b519579120..499d17de8dd1 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -5087,6 +5087,7 @@ int sched_setattr_nocheck(struct task_struct *p, const struct sched_attr *attr) { return __sched_setscheduler(p, attr, false, true); } +EXPORT_SYMBOL_GPL(sched_setattr_nocheck); /** * sched_setscheduler_nocheck - change the scheduling policy and/or RT priority of a thread from kernelspace. From ae8d097e36c485322c6af86a3ddce62b64e28d78 Mon Sep 17 00:00:00 2001 From: Chanho Park Date: Thu, 10 Dec 2020 21:31:00 +0900 Subject: [PATCH 4/5] ANDROID: ABI: update allowed list for exynosauto SoC This patch is for updating GKI allowed symbol list without adding a new symbol. Next patch will introduce newly added symbols for Exynosauto SoC GKI vendor modules. Bug: 175289068 Signed-off-by: Chanho Park Change-Id: I035373ee8f980cd5c03c967d5d2b684150e7fc74 --- android/abi_gki_aarch64_exynosauto | 107 ++++++++++++++++++----------- 1 file changed, 66 insertions(+), 41 deletions(-) diff --git a/android/abi_gki_aarch64_exynosauto b/android/abi_gki_aarch64_exynosauto index bff65a71356a..0b6c92db5b78 100644 --- a/android/abi_gki_aarch64_exynosauto +++ b/android/abi_gki_aarch64_exynosauto @@ -1,6 +1,7 @@ [abi_symbol_list] # commonly used symbols add_timer + add_wait_queue __alloc_pages_nodemask alloc_workqueue __arch_copy_from_user @@ -9,6 +10,7 @@ __arm_smccc_smc atomic_notifier_call_chain atomic_notifier_chain_register + atomic_notifier_chain_unregister __bitmap_and __bitmap_andnot blocking_notifier_call_chain @@ -32,16 +34,20 @@ clk_enable clk_get clk_get_rate + __clk_is_enabled clk_prepare clk_put + clk_register clk_set_rate clk_unprepare + clk_unregister complete complete_all __const_udelay cpu_bit_bitmap cpu_hwcap_keys cpu_hwcaps + cpumask_next cpu_number __cpu_online_mask __cpu_possible_mask @@ -63,6 +69,7 @@ device_property_read_u32_array device_remove_file _dev_info + __dev_kfree_skb_any devm_add_action devm_clk_get devm_free_irq @@ -152,6 +159,7 @@ drm_mode_vrefresh drm_panel_detach enable_irq + eth_type_trans event_triggers_call fd_install find_next_bit @@ -163,6 +171,7 @@ fput frame_vector_to_pages free_irq + free_netdev __free_pages free_pages freezing_slow_path @@ -231,6 +240,7 @@ kmem_cache_free kmemdup kobject_create_and_add + kobject_put krealloc kstrdup kstrtobool @@ -241,6 +251,7 @@ kthread_create_on_node __kthread_init_worker kthread_queue_work + kthread_should_stop kthread_stop kthread_worker_fn ktime_get @@ -273,14 +284,21 @@ __mutex_init mutex_is_locked mutex_lock + mutex_lock_interruptible mutex_unlock names_cachep + __netdev_alloc_skb netif_carrier_off + netif_carrier_on + netif_tx_wake_queue no_llseek + nonseekable_open nr_cpu_ids __num_online_cpus of_address_to_resource of_alias_get_id + of_clk_add_provider + of_clk_del_provider of_clk_get of_device_get_match_data of_device_is_available @@ -290,6 +308,7 @@ of_find_matching_node_and_match of_find_mipi_dsi_host_by_node of_find_node_by_name + of_find_node_opts_by_path of_find_property of_get_child_by_name of_get_display_timings @@ -320,6 +339,7 @@ param_ops_bool param_ops_int param_ops_uint + PDE_DATA perf_trace_buf_alloc perf_trace_run_bpf_submit pfn_valid @@ -351,6 +371,7 @@ platform_get_irq platform_get_resource platform_get_resource_byname + pm_power_off pm_qos_update_request pm_runtime_allow __pm_runtime_disable @@ -363,11 +384,13 @@ __pm_runtime_suspend __pm_runtime_use_autosuspend pm_wakeup_dev_event + pm_wakeup_ws_event preempt_schedule preempt_schedule_notrace prepare_to_wait_event print_hex_dump printk + proc_create_data put_device __put_page __put_task_struct @@ -391,6 +414,8 @@ __refrigerator regcache_mark_dirty regcache_sync + __register_chrdev + register_netdev register_pm_notifier register_reboot_notifier register_restart_handler @@ -410,6 +435,7 @@ regulator_unregister release_firmware __release_region + remove_proc_entry request_firmware __request_region request_threaded_irq @@ -418,7 +444,9 @@ schedule schedule_timeout scnprintf + seq_lseek seq_printf + seq_read set_cpus_allowed_ptr set_page_dirty_lock sg_alloc_table @@ -428,6 +456,9 @@ sg_next simple_read_from_buffer simple_strtoul + single_open + single_release + skb_put snd_pcm_format_width snd_soc_component_update_bits snd_soc_component_write @@ -445,6 +476,7 @@ strcasecmp strcmp strcpy + strcspn strlcpy strlen strncmp @@ -478,8 +510,11 @@ trace_raw_output_prep trace_seq_printf __udelay + __unregister_chrdev unregister_chrdev_region + unregister_netdev unregister_pm_notifier + unregister_reboot_notifier up up_read usb_add_hcd @@ -522,6 +557,7 @@ vmalloc_to_page vmap vmemmap + vscnprintf vsnprintf vunmap vzalloc @@ -530,6 +566,8 @@ wait_for_completion_timeout __wake_up wake_up_process + wakeup_source_register + wakeup_source_unregister __warn_printk work_busy @@ -563,7 +601,6 @@ clk_hw_unregister_gate clk_hw_unregister_mux of_clk_add_hw_provider - of_clk_del_provider of_clk_hw_onecell_get pm_runtime_force_resume pm_runtime_force_suspend @@ -571,16 +608,13 @@ # required by clk_exynos.ko __clk_get_hw clk_hw_get_parent - clk_register clk_register_clkdev clk_register_fixed_factor clk_register_fixed_rate - of_clk_add_provider of_clk_src_onecell_get # required by dss.ko __alloc_percpu - cpumask_next init_task kstat nr_irqs @@ -655,14 +689,6 @@ usb_otg_state_string usb_role_switch_register usb_role_switch_unregister - wakeup_source_register - wakeup_source_unregister - -# required by ect_parser.ko - seq_lseek - seq_read - single_open - single_release # required by exynos-acme.ko bitmap_parselist @@ -685,7 +711,6 @@ system_state # required by exynos-chipid_v2.ko - of_find_node_opts_by_path soc_device_register subsys_system_register @@ -694,11 +719,7 @@ pm_genpd_add_subdomain pm_genpd_init -# required by exynos-reboot.ko - pm_power_off - # required by exynos9drm.ko - add_wait_queue bus_find_device component_add component_bind_all @@ -878,14 +899,12 @@ dev_pm_opp_disable dev_pm_opp_get_freq dev_pm_opp_put - unregister_reboot_notifier update_devfreq # required by exynos_mfc.ko iommu_dma_reserve_iova iommu_map_sg iommu_unmap - mutex_lock_interruptible ns_to_timeval # required by exynos_pm_qos.ko @@ -924,9 +943,6 @@ uart_update_timeout uart_write_wakeup -# required by exynosauto9-itmon.ko - atomic_notifier_chain_unregister - # required by exynosauto9-sadk-tas6424.ko snd_soc_dai_set_tdm_slot snd_soc_dai_set_tristate @@ -978,7 +994,6 @@ ion_heap_map_kernel ion_heap_map_user ion_heap_unmap_kernel - kthread_should_stop list_sort mod_node_page_state of_reserved_mem_device_release @@ -992,7 +1007,6 @@ bpf_trace_run5 cache_line_size clear_page - __clk_is_enabled __close_fd dev_pm_opp_of_add_table dev_pm_opp_of_remove_table @@ -1011,7 +1025,6 @@ hrtimer_init hrtimer_start_range_ns kfree_call_rcu - kobject_put ktime_get_raw __mmdrop module_put @@ -1028,7 +1041,6 @@ remap_vmalloc_range static_key_slow_dec static_key_slow_inc - strcspn strncasecmp synchronize_rcu sysfs_remove_file_ns @@ -1143,7 +1155,6 @@ gpiod_get_value_cansleep gpiod_put netdev_printk - netif_carrier_on of_phy_attach phy_attach_direct phy_detach @@ -1175,6 +1186,7 @@ pinctrl_add_gpio_range pinctrl_dev_get_drvdata pinctrl_remove_gpio_range + pin_get_name # required by pl330.ko amba_driver_register @@ -1191,9 +1203,6 @@ # required by rtc-s2vps01.ko devm_rtc_device_register - pm_wakeup_ws_event - rtc_time64_to_tm - rtc_tm_to_time64 rtc_update_irq rtc_valid_tm @@ -1217,6 +1226,7 @@ get_task_pid i2c_new_device jiffies_to_msecs + kobject_del kstrtou16 kthread_flush_work kthread_flush_worker @@ -1238,7 +1248,6 @@ v4l2_device_set_name v4l2_device_unregister_subdev v4l2_subdev_call_wrappers - vscnprintf # required by samsung-iommu-group.ko iommu_group_alloc @@ -1251,15 +1260,12 @@ dev_close device_set_wakeup_capable device_set_wakeup_enable - __dev_kfree_skb_any dev_open dql_completed dql_reset eth_mac_addr ethtool_op_get_link ethtool_op_get_ts_info - eth_type_trans - free_netdev in4_pton in6_pton jiffies_to_usecs @@ -1275,7 +1281,6 @@ __napi_schedule_irqoff napi_schedule_prep netdev_alert - __netdev_alloc_skb netdev_err netdev_info netdev_update_features @@ -1287,7 +1292,6 @@ netif_schedule_queue netif_set_real_num_rx_queues netif_set_real_num_tx_queues - netif_tx_wake_queue net_ratelimit ns_to_timespec64 of_get_mac_address @@ -1305,13 +1309,10 @@ platform_get_irq_byname _raw_spin_lock_bh _raw_spin_unlock_bh - register_netdev rtnl_lock rtnl_unlock skb_pull - skb_put skb_tstamp_tx - unregister_netdev # required by samsung_iommu.ko bus_set_iommu @@ -1410,12 +1411,10 @@ # required by spidev.ko driver_unregister find_next_zero_bit - __register_chrdev __spi_register_driver spi_setup spi_sync stream_open - __unregister_chrdev # required by ufs-exynos-core.ko ufshcd_config_pwr_mode @@ -1442,6 +1441,15 @@ vb2_expbuf vb2_request_object_is_buffer +# required by vdriver-lib-module.ko + kobject_get + kset_create_and_add + +# required by veth2-module.ko + alloc_netdev_mqs + ether_setup + netif_rx + # required by videobuf2-dma-sg.ko kvfree kvmalloc_node @@ -1453,6 +1461,23 @@ vm_map_ram vm_unmap_ram +# required by vlx-clk-ctrl-common-module.ko + kobject_init_and_add + +# required by vlx-hyp-module.ko + irq_create_of_mapping + irq_dispose_mapping + irq_find_matching_fwspec + of_irq_find_parent + proc_mkdir + +# required by vlx-last-kmsg-module.ko + proc_set_size + +# required by vlx-vmq-module.ko + default_wake_function + remove_wait_queue + # required by xhci-hcd.ko dma_pool_alloc dma_pool_create From be72a6b8eeb8d4cda8c195f011893521d998d6c8 Mon Sep 17 00:00:00 2001 From: Chanho Park Date: Thu, 10 Dec 2020 21:36:36 +0900 Subject: [PATCH 5/5] ANDROID: ABI: add allowed list for Exynosauto SoC This patch is the first trial to upload GKI symbol list for running android as VM on type1 hypervisor. Unlike traditional device driver, para-virtualized drivers for hypervisor tend to use more core symbols. - ioremap_cache: to skip cached mapping for io remap Leaf changes summary: 1 artifact 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, 0 Added variable 1 Added function: [A] 'function void* ioremap_cache(long long unsigned int, unsigned long int)' Bug: 175289068 Signed-off-by: Chanho Park Change-Id: Ia3f0073065ad2da481cce10dd882d7de093b1de3 --- android/abi_gki_aarch64.xml | 418 ++++++++++++++++------------- android/abi_gki_aarch64_exynosauto | 1 + 2 files changed, 235 insertions(+), 184 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 77fd73d8c10c..6b95c840677f 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -2012,6 +2012,7 @@ + @@ -4711,7 +4712,6 @@ - @@ -11891,6 +11891,17 @@ + + + + + + + + + + + @@ -14584,17 +14595,6 @@ - - - - - - - - - - - @@ -14763,6 +14763,13 @@ + + + + + + + @@ -16009,7 +16016,7 @@ - + @@ -16079,18 +16086,18 @@ - + - + - + @@ -16098,7 +16105,7 @@ - + @@ -23688,6 +23695,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -29096,55 +29123,55 @@ - - - + + + - - - - - + + + + + - - - + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + @@ -33074,7 +33101,7 @@ - + @@ -34458,7 +34485,7 @@ - + @@ -34719,7 +34746,7 @@ - + @@ -35730,7 +35757,7 @@ - + @@ -37763,8 +37790,17 @@ + + + + + + + + + @@ -45536,32 +45572,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -68325,7 +68335,7 @@ - + @@ -89462,6 +89472,20 @@ + + + + + + + + + + + + + + @@ -93714,17 +93738,28 @@ - - - + + + + + + - - + + - - + + - + + + + + + + + + @@ -93812,14 +93847,6 @@ - - - - - - - - @@ -94306,11 +94333,11 @@ - + - - + + @@ -94485,7 +94512,7 @@ - + @@ -95346,7 +95373,7 @@ - + @@ -103790,7 +103817,7 @@ - + @@ -108240,8 +108267,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -108919,6 +108972,14 @@ + + + + + + + + @@ -109693,26 +109754,12 @@ - - - - - - - - - - - - - - - + @@ -110005,7 +110052,7 @@ - + @@ -110187,43 +110234,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -112499,6 +112509,14 @@ + + + + + + + + @@ -112679,7 +112697,7 @@ - + @@ -112687,22 +112705,6 @@ - - - - - - - - - - - - - - - - @@ -113065,7 +113067,7 @@ - + @@ -113108,6 +113110,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -113200,6 +113238,7 @@ + @@ -113230,7 +113269,7 @@ - + @@ -113287,7 +113326,7 @@ - + @@ -117843,6 +117882,17 @@ + + + + + + + + + + + @@ -118015,7 +118065,7 @@ - + @@ -118054,7 +118104,7 @@ - + @@ -118136,7 +118186,7 @@ - + @@ -118151,7 +118201,7 @@ - + @@ -118163,7 +118213,7 @@ - + @@ -118172,7 +118222,7 @@ - + @@ -130935,6 +130985,6 @@ diff --git a/android/abi_gki_aarch64_exynosauto b/android/abi_gki_aarch64_exynosauto index 0b6c92db5b78..c981b860389b 100644 --- a/android/abi_gki_aarch64_exynosauto +++ b/android/abi_gki_aarch64_exynosauto @@ -1465,6 +1465,7 @@ kobject_init_and_add # required by vlx-hyp-module.ko + ioremap_cache irq_create_of_mapping irq_dispose_mapping irq_find_matching_fwspec