Commit Graph

972957 Commits

Author SHA1 Message Date
Alistair Delva
37913822f6 Revert "ANDROID: GKI: bring WPAN into GKI"
This reverts commit adef4d1d97.

Reason for revert: submitted prematurely

Bug: 175144495
Change-Id: I65b60f5fee7b6f467e8500ea1688cca0305ae961
2021-01-31 22:51:29 +00:00
Greg Kroah-Hartman
8a38735605 ANDROID: GKI: update .xml file
It's been a while since the .xml file was updated, so might as well keep
it a bit up to date:

Leaf changes summary: 2775 artifacts changed
Changed leaf types summary: 76 leaf types changed
Removed/Changed/Added functions summary: 0 Removed, 1622 Changed, 941 Added functions
Removed/Changed/Added variables summary: 0 Removed, 33 Changed, 103 Added variables
Function symbols changes summary: 0 Removed, 5 Added function symbols not referenced by debug info
Variable symbols changes summary: 0 Removed, 2 Added variable symbols not referenced by debug info

941 Added functions:

  [A] 'function void* PDE_DATA(const inode*)'
  [A] 'function clk_hw* __clk_get_hw(clk*)'
  [A] 'function int __cpufreq_driver_target(cpufreq_policy*, unsigned int, unsigned int)'
  [A] 'function int __cpuhp_setup_state_cpuslocked(cpuhp_state, const char*, bool, int (unsigned int)*, int (unsigned int)*, bool)'
  [A] 'function int __devm_iio_device_register(device*, iio_dev*, module*)'
  [A] 'function void __drm_atomic_helper_connector_destroy_state(drm_connector_state*)'
  [A] 'function void __drm_atomic_helper_connector_duplicate_state(drm_connector*, drm_connector_state*)'
  [A] 'function void __drm_atomic_helper_connector_reset(drm_connector*, drm_connector_state*)'
  [A] 'function void __drm_atomic_state_free(kref*)'
  [A] 'function unsigned long int __fdget(unsigned int)'
  [A] 'function int __ion_device_add_heap(ion_heap*, module*)'
  [A] 'function int __ipv6_addr_type(const in6_addr*)'
  [A] 'function unsigned int __kfifo_in(__kfifo*, void*, unsigned int)'
  [A] 'function unsigned int __kfifo_out(__kfifo*, void*, unsigned int)'
  [A] 'function void __kthread_init_worker(kthread_worker*, const char*, lock_class_key*)'
  [A] 'function void __log_post_read_mmio(u64, u8, const volatile void*)'
  [A] 'function void __log_read_mmio(u8, const volatile void*)'
  [A] 'function void __log_write_mmio(u64, u8, volatile void*)'
  [A] 'function int __media_device_register(media_device*, module*)'
  [A] 'function void** __memcat_p(void**, void**)'
  [A] 'function sock* __netlink_kernel_create(net*, int, module*, netlink_kernel_cfg*)'
  [A] 'function nlmsghdr* __nlmsg_put(sk_buff*, u32, u32, int, int, int)'
  [A] 'function bool __percpu_down_read(percpu_rw_semaphore*, bool)'
  [A] 'function int __percpu_init_rwsem(percpu_rw_semaphore*, const char*, lock_class_key*)'
  [A] 'function void __pm_relax(wakeup_source*)'
  [A] 'function void __pm_stay_awake(wakeup_source*)'
  [A] 'function int __request_percpu_irq(unsigned int, irq_handler_t, unsigned long int, const char*, void*)'
  [A] 'function scsi_device* __scsi_iterate_devices(Scsi_Host*, scsi_device*)'
  [A] 'function void __scsi_print_sense(const scsi_device*, const char*, const unsigned char*, int)'
  [A] 'function int __spi_register_driver(module*, spi_driver*)'
  [A] 'function int __srcu_read_lock(srcu_struct*)'
  [A] 'function void __srcu_read_unlock(srcu_struct*, int)'
  [A] 'function pid_t __task_pid_nr_ns(task_struct*, pid_type, pid_namespace*)'
  [A] 'function rq* __task_rq_lock(task_struct*, rq_flags*)'
  [A] 'function void __tasklet_hi_schedule(tasklet_struct*)'
  [A] 'function int __trace_bprintk(unsigned long int, const char*, ...)'
  [A] 'function int __traceiter_cpu_frequency(void*, unsigned int, unsigned int)'
  [A] 'function int __uio_register_device(module*, device*, uio_info*)'
  [A] 'function int __v4l2_device_register_subdev_nodes(v4l2_device*, bool)'
  [A] 'function int __video_register_device(video_device*, vfl_devnode_type, int, int, module*)'
  [A] 'function void __wait_rcu_gp(bool, int, call_rcu_func_t*, rcu_synchronize*)'
  [A] 'function void __wake_up_locked(wait_queue_head*, unsigned int, int)'
  [A] 'function int __xa_alloc(xarray*, u32*, void*, xa_limit, gfp_t)'
  [A] 'function void _dev_emerg(const device*, const char*, ...)'
  [A] 'function void _raw_read_lock_bh(rwlock_t*)'
  [A] 'function void _raw_read_lock_irq(rwlock_t*)'
  [A] 'function unsigned long int _raw_read_lock_irqsave(rwlock_t*)'
  [A] 'function void _raw_read_unlock_bh(rwlock_t*)'
  [A] 'function void _raw_read_unlock_irq(rwlock_t*)'
  [A] 'function void _raw_read_unlock_irqrestore(rwlock_t*, unsigned long int)'
  [A] 'function void _raw_write_lock_irq(__anonymous_struct__32*)'
  [A] 'function unsigned long int _raw_write_lock_irqsave(rwlock_t*)'
  [A] 'function void _raw_write_unlock_irq(__anonymous_struct__32*)'
  [A] 'function void _raw_write_unlock_irqrestore(rwlock_t*, unsigned long int)'
  [A] 'function unsigned long int _snd_pcm_stream_lock_irqsave(snd_pcm_substream*)'
  [A] 'function int access_process_vm(task_struct*, unsigned long int, void*, int, unsigned int)'
  [A] 'function void activate_task(rq*, task_struct*, int)'
  [A] 'function int add_cpu(unsigned int)'
  [A] 'function int add_memory(int, u64, u64, mhp_t)'
  [A] 'function void add_taint(unsigned int, lockdep_ok)'
  [A] 'function void add_timer_on(timer_list*, int)'
  [A] 'function void add_wait_queue(wait_queue_head*, wait_queue_entry*)'
  [A] 'function void adjust_managed_page_count(page*, long int)'
  [A] 'function sk_buff* alloc_skb_with_frags(unsigned long int, unsigned long int, int, int*, unsigned int)'
  [A] 'function void argv_free(char**)'
  [A] 'function char** argv_split(unsigned int, const char*, int*)'
  [A] 'function int atomic_notifier_call_chain(atomic_notifier_head*, unsigned long int, void*)'
  [A] 'function int atomic_notifier_chain_register(atomic_notifier_head*, notifier_block*)'
  [A] 'function int atomic_notifier_chain_unregister(atomic_notifier_head*, notifier_block*)'
  [A] 'function int available_idle_cpu(int)'
  [A] 'function backlight_device* backlight_device_get_by_type(backlight_type)'
  [A] 'function backlight_device* backlight_device_register(const char*, device*, void*, const backlight_ops*, const backlight_properties*)'
  [A] 'function int backlight_device_set_brightness(backlight_device*, unsigned long int)'
  [A] 'function void backlight_device_unregister(backlight_device*)'
  [A] 'function int bitmap_allocate_region(unsigned long int*, unsigned int, int)'
  [A] 'function int bitmap_print_to_pagebuf(bool, char*, const unsigned long int*, int)'
  [A] 'function void bitmap_release_region(unsigned long int*, unsigned int, int)'
  [A] 'function void blk_execute_rq_nowait(request_queue*, gendisk*, request*, int, rq_end_io_fn*)'
  [A] 'function unsigned int blk_mq_rq_cpu(request*)'
  [A] 'function int blk_rq_map_user(request_queue*, request*, rq_map_data*, void*, unsigned long int, gfp_t)'
  [A] 'function int blk_rq_map_user_iov(request_queue*, request*, rq_map_data*, const iov_iter*, gfp_t)'
  [A] 'function int blk_rq_unmap_user(bio*)'
  [A] 'function int blk_verify_command(unsigned char*, fmode_t)'
  [A] 'function void bpf_trace_run10(bpf_prog*, u64, u64, u64, u64, u64, u64, u64, u64, u64, u64)'
  [A] 'function void bpf_trace_run11(bpf_prog*, u64, u64, u64, u64, u64, u64, u64, u64, u64, u64, u64)'
  [A] 'function void bpf_trace_run12(bpf_prog*, u64, u64, u64, u64, u64, u64, u64, u64, u64, u64, u64, u64)'
  [A] 'function void bpf_trace_run7(bpf_prog*, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int, long long unsigned int)'
  [A] 'function void bpf_trace_run9(bpf_prog*, u64, u64, u64, u64, u64, u64, u64, u64, u64)'
  [A] 'function int bus_for_each_dev(bus_type*, device*, void*, int (device*, void*)*)'
  [A] 'function void call_rcu(callback_head*, void (callback_head*)*)'
  [A] 'function void call_rcu_tasks(callback_head*, rcu_callback_t)'
  [A] 'function void call_rcu_tasks_trace(callback_head*, rcu_callback_t)'
  [A] 'function void call_srcu(srcu_struct*, callback_head*, rcu_callback_t)'
  [A] 'function void cfg80211_ch_switch_notify(net_device*, cfg80211_chan_def*)'
  [A] 'function void cfg80211_chandef_create(cfg80211_chan_def*, ieee80211_channel*, nl80211_channel_type)'
  [A] 'function void cfg80211_del_sta_sinfo(net_device*, const u8*, station_info*, gfp_t)'
  [A] 'function int cfg80211_external_auth_request(net_device*, cfg80211_external_auth_params*, gfp_t)'
  [A] 'function void cfg80211_ft_event(net_device*, cfg80211_ft_event_params*)'
  [A] 'function void cfg80211_gtk_rekey_notify(net_device*, const u8*, const u8*, gfp_t)'
  [A] 'function cfg80211_bss* cfg80211_inform_bss_frame_data(wiphy*, cfg80211_inform_bss*, ieee80211_mgmt*, size_t, gfp_t)'
  [A] 'function void cfg80211_mgmt_tx_status(wireless_dev*, u64, const u8*, size_t, bool, gfp_t)'
  [A] 'function void cfg80211_michael_mic_failure(net_device*, const u8*, nl80211_key_type, int, const u8*, gfp_t)'
  [A] 'function void cfg80211_new_sta(net_device*, const u8*, station_info*, gfp_t)'
  [A] 'function void cfg80211_pmksa_candidate_notify(net_device*, int, const u8*, bool, gfp_t)'
  [A] 'function void cfg80211_ready_on_channel(wireless_dev*, u64, ieee80211_channel*, unsigned int, gfp_t)'
  [A] 'function void cfg80211_remain_on_channel_expired(wireless_dev*, u64, ieee80211_channel*, gfp_t)'
  [A] 'function void cfg80211_roamed(net_device*, cfg80211_roam_info*, gfp_t)'
  [A] 'function bool cfg80211_rx_mgmt_khz(wireless_dev*, int, int, const u8*, size_t, u32)'
  [A] 'function void cfg80211_rx_unprot_mlme_mgmt(net_device*, const u8*, size_t)'
  [A] 'function void cfg80211_sched_scan_results(wiphy*, u64)'
  [A] 'function void cfg80211_stop_iface(wiphy*, wireless_dev*, gfp_t)'
  [A] 'function void cfg80211_tdls_oper_request(net_device*, const u8*, nl80211_tdls_operation, u16, gfp_t)'
  [A] 'function void cfg80211_unlink_bss(wiphy*, cfg80211_bss*)'
  [A] 'function void cfg80211_update_owe_info_event(net_device*, cfg80211_update_owe_info*, gfp_t)'
  [A] 'function task_struct* cgroup_taskset_first(cgroup_taskset*, cgroup_subsys_state**)'
  [A] 'function task_struct* cgroup_taskset_next(cgroup_taskset*, cgroup_subsys_state**)'
  [A] 'function void check_preempt_curr(rq*, task_struct*, int)'
  [A] 'function int check_zeroed_user(void*, unsigned long int)'
  [A] 'function device* class_find_device(class*, device*, void*, int (device*, void*)*)'
  [A] 'function int class_for_each_device(class*, device*, void*, int (device*, void*)*)'
  [A] 'function void class_interface_unregister(class_interface*)'
  [A] 'function void cleanup_srcu_struct(srcu_struct*)'
  [A] 'function int clk_bulk_get_all(device*, clk_bulk_data**)'
  [A] 'function void clk_bulk_put_all(int, clk_bulk_data*)'
  [A] 'function clk* clk_register(device*, clk_hw*)'
  [A] 'function page* cma_alloc(cma*, unsigned long int, unsigned int, unsigned int)'
  [A] 'function const char* cma_get_name(const cma*)'
  [A] 'function bool cma_release(cma*, const page*, unsigned int)'
  [A] 'function void* compat_alloc_user_space(unsigned long int)'
  [A] 'function void complete_and_exit(completion*, long int)'
  [A] 'function void component_match_add_release(device*, component_match**, void (device*, void*)*, int (device*, void*)*, void*)'
  [A] 'function void cond_synchronize_rcu(unsigned long int)'
  [A] 'function int config_ep_by_speed(usb_gadget*, usb_function*, usb_ep*)'
  [A] 'function void config_group_init(config_group*)'
  [A] 'function void config_group_init_type_name(config_group*, const char*, const config_item_type*)'
  [A] 'function config_item* config_item_get(config_item*)'
  [A] 'function void config_item_put(config_item*)'
  [A] 'function int configfs_register_subsystem(configfs_subsystem*)'
  [A] 'function void configfs_unregister_subsystem(configfs_subsystem*)'
  [A] 'function void console_stop(console*)'
  [A] 'function bool cpu_is_hotpluggable(unsigned int)'
  [A] 'function bool cpu_latency_qos_request_active(pm_qos_request*)'
  [A] 'function void cpu_latency_qos_update_request(pm_qos_request*, s32)'
  [A] 'function int cpu_pm_unregister_notifier(notifier_block*)'
  [A] 'function cpufreq_policy* cpufreq_cpu_get(unsigned int)'
  [A] 'function void cpufreq_cpu_put(cpufreq_policy*)'
  [A] 'function void cpufreq_disable_fast_switch(cpufreq_policy*)'
  [A] 'function unsigned int cpufreq_driver_fast_switch(cpufreq_policy*, unsigned int)'
  [A] 'function unsigned int cpufreq_driver_resolve_freq(cpufreq_policy*, unsigned int)'
  [A] 'function void cpufreq_enable_fast_switch(cpufreq_policy*)'
  [A] 'function int cpufreq_get_policy(cpufreq_policy*, unsigned int)'
  [A] 'function unsigned int cpufreq_quick_get_max(unsigned int)'
  [A] 'function int cpufreq_register_governor(cpufreq_governor*)'
  [A] 'function int cpufreq_register_notifier(notifier_block*, unsigned int)'
  [A] 'function int cpufreq_unregister_notifier(notifier_block*, unsigned int)'
  [A] 'function int cpumask_next_and(int, const cpumask*, const cpumask*)'
  [A] 'function u8 crc8(const u8*, u8*, size_t, u8)'
  [A] 'function void crc8_populate_msb(u8*, u8)'
  [A] 'function int crypto_aead_encrypt(aead_request*)'
  [A] 'function int crypto_aead_setauthsize(crypto_aead*, unsigned int)'
  [A] 'function int crypto_aead_setkey(crypto_aead*, const u8*, unsigned int)'
  [A] 'function crypto_aead* crypto_alloc_aead(const char*, u32, u32)'
  [A] 'function crypto_shash* crypto_alloc_shash(const char*, unsigned int, unsigned int)'
  [A] 'function crypto_skcipher* crypto_alloc_skcipher(const char*, unsigned int, unsigned int)'
  [A] 'function void crypto_cipher_encrypt_one(crypto_cipher*, u8*, const u8*)'
  [A] 'function int crypto_cipher_setkey(crypto_cipher*, const u8*, unsigned int)'
  [A] 'function int crypto_register_rngs(rng_alg*, int)'
  [A] 'function int crypto_shash_final(shash_desc*, u8*)'
  [A] 'function int crypto_shash_setkey(crypto_shash*, const unsigned char*, unsigned int)'
  [A] 'function int crypto_shash_update(shash_desc*, const unsigned char*, unsigned int)'
  [A] 'function int crypto_skcipher_decrypt(skcipher_request*)'
  [A] 'function int crypto_skcipher_encrypt(skcipher_request*)'
  [A] 'function int crypto_skcipher_setkey(crypto_skcipher*, const unsigned char*, unsigned int)'
  [A] 'function void crypto_unregister_rngs(rng_alg*, int)'
  [A] 'function cgroup_subsys_state* css_next_child(cgroup_subsys_state*, cgroup_subsys_state*)'
  [A] 'function __wsum csum_tcpudp_nofold(__be32, __be32, __u32, __u8, __wsum)'
  [A] 'function char* d_path(const path*, char*, int)'
  [A] 'function void deactivate_task(rq*, task_struct*, int)'
  [A] 'function void debugfs_create_atomic_t(const char*, umode_t, dentry*, atomic_t*)'
  [A] 'function dentry* debugfs_create_file_unsafe(const char*, unsigned short int, dentry*, void*, const file_operations*)'
  [A] 'function void debugfs_create_u16(const char*, umode_t, dentry*, u16*)'
  [A] 'function void debugfs_create_u8(const char*, umode_t, dentry*, u8*)'
  [A] 'function dentry* debugfs_create_ulong(const char*, unsigned short int, dentry*, unsigned long int*)'
  [A] 'function void debugfs_create_x8(const char*, umode_t, dentry*, u8*)'
  [A] 'function int debugfs_file_get(dentry*)'
  [A] 'function void debugfs_file_put(dentry*)'
  [A] 'function dentry* debugfs_lookup(const char*, dentry*)'
  [A] 'function void debugfs_print_regs32(seq_file*, const debugfs_reg32*, int, void*, char*)'
  [A] 'function int desc_to_gpio(const gpio_desc*)'
  [A] 'function net_device* dev_get_by_name(net*, const char*)'
  [A] 'function int dev_pm_genpd_add_notifier(device*, notifier_block*)'
  [A] 'function int dev_pm_qos_add_notifier(device*, notifier_block*, dev_pm_qos_req_type)'
  [A] 'function int dev_pm_qos_add_request(device*, dev_pm_qos_request*, dev_pm_qos_req_type, s32)'
  [A] 'function int dev_pm_qos_remove_notifier(device*, notifier_block*, dev_pm_qos_req_type)'
  [A] 'function int dev_pm_qos_remove_request(dev_pm_qos_request*)'
  [A] 'function int dev_pm_qos_update_request(dev_pm_qos_request*, int)'
  [A] 'function device* device_create_with_groups(class*, device*, unsigned int, void*, const attribute_group**, const char*, ...)'
  [A] 'function fwnode_handle* device_get_next_child_node(device*, fwnode_handle*)'
  [A] 'function void device_link_del(device_link*)'
  [A] 'function int device_wakeup_disable(device*)'
  [A] 'function void devm_clk_put(device*, clk*)'
  [A] 'function void devm_device_remove_group(device*, const attribute_group*)'
  [A] 'function int devm_gpio_request_one(device*, unsigned int, unsigned long int, const char*)'
  [A] 'function iio_channel* devm_iio_channel_get(device*, const char*)'
  [A] 'function iio_dev* devm_iio_device_alloc(device*, int)'
  [A] 'function nvmem_device* devm_nvmem_device_get(device*, const char*)'
  [A] 'function pwm_device* devm_of_pwm_get(device*, device_node*, const char*)'
  [A] 'function pci_host_bridge* devm_pci_alloc_host_bridge(device*, size_t)'
  [A] 'function pinctrl* devm_pinctrl_get(device*)'
  [A] 'function void devm_pinctrl_put(pinctrl*)'
  [A] 'function power_supply* devm_power_supply_register(device*, const power_supply_desc*, const power_supply_config*)'
  [A] 'function void devm_pwm_put(device*, pwm_device*)'
  [A] 'function void devm_regmap_del_irq_chip(device*, int, regmap_irq_chip_data*)'
  [A] 'function regulator* devm_regulator_get_optional(device*, const char*)'
  [A] 'function void devm_regulator_put(regulator*)'
  [A] 'function int devm_regulator_register_notifier(regulator*, notifier_block*)'
  [A] 'function thermal_zone_device* devm_thermal_zone_of_sensor_register(device*, int, void*, const thermal_zone_of_device_ops*)'
  [A] 'function void disable_percpu_irq(unsigned int)'
  [A] 'function int dma_buf_begin_cpu_access(dma_buf*, dma_data_direction)'
  [A] 'function int dma_buf_begin_cpu_access_partial(dma_buf*, dma_data_direction, unsigned int, unsigned int)'
  [A] 'function int dma_buf_end_cpu_access(dma_buf*, dma_data_direction)'
  [A] 'function int dma_buf_end_cpu_access_partial(dma_buf*, dma_data_direction, unsigned int, unsigned int)'
  [A] 'function int dma_buf_get_flags(dma_buf*, unsigned long int*)'
  [A] 'function void* dma_buf_vmap(dma_buf*)'
  [A] 'function void dma_buf_vunmap(dma_buf*, void*)'
  [A] 'function int dma_fence_add_callback(dma_fence*, dma_fence_cb*, void (dma_fence*, dma_fence_cb*)*)'
  [A] 'function dma_fence_array* dma_fence_array_create(int, dma_fence**, u64, unsigned int, bool)'
  [A] 'function void dma_fence_enable_sw_signaling(dma_fence*)'
  [A] 'function int dma_fence_get_status(dma_fence*)'
  [A] 'function bool dma_fence_remove_callback(dma_fence*, dma_fence_cb*)'
  [A] 'function dma_buf* dma_heap_buffer_alloc(dma_heap*, size_t, unsigned int, unsigned int)'
  [A] 'function void dma_heap_buffer_free(dma_buf*)'
  [A] 'function dma_heap* dma_heap_find(const char*)'
  [A] 'function void* dma_heap_get_drvdata(dma_heap*)'
  [A] 'function dma_addr_t dma_map_resource(device*, phys_addr_t, size_t, dma_data_direction, unsigned long int)'
  [A] 'function void dma_resv_fini(dma_resv*)'
  [A] 'function void dma_resv_init(dma_resv*)'
  [A] 'function void dma_unmap_resource(device*, dma_addr_t, size_t, dma_data_direction, unsigned long int)'
  [A] 'function void do_exit(long int)'
  [A] 'function void do_trace_rcu_torture_read(const char*, callback_head*, unsigned long int, unsigned long int, unsigned long int)'
  [A] 'function int do_wait_intr(wait_queue_head_t*, wait_queue_entry_t*)'
  [A] 'function void down(semaphore*)'
  [A] 'function void dput(dentry*)'
  [A] 'function void drain_workqueue(workqueue_struct*)'
  [A] 'function int drm_atomic_commit(drm_atomic_state*)'
  [A] 'function drm_connector_state* drm_atomic_get_connector_state(drm_atomic_state*, drm_connector*)'
  [A] 'function drm_plane_state* drm_atomic_get_plane_state(drm_atomic_state*, drm_plane*)'
  [A] 'function int drm_atomic_helper_commit_duplicated_state(drm_atomic_state*, drm_modeset_acquire_ctx*)'
  [A] 'function drm_atomic_state* drm_atomic_helper_duplicate_state(drm_device*, drm_modeset_acquire_ctx*)'
  [A] 'function int drm_atomic_helper_prepare_planes(drm_device*, drm_atomic_state*)'
  [A] 'function int drm_atomic_helper_swap_state(drm_atomic_state*, bool)'
  [A] 'function void drm_atomic_helper_update_legacy_modeset_state(drm_device*, drm_atomic_state*)'
  [A] 'function int drm_atomic_helper_wait_for_fences(drm_device*, drm_atomic_state*, bool)'
  [A] 'function void drm_atomic_helper_wait_for_vblanks(drm_device*, drm_atomic_state*)'
  [A] 'function int drm_atomic_set_crtc_for_connector(drm_connector_state*, drm_crtc*)'
  [A] 'function void drm_atomic_set_fence_for_plane(drm_plane_state*, dma_fence*)'
  [A] 'function int drm_atomic_set_mode_for_crtc(drm_crtc_state*, const drm_display_mode*)'
  [A] 'function drm_atomic_state* drm_atomic_state_alloc(drm_device*)'
  [A] 'function void drm_atomic_state_clear(drm_atomic_state*)'
  [A] 'function void drm_atomic_state_default_clear(drm_atomic_state*)'
  [A] 'function void drm_atomic_state_default_release(drm_atomic_state*)'
  [A] 'function int drm_atomic_state_init(drm_device*, drm_atomic_state*)'
  [A] 'function void drm_bridge_chain_disable(drm_bridge*)'
  [A] 'function void drm_bridge_chain_enable(drm_bridge*)'
  [A] 'function void drm_bridge_chain_mode_set(drm_bridge*, const drm_display_mode*, const drm_display_mode*)'
  [A] 'function void drm_bridge_chain_post_disable(drm_bridge*)'
  [A] 'function void drm_bridge_chain_pre_enable(drm_bridge*)'
  [A] 'function int drm_client_init(drm_device*, drm_client_dev*, const char*, const drm_client_funcs*)'
  [A] 'function int drm_client_modeset_commit_locked(drm_client_dev*)'
  [A] 'function void drm_client_register(drm_client_dev*)'
  [A] 'function int drm_connector_set_tile_property(drm_connector*)'
  [A] 'function drm_crtc* drm_crtc_from_index(drm_device*, int)'
  [A] 'function void drm_crtc_vblank_reset(drm_crtc*)'
  [A] 'function void drm_crtc_wait_one_vblank(drm_crtc*)'
  [A] 'function int drm_dp_atomic_find_vcpi_slots(drm_atomic_state*, drm_dp_mst_topology_mgr*, drm_dp_mst_port*, int, int)'
  [A] 'function int drm_dp_atomic_release_vcpi_slots(drm_atomic_state*, drm_dp_mst_topology_mgr*, drm_dp_mst_port*)'
  [A] 'function int drm_dp_calc_pbn_mode(int, int, bool)'
  [A] 'function int drm_dp_check_act_status(drm_dp_mst_topology_mgr*)'
  [A] 'function int drm_dp_find_vcpi_slots(drm_dp_mst_topology_mgr*, int)'
  [A] 'function bool drm_dp_mst_allocate_vcpi(drm_dp_mst_topology_mgr*, drm_dp_mst_port*, int, int)'
  [A] 'function void drm_dp_mst_deallocate_vcpi(drm_dp_mst_topology_mgr*, drm_dp_mst_port*)'
  [A] 'function int drm_dp_mst_detect_port(drm_connector*, drm_modeset_acquire_ctx*, drm_dp_mst_topology_mgr*, drm_dp_mst_port*)'
  [A] 'function edid* drm_dp_mst_get_edid(drm_connector*, drm_dp_mst_topology_mgr*, drm_dp_mst_port*)'
  [A] 'function void drm_dp_mst_get_port_malloc(drm_dp_mst_port*)'
  [A] 'function int drm_dp_mst_hpd_irq(drm_dp_mst_topology_mgr*, u8*, bool*)'
  [A] 'function void drm_dp_mst_put_port_malloc(drm_dp_mst_port*)'
  [A] 'function void drm_dp_mst_reset_vcpi_slots(drm_dp_mst_topology_mgr*, drm_dp_mst_port*)'
  [A] 'function void drm_dp_mst_topology_mgr_destroy(drm_dp_mst_topology_mgr*)'
  [A] 'function int drm_dp_mst_topology_mgr_init(drm_dp_mst_topology_mgr*, drm_device*, drm_dp_aux*, int, int, int)'
  [A] 'function int drm_dp_mst_topology_mgr_set_mst(drm_dp_mst_topology_mgr*, bool)'
  [A] 'function int drm_dp_send_power_updown_phy(drm_dp_mst_topology_mgr*, drm_dp_mst_port*, bool)'
  [A] 'function int drm_dp_update_payload_part1(drm_dp_mst_topology_mgr*)'
  [A] 'function int drm_dp_update_payload_part2(drm_dp_mst_topology_mgr*)'
  [A] 'function edid* drm_edid_duplicate(const edid*)'
  [A] 'function int drm_event_reserve_init_locked(drm_device*, drm_file*, drm_pending_event*, drm_event*)'
  [A] 'function drm_framebuffer* drm_framebuffer_lookup(drm_device*, drm_file*, unsigned int)'
  [A] 'function void drm_framebuffer_remove(drm_framebuffer*)'
  [A] 'function void drm_framebuffer_unregister_private(drm_framebuffer*)'
  [A] 'function dma_buf* drm_gem_prime_export(drm_gem_object*, int)'
  [A] 'function const char* drm_get_connector_status_name(drm_connector_status)'
  [A] 'function void drm_kms_helper_poll_disable(drm_device*)'
  [A] 'function void drm_kms_helper_poll_enable(drm_device*)'
  [A] 'function unsigned char drm_match_cea_mode(const drm_display_mode*)'
  [A] 'function int drm_mode_convert_umode(drm_device*, drm_display_mode*, const drm_mode_modeinfo*)'
  [A] 'function drm_display_mode* drm_mode_create(drm_device*)'
  [A] 'function int drm_mode_create_dp_colorspace_property(drm_connector*)'
  [A] 'function drm_tile_group* drm_mode_create_tile_group(drm_device*, const char*)'
  [A] 'function bool drm_mode_equal(const drm_display_mode*, const drm_display_mode*)'
  [A] 'function drm_tile_group* drm_mode_get_tile_group(drm_device*, const char*)'
  [A] 'function void drm_mode_object_get(drm_mode_object*)'
  [A] 'function void drm_mode_set_crtcinfo(drm_display_mode*, int)'
  [A] 'function void drm_mode_set_name(drm_display_mode*)'
  [A] 'function void drm_modeset_acquire_fini(drm_modeset_acquire_ctx*)'
  [A] 'function void drm_modeset_acquire_init(drm_modeset_acquire_ctx*, unsigned int)'
  [A] 'function int drm_modeset_backoff(drm_modeset_acquire_ctx*)'
  [A] 'function void drm_modeset_drop_locks(drm_modeset_acquire_ctx*)'
  [A] 'function int drm_modeset_lock_all_ctx(drm_device*, drm_modeset_acquire_ctx*)'
  [A] 'function int drm_object_property_set_value(drm_mode_object*, drm_property*, long long unsigned int)'
  [A] 'function void drm_panel_add(drm_panel*)'
  [A] 'function void drm_panel_init(drm_panel*, device*, const drm_panel_funcs*, int)'
  [A] 'function void drm_panel_remove(drm_panel*)'
  [A] 'function drm_property_blob* drm_property_blob_get(drm_property_blob*)'
  [A] 'function void drm_property_blob_put(drm_property_blob*)'
  [A] 'function drm_property* drm_property_create(drm_device*, unsigned int, const char*, int)'
  [A] 'function drm_property* drm_property_create_bitmask(drm_device*, unsigned int, const char*, const drm_prop_enum_list*, int, long long unsigned int)'
  [A] 'function drm_property_blob* drm_property_create_blob(drm_device*, unsigned long int, void*)'
  [A] 'function drm_property* drm_property_create_enum(drm_device*, unsigned int, const char*, const drm_prop_enum_list*, int)'
  [A] 'function drm_property_blob* drm_property_lookup_blob(drm_device*, uint32_t)'
  [A] 'function void drm_send_event_locked(drm_device*, drm_pending_event*)'
  [A] 'function void drm_wait_one_vblank(drm_device*, unsigned int)'
  [A] 'function void dump_stack()'
  [A] 'function int edac_device_add_device(edac_device_ctl_info*)'
  [A] 'function edac_device_ctl_info* edac_device_alloc_ctl_info(unsigned int, char*, unsigned int, char*, unsigned int, unsigned int, edac_dev_sysfs_block_attribute*, unsigned int, int)'
  [A] 'function int edac_device_alloc_index()'
  [A] 'function edac_device_ctl_info* edac_device_del_device(device*)'
  [A] 'function void edac_device_free_ctl_info(edac_device_ctl_info*)'
  [A] 'function void edac_device_handle_ce_count(edac_device_ctl_info*, unsigned int, int, int, const char*)'
  [A] 'function void edac_device_handle_ue_count(edac_device_ctl_info*, unsigned int, int, int, const char*)'
  [A] 'function void enable_percpu_irq(unsigned int, unsigned int)'
  [A] 'function eventfd_ctx* eventfd_ctx_fdget(int)'
  [A] 'function eventfd_ctx* eventfd_ctx_fileget(file*)'
  [A] 'function void eventfd_ctx_put(eventfd_ctx*)'
  [A] 'function int eventfd_ctx_remove_wait_queue(eventfd_ctx*, wait_queue_entry*, long long unsigned int*)'
  [A] 'function long long unsigned int eventfd_signal(eventfd_ctx*, long long unsigned int)'
  [A] 'function const char* extcon_get_edev_name(extcon_dev*)'
  [A] 'function int extcon_get_property(extcon_dev*, unsigned int, unsigned int, extcon_property_value*)'
  [A] 'function unsigned long int find_last_bit(const unsigned long int*, unsigned long int)'
  [A] 'function snd_usb_substream* find_snd_usb_substream(unsigned int, unsigned int, unsigned int, snd_usb_audio**, void (snd_usb_audio*)*)'
  [A] 'function pid* find_vpid(int)'
  [A] 'function void free_pages_exact(void*, unsigned long int)'
  [A] 'function void free_percpu_irq(unsigned int, void*)'
  [A] 'function int freq_qos_add_request(freq_constraints*, freq_qos_request*, freq_qos_req_type, s32)'
  [A] 'function int freq_qos_remove_request(freq_qos_request*)'
  [A] 'function int freq_qos_update_request(freq_qos_request*, s32)'
  [A] 'function void ftrace_dump(ftrace_dump_mode)'
  [A] 'function fwnode_handle* fwnode_find_reference(const fwnode_handle*, const char*, unsigned int)'
  [A] 'function fwnode_handle* fwnode_get_next_child_node(const fwnode_handle*, fwnode_handle*)'
  [A] 'function fwnode_handle* fwnode_handle_get(fwnode_handle*)'
  [A] 'function void fwnode_handle_put(fwnode_handle*)'
  [A] 'function int fwnode_property_read_string(const fwnode_handle*, const char*, const char**)'
  [A] 'function usb_role_switch* fwnode_usb_role_switch_get(fwnode_handle*)'
  [A] 'function int gen_pool_add_owner(gen_pool*, unsigned long int, long long unsigned int, unsigned long int, int, void*)'
  [A] 'function unsigned long int gen_pool_alloc_algo_owner(gen_pool*, unsigned long int, unsigned long int (unsigned long int*, unsigned long int, unsigned long int, unsigned int, void*, gen_pool*, unsigned long int)*, void*, void**)'
  [A] 'function unsigned long int gen_pool_avail(gen_pool*)'
  [A] 'function unsigned long int gen_pool_best_fit(unsigned long int*, unsigned long int, unsigned long int, unsigned int, void*, gen_pool*, unsigned long int)'
  [A] 'function gen_pool* gen_pool_create(int, int)'
  [A] 'function void gen_pool_destroy(gen_pool*)'
  [A] 'function unsigned long int gen_pool_first_fit_order_align(unsigned long int*, unsigned long int, unsigned long int, unsigned int, void*, gen_pool*, unsigned long int)'
  [A] 'function bool gen_pool_has_addr(gen_pool*, unsigned long int, unsigned long int)'
  [A] 'function void gen_pool_set_algo(gen_pool*, unsigned long int (unsigned long int*, unsigned long int, unsigned long int, unsigned int, void*, gen_pool*, unsigned long int)*, void*)'
  [A] 'function unsigned long int gen_pool_size(gen_pool*)'
  [A] 'function long long unsigned int gen_pool_virt_to_phys(gen_pool*, unsigned long int)'
  [A] 'function kobject* get_governor_parent_kobj(cpufreq_policy*)'
  [A] 'function int get_option(char**, int*)'
  [A] 'function int get_sg_io_hdr(sg_io_hdr*, void*)'
  [A] 'function unsigned long int get_state_synchronize_rcu()'
  [A] 'function mm_struct* get_task_mm(task_struct*)'
  [A] 'function void gov_attr_set_init(gov_attr_set*, list_head*)'
  [A] 'function unsigned int gov_attr_set_put(gov_attr_set*, list_head*)'
  [A] 'function void gpio_free(unsigned int)'
  [A] 'function void gpio_free_array(const gpio*, size_t)'
  [A] 'function int gpio_request(unsigned int, const char*)'
  [A] 'function int gpio_request_one(unsigned int, unsigned long int, const char*)'
  [A] 'function int gpiod_get_raw_value(const gpio_desc*)'
  [A] 'function int gpiod_get_raw_value_cansleep(const gpio_desc*)'
  [A] 'function void gpiod_set_raw_value_cansleep(gpio_desc*, int)'
  [A] 'function u64 hashlen_string(void*, const char*)'
  [A] 'function int hex2bin(unsigned char*, const char*, unsigned long int)'
  [A] 'function int hex_dump_to_buffer(void*, unsigned long int, int, int, char*, unsigned long int, bool)'
  [A] 'function int hex_to_bin(char)'
  [A] 'function int hrtimer_try_to_cancel(hrtimer*)'
  [A] 'function icc_path* icc_get(device*, const int, const int)'
  [A] 'function void icc_node_del(icc_node*)'
  [A] 'function void icc_node_destroy(int)'
  [A] 'function void idr_preload(unsigned int)'
  [A] 'function int ieee80211_freq_khz_to_channel(u32)'
  [A] 'function iio_channel* iio_channel_get_all(device*)'
  [A] 'function int iio_read_channel_processed(iio_channel*, int*)'
  [A] 'function long int import_iovec(int, const iovec*, unsigned int, unsigned int, iovec**, iov_iter*)'
  [A] 'function int in_egroup_p(kgid_t)'
  [A] 'function void init_iova_domain(iova_domain*, unsigned long int, unsigned long int)'
  [A] 'function int init_srcu_struct(srcu_struct*)'
  [A] 'function void input_close_device(input_handle*)'
  [A] 'function int input_ff_create(input_dev*, unsigned int)'
  [A] 'function void input_ff_destroy(input_dev*)'
  [A] 'function void input_mt_report_pointer_emulation(input_dev*, bool)'
  [A] 'function bool input_mt_report_slot_state(input_dev*, unsigned int, bool)'
  [A] 'function int input_open_device(input_handle*)'
  [A] 'function int input_register_handle(input_handle*)'
  [A] 'function int input_register_handler(input_handler*)'
  [A] 'function void input_unregister_handle(input_handle*)'
  [A] 'function void input_unregister_handler(input_handler*)'
  [A] 'function int iommu_dma_enable_best_fit_algo(device*)'
  [A] 'function int iommu_dma_reserve_iova(device*, dma_addr_t, u64)'
  [A] 'function int iommu_domain_get_attr(iommu_domain*, iommu_attr, void*)'
  [A] 'function int iommu_domain_set_attr(iommu_domain*, iommu_attr, void*)'
  [A] 'function iommu_domain* iommu_get_domain_for_dev(device*)'
  [A] 'function int iommu_group_for_each_dev(iommu_group*, void*, int (device*, void*)*)'
  [A] 'function iommu_group* iommu_group_get(device*)'
  [A] 'function void* iommu_group_get_iommudata(iommu_group*)'
  [A] 'function void iommu_group_put(iommu_group*)'
  [A] 'function void iommu_group_set_iommudata(iommu_group*, void*, void (void*)*)'
  [A] 'function dma_buf* ion_alloc(size_t, unsigned int, unsigned int)'
  [A] 'function int ion_buffer_zero(ion_buffer*)'
  [A] 'function int ion_free(ion_buffer*)'
  [A] 'function void* ion_heap_map_kernel(ion_heap*, ion_buffer*)'
  [A] 'function int ion_heap_map_user(ion_heap*, ion_buffer*, vm_area_struct*)'
  [A] 'function void ion_heap_unmap_kernel(ion_heap*, ion_buffer*)'
  [A] 'function unsigned int irq_create_fwspec_mapping(irq_fwspec*)'
  [A] 'function void irq_domain_free_irqs_parent(irq_domain*, unsigned int, unsigned int)'
  [A] 'function irq_data* irq_domain_get_irq_data(irq_domain*, unsigned int)'
  [A] 'function irq_data* irq_get_irq_data(unsigned int)'
  [A] 'function int irq_get_irqchip_state(unsigned int, irqchip_irq_state, bool*)'
  [A] 'function int irq_set_affinity_notifier(unsigned int, irq_affinity_notify*)'
  [A] 'function int irq_set_irq_type(unsigned int, unsigned int)'
  [A] 'function int irq_set_irqchip_state(unsigned int, irqchip_irq_state, bool)'
  [A] 'function int irq_set_parent(int, int)'
  [A] 'function bool irq_work_queue(irq_work*)'
  [A] 'function bool irq_work_queue_on(irq_work*, int)'
  [A] 'function void irq_work_sync(irq_work*)'
  [A] 'function void kernel_power_off()'
  [A] 'function void kernel_restart(char*)'
  [A] 'function void kfree_sensitive(void*)'
  [A] 'function void kick_all_cpus_sync()'
  [A] 'function kmem_cache* kmem_cache_create_usercopy(const char*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, void (void*)*)'
  [A] 'function int kobject_init_and_add(kobject*, kobj_type*, kobject*, const char*, ...)'
  [A] 'function int kobject_set_name(kobject*, const char*, ...)'
  [A] 'function int kobject_uevent_env(kobject*, kobject_action, char**)'
  [A] 'function kset* kset_create_and_add(const char*, const kset_uevent_ops*, kobject*)'
  [A] 'function size_t ksize(void*)'
  [A] 'function int kstrtoint_from_user(const char*, unsigned long int, unsigned int, int*)'
  [A] 'function int kstrtos8(const char*, unsigned int, s8*)'
  [A] 'function int kstrtos8_from_user(const char*, size_t, unsigned int, s8*)'
  [A] 'function int kstrtou8(const char*, unsigned int, unsigned char*)'
  [A] 'function int kstrtou8_from_user(const char*, size_t, unsigned int, u8*)'
  [A] 'function int kstrtoul_from_user(const char*, unsigned long int, unsigned int, unsigned long int*)'
  [A] 'function void kthread_bind(task_struct*, unsigned int)'
  [A] 'function void kthread_bind_mask(task_struct*, const cpumask*)'
  [A] 'function bool kthread_cancel_delayed_work_sync(kthread_delayed_work*)'
  [A] 'function bool kthread_cancel_work_sync(kthread_work*)'
  [A] 'function void kthread_delayed_work_timer_fn(timer_list*)'
  [A] 'function void kthread_flush_work(kthread_work*)'
  [A] 'function void kthread_flush_worker(kthread_worker*)'
  [A] 'function bool kthread_mod_delayed_work(kthread_worker*, kthread_delayed_work*, unsigned long int)'
  [A] 'function int kthread_park(task_struct*)'
  [A] 'function bool kthread_queue_delayed_work(kthread_worker*, kthread_delayed_work*, unsigned long int)'
  [A] 'function void kthread_unpark(task_struct*)'
  [A] 'function int kthread_worker_fn(void*)'
  [A] 'function time64_t ktime_get_seconds()'
  [A] 'function int led_classdev_flash_register_ext(device*, led_classdev_flash*, led_init_data*)'
  [A] 'function void led_classdev_flash_unregister(led_classdev_flash*)'
  [A] 'function void led_classdev_unregister(led_classdev*)'
  [A] 'function bool mac_pton(const char*, u8*)'
  [A] 'function int match_string(const char* const*, unsigned long int, const char*)'
  [A] 'function void mbox_chan_received_data(mbox_chan*, void*)'
  [A] 'function void mbox_chan_txdone(mbox_chan*, int)'
  [A] 'function int mbox_controller_register(mbox_controller*)'
  [A] 'function void mbox_controller_unregister(mbox_controller*)'
  [A] 'function void media_device_cleanup(media_device*)'
  [A] 'function void media_device_init(media_device*)'
  [A] 'function void media_device_unregister(media_device*)'
  [A] 'function int media_entity_pads_init(media_entity*, u16, media_pad*)'
  [A] 'function long long unsigned int memblock_end_of_DRAM()'
  [A] 'function int memblock_free(long long unsigned int, long long unsigned int)'
  [A] 'function unsigned long int memory_block_size_bytes()'
  [A] 'function ssize_t memory_read_from_buffer(void*, size_t, loff_t*, void*, size_t)'
  [A] 'function int migrate_swap(task_struct*, task_struct*, int, int)'
  [A] 'function int mipi_dsi_dcs_set_display_brightness(mipi_dsi_device*, u16)'
  [A] 'function int mipi_dsi_dcs_set_tear_off(mipi_dsi_device*)'
  [A] 'function void mmput(mm_struct*)'
  [A] 'function void mod_node_page_state(pglist_data*, node_stat_item, long int)'
  [A] 'function unsigned long int msleep_interruptible(unsigned int)'
  [A] 'function void napi_gro_flush(napi_struct*, bool)'
  [A] 'function void netdev_update_features(net_device*)'
  [A] 'function int netif_receive_skb(sk_buff*)'
  [A] 'function void netif_receive_skb_list(list_head*)'
  [A] 'function int netif_rx_ni(sk_buff*)'
  [A] 'function bool netlink_capable(const sk_buff*, int)'
  [A] 'function void netlink_kernel_release(sock*)'
  [A] 'function bool ns_capable(user_namespace*, int)'
  [A] 'function int nvmem_cell_write(nvmem_cell*, void*, size_t)'
  [A] 'function int nvmem_device_read(nvmem_device*, unsigned int, unsigned long int, void*)'
  [A] 'function int nvmem_device_write(nvmem_device*, unsigned int, unsigned long int, void*)'
  [A] 'function clk* of_clk_get_from_provider(of_phandle_args*)'
  [A] 'function clk* of_clk_src_onecell_get(of_phandle_args*, void*)'
  [A] 'function int of_count_phandle_with_args(const device_node*, const char*, const char*)'
  [A] 'function int of_cpu_node_to_id(device_node*)'
  [A] 'function thermal_cooling_device* of_cpufreq_cooling_register(cpufreq_policy*)'
  [A] 'function i2c_client* of_find_i2c_device_by_node(device_node*)'
  [A] 'function device_node* of_find_node_by_name(device_node*, const char*)'
  [A] 'function device_node* of_find_node_with_property(device_node*, const char*)'
  [A] 'function int of_genpd_add_provider_simple(device_node*, generic_pm_domain*)'
  [A] 'function const unsigned int* of_get_address(device_node*, int, long long unsigned int*, unsigned int*)'
  [A] 'function device_node* of_get_parent(const device_node*)'
  [A] 'function device_node* of_graph_get_port_parent(device_node*)'
  [A] 'function device_node* of_graph_get_remote_endpoint(const device_node*)'
  [A] 'function device_node* of_graph_get_remote_port(const device_node*)'
  [A] 'function int of_irq_parse_one(device_node*, int, of_phandle_args*)'
  [A] 'function int of_modalias_node(device_node*, char*, int)'
  [A] 'function int of_n_addr_cells(device_node*)'
  [A] 'function int of_n_size_cells(device_node*)'
  [A] 'function int of_phandle_iterator_init(of_phandle_iterator*, const device_node*, const char*, const char*, int)'
  [A] 'function int of_phandle_iterator_next(of_phandle_iterator*)'
  [A] 'function platform_device* of_platform_device_create(device_node*, const char*, device*)'
  [A] 'function const char* of_prop_next_string(property*, const char*)'
  [A] 'function int of_property_read_u64(const device_node*, const char*, long long unsigned int*)'
  [A] 'function int of_property_read_u64_index(const device_node*, const char*, u32, u64*)'
  [A] 'function int of_reserved_mem_device_init_by_idx(device*, device_node*, int)'
  [A] 'function void of_reserved_mem_device_release(device*)'
  [A] 'function reset_control* of_reset_control_array_get(device_node*, bool, bool, bool)'
  [A] 'function int of_thermal_get_ntrips(thermal_zone_device*)'
  [A] 'function const thermal_trip* of_thermal_get_trip_points(thermal_zone_device*)'
  [A] 'function bool of_thermal_is_trip_valid(thermal_zone_device*, int)'
  [A] 'function long long unsigned int of_translate_address(device_node*, const unsigned int*)'
  [A] 'function void on_each_cpu(void (void*)*, void*, int)'
  [A] 'function void panic(const char*, ...)'
  [A] 'function int param_get_string(char*, const kernel_param*)'
  [A] 'function int param_set_bool(const char*, const kernel_param*)'
  [A] 'function int param_set_copystring(const char*, const kernel_param*)'
  [A] 'function int pause_cpus(cpumask*)'
  [A] 'function int pci_assign_resource(pci_dev*, int)'
  [A] 'function int pci_host_probe(pci_host_bridge*)'
  [A] 'function int pci_load_and_free_saved_state(pci_dev*, pci_saved_state**)'
  [A] 'function int pci_load_saved_state(pci_dev*, pci_saved_state*)'
  [A] 'function irq_domain* pci_msi_create_irq_domain(fwnode_handle*, msi_domain_info*, irq_domain*)'
  [A] 'function void pci_msi_mask_irq(irq_data*)'
  [A] 'function void pci_msi_unmask_irq(irq_data*)'
  [A] 'function void pci_restore_state(pci_dev*)'
  [A] 'function int pci_save_state(pci_dev*)'
  [A] 'function pci_saved_state* pci_store_saved_state(pci_dev*)'
  [A] 'function void pci_walk_bus(pci_bus*, int (pci_dev*, void*)*, void*)'
  [A] 'function int pcim_enable_device(pci_dev*)'
  [A] 'function void percpu_down_write(percpu_rw_semaphore*)'
  [A] 'function void percpu_up_write(percpu_rw_semaphore*)'
  [A] 'function void* perf_aux_output_begin(perf_output_handle*, perf_event*)'
  [A] 'function void perf_aux_output_end(perf_output_handle*, unsigned long int)'
  [A] 'function void perf_aux_output_flag(perf_output_handle*, u64)'
  [A] 'function void perf_event_addr_filters_sync(perf_event*)'
  [A] 'function perf_event* perf_event_create_kernel_counter(perf_event_attr*, int, task_struct*, void (perf_event*, perf_sample_data*, pt_regs*)*, void*)'
  [A] 'function void perf_event_disable(perf_event*)'
  [A] 'function void perf_event_enable(perf_event*)'
  [A] 'function int perf_event_read_local(perf_event*, long long unsigned int*, long long unsigned int*, long long unsigned int*)'
  [A] 'function long long unsigned int perf_event_read_value(perf_event*, long long unsigned int*, long long unsigned int*)'
  [A] 'function int perf_event_release_kernel(perf_event*)'
  [A] 'function void* perf_get_aux(perf_output_handle*)'
  [A] 'function int perf_pmu_register(pmu*, const char*, int)'
  [A] 'function void perf_pmu_unregister(pmu*)'
  [A] 'function int pfn_valid(unsigned long int)'
  [A] 'function pinctrl* pinctrl_get(device*)'
  [A] 'function pinctrl_state* pinctrl_lookup_state(pinctrl*, const char*)'
  [A] 'function void pinctrl_put(pinctrl*)'
  [A] 'function int pinctrl_select_state(pinctrl*, pinctrl_state*)'
  [A] 'function int platform_device_register(platform_device*)'
  [A] 'function int pm_clk_add(device*, const char*)'
  [A] 'function int pm_clk_create(device*)'
  [A] 'function void pm_clk_destroy(device*)'
  [A] 'function int pm_clk_resume(device*)'
  [A] 'function int pm_clk_suspend(device*)'
  [A] 'function int pm_generic_resume(device*)'
  [A] 'function int pm_generic_suspend(device*)'
  [A] 'function void pm_relax(device*)'
  [A] 'function int pm_runtime_barrier(device*)'
  [A] 'function void pm_runtime_no_callbacks(device*)'
  [A] 'function void pm_stay_awake(device*)'
  [A] 'function void pm_system_wakeup()'
  [A] 'function void pm_wakeup_dev_event(device*, unsigned int, bool)'
  [A] 'function void pm_wakeup_ws_event(wakeup_source*, unsigned int, bool)'
  [A] 'function power_supply* power_supply_get_by_name(const char*)'
  [A] 'function int power_supply_get_property(power_supply*, power_supply_property, power_supply_propval*)'
  [A] 'function void power_supply_put(power_supply*)'
  [A] 'function int power_supply_reg_notifier(notifier_block*)'
  [A] 'function int power_supply_set_property(power_supply*, power_supply_property, const power_supply_propval*)'
  [A] 'function void power_supply_unreg_notifier(notifier_block*)'
  [A] 'function unsigned int prandom_u32()'
  [A] 'function void print_hex_dump(const char*, const char*, int, int, int, void*, unsigned long int, bool)'
  [A] 'function int printk_deferred(const char*, ...)'
  [A] 'function proc_dir_entry* proc_create_data(const char*, unsigned short int, proc_dir_entry*, const proc_ops*, void*)'
  [A] 'function int proc_dointvec_minmax(ctl_table*, int, void*, unsigned long int*, long long int*)'
  [A] 'function int proc_dostring(ctl_table*, int, void*, size_t*, loff_t*)'
  [A] 'function int proc_douintvec_minmax(ctl_table*, int, void*, size_t*, loff_t*)'
  [A] 'function proc_dir_entry* proc_mkdir(const char*, proc_dir_entry*)'
  [A] 'function void put_iova_domain(iova_domain*)'
  [A] 'function int put_sg_io_hdr(const sg_io_hdr*, void*)'
  [A] 'function int pwm_apply_state(pwm_device*, const pwm_state*)'
  [A] 'function int pwmchip_add(pwm_chip*)'
  [A] 'function int pwmchip_remove(pwm_chip*)'
  [A] 'function int raw_notifier_call_chain(raw_notifier_head*, unsigned long int, void*)'
  [A] 'function int raw_notifier_chain_register(raw_notifier_head*, notifier_block*)'
  [A] 'function int raw_notifier_chain_unregister(raw_notifier_head*, notifier_block*)'
  [A] 'function void rb_erase(rb_node*, rb_root*)'
  [A] 'function rb_node* rb_first(const rb_root*)'
  [A] 'function void rb_insert_color(rb_node*, rb_root*)'
  [A] 'function rb_node* rb_next(const rb_node*)'
  [A] 'function void rcu_barrier()'
  [A] 'function void rcu_barrier_tasks()'
  [A] 'function void rcu_barrier_tasks_trace()'
  [A] 'function void rcu_bind_current_to_nocb()'
  [A] 'function void rcu_expedite_gp()'
  [A] 'function void rcu_force_quiescent_state()'
  [A] 'function void rcu_fwd_progress_check(unsigned long int)'
  [A] 'function int rcu_get_gp_kthreads_prio()'
  [A] 'function unsigned long int rcu_get_gp_seq()'
  [A] 'function bool rcu_gp_is_expedited()'
  [A] 'function bool rcu_gp_is_normal()'
  [A] 'function void rcu_gp_set_torture_wait(int)'
  [A] 'function bool rcu_inkernel_boot_has_ended()'
  [A] 'function bool rcu_is_watching()'
  [A] 'function int rcu_jiffies_till_stall_check()'
  [A] 'function void rcu_read_unlock_trace_special(task_struct*, int)'
  [A] 'function void rcu_unexpedite_gp()'
  [A] 'function void rcutorture_get_gp_data(rcutorture_type, int*, unsigned long int*)'
  [A] 'function int rcuwait_wake_up(rcuwait*)'
  [A] 'function bool refcount_dec_and_lock(refcount_struct*, spinlock*)'
  [A] 'function bool refcount_dec_not_one(refcount_struct*)'
  [A] 'function int regcache_sync_region(regmap*, unsigned int, unsigned int)'
  [A] 'function void register_console(console*)'
  [A] 'function int register_ftrace_export(trace_export*)'
  [A] 'function int register_inet6addr_notifier(notifier_block*)'
  [A] 'function int register_inetaddr_notifier(notifier_block*)'
  [A] 'function int register_kprobe(kprobe*)'
  [A] 'function int register_kretprobe(kretprobe*)'
  [A] 'function int register_memory_notifier(notifier_block*)'
  [A] 'function int register_netevent_notifier(notifier_block*)'
  [A] 'function int register_oom_notifier(notifier_block*)'
  [A] 'function int register_pm_notifier(notifier_block*)'
  [A] 'function void register_syscore_ops(syscore_ops*)'
  [A] 'function ctl_table_header* register_sysctl(const char*, ctl_table*)'
  [A] 'function bool regmap_check_range_table(regmap*, unsigned int, const regmap_access_table*)'
  [A] 'function void regmap_mmio_detach_clk(regmap*)'
  [A] 'function int regulator_allow_bypass(regulator*, bool)'
  [A] 'function int regulator_count_voltages(regulator*)'
  [A] 'function int regulator_disable_deferred(regulator*, int)'
  [A] 'function int regulator_force_disable(regulator*)'
  [A] 'function void* regulator_get_drvdata(regulator*)'
  [A] 'function unsigned int regulator_get_mode(regulator*)'
  [A] 'function int regulator_get_voltage(regulator*)'
  [A] 'function int regulator_get_voltage_rdev(regulator_dev*)'
  [A] 'function int regulator_is_enabled(regulator*)'
  [A] 'function int regulator_list_voltage_linear(regulator_dev*, unsigned int)'
  [A] 'function int regulator_notifier_call_chain(regulator_dev*, unsigned long int, void*)'
  [A] 'function int regulator_register_notifier(regulator*, notifier_block*)'
  [A] 'function int regulator_set_current_limit(regulator*, int, int)'
  [A] 'function int regulator_set_mode(regulator*, unsigned int)'
  [A] 'function int regulator_unregister_notifier(regulator*, notifier_block*)'
  [A] 'function int regulatory_set_wiphy_regd(wiphy*, ieee80211_regdomain*)'
  [A] 'function int remove_cpu(unsigned int)'
  [A] 'function void remove_wait_queue(wait_queue_head*, wait_queue_entry*)'
  [A] 'function int report_iommu_fault(iommu_domain*, device*, unsigned long int, int)'
  [A] 'function int request_any_context_irq(unsigned int, irq_handler_t, unsigned long int, const char*, void*)'
  [A] 'function int request_firmware_nowait(module*, bool, const char*, device*, gfp_t, void*, void (const firmware*, void*)*)'
  [A] 'function void resched_curr(rq*)'
  [A] 'function void reset_control_put(reset_control*)'
  [A] 'function int resume_cpus(cpumask*)'
  [A] 'function void* return_address(unsigned int)'
  [A] 'function rfkill* rfkill_alloc(const char*, device*, rfkill_type, const rfkill_ops*, void*)'
  [A] 'function void rfkill_destroy(rfkill*)'
  [A] 'function void rfkill_init_sw_state(rfkill*, bool)'
  [A] 'function int rfkill_register(rfkill*)'
  [A] 'function void rfkill_unregister(rfkill*)'
  [A] 'function void rndis_deregister(rndis_params*)'
  [A] 'function void rndis_free_response(rndis_params*, unsigned char*)'
  [A] 'function unsigned char* rndis_get_next_response(rndis_params*, unsigned int*)'
  [A] 'function int rndis_msg_parser(rndis_params*, unsigned char*)'
  [A] 'function rndis_params* rndis_register(void (void*)*, void*)'
  [A] 'function void rndis_set_host_mac(rndis_params*, const unsigned char*)'
  [A] 'function int rndis_set_param_dev(rndis_params*, net_device*, unsigned short int*)'
  [A] 'function int rndis_set_param_medium(rndis_params*, unsigned int, unsigned int)'
  [A] 'function int rndis_set_param_vendor(rndis_params*, unsigned int, const char*)'
  [A] 'function int rndis_signal_connect(rndis_params*)'
  [A] 'function void rndis_uninit(rndis_params*)'
  [A] 'function unsigned long int round_jiffies_relative(unsigned long int)'
  [A] 'function int rpmsg_get_signals(rpmsg_endpoint*)'
  [A] 'function __poll_t rpmsg_poll(rpmsg_endpoint*, file*, poll_table*)'
  [A] 'function int rpmsg_set_signals(rpmsg_endpoint*, u32, u32)'
  [A] 'function int rproc_boot(rproc*)'
  [A] 'function rproc* rproc_get_by_phandle(phandle)'
  [A] 'function void rproc_put(rproc*)'
  [A] 'function void rproc_shutdown(rproc*)'
  [A] 'function int rtnl_register_module(module*, int, int, rtnl_doit_func, rtnl_dumpit_func, unsigned int)'
  [A] 'function int rtnl_trylock()'
  [A] 'function int rtnl_unregister(int, int)'
  [A] 'function void sched_set_fifo_low(task_struct*)'
  [A] 'function void sched_set_normal(task_struct*, int)'
  [A] 'function int sched_setscheduler(task_struct*, int, const sched_param*)'
  [A] 'function int sched_setscheduler_nocheck(task_struct*, int, const sched_param*)'
  [A] 'function void sched_show_task(task_struct*)'
  [A] 'function int schedule_hrtimeout(long long int*, hrtimer_mode)'
  [A] 'function int scsi_autopm_get_device(scsi_device*)'
  [A] 'function void scsi_autopm_put_device(scsi_device*)'
  [A] 'function int scsi_block_when_processing_errors(scsi_device*)'
  [A] 'function int scsi_compat_ioctl(scsi_device*, int, void*)'
  [A] 'function int scsi_device_get(scsi_device*)'
  [A] 'function void scsi_device_put(scsi_device*)'
  [A] 'function int scsi_ioctl(scsi_device*, int, void*)'
  [A] 'function int scsi_ioctl_block_when_processing_errors(scsi_device*, int, bool)'
  [A] 'function bool scsi_normalize_sense(const unsigned char*, int, scsi_sense_hdr*)'
  [A] 'function int scsi_register_interface(class_interface*)'
  [A] 'function void sdev_prefix_printk(const char*, const scsi_device*, const char*, const char*, ...)'
  [A] 'function void seq_hex_dump(seq_file*, const char*, int, int, int, void*, size_t, bool)'
  [A] 'function void seq_vprintf(seq_file*, const char*, __va_list)'
  [A] 'function int set_cpus_allowed_ptr(task_struct*, const cpumask*)'
  [A] 'function void set_normalized_timespec64(timespec64*, long long int, long long int)'
  [A] 'function void set_task_cpu(task_struct*, unsigned int)'
  [A] 'function void set_user_nice(task_struct*, long int)'
  [A] 'function int sg_alloc_table_from_pages(sg_table*, page**, unsigned int, unsigned int, unsigned long int, gfp_t)'
  [A] 'function int sg_scsi_ioctl(request_queue*, gendisk*, fmode_t, scsi_ioctl_command*)'
  [A] 'function void show_rcu_gp_kthreads()'
  [A] 'function int sigprocmask(int, __anonymous_struct__52*, __anonymous_struct__52*)'
  [A] 'function ssize_t simple_write_to_buffer(void*, size_t, loff_t*, void*, size_t)'
  [A] 'function int skb_store_bits(sk_buff*, int, void*, int)'
  [A] 'function void smp_call_function(smp_call_func_t, void*, int)'
  [A] 'function int smp_call_function_any(const cpumask*, void (void*)*, void*, int)'
  [A] 'function snd_info_entry* snd_info_create_module_entry(module*, const char*, snd_info_entry*)'
  [A] 'function int snd_info_register(snd_info_entry*)'
  [A] 'function void snd_pcm_stream_unlock_irqrestore(snd_pcm_substream*, unsigned long int)'
  [A] 'function snd_kcontrol* snd_soc_card_get_kcontrol(snd_soc_card*, const char*)'
  [A] 'function void snd_soc_component_exit_regmap(snd_soc_component*)'
  [A] 'function int snd_soc_dapm_ignore_suspend(snd_soc_dapm_context*, const char*)'
  [A] 'function int snd_soc_dapm_new_widgets(snd_soc_card*)'
  [A] 'function snd_soc_pcm_runtime* snd_soc_get_pcm_runtime(snd_soc_card*, snd_soc_dai_link*)'
  [A] 'function int snd_soc_info_multi_ext(snd_kcontrol*, snd_ctl_elem_info*)'
  [A] 'function snd_soc_component* snd_soc_lookup_component(device*, const char*)'
  [A] 'function int snd_soc_register_component(device*, const snd_soc_component_driver*, snd_soc_dai_driver*, int)'
  [A] 'function snd_soc_component* snd_soc_rtdcom_lookup(snd_soc_pcm_runtime*, const char*)'
  [A] 'function int snd_soc_unregister_card(snd_soc_card*)'
  [A] 'function void snd_soc_unregister_component(device*)'
  [A] 'function int snd_usb_enable_audio_stream(snd_usb_substream*, int, bool)'
  [A] 'function int spi_setup(spi_device*)'
  [A] 'function int spi_sync(spi_device*, spi_message*)'
  [A] 'function void split_page(page*, unsigned int)'
  [A] 'function int sprint_symbol(char*, unsigned long int)'
  [A] 'function void srcu_barrier(srcu_struct*)'
  [A] 'function unsigned long int srcu_batches_completed(srcu_struct*)'
  [A] 'function void srcu_torture_stats_print(srcu_struct*, char*, char*)'
  [A] 'function void srcutorture_get_gp_data(rcutorture_type, srcu_struct*, int*, unsigned long int*)'
  [A] 'function void stack_trace_print(const unsigned long int*, unsigned int, int)'
  [A] 'function unsigned int stack_trace_save(unsigned long int*, unsigned int, unsigned int)'
  [A] 'function void static_key_disable_cpuslocked(static_key*)'
  [A] 'function int stop_machine(int (void*)*, void*, const cpumask*)'
  [A] 'function bool stop_one_cpu_nowait(unsigned int, int (void*)*, void*, cpu_stop_work*)'
  [A] 'function int strcasecmp(const char*, const char*)'
  [A] 'function char* strchrnul(const char*, int)'
  [A] 'function char* strim(char*)'
  [A] 'function int strncasecmp(const char*, const char*, size_t)'
  [A] 'function char* strnchr(const char*, unsigned long int, int)'
  [A] 'function void synchronize_rcu_expedited()'
  [A] 'function void synchronize_rcu_tasks()'
  [A] 'function void synchronize_rcu_tasks_trace()'
  [A] 'function void synchronize_srcu(srcu_struct*)'
  [A] 'function void synchronize_srcu_expedited(srcu_struct*)'
  [A] 'function int sysfs_add_file_to_group(kobject*, const attribute*, const char*)'
  [A] 'function int sysfs_add_link_to_group(kobject*, const char*, kobject*, const char*)'
  [A] 'function int sysfs_create_file_ns(kobject*, const attribute*, void*)'
  [A] 'function int sysfs_create_files(kobject*, const attribute* const*)'
  [A] 'function int sysfs_create_groups(kobject*, const attribute_group**)'
  [A] 'function void sysfs_notify(kobject*, const char*, const char*)'
  [A] 'function void sysfs_remove_file_from_group(kobject*, const attribute*, const char*)'
  [A] 'function void sysfs_remove_file_ns(kobject*, const attribute*, void*)'
  [A] 'function void sysfs_remove_files(kobject*, const attribute* const*)'
  [A] 'function void sysfs_remove_groups(kobject*, const attribute_group**)'
  [A] 'function void sysfs_remove_link_from_group(kobject*, const char*, const char*)'
  [A] 'function pid_namespace* task_active_pid_ns(task_struct*)'
  [A] 'function thermal_cooling_device* thermal_of_cooling_device_register(device_node*, const char*, void*, const thermal_cooling_device_ops*)'
  [A] 'function thermal_zone_device* thermal_zone_device_register(const char*, int, int, void*, thermal_zone_device_ops*, thermal_zone_params*, int, int)'
  [A] 'function void thermal_zone_device_update(thermal_zone_device*, thermal_notify_event)'
  [A] 'function thermal_zone_device* thermal_zone_of_sensor_register(device*, int, void*, const thermal_zone_of_device_ops*)'
  [A] 'function void thermal_zone_of_sensor_unregister(device*, thermal_zone_device*)'
  [A] 'function void time64_to_tm(time64_t, int, tm*)'
  [A] 'function void topology_set_thermal_pressure(const cpumask*, unsigned long int)'
  [A] 'function u64 trace_clock_local()'
  [A] 'function const char* trace_print_array_seq(trace_seq*, void*, int, unsigned long int)'
  [A] 'function void trace_seq_putc(trace_seq*, unsigned char)'
  [A] 'function int tracepoint_probe_register(tracepoint*, void*, void*)'
  [A] 'function int tracepoint_probe_unregister(tracepoint*, void*, void*)'
  [A] 'function void tracing_off()'
  [A] 'function const typec_altmode* typec_altmode_get_partner(typec_altmode*)'
  [A] 'function void typec_altmode_update_active(typec_altmode*, bool)'
  [A] 'function void* typec_get_drvdata(typec_port*)'
  [A] 'function typec_altmode* typec_partner_register_altmode(typec_partner*, const typec_altmode_desc*)'
  [A] 'function typec_altmode* typec_port_register_altmode(typec_port*, const typec_altmode_desc*)'
  [A] 'function typec_partner* typec_register_partner(typec_port*, typec_partner_desc*)'
  [A] 'function typec_port* typec_register_port(device*, const typec_capability*)'
  [A] 'function void typec_set_data_role(typec_port*, typec_data_role)'
  [A] 'function void typec_set_pwr_opmode(typec_port*, typec_pwr_opmode)'
  [A] 'function void typec_set_pwr_role(typec_port*, typec_role)'
  [A] 'function void typec_unregister_altmode(typec_altmode*)'
  [A] 'function void typec_unregister_partner(typec_partner*)'
  [A] 'function void typec_unregister_port(typec_port*)'
  [A] 'function void uart_insert_char(uart_port*, unsigned int, unsigned int, unsigned int, unsigned int)'
  [A] 'function unsigned long int uclamp_eff_value(task_struct*, uclamp_id)'
  [A] 'function void ucsi_connector_change(ucsi*, u8)'
  [A] 'function ucsi* ucsi_create(device*, const ucsi_operations*)'
  [A] 'function void ucsi_destroy(ucsi*)'
  [A] 'function void* ucsi_get_drvdata(ucsi*)'
  [A] 'function int ucsi_register(ucsi*)'
  [A] 'function void ucsi_set_drvdata(ucsi*, void*)'
  [A] 'function void ucsi_unregister(ucsi*)'
  [A] 'function void ufshcd_auto_hibern8_update(ufs_hba*, u32)'
  [A] 'function void ufshcd_fixup_dev_quirks(ufs_hba*, ufs_dev_fix*)'
  [A] 'function int ufshcd_hold(ufs_hba*, bool)'
  [A] 'function int ufshcd_query_attr(ufs_hba*, query_opcode, attr_idn, u8, u8, u32*)'
  [A] 'function int ufshcd_query_descriptor_retry(ufs_hba*, query_opcode, desc_idn, u8, u8, u8*, int*)'
  [A] 'function int ufshcd_query_flag(ufs_hba*, query_opcode, flag_idn, u8, bool*)'
  [A] 'function void ufshcd_release(ufs_hba*)'
  [A] 'function void uio_unregister_device(uio_info*)'
  [A] 'function int unregister_console(console*)'
  [A] 'function int unregister_ftrace_export(trace_export*)'
  [A] 'function int unregister_inet6addr_notifier(notifier_block*)'
  [A] 'function int unregister_inetaddr_notifier(notifier_block*)'
  [A] 'function void unregister_kprobe(kprobe*)'
  [A] 'function void unregister_kretprobe(kretprobe*)'
  [A] 'function int unregister_netevent_notifier(notifier_block*)'
  [A] 'function int unregister_oom_notifier(notifier_block*)'
  [A] 'function int unregister_pm_notifier(notifier_block*)'
  [A] 'function void unregister_syscore_ops(syscore_ops*)'
  [A] 'function void up(semaphore*)'
  [A] 'function void update_rq_clock(rq*)'
  [A] 'function int usb_add_phy_dev(usb_phy*)'
  [A] 'function void* usb_alloc_coherent(usb_device*, size_t, gfp_t, dma_addr_t*)'
  [A] 'function usb_device* usb_alloc_dev(usb_device*, usb_bus*, unsigned int)'
  [A] 'function urb* usb_alloc_urb(int, unsigned int)'
  [A] 'function int usb_assign_descriptors(usb_function*, usb_descriptor_header**, usb_descriptor_header**, usb_descriptor_header**, usb_descriptor_header**)'
  [A] 'function int usb_autopm_get_interface(usb_interface*)'
  [A] 'function void usb_autopm_put_interface(usb_interface*)'
  [A] 'function int usb_bulk_msg(usb_device*, unsigned int, void*, int, int*, int)'
  [A] 'function void usb_composite_setup_continue(usb_composite_dev*)'
  [A] 'function int usb_control_msg(usb_device*, unsigned int, unsigned char, unsigned char, unsigned short int, unsigned short int, void*, unsigned short int, int)'
  [A] 'function usb_request* usb_ep_alloc_request(usb_ep*, unsigned int)'
  [A] 'function usb_ep* usb_ep_autoconfig(usb_gadget*, usb_endpoint_descriptor*)'
  [A] 'function int usb_ep_dequeue(usb_ep*, usb_request*)'
  [A] 'function int usb_ep_disable(usb_ep*)'
  [A] 'function int usb_ep_enable(usb_ep*)'
  [A] 'function void usb_ep_free_request(usb_ep*, usb_request*)'
  [A] 'function int usb_ep_queue(usb_ep*, usb_request*, unsigned int)'
  [A] 'function int usb_ep_set_halt(usb_ep*)'
  [A] 'function int usb_find_common_endpoints(usb_host_interface*, usb_endpoint_descriptor**, usb_endpoint_descriptor**, usb_endpoint_descriptor**, usb_endpoint_descriptor**)'
  [A] 'function void usb_free_all_descriptors(usb_function*)'
  [A] 'function void usb_free_coherent(usb_device*, size_t, void*, dma_addr_t)'
  [A] 'function void usb_free_urb(urb*)'
  [A] 'function int usb_function_register(usb_function_driver*)'
  [A] 'function void usb_function_unregister(usb_function_driver*)'
  [A] 'function int usb_gadget_vbus_connect(usb_gadget*)'
  [A] 'function int usb_gadget_vbus_disconnect(usb_gadget*)'
  [A] 'function int usb_gadget_vbus_draw(usb_gadget*, unsigned int)'
  [A] 'function int usb_gadget_wakeup(usb_gadget*)'
  [A] 'function urb* usb_get_urb(urb*)'
  [A] 'function usb_string* usb_gstrings_attach(usb_composite_dev*, usb_gadget_strings**, unsigned int)'
  [A] 'function usb_device* usb_hub_find_child(usb_device*, int)'
  [A] 'function usb_interface* usb_ifnum_to_if(const usb_device*, unsigned int)'
  [A] 'function int usb_interface_id(usb_configuration*, usb_function*)'
  [A] 'function void usb_kill_urb(urb*)'
  [A] 'function void usb_poison_urb(urb*)'
  [A] 'function void usb_put_function_instance(usb_function_instance*)'
  [A] 'function void usb_register_notify(notifier_block*)'
  [A] 'function void usb_remove_phy(usb_phy*)'
  [A] 'function int usb_role_switch_set_role(usb_role_switch*, usb_role)'
  [A] 'function void usb_set_device_state(usb_device*, usb_device_state)'
  [A] 'function const char* usb_speed_string(usb_device_speed)'
  [A] 'function int usb_string_id(usb_composite_dev*)'
  [A] 'function int usb_submit_urb(urb*, unsigned int)'
  [A] 'function void usb_unregister_notify(notifier_block*)'
  [A] 'function long int v4l2_compat_ioctl32(file*, unsigned int, unsigned long int)'
  [A] 'function v4l2_ctrl* v4l2_ctrl_find(v4l2_ctrl_handler*, u32)'
  [A] 'function void v4l2_ctrl_handler_free(v4l2_ctrl_handler*)'
  [A] 'function int v4l2_ctrl_handler_init_class(v4l2_ctrl_handler*, unsigned int, lock_class_key*, const char*)'
  [A] 'function v4l2_ctrl* v4l2_ctrl_new_custom(v4l2_ctrl_handler*, const v4l2_ctrl_config*, void*)'
  [A] 'function v4l2_ctrl* v4l2_ctrl_new_std(v4l2_ctrl_handler*, const v4l2_ctrl_ops*, u32, s64, s64, u64, s64)'
  [A] 'function v4l2_ctrl* v4l2_ctrl_new_std_menu(v4l2_ctrl_handler*, const v4l2_ctrl_ops*, u32, u8, u64, u8)'
  [A] 'function int v4l2_device_register(device*, v4l2_device*)'
  [A] 'function int v4l2_device_register_subdev(v4l2_device*, v4l2_subdev*)'
  [A] 'function void v4l2_device_unregister(v4l2_device*)'
  [A] 'function void v4l2_device_unregister_subdev(v4l2_subdev*)'
  [A] 'function int v4l2_event_dequeue(v4l2_fh*, v4l2_event*, int)'
  [A] 'function int v4l2_event_pending(v4l2_fh*)'
  [A] 'function void v4l2_event_queue(video_device*, const v4l2_event*)'
  [A] 'function void v4l2_event_queue_fh(v4l2_fh*, const v4l2_event*)'
  [A] 'function int v4l2_event_subscribe(v4l2_fh*, const v4l2_event_subscription*, unsigned int, const v4l2_subscribed_event_ops*)'
  [A] 'function int v4l2_event_unsubscribe(v4l2_fh*, const v4l2_event_subscription*)'
  [A] 'function void v4l2_fh_add(v4l2_fh*)'
  [A] 'function void v4l2_fh_del(v4l2_fh*)'
  [A] 'function void v4l2_fh_exit(v4l2_fh*)'
  [A] 'function void v4l2_fh_init(v4l2_fh*, video_device*)'
  [A] 'function int v4l2_fh_open(file*)'
  [A] 'function int v4l2_fh_release(file*)'
  [A] 'function int v4l2_s_ctrl(v4l2_fh*, v4l2_ctrl_handler*, v4l2_control*)'
  [A] 'function void v4l2_subdev_init(v4l2_subdev*, const v4l2_subdev_ops*)'
  [A] 'function void vb2_buffer_done(vb2_buffer*, vb2_buffer_state)'
  [A] 'function int vb2_dqbuf(vb2_queue*, v4l2_buffer*, bool)'
  [A] 'function int vb2_qbuf(vb2_queue*, media_device*, v4l2_buffer*)'
  [A] 'function int vb2_queue_init(vb2_queue*)'
  [A] 'function void vb2_queue_release(vb2_queue*)'
  [A] 'function int vb2_reqbufs(vb2_queue*, v4l2_requestbuffers*)'
  [A] 'function int vb2_streamoff(vb2_queue*, v4l2_buf_type)'
  [A] 'function int vb2_streamon(vb2_queue*, v4l2_buf_type)'
  [A] 'function video_device* video_devdata(file*)'
  [A] 'function video_device* video_device_alloc()'
  [A] 'function void video_device_release(video_device*)'
  [A] 'function void video_device_release_empty(video_device*)'
  [A] 'function long int video_ioctl2(file*, unsigned int, unsigned long int)'
  [A] 'function void video_unregister_device(video_device*)'
  [A] 'function int vm_iomap_memory(vm_area_struct*, phys_addr_t, unsigned long int)'
  [A] 'function int vm_map_pages(vm_area_struct*, page**, unsigned long int)'
  [A] 'function unsigned long int vm_mmap(file*, unsigned long int, unsigned long int, unsigned long int, unsigned long int, unsigned long int)'
  [A] 'function int vm_munmap(unsigned long int, size_t)'
  [A] 'function unsigned long int vmalloc_to_pfn(void*)'
  [A] 'function int vprintk(const char*, __va_list)'
  [A] 'function long int wait_for_completion_interruptible_timeout(completion*, unsigned long int)'
  [A] 'function long int wait_woken(wait_queue_entry*, unsigned int, long int)'
  [A] 'function void wake_up_if_idle(int)'
  [A] 'function wakeup_source* wakeup_source_register(device*, const char*)'
  [A] 'function void wakeup_source_unregister(wakeup_source*)'
  [A] 'function void wireless_send_event(net_device*, unsigned int, iwreq_data*, const char*)'
  [A] 'function int woken_wake_function(wait_queue_entry*, unsigned int, int, void*)'
  [A] 'function unsigned int work_busy(work_struct*)'
  [A] 'function int ww_mutex_lock(ww_mutex*, ww_acquire_ctx*)'
  [A] 'function void xa_destroy(xarray*)'
  [A] 'function void* xa_erase(xarray*, unsigned long int)'
  [A] 'function void* xa_find(xarray*, unsigned long int*, unsigned long int, unsigned int)'
  [A] 'function void* xa_find_after(xarray*, unsigned long int*, unsigned long int, unsigned int)'
  [A] 'function void* xa_load(xarray*, unsigned long int)'
  [A] 'function void* xa_store(xarray*, unsigned long int, void*, unsigned int)'

1622 functions with some sub-type change:

  [C] 'function void __ClearPageMovable(page*)' at compaction.c:138:1 has some sub-type changes:
    CRC (modversions) changed from 0x178bb037 to 0xcc21ad90

  [C] 'function void __SetPageMovable(page*, address_space*)' at compaction.c:130:1 has some sub-type changes:
    CRC (modversions) changed from 0x59d6472a to 0xdf63d1e8

  [C] 'function gendisk* __alloc_disk_node(int, int)' at genhd.c:1717:1 has some sub-type changes:
    CRC (modversions) changed from 0xa8a1006d to 0x94462676

  ... 1619 omitted; 1622 symbols have only CRC changes

103 Added variables:

  [A] 'cpumask __cpu_active_mask'
  [A] 'tracepoint __tracepoint_android_rvh_account_irq'
  [A] 'tracepoint __tracepoint_android_rvh_build_perf_domains'
  [A] 'tracepoint __tracepoint_android_rvh_can_migrate_task'
  [A] 'tracepoint __tracepoint_android_rvh_cpu_cgroup_attach'
  [A] 'tracepoint __tracepoint_android_rvh_dequeue_task'
  [A] 'tracepoint __tracepoint_android_rvh_enqueue_task'
  [A] 'tracepoint __tracepoint_android_rvh_find_busiest_queue'
  [A] 'tracepoint __tracepoint_android_rvh_find_lowest_rq'
  [A] 'tracepoint __tracepoint_android_rvh_flush_task'
  [A] 'tracepoint __tracepoint_android_rvh_irqs_disable'
  [A] 'tracepoint __tracepoint_android_rvh_irqs_enable'
  [A] 'tracepoint __tracepoint_android_rvh_migrate_queued_task'
  [A] 'tracepoint __tracepoint_android_rvh_new_task_stats'
  [A] 'tracepoint __tracepoint_android_rvh_place_entity'
  [A] 'tracepoint __tracepoint_android_rvh_preempt_disable'
  [A] 'tracepoint __tracepoint_android_rvh_preempt_enable'
  [A] 'tracepoint __tracepoint_android_rvh_resume_cpus'
  [A] 'tracepoint __tracepoint_android_rvh_sched_cpu_dying'
  [A] 'tracepoint __tracepoint_android_rvh_sched_cpu_starting'
  [A] 'tracepoint __tracepoint_android_rvh_sched_exec'
  [A] 'tracepoint __tracepoint_android_rvh_sched_fork'
  [A] 'tracepoint __tracepoint_android_rvh_sched_fork_init'
  [A] 'tracepoint __tracepoint_android_rvh_sched_newidle_balance'
  [A] 'tracepoint __tracepoint_android_rvh_sched_nohz_balancer_kick'
  [A] 'tracepoint __tracepoint_android_rvh_schedule'
  [A] 'tracepoint __tracepoint_android_rvh_schedule_bug'
  [A] 'tracepoint __tracepoint_android_rvh_select_task_rq_fair'
  [A] 'tracepoint __tracepoint_android_rvh_set_gfp_zone_flags'
  [A] 'tracepoint __tracepoint_android_rvh_set_readahead_gfp_mask'
  [A] 'tracepoint __tracepoint_android_rvh_set_skip_swapcache_flags'
  [A] 'tracepoint __tracepoint_android_rvh_set_task_cpu'
  [A] 'tracepoint __tracepoint_android_rvh_tick_entry'
  [A] 'tracepoint __tracepoint_android_rvh_try_to_wake_up'
  [A] 'tracepoint __tracepoint_android_rvh_try_to_wake_up_success'
  [A] 'tracepoint __tracepoint_android_rvh_ttwu_cond'
  [A] 'tracepoint __tracepoint_android_rvh_update_cpu_capacity'
  [A] 'tracepoint __tracepoint_android_rvh_update_cpus_allowed'
  [A] 'tracepoint __tracepoint_android_rvh_update_misfit_status'
  [A] 'tracepoint __tracepoint_android_rvh_wake_up_new_task'
  [A] 'tracepoint __tracepoint_android_vh_binder_wakeup_ilocked'
  [A] 'tracepoint __tracepoint_android_vh_cpu_idle_enter'
  [A] 'tracepoint __tracepoint_android_vh_cpu_idle_exit'
  [A] 'tracepoint __tracepoint_android_vh_dump_throttled_rt_tasks'
  [A] 'tracepoint __tracepoint_android_vh_freq_table_limits'
  [A] 'tracepoint __tracepoint_android_vh_jiffies_update'
  [A] 'tracepoint __tracepoint_android_vh_scheduler_tick'
  [A] 'tracepoint __tracepoint_android_vh_show_max_freq'
  [A] 'tracepoint __tracepoint_android_vh_show_resume_epoch_val'
  [A] 'tracepoint __tracepoint_android_vh_show_suspend_epoch_val'
  [A] 'tracepoint __tracepoint_binder_transaction_received'
  [A] 'tracepoint __tracepoint_cpu_frequency'
  [A] 'tracepoint __tracepoint_cpu_idle'
  [A] 'tracepoint __tracepoint_rwmmio_post_read'
  [A] 'tracepoint __tracepoint_rwmmio_read'
  [A] 'tracepoint __tracepoint_rwmmio_write'
  [A] 'tracepoint __tracepoint_suspend_resume'
  [A] 'atomic_long_t _totalram_pages'
  [A] 'typedef u64 ()* arch_timer_read_counter'
  [A] 'bool console_suspend_enabled'
  [A] 'const unsigned long int cpu_bit_bitmap[65][1]'
  [A] 'irqtime cpu_irqtime'
  [A] 'unsigned long int cpu_scale'
  [A] 'bus_type cpu_subsys'
  [A] 'cpu_topology cpu_topology[32]'
  [A] 'const dma_fence_ops dma_fence_array_ops'
  [A] 'unsigned long int freq_scale'
  [A] 'const sysfs_ops governor_sysfs_ops'
  [A] 'kobject* hypervisor_kobj'
  [A] 'pid_namespace init_pid_ns'
  [A] 'task_struct init_task'
  [A] 'kobject* kernel_kobj'
  [A] 'const sysfs_ops kobj_sysfs_ops'
  [A] 'task_struct* ksoftirqd'
  [A] 'device_node* of_root'
  [A] 'atomic_notifier_head panic_notifier_list'
  [A] 'int panic_timeout'
  [A] 'const kernel_param_ops param_ops_byte'
  [A] 'const kernel_param_ops param_ops_long'
  [A] 'const kernel_param_ops param_ops_string'
  [A] 'int rcu_cpu_stall_suppress'
  [A] 'int rcu_cpu_stall_suppress_at_boot'
  [A] 'reboot_mode reboot_mode'
  [A] 'task_group root_task_group'
  [A] 'rq runqueues'
  [A] 'static_key sched_feat_keys[22]'
  [A] 'const char* const sched_feat_names[22]'
  [A] 'static_key_false sched_uclamp_used'
  [A] 'const unsigned char scsi_command_size_tbl[8]'
  [A] 'const dev_pm_ops snd_soc_pm_ops'
  [A] 'timezone sys_tz'
  [A] 'unsigned int sysctl_sched_features'
  [A] 'unsigned int sysctl_sched_latency'
  [A] 'const int sysctl_vals[3]'
  [A] 'workqueue_struct* system_highpri_wq'
  [A] 'workqueue_struct* system_long_wq'
  [A] 'system_states system_state'
  [A] 'workqueue_struct* system_unbound_wq'
  [A] 'list_head task_groups'
  [A] 'rwlock_t tasklist_lock'
  [A] 'unsigned long int thermal_pressure'
  [A] 'const arch_timer_erratum_workaround* timer_unstable_counter_workaround'
  [A] 'const v4l2_subdev_ops v4l2_subdev_call_wrappers'

33 Changed variables:

  [C] 'static_key_false cpu_hwcap_keys[59]' was changed to 'static_key_false cpu_hwcap_keys[61]' at cpufeature.c:130:1:
    size of symbol changed from 944 to 976
    CRC (modversions) changed from 0xce8c85a4 to 0x4c98d79b
    type of variable changed:
      type name changed from 'static_key_false[59]' to 'static_key_false[61]'
      array type size changed from 7552 to 7808
      array type subrange 1 changed length from 59 to 61

  [C] 'net init_net' was changed at net_namespace.c:47:1:
    size of symbol changed from 4224 to 4288
    CRC (modversions) changed from 0x194cc5ed to 0xaab61b00
    type of variable changed:
      type size changed from 33792 to 34304 (in bits)
      1 data member insertion:
        'netns_ieee802154_lowpan net::ieee802154_lowpan', at offset 18944 (in bits) at net_namespace.h:131:1
      there are data member changes:
        10 ('netns_nf net::nf' .. 'netns_bpf net::bpf') offsets changed (by +128 bits)
        4 ('netns_xfrm net::xfrm' .. 'sock* net::diag_nlsk') offsets changed (by +512 bits)
      236 impacted interfaces

  [C] 'const fwnode_operations of_fwnode_ops' was changed at property.c:1360:1:
    CRC (modversions) changed from 0x34b6d194 to 0x4cdeead6
    type of variable changed:

  [C] 'bus_type amba_bustype' was changed at bus.c:215:1:
    CRC (modversions) changed from 0x6cbc670a to 0x67dad86b

  [C] 'const clk_ops clk_fixed_factor_ops' was changed at clk-fixed-factor.c:60:1:
    CRC (modversions) changed from 0x17ed92bf to 0x648a7b5c

  [C] 'const clk_ops clk_fixed_rate_ops' was changed at clk-fixed-rate.c:46:1:
    CRC (modversions) changed from 0x78c4255a to 0xc8e7765a

  ... 27 omitted; 30 symbols have only CRC changes

5 Added function symbols not referenced by debug info:

  [A] __arch_clear_user
  [A] __arch_copy_in_user
  [A] __flush_icache_range
  [A] memcmp
  [A] strrchr

2 Added variable symbols not referenced by debug info:

  [A] jiffies
  [A] kimage_vaddr

'struct Scsi_Host at scsi_host.h:524:1' changed (indirectly):
  type size changed from 17536 to 17280 (in bits)
  there are data member changes:
    type 'struct device' of 'Scsi_Host::shost_gendev' changed:
      type size changed from 6080 to 5952 (in bits)
      there are data member changes:
        type 'struct dev_links_info' of 'device::links' changed:
          type size changed from 576 to 448 (in bits)
          2 data member deletions:
            'list_head dev_links_info::defer_hook', at offset 384 (in bits) at device.h:365:1
            'bool dev_links_info::need_for_probe', at offset 512 (in bits) at device.h:366:1
          there are data member changes:
            'dl_dev_state dev_links_info::status' offset changed (by -160 bits)
          1642 impacted interfaces
        27 ('dev_pm_info device::power' .. 'dev_iommu* device::iommu') offsets changed (by -128 bits)
      1642 impacted interfaces
    type 'struct device' of 'Scsi_Host::shost_dev' changed, as reported earlier
    and offset changed from 11328 to 11200 (in bits) (by -128 bits)
    3 ('void* Scsi_Host::shost_data' .. 'unsigned long int Scsi_Host::hostdata[]') offsets changed (by -256 bits)
  8 impacted interfaces

'struct amba_device at bus.h:64:1' changed (indirectly):
  type size changed from 7424 to 7296 (in bits)
  there are data member changes:
    type 'struct device' of 'amba_device::dev' changed, as reported earlier
    8 ('resource amba_device::res' .. 'char* amba_device::driver_override') offsets changed (by -128 bits)
  4 impacted interfaces

'struct backlight_device at backlight.h:280:1' changed (indirectly):
  type size changed from 7552 to 7424 (in bits)
  there are data member changes:
    type 'struct device' of 'backlight_device::dev' changed, as reported earlier
    2 ('bool backlight_device::fb_bl_on[32]' .. 'int backlight_device::use_count') offsets changed (by -128 bits)
  6 impacted interfaces

'struct cec_adapter at cec.h:201:1' changed (indirectly):
  type size changed from 11392 to 11264 (in bits)
  there are data member changes:
    type 'struct cec_devnode' of 'cec_adapter::devnode' changed:
      type size changed from 7360 to 7232 (in bits)
      there are data member changes:
        type 'struct device' of 'cec_devnode::dev' changed, as reported earlier
        6 ('cdev cec_devnode::cdev' .. 'mutex cec_devnode::lock') offsets changed (by -128 bits)
      8 impacted interfaces
    36 ('mutex cec_adapter::lock' .. 'char cec_adapter::input_phys[32]') offsets changed (by -128 bits)
  8 impacted interfaces

'struct cec_devnode at cec.h:39:1' changed (indirectly):
  details were reported earlier

'struct dev_links_info at device.h:361:1' changed:
  details were reported earlier

'struct devfreq at devfreq.h:172:1' changed (indirectly):
  type size changed from 15296 to 15168 (in bits)
  there are data member changes:
    type 'struct device' of 'devfreq::dev' changed, as reported earlier
    20 ('devfreq_dev_profile* devfreq::profile' .. 'notifier_block devfreq::nb_max') offsets changed (by -128 bits)
  11 impacted interfaces

'struct device at device.h:461:1' changed (indirectly):
  details were reported earlier

'struct device_link at device.h:575:1' changed (indirectly):
  type size changed from 6784 to 6656 (in bits)
  there are data member changes:
    type 'struct device' of 'device_link::link_dev' changed, as reported earlier
    6 ('device_link_state device_link::status' .. 'bool device_link::supplier_preactivated') offsets changed (by -128 bits)
  one impacted interface

'struct device_node at of.h:51:1' changed (indirectly):
  type size changed from 1344 to 1664 (in bits)
  there are data member changes:
    type 'struct fwnode_handle' of 'device_node::fwnode' changed:
      type size changed from 192 to 512 (in bits)
      3 data member insertions:
        'list_head fwnode_handle::suppliers', at offset 192 (in bits) at fwnode.h:29:1
        'list_head fwnode_handle::consumers', at offset 320 (in bits) at fwnode.h:30:1
        'u8 fwnode_handle::flags', at offset 448 (in bits) at fwnode.h:31:1
      1642 impacted interfaces
    8 ('property* device_node::properties' .. 'void* device_node::data') offsets changed (by +320 bits)
  1642 impacted interfaces

'struct dma_chan_dev at dmaengine.h:361:1' changed (indirectly):
  type size changed from 6208 to 6080 (in bits)
  there are data member changes:
    type 'struct device' of 'dma_chan_dev::device' changed, as reported earlier
    'int dma_chan_dev::dev_id' offset changed (by -128 bits)
  13 impacted interfaces

'struct drm_dp_aux at drm_dp_helper.h:1580:1' changed (indirectly):
  type size changed from 10368 to 10240 (in bits)
  there are data member changes:
    type 'struct i2c_adapter' of 'drm_dp_aux::ddc' changed:
      type size changed from 8320 to 8192 (in bits)
      there are data member changes:
        type 'struct device' of 'i2c_adapter::dev' changed, as reported earlier
        9 ('unsigned long int i2c_adapter::locked_flags' .. 'irq_domain* i2c_adapter::host_notify_domain') offsets changed (by -128 bits)
      174 impacted interfaces
    10 ('device* drm_dp_aux::dev' .. 'bool drm_dp_aux::is_remote') offsets changed (by -128 bits)
  5 impacted interfaces

'struct extcon_dev at extcon.h:41:1' changed (indirectly):
  type size changed from 7552 to 7424 (in bits)
  there are data member changes:
    type 'struct device' of 'extcon_dev::dev' changed, as reported earlier
    11 ('raw_notifier_head extcon_dev::nh_all' .. 'device_attribute* extcon_dev::d_attrs_muex') offsets changed (by -128 bits)
  3 impacted interfaces

'struct fwnode_handle at fwnode.h:17:1' changed:
  details were reported earlier

'struct fwnode_operations at fwnode.h:110:1' changed:
  type size hasn't changed
  there are data member changes:
    type 'int (const fwnode_handle*, device*)*' of 'fwnode_operations::add_links' changed:
      pointer type changed from: 'int (const fwnode_handle*, device*)*' to: 'int (fwnode_handle*)*'
  1642 impacted interfaces

'struct gendisk at genhd.h:167:1' changed (indirectly):
  type size changed from 8640 to 8512 (in bits)
  there are data member changes:
    type 'struct hd_struct' of 'gendisk::part0' changed:
      type size changed from 7104 to 6976 (in bits)
      there are data member changes:
        type 'struct device' of 'hd_struct::__dev' changed, as reported earlier
        5 ('kobject* hd_struct::holder_dir' .. 'rcu_work hd_struct::rcu_work') offsets changed (by -128 bits)
      1642 impacted interfaces
    13 ('const block_device_operations* gendisk::fops' .. 'lockdep_map gendisk::lockdep_map') offsets changed (by -128 bits)
  1642 impacted interfaces

'struct generic_pm_domain at pm_domain.h:110:1' changed (indirectly):
  type size changed from 10688 to 10560 (in bits)
  there are data member changes:
    type 'struct device' of 'generic_pm_domain::dev' changed, as reported earlier
    39 ('dev_pm_domain generic_pm_domain::domain' .. 'const genpd_lock_ops* generic_pm_domain::lock_ops') offsets changed (by -128 bits)
    anonymous data member 'union {mutex mlock; struct {spinlock_t slock; unsigned long int lock_flags;};}' offset changed from 10432 to 10304 (in bits) (by -128 bits)
  5 impacted interfaces

'struct gnss_device at gnss.h:37:1' changed (indirectly):
  type size changed from 8512 to 8384 (in bits)
  there are data member changes:
    type 'struct device' of 'gnss_device::dev' changed, as reported earlier
    12 ('cdev gnss_device::cdev' .. 'char* gnss_device::write_buf') offsets changed (by -128 bits)
  5 impacted interfaces

'struct gpio_device at gpiolib.h:46:1' changed (indirectly):
  type size changed from 8128 to 8000 (in bits)
  there are data member changes:
    type 'struct device' of 'gpio_device::dev' changed, as reported earlier
    12 ('cdev gpio_device::chrdev' .. 'list_head gpio_device::pin_ranges') offsets changed (by -128 bits)
  27 impacted interfaces

'struct hd_struct at genhd.h:53:1' changed (indirectly):
  details were reported earlier

'struct i2c_adapter at i2c.h:695:1' changed (indirectly):
  details were reported earlier

'struct i2c_client at i2c.h:314:1' changed (indirectly):
  type size changed from 6528 to 6400 (in bits)
  there are data member changes:
    type 'struct device' of 'i2c_client::dev' changed, as reported earlier
    3 ('int i2c_client::init_irq' .. 'list_head i2c_client::detected') offsets changed (by -128 bits)
  8 impacted interfaces

'struct input_dev at input.h:131:1' changed (indirectly):
  type size changed from 11072 to 10944 (in bits)
  there are data member changes:
    type 'struct device' of 'input_dev::dev' changed, as reported earlier
    7 ('list_head input_dev::h_list' .. 'ktime_t input_dev::timestamp[3]') offsets changed (by -128 bits)
  51 impacted interfaces

'struct mdio_device at mdio.h:34:1' changed (indirectly):
  type size changed from 6848 to 6720 (in bits)
  there are data member changes:
    type 'struct device' of 'mdio_device::dev' changed, as reported earlier
    11 ('mii_bus* mdio_device::bus' .. 'unsigned int mdio_device::reset_deassert_delay') offsets changed (by -128 bits)
  10 impacted interfaces

'struct mii_bus at phy.h:301:1' changed (indirectly):
  type size changed from 21184 to 21056 (in bits)
  there are data member changes:
    type 'struct device' of 'mii_bus::dev' changed, as reported earlier
    10 ('mdio_device* mii_bus::mdio_map[32]' .. 'phy_package_shared* mii_bus::shared[32]') offsets changed (by -128 bits)
  10 impacted interfaces

'struct mipi_dsi_device at drm_mipi_dsi.h:188:1' changed (indirectly):
  type size changed from 6592 to 6464 (in bits)
  there are data member changes:
    type 'struct device' of 'mipi_dsi_device::dev' changed, as reported earlier
    7 ('char mipi_dsi_device::name[20]' .. 'unsigned long int mipi_dsi_device::lp_rate') offsets changed (by -128 bits)
  7 impacted interfaces

'struct mm_struct at mm_types.h:396:1' changed:
  type size changed from 7232 to 7296 (in bits)
  there are data member changes:
    anonymous data member at offset 0 (in bits) changed from:
      struct {vm_area_struct* mmap; rb_root mm_rb; u64 vmacache_seqnum; unsigned long int (file*, unsigned long int, unsigned long int, unsigned long int, unsigned long int)* get_unmapped_area; unsigned long int mmap_base; unsigned long int mmap_legacy_base; unsigned long int task_size; unsigned long int highest_vm_end; pgd_t* pgd; atomic_t membarrier_state; atomic_t mm_users; atomic_t mm_count; atomic_t has_pinned; seqcount_t write_protect_seq; atomic_long_t pgtables_bytes; int map_count; spinlock_t page_table_lock; rw_semaphore mmap_lock; list_head mmlist; unsigned long int hiwater_rss; unsigned long int hiwater_vm; unsigned long int total_vm; unsigned long int locked_vm; atomic64_t pinned_vm; unsigned long int data_vm; unsigned long int exec_vm; unsigned long int stack_vm; unsigned long int def_flags; spinlock_t arg_lock; unsigned long int start_code; unsigned long int end_code; unsigned long int start_data; unsigned long int end_data; unsigned long int start_brk; unsigned long int brk; unsigned long int start_stack; unsigned long int arg_start; unsigned long int arg_end; unsigned long int env_start; unsigned long int env_end; unsigned long int saved_auxv[46]; mm_rss_stat rss_stat; linux_binfmt* binfmt; mm_context_t context; unsigned long int flags; core_state* core_state; spinlock_t ioctx_lock; kioctx_table* ioctx_table; user_namespace* user_ns; file* exe_file; mmu_notifier_subscriptions* notifier_subscriptions; atomic_t tlb_flush_pending; uprobes_state uprobes_state; work_struct async_put_work; u32 pasid;}
    to:
      struct {vm_area_struct* mmap; rb_root mm_rb; u64 vmacache_seqnum; rwlock_t mm_rb_lock; unsigned long int (file*, unsigned long int, unsigned long int, unsigned long int, unsigned long int)* get_unmapped_area; unsigned long int mmap_base; unsigned long int mmap_legacy_base; unsigned long int task_size; unsigned long int highest_vm_end; pgd_t* pgd; atomic_t membarrier_state; atomic_t mm_users; atomic_t mm_count; atomic_t has_pinned; seqcount_t write_protect_seq; atomic_long_t pgtables_bytes; int map_count; spinlock_t page_table_lock; rw_semaphore mmap_lock; list_head mmlist; unsigned long int hiwater_rss; unsigned long int hiwater_vm; unsigned long int total_vm; unsigned long int locked_vm; atomic64_t pinned_vm; unsigned long int data_vm; unsigned long int exec_vm; unsigned long int stack_vm; unsigned long int def_flags; spinlock_t arg_lock; unsigned long int start_code; unsigned long int end_code; unsigned long int start_data; unsigned long int end_data; unsigned long int start_brk; unsigned long int brk; unsigned long int start_stack; unsigned long int arg_start; unsigned long int arg_end; unsigned long int env_start; unsigned long int env_end; unsigned long int saved_auxv[46]; mm_rss_stat rss_stat; linux_binfmt* binfmt; mm_context_t context; unsigned long int flags; core_state* core_state; spinlock_t ioctx_lock; kioctx_table* ioctx_table; user_namespace* user_ns; file* exe_file; mmu_notifier_subscriptions* notifier_subscriptions; atomic_t tlb_flush_pending; uprobes_state uprobes_state; work_struct async_put_work; u32 pasid;}
    and size changed from 7232 to 7296 (in bits) (by +64 bits)
    'unsigned long int mm_struct::cpu_bitmap[]' offset changed (by +64 bits)
  1642 impacted interfaces

'struct mmc_card at card.h:244:1' changed (indirectly):
  type size changed from 13184 to 13056 (in bits)
  there are data member changes:
    type 'struct device' of 'mmc_card::dev' changed, as reported earlier
    42 ('u32 mmc_card::ocr' .. 'workqueue_struct* mmc_card::complete_wq') offsets changed (by -128 bits)
  19 impacted interfaces

'struct mmc_host at host.h:275:1' changed (indirectly):
  type size hasn't changed
  there are data member changes:
    type 'struct device' of 'mmc_host::class_dev' changed, as reported earlier
    66 ('int mmc_host::index' .. 'bool mmc_host::hsq_enabled') offsets changed (by -128 bits)
  19 impacted interfaces

'struct nd_region at nd.h:138:1' changed (indirectly):
  type size changed from 8192 to 8064 (in bits)
  there are data member changes:
    type 'struct device' of 'nd_region::dev' changed, as reported earlier
    25 ('ida nd_region::ns_ida' .. 'nd_mapping nd_region::mapping[]') offsets changed (by -128 bits)
  one impacted interface

'struct ndisc_options at ndisc.h:111:1' changed:
  type size changed from 1216 to 1408 (in bits)
  1 data member insertion:
    'nd_opt_hdr* ndisc_options::nd_802154_opt_array[3]', at offset 1216 (in bits) at ndisc.h:120:1
  236 impacted interfaces

'struct net at net_namespace.h:56:1' changed:
  details were reported earlier

'struct net_device at netdevice.h:1858:1' changed (indirectly):
  type size hasn't changed
  there are data member changes:
    type 'struct device' of 'net_device::dev' changed, as reported earlier
    17 ('const attribute_group* net_device::sysfs_groups[4]' .. 'bpf_xdp_entity net_device::xdp_state[3]') offsets changed (by -128 bits)
  236 impacted interfaces

'struct nvdimm at nd-core.h:31:1' changed (indirectly):
  type size changed from 7616 to 7488 (in bits)
  there are data member changes:
    type 'struct device' of 'nvdimm::dev' changed, as reported earlier
    8 ('atomic_t nvdimm::busy' .. 'const nvdimm_fw_ops* nvdimm::fw_ops') offsets changed (by -128 bits)
  3 impacted interfaces

'struct nvdimm_bus at nd-core.h:19:1' changed (indirectly):
  type size changed from 7168 to 7040 (in bits)
  there are data member changes:
    type 'struct device' of 'nvdimm_bus::dev' changed, as reported earlier
    6 ('int nvdimm_bus::id' .. 'badrange nvdimm_bus::badrange') offsets changed (by -128 bits)
  3 impacted interfaces

'struct nvmem_device at core.c:22:1' changed (indirectly):
  type size changed from 7360 to 7232 (in bits)
  there are data member changes:
    type 'struct device' of 'nvmem_device::dev' changed, as reported earlier
    16 ('int nvmem_device::stride' .. 'void* nvmem_device::priv') offsets changed (by -128 bits)
  5 impacted interfaces

'struct pci_bus at pci.h:605:1' changed (indirectly):
  type size changed from 8640 to 8512 (in bits)
  there are data member changes:
    type 'struct device' of 'pci_bus::dev' changed, as reported earlier
    2 ('bin_attribute* pci_bus::legacy_io' .. 'bin_attribute* pci_bus::legacy_mem') offsets changed (by -128 bits)
  47 impacted interfaces

'struct pci_dev at pci.h:309:1' changed (indirectly):
  type size changed from 15872 to 15744 (in bits)
  there are data member changes:
    type 'struct device' of 'pci_dev::dev' changed, as reported earlier
    20 ('int pci_dev::cfg_size' .. 'unsigned long int pci_dev::priv_flags') offsets changed (by -128 bits)
  47 impacted interfaces

'struct phy at phy.h:138:1' changed (indirectly):
  type size changed from 6720 to 6592 (in bits)
  there are data member changes:
    type 'struct device' of 'phy::dev' changed, as reported earlier
    7 ('int phy::id' .. 'regulator* phy::pwr') offsets changed (by -128 bits)
  31 impacted interfaces

'struct phy_device at phy.h:539:1' changed (indirectly):
  type size changed from 10688 to 10560 (in bits)
  there are data member changes:
    type 'struct mdio_device' of 'phy_device::mdio' changed, as reported earlier
    35 ('phy_driver* phy_device::drv' .. 'void (net_device*)* phy_device::adjust_link') offsets changed (by -128 bits)
  6 impacted interfaces

'struct platform_device at platform_device.h:22:1' changed (indirectly):
  type size changed from 6720 to 6592 (in bits)
  there are data member changes:
    type 'struct device' of 'platform_device::dev' changed, as reported earlier
    8 ('u64 platform_device::platform_dma_mask' .. 'pdev_archdata platform_device::archdata') offsets changed (by -128 bits)
  29 impacted interfaces

'struct power_supply at power_supply.h:279:1' changed (indirectly):
  type size changed from 8384 to 8256 (in bits)
  there are data member changes:
    type 'struct device' of 'power_supply::dev' changed, as reported earlier
    19 ('work_struct power_supply::changed_work' .. 'char* power_supply::charging_blink_full_solid_trig_name') offsets changed (by -128 bits)
  4 impacted interfaces

'struct rc_dev at rc-core.h:162:1' changed (indirectly):
  type size changed from 17408 to 17152 (in bits)
  there are data member changes:
    type 'struct device' of 'rc_dev::dev' changed, as reported earlier
    38 ('bool rc_dev::managed_alloc' .. 'u32 rc_dev::tx_resolution') offsets changed (by -128 bits)
    type 'struct device' of 'rc_dev::lirc_dev' changed, as reported earlier
    and offset changed from 9216 to 9088 (in bits) (by -128 bits)
    21 ('cdev rc_dev::lirc_cdev' .. 'int (rc_dev*, unsigned int)* rc_dev::s_timeout') offsets changed (by -256 bits)
  8 impacted interfaces

'struct regulator_dev at driver.h:434:1' changed (indirectly):
  type size changed from 8960 to 8832 (in bits)
  there are data member changes:
    type 'struct device' of 'regulator_dev::dev' changed, as reported earlier
    9 ('regulation_constraints* regulator_dev::constraints' .. 'unsigned long int regulator_dev::last_off_jiffy') offsets changed (by -128 bits)
  11 impacted interfaces

'struct rpmsg_device at rpmsg.h:51:1' changed (indirectly):
  type size changed from 6656 to 6528 (in bits)
  there are data member changes:
    type 'struct device' of 'rpmsg_device::dev' changed, as reported earlier
    7 ('rpmsg_device_id rpmsg_device::id' .. 'const rpmsg_device_ops* rpmsg_device::ops') offsets changed (by -128 bits)
  5 impacted interfaces

'struct rproc at remoteproc.h:516:1' changed (indirectly):
  type size changed from 9728 to 9600 (in bits)
  there are data member changes:
    type 'struct device' of 'rproc::dev' changed, as reported earlier
    30 ('atomic_t rproc::power' .. 'bool rproc::cdev_put_on_release') offsets changed (by -128 bits)
  12 impacted interfaces

'struct rtc_device at rtc.h:84:1' changed (indirectly):
  type size changed from 10432 to 10304 (in bits)
  there are data member changes:
    type 'struct device' of 'rtc_device::dev' changed, as reported earlier
    28 ('module* rtc_device::owner' .. 'bool rtc_device::set_start_time') offsets changed (by -128 bits)
  3 impacted interfaces

'struct scsi_device at scsi_device.h:101:1' changed (indirectly):
  type size changed from 16384 to 16128 (in bits)
  there are data member changes:
    type 'struct device' of 'scsi_device::sdev_gendev' changed, as reported earlier
    type 'struct device' of 'scsi_device::sdev_dev' changed, as reported earlier
    and offset changed from 9088 to 8960 (in bits) (by -128 bits)
    11 ('execute_work scsi_device::ew' .. 'unsigned long int scsi_device::sdev_data[]') offsets changed (by -256 bits)
  8 impacted interfaces

'struct scsi_target at scsi_device.h:289:1' changed (indirectly):
  type size changed from 6784 to 6656 (in bits)
  there are data member changes:
    type 'struct device' of 'scsi_target::dev' changed, as reported earlier
    11 ('kref scsi_target::reap_ref' .. 'unsigned long int scsi_target::starget_data[]') offsets changed (by -128 bits)
  8 impacted interfaces

'struct serdev_controller at serdev.h:103:1' changed (indirectly):
  type size changed from 6272 to 6144 (in bits)
  there are data member changes:
    type 'struct device' of 'serdev_controller::dev' changed, as reported earlier
    3 ('unsigned int serdev_controller::nr' .. 'const serdev_controller_ops* serdev_controller::ops') offsets changed (by -128 bits)
  7 impacted interfaces

'struct serdev_device at serdev.h:41:1' changed (indirectly):
  type size changed from 6784 to 6656 (in bits)
  there are data member changes:
    type 'struct device' of 'serdev_device::dev' changed, as reported earlier
    5 ('int serdev_device::nr' .. 'mutex serdev_device::write_lock') offsets changed (by -128 bits)
  7 impacted interfaces

'struct serio at serio.h:20:1' changed (indirectly):
  type size changed from 9024 to 8896 (in bits)
  there are data member changes:
    type 'struct device' of 'serio::dev' changed, as reported earlier
    2 ('list_head serio::node' .. 'mutex* serio::ps2_cmd_mutex') offsets changed (by -128 bits)
  4 impacted interfaces

'struct snd_card at core.h:79:1' changed (indirectly):
  type size changed from 18048 to 17792 (in bits)
  there are data member changes:
    type 'struct device' of 'snd_card::ctl_dev' changed, as reported earlier
    15 ('unsigned int snd_card::last_numid' .. 'device* snd_card::dev') offsets changed (by -128 bits)
    type 'struct device' of 'snd_card::card_dev' changed, as reported earlier
    and offset changed from 10880 to 10752 (in bits) (by -128 bits)
    8 ('const attribute_group* snd_card::dev_groups[4]' .. 'wait_queue_head_t snd_card::power_sleep') offsets changed (by -256 bits)
  83 impacted interfaces

'struct snd_compr at compress_driver.h:146:1' changed (indirectly):
  type size changed from 6720 to 6592 (in bits)
  there are data member changes:
    type 'struct device' of 'snd_compr::dev' changed, as reported earlier
    6 ('snd_compr_ops* snd_compr::ops' .. 'int snd_compr::device') offsets changed (by -128 bits)
  30 impacted interfaces

'struct snd_pcm at pcm.h:509:1' changed (indirectly):
  type size changed from 14912 to 14656 (in bits)
  there are data member changes:
    'snd_pcm_str snd_pcm::streams[2]' size changed from 12800 to 12544 (in bits) (by -256 bits)
    7 ('mutex snd_pcm::open_mutex' .. 'bool snd_pcm::no_device_suspend') offsets changed (by -256 bits)
  45 impacted interfaces

'struct snd_pcm_str at pcm.h:488:1' changed (indirectly):
  type size changed from 6400 to 6272 (in bits)
  there are data member changes:
    type 'struct device' of 'snd_pcm_str::dev' changed, as reported earlier
  45 impacted interfaces

'struct soc_device at soc.c:24:1' changed (indirectly):
  type size changed from 6208 to 6080 (in bits)
  there are data member changes:
    type 'struct device' of 'soc_device::dev' changed, as reported earlier
    2 ('soc_device_attribute* soc_device::attr' .. 'int soc_device::soc_dev_num') offsets changed (by -128 bits)
  2 impacted interfaces

'struct spi_controller at spi.h:466:1' changed (indirectly):
  type size changed from 11968 to 11840 (in bits)
  there are data member changes:
    type 'struct device' of 'spi_controller::dev' changed, as reported earlier
    66 ('list_head spi_controller::list' .. 'unsigned long int spi_controller::irq_flags') offsets changed (by -128 bits)
  10 impacted interfaces

'struct spi_device at spi.h:159:1' changed (indirectly):
  type size changed from 8832 to 8704 (in bits)
  there are data member changes:
    type 'struct device' of 'spi_device::dev' changed, as reported earlier
    16 ('spi_controller* spi_device::controller' .. 'spi_statistics spi_device::statistics') offsets changed (by -128 bits)
  10 impacted interfaces

'struct spmi_controller at spmi.h:80:1' changed (indirectly):
  type size changed from 6336 to 6208 (in bits)
  there are data member changes:
    type 'struct device' of 'spmi_controller::dev' changed, as reported earlier
    4 ('unsigned int spmi_controller::nr' .. 'int (spmi_controller*, typedef u8, typedef u8, typedef u16, const u8*, typedef size_t)* spmi_controller::write_cmd') offsets changed (by -128 bits)
  11 impacted interfaces

'struct spmi_device at spmi.h:39:1' changed (indirectly):
  type size changed from 6208 to 6080 (in bits)
  there are data member changes:
    type 'struct device' of 'spmi_device::dev' changed, as reported earlier
    2 ('spmi_controller* spmi_device::ctrl' .. 'u8 spmi_device::usid') offsets changed (by -128 bits)
  8 impacted interfaces

'struct task_struct at sched.h:641:1' changed:
  type size changed from 32256 to 32768 (in bits)
  1 data member insertion:
    'u64 task_struct::android_oem_data1[2]', at offset 24384 (in bits) at sched.h:1361:1
  there are data member changes:
    type 'struct thread_struct' of 'task_struct::thread' changed:
      type size changed from 7808 to 7936 (in bits)
      2 data member insertions:
        'u64 thread_struct::sctlr_tcf0', at offset 7808 (in bits) at processor.h:160:1
        'u64 thread_struct::gcr_user_excl', at offset 7872 (in bits) at processor.h:161:1
      1642 impacted interfaces
    and offset changed from 24448 to 24576 (in bits) (by +128 bits)
  1642 impacted interfaces

'struct thermal_cooling_device at thermal.h:93:1' changed (indirectly):
  type size changed from 7104 to 6976 (in bits)
  there are data member changes:
    type 'struct device' of 'thermal_cooling_device::device' changed, as reported earlier
    8 ('device_node* thermal_cooling_device::np' .. 'list_head thermal_cooling_device::node') offsets changed (by -128 bits)
  3 impacted interfaces

'struct thread_struct at processor.h:131:1' changed:
  details were reported earlier

'struct ufs_hba at ufshcd.h:710:1' changed (indirectly):
  type size changed from 32000 to 31872 (in bits)
  there are data member changes:
    type 'struct device' of 'ufs_hba::bsg_dev' changed, as reported earlier
    8 ('request_queue* ufs_hba::bsg_queue' .. 'blk_keyslot_manager ufs_hba::ksm') offsets changed (by -128 bits)
  8 impacted interfaces

'struct usb_device at usb.h:631:1' changed (indirectly):
  type size changed from 11136 to 11008 (in bits)
  there are data member changes:
    type 'struct device' of 'usb_device::dev' changed, as reported earlier
    29 ('usb_device_descriptor usb_device::descriptor' .. 'u16 usb_device::hub_delay') offsets changed (by -128 bits)
  35 impacted interfaces

'struct usb_gadget at gadget.h:400:1' changed:
  type size changed from 7104 to 7040 (in bits)
  2 data member insertions:
    'usb_ssp_rate usb_gadget::ssp_rate', at offset 640 (in bits) at gadget.h:417:1
    'usb_ssp_rate usb_gadget::max_ssp_rate', at offset 672 (in bits) at gadget.h:418:1
  there are data member changes:
    2 ('usb_device_state usb_gadget::state' .. 'const char* usb_gadget::name') offsets changed (by +64 bits)
    type 'struct device' of 'usb_gadget::dev' changed, as reported earlier
    and offset changed from 768 to 832 (in bits) (by +64 bits)
    6 ('unsigned int usb_gadget::isoch_delay' .. 'int usb_gadget::irq') offsets changed (by -64 bits)
  6 impacted interfaces

'struct usb_gadget_ops at gadget.h:311:1' changed:
  type size changed from 768 to 832 (in bits)
  1 data member insertion:
    'void (usb_gadget*, enum usb_ssp_rate)* usb_gadget_ops::udc_set_ssp_rate', at offset 704 (in bits) at gadget.h:326:1
  there are data member changes:
    'usb_ep* (usb_gadget*, usb_endpoint_descriptor*, usb_ss_ep_comp_descriptor*)* usb_gadget_ops::match_ep' offset changed (by +64 bits)
  6 impacted interfaces

'struct usb_interface at usb.h:232:1' changed (indirectly):
  type size changed from 6784 to 6656 (in bits)
  there are data member changes:
    type 'struct device' of 'usb_interface::dev' changed, as reported earlier
    2 ('device* usb_interface::usb_dev' .. 'work_struct usb_interface::reset_ws') offsets changed (by -128 bits)
  41 impacted interfaces

'struct usb_udc at core.c:36:1' changed:
  type size changed from 6400 to 6272 (in bits)
  1 data member insertion:
    'bool usb_udc::started', at offset 6216 (in bits) at core.c:43:1
  there are data member changes:
    type 'struct device' of 'usb_udc::dev' changed, as reported earlier
    2 ('list_head usb_udc::list' .. 'bool usb_udc::vbus') offsets changed (by -128 bits)
  6 impacted interfaces

'struct virtio_device at virtio.h:107:1' changed (indirectly):
  type size changed from 6656 to 6528 (in bits)
  there are data member changes:
    type 'struct device' of 'virtio_device::dev' changed, as reported earlier
    6 ('virtio_device_id virtio_device::id' .. 'void* virtio_device::priv') offsets changed (by -128 bits)
  33 impacted interfaces

'struct vm_area_struct at mm_types.h:306:1' changed:
  type size changed from 1472 to 1536 (in bits)
  2 data member insertions:
    'seqcount_t vm_area_struct::vm_sequence', at offset 1472 (in bits) at mm_types.h:383:1
    'atomic_t vm_area_struct::vm_ref_count', at offset 1504 (in bits) at mm_types.h:384:1
  1642 impacted interfaces

'struct vm_fault at mm.h:508:1' changed:
  type size changed from 768 to 1024 (in bits)
  4 data member insertions:
    'unsigned int vm_fault::sequence', at offset 256 (in bits) at mm.h:526:1
    'pmd_t vm_fault::orig_pmd', at offset 320 (in bits) at mm.h:527:1
    'unsigned long int vm_fault::vma_flags', at offset 896 (in bits) at mm.h:562:1
    'pgprot_t vm_fault::vma_page_prot', at offset 960 (in bits) at mm.h:563:1
  there are data member changes:
    7 ('pmd_t* vm_fault::pmd' .. 'spinlock_t* vm_fault::ptl') offsets changed (by +128 bits)
    type 'typedef pgtable_t' of 'vm_fault::prealloc_pte' changed:
      underlying type 'page*' changed:
    and offset changed from 704 to 832 (in bits) (by +128 bits)
  1642 impacted interfaces

'struct wiphy at cfg80211.h:4883:1' changed (indirectly):
  type size changed from 10240 to 9984 (in bits)
  there are data member changes:
    type 'struct device' of 'wiphy::dev' changed, as reported earlier
    5 ('bool wiphy::registered' .. 'list_head wiphy::wdev_list') offsets changed (by -128 bits)
    type 'typedef possible_net_t' of 'wiphy::_net' changed:
      underlying type 'struct {net* net;}' at net_namespace.h:314:1 changed:
    and offset changed from 9152 to 9024 (in bits) (by -128 bits)
    16 ('const wiphy_coalesce_support* wiphy::coalesce' .. 'u8 wiphy::max_data_retry_count') offsets changed (by -128 bits)
    'char wiphy::priv[]' offset changed (by -256 bits)
  52 impacted interfaces

'struct wq_device at workqueue.c:5377:1' changed (indirectly):
  type size changed from 6144 to 6016 (in bits)
  there are data member changes:
    type 'struct device' of 'wq_device::dev' changed, as reported earlier
  1642 impacted interfaces

'struct xsk_buff_pool at xsk_buff_pool.h:41:1' changed:
  type size hasn't changed
  1 data member insertion:
    'spinlock_t xsk_buff_pool::cq_lock', at offset 1728 (in bits) at xsk_buff_pool.h:80:1
  there are data member changes:
    'xdp_buff_xsk* xsk_buff_pool::free_heads[]' offset changed (by +64 bits)
  236 impacted interfaces

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I6acf261e346c79b63326d46b01af3cc8e05a7a70
2021-01-31 14:01:22 +01:00
Jaegeuk Kim
adef4d1d97 ANDROID: GKI: bring WPAN into GKI
https://developer.android.com/things/sdk/apis/lowpan:
On these networks, Android devices can communicate directly with
other peer devices, even ultra-low power battery operated nodes
that may not have WiFi or Bluetooth connectivity (such as door
locks and window sensors).

Bug: 175144495
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
Change-Id: I8edcfca392712443496e777377b0fc9126f63066
2021-01-31 11:13:29 +00:00
John Stultz
3d3e572063 ANDROID: db845c_gki.fragment: Drop CONFIG_USB_XHCI_HCD
With CONFIG_USB_XHCI_HCD (again) back in the gki_defconfig,
we need to drop it from the db845c_gki.fragment in order
to keep booting.

Fixes: f6335559bdaf2 ("Revert "Revert "ANDROID: GKI: Enable CONFIG_USB_XHCI_HCD""")
Bug: 175743419
Signed-off-by: John Stultz <john.stultz@linaro.org>
Change-Id: Ie038e15eb4084cbd663426ee9dd5e3798c48f8de
2021-01-30 13:11:30 -08:00
Todd Kjos
3e1ece2418 Revert "ANDROID: Update db845c KMI symbol list for DWC3 changes"
This reverts commit ad34119165.

Bug: 175742587
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: I813e2755e2609ae804bdd2f5253e30d51854240b
2021-01-30 13:11:30 -08:00
Todd Kjos
e8dcac39fd Revert "Revert "ANDROID: GKI: Enable CONFIG_USB_XHCI_HCD""
This reverts commit 552cb0291a.

As announced, re-enabling CONFIG_USB_XHCI_HCD

Bug: 175743419
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: I0bfa95a621ba97c1811247848cb13be654da020e
2021-01-30 13:11:30 -08:00
Todd Kjos
a2c520240e Revert "Revert "ANDROID: db845c_gki.fragment: Drop CONFIG_USB_DWC3 from config frament""
This reverts commit 87e01dd378.

Bug: 175742587
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: I74f2ed8e48f185a159b62aee18e290ad6a0e5496
2021-01-30 13:11:30 -08:00
Todd Kjos
7bf17b4a90 Revert "Revert "ANDROID: GKI: enable CONFIG_USB_DWC3 to be build in""
This reverts commit 00e37d5fca.

As announced, re-enabling CONFIG_USB_DWC3

Bug: 175742587
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: I2785fbebb35d92b1faff25835b5c06139a941032
2021-01-30 13:11:30 -08:00
Greg Kroah-Hartman
39564d70ad Merge 5.10.12 into android12-5.10
Changes in 5.10.12
	gpio: mvebu: fix pwm .get_state period calculation
	Revert "mm/slub: fix a memory leak in sysfs_slab_add()"
	futex: Ensure the correct return value from futex_lock_pi()
	futex: Replace pointless printk in fixup_owner()
	futex: Provide and use pi_state_update_owner()
	rtmutex: Remove unused argument from rt_mutex_proxy_unlock()
	futex: Use pi_state_update_owner() in put_pi_state()
	futex: Simplify fixup_pi_state_owner()
	futex: Handle faults correctly for PI futexes
	HID: wacom: Correct NULL dereference on AES pen proximity
	HID: multitouch: Apply MT_QUIRK_CONFIDENCE quirk for multi-input devices
	media: Revert "media: videobuf2: Fix length check for single plane dmabuf queueing"
	media: v4l2-subdev.h: BIT() is not available in userspace
	RDMA/vmw_pvrdma: Fix network_hdr_type reported in WC
	iwlwifi: dbg: Don't touch the tlv data
	kernel/io_uring: cancel io_uring before task works
	io_uring: inline io_uring_attempt_task_drop()
	io_uring: add warn_once for io_uring_flush()
	io_uring: stop SQPOLL submit on creator's death
	io_uring: fix null-deref in io_disable_sqo_submit
	io_uring: do sqo disable on install_fd error
	io_uring: fix false positive sqo warning on flush
	io_uring: fix uring_flush in exit_files() warning
	io_uring: fix skipping disabling sqo on exec
	io_uring: dont kill fasync under completion_lock
	io_uring: fix sleeping under spin in __io_clean_op
	objtool: Don't fail on missing symbol table
	mm/page_alloc: add a missing mm_page_alloc_zone_locked() tracepoint
	mm: fix a race on nr_swap_pages
	tools: Factor HOSTCC, HOSTLD, HOSTAR definitions
	printk: fix buffer overflow potential for print_text()
	printk: fix string termination for record_print_text()
	Linux 5.10.12

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I6d96ec78494ebbc0daf4fdecfc13e522c6bd6b42
2021-01-30 14:29:02 +01:00
Greg Kroah-Hartman
05f6d2aa7e Linux 5.10.12
Tested-by: Pavel Machek (CIP) <pavel@denx.de>
Link: https://lore.kernel.org/r/20210129105912.628174874@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:20 +01:00
John Ogness
d5ac8304e1 printk: fix string termination for record_print_text()
commit 08d60e5999 upstream.

Commit f0e386ee0c ("printk: fix buffer overflow potential for
print_text()") added string termination in record_print_text().
However it used the wrong base pointer for adding the terminator.
This led to a 0-byte being written somewhere beyond the buffer.

Use the correct base pointer when adding the terminator.

Fixes: f0e386ee0c ("printk: fix buffer overflow potential for print_text()")
Reported-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: John Ogness <john.ogness@linutronix.de>
Signed-off-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20210124202728.4718-1-john.ogness@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:20 +01:00
John Ogness
861c2e349a printk: fix buffer overflow potential for print_text()
commit f0e386ee0c upstream.

Before the commit 896fbe20b4 ("printk: use the lockless
ringbuffer"), msg_print_text() would only write up to size-1 bytes
into the provided buffer. Some callers expect this behavior and
append a terminator to returned string. In particular:

arch/powerpc/xmon/xmon.c:dump_log_buf()
arch/um/kernel/kmsg_dump.c:kmsg_dumper_stdout()

msg_print_text() has been replaced by record_print_text(), which
currently fills the full size of the buffer. This causes a
buffer overflow for the above callers.

Change record_print_text() so that it will only use size-1 bytes
for text data. Also, for paranoia sakes, add a terminator after
the text data.

And finally, document this behavior so that it is clear that only
size-1 bytes are used and a terminator is added.

Fixes: 896fbe20b4 ("printk: use the lockless ringbuffer")
Cc: stable@vger.kernel.org # 5.10+
Signed-off-by: John Ogness <john.ogness@linutronix.de>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Acked-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Signed-off-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20210114170412.4819-1-john.ogness@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:20 +01:00
Jean-Philippe Brucker
cb14bbbb7b tools: Factor HOSTCC, HOSTLD, HOSTAR definitions
commit c8a950d0d3 upstream.

Several Makefiles in tools/ need to define the host toolchain variables.
Move their definition to tools/scripts/Makefile.include

Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://lore.kernel.org/bpf/20201110164310.2600671-2-jean-philippe@linaro.org
Cc: Alistair Delva <adelva@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:19 +01:00
Zhaoyang Huang
f472a59aa1 mm: fix a race on nr_swap_pages
commit b50da6e9f4 upstream.

The scenario on which "Free swap = -4kB" happens in my system, which is caused
by several get_swap_pages racing with each other and show_swap_cache_info
happens simutaniously. No need to add a lock on get_swap_page_of_type as we
remove "Presub/PosAdd" here.

ProcessA			ProcessB			ProcessC
ngoals = 1			ngoals = 1
avail = nr_swap_pages(1)	avail = nr_swap_pages(1)
nr_swap_pages(1) -= ngoals
				nr_swap_pages(0) -= ngoals
								nr_swap_pages = -1

Link: https://lkml.kernel.org/r/1607050340-4535-1-git-send-email-zhaoyang.huang@unisoc.com
Signed-off-by: Zhaoyang Huang <zhaoyang.huang@unisoc.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Hugh Dickins <hughd@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:19 +01:00
Hailong liu
c11f7749f1 mm/page_alloc: add a missing mm_page_alloc_zone_locked() tracepoint
commit ce8f86ee94 upstream.

The trace point *trace_mm_page_alloc_zone_locked()* in __rmqueue() does
not currently cover all branches.  Add the missing tracepoint and check
the page before do that.

[akpm@linux-foundation.org: use IS_ENABLED() to suppress warning]

Link: https://lkml.kernel.org/r/20201228132901.41523-1-carver4lio@163.com
Signed-off-by: Hailong liu <liu.hailong6@zte.com.cn>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Ivan Babrou <ivan@cloudflare.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:19 +01:00
Josh Poimboeuf
c6fd968f58 objtool: Don't fail on missing symbol table
commit 1d489151e9 upstream.

Thanks to a recent binutils change which doesn't generate unused
symbols, it's now possible for thunk_64.o be completely empty without
CONFIG_PREEMPTION: no text, no data, no symbols.

We could edit the Makefile to only build that file when
CONFIG_PREEMPTION is enabled, but that will likely create confusion
if/when the thunks end up getting used by some other code again.

Just ignore it and move on.

Reported-by: Nathan Chancellor <natechancellor@gmail.com>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Reviewed-by: Miroslav Benes <mbenes@suse.cz>
Tested-by: Nathan Chancellor <natechancellor@gmail.com>
Link: https://github.com/ClangBuiltLinux/linux/issues/1254
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:19 +01:00
Pavel Begunkov
d92d00861e io_uring: fix sleeping under spin in __io_clean_op
[ Upstream commit 9d5c819068 ]

[   27.629441] BUG: sleeping function called from invalid context
	at fs/file.c:402
[   27.631317] in_atomic(): 1, irqs_disabled(): 1, non_block: 0,
	pid: 1012, name: io_wqe_worker-0
[   27.633220] 1 lock held by io_wqe_worker-0/1012:
[   27.634286]  #0: ffff888105e26c98 (&ctx->completion_lock)
	{....}-{2:2}, at: __io_req_complete.part.102+0x30/0x70
[   27.649249] Call Trace:
[   27.649874]  dump_stack+0xac/0xe3
[   27.650666]  ___might_sleep+0x284/0x2c0
[   27.651566]  put_files_struct+0xb8/0x120
[   27.652481]  __io_clean_op+0x10c/0x2a0
[   27.653362]  __io_cqring_fill_event+0x2c1/0x350
[   27.654399]  __io_req_complete.part.102+0x41/0x70
[   27.655464]  io_openat2+0x151/0x300
[   27.656297]  io_issue_sqe+0x6c/0x14e0
[   27.660991]  io_wq_submit_work+0x7f/0x240
[   27.662890]  io_worker_handle_work+0x501/0x8a0
[   27.664836]  io_wqe_worker+0x158/0x520
[   27.667726]  kthread+0x134/0x180
[   27.669641]  ret_from_fork+0x1f/0x30

Instead of cleaning files on overflow, return back overflow cancellation
into io_uring_cancel_files(). Previously it was racy to clean
REQ_F_OVERFLOW flag, but we got rid of it, and can do it through
repetitive attempts targeting all matching requests.

Cc: stable@vger.kernel.org # 5.9+
Reported-by: Abaci <abaci@linux.alibaba.com>
Reported-by: Joseph Qi <joseph.qi@linux.alibaba.com>
Cc: Xiaoguang Wang <xiaoguang.wang@linux.alibaba.com>
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:19 +01:00
Pavel Begunkov
7bccd1c191 io_uring: dont kill fasync under completion_lock
[ Upstream commit 4aa84f2ffa ]

      CPU0                    CPU1
       ----                    ----
  lock(&new->fa_lock);
                               local_irq_disable();
                               lock(&ctx->completion_lock);
                               lock(&new->fa_lock);
  <Interrupt>
    lock(&ctx->completion_lock);

 *** DEADLOCK ***

Move kill_fasync() out of io_commit_cqring() to io_cqring_ev_posted(),
so it doesn't hold completion_lock while doing it. That saves from the
reported deadlock, and it's just nice to shorten the locking time and
untangle nested locks (compl_lock -> wq_head::lock).

Cc: stable@vger.kernel.org # 5.5+
Reported-by: syzbot+91ca3f25bd7f795f019c@syzkaller.appspotmail.com
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:19 +01:00
Pavel Begunkov
186725a80c io_uring: fix skipping disabling sqo on exec
[ Upstream commit 0b5cd6c32b ]

If there are no requests at the time __io_uring_task_cancel() is called,
tctx_inflight() returns zero and and it terminates not getting a chance
to go through __io_uring_files_cancel() and do
io_disable_sqo_submit(). And we absolutely want them disabled by the
time cancellation ends.

Cc: stable@vger.kernel.org # 5.5+
Reported-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Fixes: d9d05217cb ("io_uring: stop SQPOLL submit on creator's death")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:19 +01:00
Pavel Begunkov
54b4c4f9ab io_uring: fix uring_flush in exit_files() warning
[ Upstream commit 4325cb498c ]

WARNING: CPU: 1 PID: 11100 at fs/io_uring.c:9096
	io_uring_flush+0x326/0x3a0 fs/io_uring.c:9096
RIP: 0010:io_uring_flush+0x326/0x3a0 fs/io_uring.c:9096
Call Trace:
 filp_close+0xb4/0x170 fs/open.c:1280
 close_files fs/file.c:401 [inline]
 put_files_struct fs/file.c:416 [inline]
 put_files_struct+0x1cc/0x350 fs/file.c:413
 exit_files+0x7e/0xa0 fs/file.c:433
 do_exit+0xc22/0x2ae0 kernel/exit.c:820
 do_group_exit+0x125/0x310 kernel/exit.c:922
 get_signal+0x3e9/0x20a0 kernel/signal.c:2770
 arch_do_signal_or_restart+0x2a8/0x1eb0 arch/x86/kernel/signal.c:811
 handle_signal_work kernel/entry/common.c:147 [inline]
 exit_to_user_mode_loop kernel/entry/common.c:171 [inline]
 exit_to_user_mode_prepare+0x148/0x250 kernel/entry/common.c:201
 __syscall_exit_to_user_mode_work kernel/entry/common.c:291 [inline]
 syscall_exit_to_user_mode+0x19/0x50 kernel/entry/common.c:302
 entry_SYSCALL_64_after_hwframe+0x44/0xa9

An SQPOLL ring creator task may have gotten rid of its file note during
exit and called io_disable_sqo_submit(), but the io_uring is still left
referenced through fdtable, which will be put during close_files() and
cause a false positive warning.

First split the warning into two for more clarity when is hit, and the
add sqo_dead check to handle the described case.

Cc: stable@vger.kernel.org # 5.5+
Reported-by: syzbot+a32b546d58dde07875a1@syzkaller.appspotmail.com
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:19 +01:00
Pavel Begunkov
0682759126 io_uring: fix false positive sqo warning on flush
[ Upstream commit 6b393a1ff1 ]

WARNING: CPU: 1 PID: 9094 at fs/io_uring.c:8884
	io_disable_sqo_submit+0x106/0x130 fs/io_uring.c:8884
Call Trace:
 io_uring_flush+0x28b/0x3a0 fs/io_uring.c:9099
 filp_close+0xb4/0x170 fs/open.c:1280
 close_fd+0x5c/0x80 fs/file.c:626
 __do_sys_close fs/open.c:1299 [inline]
 __se_sys_close fs/open.c:1297 [inline]
 __x64_sys_close+0x2f/0xa0 fs/open.c:1297
 do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
 entry_SYSCALL_64_after_hwframe+0x44/0xa9

io_uring's final close() may be triggered by any task not only the
creator. It's well handled by io_uring_flush() including SQPOLL case,
though a warning in io_disable_sqo_submit() will fallaciously fire by
moving this warning out to the only call site that matters.

Cc: stable@vger.kernel.org # 5.5+
Reported-by: syzbot+2f5d1785dc624932da78@syzkaller.appspotmail.com
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:19 +01:00
Pavel Begunkov
8cb6f4da83 io_uring: do sqo disable on install_fd error
[ Upstream commit 06585c497b ]

WARNING: CPU: 0 PID: 8494 at fs/io_uring.c:8717
	io_ring_ctx_wait_and_kill+0x4f2/0x600 fs/io_uring.c:8717
Call Trace:
 io_uring_release+0x3e/0x50 fs/io_uring.c:8759
 __fput+0x283/0x920 fs/file_table.c:280
 task_work_run+0xdd/0x190 kernel/task_work.c:140
 tracehook_notify_resume include/linux/tracehook.h:189 [inline]
 exit_to_user_mode_loop kernel/entry/common.c:174 [inline]
 exit_to_user_mode_prepare+0x249/0x250 kernel/entry/common.c:201
 __syscall_exit_to_user_mode_work kernel/entry/common.c:291 [inline]
 syscall_exit_to_user_mode+0x19/0x50 kernel/entry/common.c:302
 entry_SYSCALL_64_after_hwframe+0x44/0xa9

failed io_uring_install_fd() is a special case, we don't do
io_ring_ctx_wait_and_kill() directly but defer it to fput, though still
need to io_disable_sqo_submit() before.

note: it doesn't fix any real problem, just a warning. That's because
sqring won't be available to the userspace in this case and so SQPOLL
won't submit anything.

Cc: stable@vger.kernel.org # 5.5+
Reported-by: syzbot+9c9c35374c0ecac06516@syzkaller.appspotmail.com
Fixes: d9d05217cb ("io_uring: stop SQPOLL submit on creator's death")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:18 +01:00
Pavel Begunkov
0e3562e3b2 io_uring: fix null-deref in io_disable_sqo_submit
[ Upstream commit b4411616c2 ]

general protection fault, probably for non-canonical address
	0xdffffc0000000022: 0000 [#1] KASAN: null-ptr-deref
	in range [0x0000000000000110-0x0000000000000117]
RIP: 0010:io_ring_set_wakeup_flag fs/io_uring.c:6929 [inline]
RIP: 0010:io_disable_sqo_submit+0xdb/0x130 fs/io_uring.c:8891
Call Trace:
 io_uring_create fs/io_uring.c:9711 [inline]
 io_uring_setup+0x12b1/0x38e0 fs/io_uring.c:9739
 do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
 entry_SYSCALL_64_after_hwframe+0x44/0xa9

io_disable_sqo_submit() might be called before user rings were
allocated, don't do io_ring_set_wakeup_flag() in those cases.

Cc: stable@vger.kernel.org # 5.5+
Reported-by: syzbot+ab412638aeb652ded540@syzkaller.appspotmail.com
Fixes: d9d05217cb ("io_uring: stop SQPOLL submit on creator's death")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:18 +01:00
Pavel Begunkov
a63d915757 io_uring: stop SQPOLL submit on creator's death
[ Upstream commit d9d05217cb ]

When the creator of SQPOLL io_uring dies (i.e. sqo_task), we don't want
its internals like ->files and ->mm to be poked by the SQPOLL task, it
have never been nice and recently got racy. That can happen when the
owner undergoes destruction and SQPOLL tasks tries to submit new
requests in parallel, and so calls io_sq_thread_acquire*().

That patch halts SQPOLL submissions when sqo_task dies by introducing
sqo_dead flag. Once set, the SQPOLL task must not do any submission,
which is synchronised by uring_lock as well as the new flag.

The tricky part is to make sure that disabling always happens, that
means either the ring is discovered by creator's do_exit() -> cancel,
or if the final close() happens before it's done by the creator. The
last is guaranteed by the fact that for SQPOLL the creator task and only
it holds exactly one file note, so either it pins up to do_exit() or
removed by the creator on the final put in flush. (see comments in
uring_flush() around file->f_count == 2).

One more place that can trigger io_sq_thread_acquire_*() is
__io_req_task_submit(). Shoot off requests on sqo_dead there, even
though actually we don't need to. That's because cancellation of
sqo_task should wait for the request before going any further.

note 1: io_disable_sqo_submit() does io_ring_set_wakeup_flag() so the
caller would enter the ring to get an error, but it still doesn't
guarantee that the flag won't be cleared.

note 2: if final __userspace__ close happens not from the creator
task, the file note will pin the ring until the task dies.

Cc: stable@vger.kernel.org # 5.5+
Fixed: b1b6b5a30d ("kernel/io_uring: cancel io_uring before task works")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:18 +01:00
Pavel Begunkov
da67631a33 io_uring: add warn_once for io_uring_flush()
[ Upstream commit 6b5733eb63]

files_cancel() should cancel all relevant requests and drop file notes,
so we should never have file notes after that, including on-exit fput
and flush. Add a WARN_ONCE to be sure.

Cc: stable@vger.kernel.org # 5.5+
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:18 +01:00
Pavel Begunkov
18f31594ee io_uring: inline io_uring_attempt_task_drop()
[ Upstream commit 4f793dc40b ]

A simple preparation change inlining io_uring_attempt_task_drop() into
io_uring_flush().

Cc: stable@vger.kernel.org # 5.5+
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:18 +01:00
Pavel Begunkov
7bf3fb6243 kernel/io_uring: cancel io_uring before task works
[ Upstream commit b1b6b5a30d ]

For cancelling io_uring requests it needs either to be able to run
currently enqueued task_works or having it shut down by that moment.
Otherwise io_uring_cancel_files() may be waiting for requests that won't
ever complete.

Go with the first way and do cancellations before setting PF_EXITING and
so before putting the task_work infrastructure into a transition state
where task_work_run() would better not be called.

Cc: stable@vger.kernel.org # 5.5+
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:18 +01:00
Takashi Iwai
08a922a6fd iwlwifi: dbg: Don't touch the tlv data
commit a6616bc9a0 upstream.

The commit ba8f6f4ae2 ("iwlwifi: dbg: add dumping special device
memory") added a termination of name string just to be sure, and this
seems causing a regression, a GPF triggered at firmware loading.
Basically we shouldn't modify the firmware data that may be provided
as read-only.

This patch drops the code that caused the regression and keep the tlv
data as is.

Fixes: ba8f6f4ae2 ("iwlwifi: dbg: add dumping special device memory")
BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1180344
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=210733
Cc: stable@vger.kernel.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210112132449.22243-2-tiwai@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:18 +01:00
Bryan Tan
1fa2fa7932 RDMA/vmw_pvrdma: Fix network_hdr_type reported in WC
commit 9f206f7398 upstream.

The PVRDMA device HW interface defines network_hdr_type according to an
old definition of the internal kernel rdma_network_type enum that has
since changed, resulting in the wrong rdma_network_type being reported.

Fix this by explicitly defining the enum used by the PVRDMA device and
adding a function to convert the pvrdma_network_type to rdma_network_type
enum.

Cc: stable@vger.kernel.org # 5.10+
Fixes: 1c15b4f2a4 ("RDMA/core: Modify enum ib_gid_type and enum rdma_network_type")
Link: https://lore.kernel.org/r/1611026189-17943-1-git-send-email-bryantan@vmware.com
Reviewed-by: Adit Ranadive <aditr@vmware.com>
Signed-off-by: Bryan Tan <bryantan@vmware.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:18 +01:00
Hans Verkuil
77727dfda7 media: v4l2-subdev.h: BIT() is not available in userspace
commit a53e3c189c upstream.

The BIT macro is not available in userspace, so replace BIT(0) by
0x00000001.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Fixes: 6446ec6cbf ("media: v4l2-subdev: add VIDIOC_SUBDEV_QUERYCAP ioctl")
Cc: <stable@vger.kernel.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:18 +01:00
Naushir Patuck
94fb5ff345 media: Revert "media: videobuf2: Fix length check for single plane dmabuf queueing"
commit 95e9295daa upstream.

The updated length check for dmabuf types broke existing usage in v4l2
userland clients.

Fixes: 961d3b27 ("media: videobuf2: Fix length check for single plane dmabuf queueing")
Cc: stable@vger.kernel.org
Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Tested-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:17 +01:00
Kai-Heng Feng
0fa0a05b40 HID: multitouch: Apply MT_QUIRK_CONFIDENCE quirk for multi-input devices
commit 794c613383 upstream.

Palm ejection stops working on some Elan and Synaptics touchpad after
commit 40d5bb8737 ("HID: multitouch: enable multi-input as a quirk for
some devices").

The commit changes the mt_class from MT_CLS_WIN_8 to
MT_CLS_WIN_8_FORCE_MULTI_INPUT, so MT_QUIRK_CONFIDENCE isn't applied
anymore.

So also apply the quirk since MT_CLS_WIN_8_FORCE_MULTI_INPUT is
essentially MT_CLS_WIN_8.

Fixes: 40d5bb8737 ("HID: multitouch: enable multi-input as a quirk for some devices")
Cc: stable@vger.kernel.org
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:17 +01:00
Jason Gerecke
a7f6d4ab44 HID: wacom: Correct NULL dereference on AES pen proximity
commit 179e8e47c0 upstream.

The recent commit to fix a memory leak introduced an inadvertant NULL
pointer dereference. The `wacom_wac->pen_fifo` variable was never
intialized, resuling in a crash whenever functions tried to use it.
Since the FIFO is only used by AES pens (to buffer events from pen
proximity until the hardware reports the pen serial number) this would
have been easily overlooked without testing an AES device.

This patch converts `wacom_wac->pen_fifo` over to a pointer (since the
call to `devres_alloc` allocates memory for us) and ensures that we assign
it to point to the allocated and initalized `pen_fifo` before the function
returns.

Link: https://github.com/linuxwacom/input-wacom/issues/230
Fixes: 37309f47e2 ("HID: wacom: Fix memory leakage caused by kfifo_alloc")
CC: stable@vger.kernel.org # v4.19+
Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
Tested-by: Ping Cheng <ping.cheng@wacom.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:17 +01:00
Thomas Gleixner
e843e4f782 futex: Handle faults correctly for PI futexes
commit 34b1a1ce14 upstream

fixup_pi_state_owner() tries to ensure that the state of the rtmutex,
pi_state and the user space value related to the PI futex are consistent
before returning to user space. In case that the user space value update
faults and the fault cannot be resolved by faulting the page in via
fault_in_user_writeable() the function returns with -EFAULT and leaves
the rtmutex and pi_state owner state inconsistent.

A subsequent futex_unlock_pi() operates on the inconsistent pi_state and
releases the rtmutex despite not owning it which can corrupt the RB tree of
the rtmutex and cause a subsequent kernel stack use after free.

It was suggested to loop forever in fixup_pi_state_owner() if the fault
cannot be resolved, but that results in runaway tasks which is especially
undesired when the problem happens due to a programming error and not due
to malice.

As the user space value cannot be fixed up, the proper solution is to make
the rtmutex and the pi_state consistent so both have the same owner. This
leaves the user space value out of sync. Any subsequent operation on the
futex will fail because the 10th rule of PI futexes (pi_state owner and
user space value are consistent) has been violated.

As a consequence this removes the inept attempts of 'fixing' the situation
in case that the current task owns the rtmutex when returning with an
unresolvable fault by unlocking the rtmutex which left pi_state::owner and
rtmutex::owner out of sync in a different and only slightly less dangerous
way.

Fixes: 1b7558e457 ("futexes: fix fault handling in futex_lock_pi")
Reported-by: gzobqq@gmail.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:17 +01:00
Thomas Gleixner
abc4dd792f futex: Simplify fixup_pi_state_owner()
commit f2dac39d93 upstream

Too many gotos already and an upcoming fix would make it even more
unreadable.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:17 +01:00
Thomas Gleixner
a597f12e97 futex: Use pi_state_update_owner() in put_pi_state()
commit 6ccc84f917 upstream

No point in open coding it. This way it gains the extra sanity checks.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:17 +01:00
Thomas Gleixner
6d28ac502f rtmutex: Remove unused argument from rt_mutex_proxy_unlock()
commit 2156ac1934 upstream

Nothing uses the argument. Remove it as preparation to use
pi_state_update_owner().

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:17 +01:00
Thomas Gleixner
5b2c5a9561 futex: Provide and use pi_state_update_owner()
commit c5cade200a upstream

Updating pi_state::owner is done at several places with the same
code. Provide a function for it and use that at the obvious places.

This is also a preparation for a bug fix to avoid yet another copy of the
same code or alternatively introducing a completely unpenetratable mess of
gotos.

Originally-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:17 +01:00
Thomas Gleixner
5ede8ee2cb futex: Replace pointless printk in fixup_owner()
commit 04b79c5520 upstream

If that unexpected case of inconsistent arguments ever happens then the
futex state is left completely inconsistent and the printk is not really
helpful. Replace it with a warning and make the state consistent.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:17 +01:00
Thomas Gleixner
ab5e9a320e futex: Ensure the correct return value from futex_lock_pi()
commit 12bb3f7f1b upstream

In case that futex_lock_pi() was aborted by a signal or a timeout and the
task returned without acquiring the rtmutex, but is the designated owner of
the futex due to a concurrent futex_unlock_pi() fixup_owner() is invoked to
establish consistent state. In that case it invokes fixup_pi_state_owner()
which in turn tries to acquire the rtmutex again. If that succeeds then it
does not propagate this success to fixup_owner() and futex_lock_pi()
returns -EINTR or -ETIMEOUT despite having the futex locked.

Return success from fixup_pi_state_owner() in all cases where the current
task owns the rtmutex and therefore the futex and propagate it correctly
through fixup_owner(). Fixup the other callsite which does not expect a
positive return value.

Fixes: c1e2f0eaf0 ("futex: Avoid violating the 10th rule of futex")
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:16 +01:00
Wang Hai
bf5eb7d21a Revert "mm/slub: fix a memory leak in sysfs_slab_add()"
commit 757fed1d08 upstream.

This reverts commit dde3c6b72a.

syzbot report a double-free bug. The following case can cause this bug.

 - mm/slab_common.c: create_cache(): if the __kmem_cache_create() fails,
   it does:

	out_free_cache:
		kmem_cache_free(kmem_cache, s);

 - but __kmem_cache_create() - at least for slub() - will have done

	sysfs_slab_add(s)
		-> sysfs_create_group() .. fails ..
		-> kobject_del(&s->kobj); .. which frees s ...

We can't remove the kmem_cache_free() in create_cache(), because other
error cases of __kmem_cache_create() do not free this.

So, revert the commit dde3c6b72a ("mm/slub: fix a memory leak in
sysfs_slab_add()") to fix this.

Reported-by: syzbot+d0bd96b4696c1ef67991@syzkaller.appspotmail.com
Fixes: dde3c6b72a ("mm/slub: fix a memory leak in sysfs_slab_add()")
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Wang Hai <wanghai38@huawei.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:16 +01:00
Baruch Siach
43f2e6077f gpio: mvebu: fix pwm .get_state period calculation
commit e73b0101ae upstream.

The period is the sum of on and off values. That is, calculate period as

  ($on + $off) / clkrate

instead of

  $off / clkrate - $on / clkrate

that makes no sense.

Reported-by: Russell King <linux@armlinux.org.uk>
Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Fixes: 757642f9a5 ("gpio: mvebu: Add limited PWM support")
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
[baruch: backport to kernels <= v5.10]
Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-30 13:55:16 +01:00
Alessio Balsini
d98d9f83c0 FROMLIST: fuse: Allocate unlikely used ioctl number for passthrough V1
The current UAPI interface for FUSE passthrough is still under
discussion upstream, thus we are reserving this ioctl number to avoid
future conflicts with user space binaries.
The user space implementation in Android will take care of doing all the
checking to fall into the most appropriate ioctl number.

Bug: 167695973
Link: https://lore.kernel.org/lkml/20210125153057.3623715-3-balsini@android.com/
Fixes: 9634f0e4e2 ("FROMLIST: fuse: Definitions and ioctl for passthrough")
Test: manual test with additional printks
Signed-off-by: Alessio Balsini <balsini@google.com>
Change-Id: I658c5ab2ebfe2b76d20685a099ac1b1fee3549cc
2021-01-30 10:28:59 +00:00
Mathias Nyman
16b057d6c0 UPSTREAM: xhci: handle halting transfer event properly after endpoint stop and halt raced.
If we receive a transfer event indicating that an endpoint should be
halted, but current endpoint state doesn't match it, then the halt might
be just resolved by the stop endpoint completion handler that detects the
halted endpoint due to a context state error.

In this case the TD we halted on is already moved to the cancelled TD list,
and should not be successfully completed and given back anymore.
Let the stop endpoint completion handler reset the endpoint, and then let
the reset endpoint handler give back the cancelled TD among all other
ones on the cancelled TD list

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20210129130044.206855-28-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 3c648d3deb
 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-linus)
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I22d4b765876a1164caa9f075f651cec77dcd2ccd
2021-01-30 09:01:04 +01:00
Mathias Nyman
ad3966917c UPSTREAM: xhci: Check for pending reset endpoint command before queueing a new one.
A halted endpoint can be detected both when transfer events complete, and
in stop endpoint command completion. Both these handlers will start
clearing up the halted endpoint and queue a reset endpoint command.

It's possible to get both events for the same halted endpoint if right
after a URB cancel queues a stop endpoint command the endpoint stalls.
Use the EP_HALTED flag to prevent resetting the endpoint twice.

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20210129130044.206855-27-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 51ee4a8430
 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-linus)
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I1b2cd03715ce2d81a1aa0c33fd66867583b00156
2021-01-30 09:01:04 +01:00
Mathias Nyman
310baf197b UPSTREAM: xhci: remove obsolete dequeue pointer moving code
xhci_find_new_dequeue_state() and xhci_queue_new_dequeue_state() are no
longer used afer introducing the move_dequeue_past_td() function.

also remove struct xhci_dequeue_state as its no longer used.

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20210129130044.206855-26-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 741eafb345
 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-linus)
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Iec7176adab026bdeb4ce9541388faeb64ea3c8a7
2021-01-30 09:01:04 +01:00
Mathias Nyman
d161f5356c UPSTREAM: xhci: introduce a new move_dequeue_past_td() function to replace old code.
Replace xhci_find_new_dequeue_state() and xhci_queue_new_dequeue_state()
functions with one combined function.
These function were always called after each other, and had a lot of extra
code just to pass the newly found dequeue state from the first function
to the other.

The new function also returns error in case there is a failure to
queue the new dequeue state. This way the caller can decide on
recovery measures to handle it.

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20210129130044.206855-25-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit d1dbfb942c
 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-linus)
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I5ee56e080a083407038f714d9cbc7f8aa470ca91
2021-01-30 09:01:04 +01:00
Mathias Nyman
d4e086141f UPSTREAM: xhci: handle stop endpoint command completion with endpoint in running state.
Handle race where a stop endpoint command fails with "context state error"
as hardware hasn't actually started the ring yet after a previous urb
cancellation completed and restarted the endpoint.
Flushing the doorbell write that restart the endpoint reduced these cases,
but didn't completely resolve them.

Check if the ring is running in the stop endpoint completion handler, and
issue a new stop endpoint command in this case.

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20210129130044.206855-24-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 1174d44906
 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-linus)
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ie8db9628fd6ccaa07886ec33a89a1ad5872054e1
2021-01-30 09:01:04 +01:00
Mathias Nyman
905cf93f89 UPSTREAM: xhci: Fix halted endpoint at stop endpoint command completion
xhci 4.6.9: "A busy endpoint may asynchronously transition from the
Running to the Halted or Error state due to error conditions detected
while processing TRBs. A possible race condition may occur if software,
thinking an endpoint is in the running state, issues a Stop Endpoint
Command, however at the same time the xHC asynchronously transitions
the endpoint to the Halted or Error state. In this case, a Context
State Error may be generated for the command completion. Software
may verify that this case occurred by inspecting the EP State for
Halted or Error when a Stop Endpoint Command results in a Context
State Error."

Halted endpoints were not detected or handled at all in the stop endpoint
completion handler. A set TR Deq ptr command was bluntly queued instead
of resetting the endpoint first. The set TR Deq command would fail with
a context state error.

Fix this case by resetting the halted endpoint first to get it to a
stopped state instead of the halted (error) state.
Handle cancelled TDs once endpoint reset completes,
invalidating cancelled TDs on ring either by turning them to no-op,
or in case ring stopped on cancelled TD then move hardware dequeue pointer
past it, which will clear the cancelled TD from hw cache, and make sure
HW does not process it

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20210129130044.206855-23-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 9ebf300078
 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-linus)
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I592130ff7c4a2c00a95c11b1aad8208f8b6322b7
2021-01-30 09:01:04 +01:00
Mathias Nyman
86ee2fe9cb UPSTREAM: xhci: split handling halted endpoints into two steps
Don't queue both a reset endpoint command and a
set TR deq command at once when handling a halted endpoint.

split this into two steps.
Initially only queue a reset endpoint command, and then if needed queue a
set TR deq command in the reset endpoint handler.

Note: This removes the RESET_EP_QUIRK handling which was added in
commit ac9d8fe7c6 ("USB: xhci: Add quirk for Fresco Logic xHCI hardware.")

This quirk was added in 2009 for prototype xHCI hardware meant for
evaluation purposes only, and should not reach consumers.
This hardware could not handle two commands queued at once, and had
bad data in the output context after a reset endpoint command.

After this patch two command are no longer queued at once, so that
part is solved  in this rewrite, but the workaround for bad data in the
output context solved by issuing an extra configure endpoint command is
bluntly removed.

Adding this workaround to the new rewrite just adds complexity, and I
think it's time to let this quirk go.
Print a debug message instead.

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20210129130044.206855-22-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 674f8438c1
 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-linus)
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I1a4058b8d07ce947966a7cfae90c812c130fac32
2021-01-30 09:01:04 +01:00