diff --git a/android/GKI_VERSION b/android/GKI_VERSION
index 549132fdd34b..4499ab5cd0be 100644
--- a/android/GKI_VERSION
+++ b/android/GKI_VERSION
@@ -1 +1 @@
-LTS_5.4.134_dca02b19eb93
+LTS_5.4.134_2385b6cc59cf
diff --git a/android/abi_gki_aarch64_dca02b19eb93.xml b/android/abi_gki_aarch64_2385b6cc59cf.xml
similarity index 99%
rename from android/abi_gki_aarch64_dca02b19eb93.xml
rename to android/abi_gki_aarch64_2385b6cc59cf.xml
index 94115dc478df..256539e6e231 100644
--- a/android/abi_gki_aarch64_dca02b19eb93.xml
+++ b/android/abi_gki_aarch64_2385b6cc59cf.xml
@@ -312,8 +312,10 @@
+
+
@@ -582,6 +584,8 @@
+
+
@@ -612,6 +616,7 @@
+
@@ -776,12 +781,14 @@
+
+
@@ -1130,11 +1137,15 @@
+
+
+
+
@@ -1184,17 +1195,23 @@
+
+
+
+
+
+
@@ -1781,6 +1798,7 @@
+
@@ -2329,6 +2347,7 @@
+
@@ -2847,6 +2866,7 @@
+
@@ -25497,6 +25517,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -31352,6 +31386,12 @@
+
+
+
+
+
+
@@ -31486,6 +31526,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -31496,6 +31548,12 @@
+
+
+
+
+
+
@@ -31622,6 +31680,14 @@
+
+
+
+
+
+
+
+
@@ -31630,6 +31696,7 @@
+
@@ -31643,6 +31710,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -31950,6 +32043,8 @@
+
+
@@ -32490,6 +32585,8 @@
+
+
@@ -32531,7 +32628,7 @@
-
+
@@ -32797,7 +32894,7 @@
-
+
@@ -32819,6 +32916,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -32999,6 +33151,7 @@
+
@@ -33011,33 +33164,55 @@
+
-
+
-
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
@@ -33152,7 +33327,32 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -33286,7 +33486,29 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -33370,11 +33592,17 @@
+
+
+
+
+
+
+
+
-
-
@@ -33390,8 +33618,10 @@
+
+
@@ -33927,8 +34157,6 @@
-
-
@@ -33985,6 +34213,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -34084,10 +34380,24 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -34169,6 +34479,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -34333,8 +34672,9 @@
-
+
+
@@ -34351,61 +34691,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -34578,9 +34863,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -34591,9 +34910,9 @@
-
+
+
-
@@ -34621,7 +34940,48 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -34696,10 +35056,28 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -34713,14 +35091,13 @@
-
-
-
+
+
@@ -34734,6 +35111,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -34812,6 +35272,8 @@
+
+
@@ -34820,10 +35282,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -34849,187 +35356,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -35072,7 +35399,7 @@
-
+
@@ -35129,7 +35456,7 @@
-
+
@@ -35215,7 +35542,7 @@
-
+
@@ -35331,7 +35658,7 @@
-
+
@@ -35346,7 +35673,6 @@
-
@@ -35371,218 +35697,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -36048,7 +36162,7 @@
-
+
@@ -37371,7 +37485,7 @@
-
+
@@ -38007,7 +38121,7 @@
-
+
@@ -38034,7 +38148,7 @@
-
+
@@ -38294,10 +38408,10 @@
-
+
-
+
@@ -38323,7 +38437,7 @@
-
+
@@ -38413,7 +38527,7 @@
-
+
@@ -38433,7 +38547,7 @@
-
+
@@ -38984,7 +39098,7 @@
-
+
@@ -39060,7 +39174,7 @@
-
+
@@ -39358,7 +39472,7 @@
-
+
@@ -39387,7 +39501,7 @@
-
+
@@ -39403,7 +39517,7 @@
-
+
@@ -39816,7 +39930,7 @@
-
+
@@ -39824,7 +39938,7 @@
-
+
@@ -40055,7 +40169,7 @@
-
+
@@ -40303,7 +40417,7 @@
-
+
@@ -40377,7 +40491,7 @@
-
+
@@ -40468,7 +40582,7 @@
-
+
@@ -43056,7 +43170,7 @@
-
+
@@ -43380,7 +43494,7 @@
-
+
@@ -43746,11 +43860,21 @@
+
+
+
+
+
+
+
+
+
+
@@ -43772,6 +43896,14 @@
+
+
+
+
+
+
+
+
@@ -45886,6 +46018,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -47318,7 +47460,7 @@
-
+
@@ -48321,7 +48463,7 @@
-
+
@@ -48346,7 +48488,7 @@
-
+
@@ -48365,7 +48507,7 @@
-
+
@@ -74130,6 +74272,7 @@
+
@@ -74192,12 +74335,23 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -74520,6 +74674,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -74528,6 +74693,11 @@
+
+
+
+
+
@@ -79919,6 +80089,14 @@
+
+
+
+
+
+
+
+
@@ -79933,6 +80111,14 @@
+
+
+
+
+
+
+
+
@@ -79961,14 +80147,6 @@
-
-
-
-
-
-
-
-
@@ -79995,14 +80173,6 @@
-
-
-
-
-
-
-
-
@@ -89190,7 +89360,74 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -90004,6 +90241,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -90013,6 +90288,10 @@
+
+
+
+
@@ -90133,6 +90412,7 @@
+
@@ -90167,14 +90447,107 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -90238,7 +90611,7 @@
-
+
@@ -90282,7 +90655,7 @@
-
+
@@ -90541,72 +90914,72 @@
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -93091,7 +93464,7 @@
-
+
@@ -93102,8 +93475,6 @@
-
-
@@ -94181,6 +94552,11 @@
+
+
+
+
+
@@ -129820,19 +130196,19 @@
-
-
-
-
+
+
+
+
-
-
-
+
+
+
@@ -142456,110 +142832,15 @@
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -142762,7 +143043,7 @@
-
+
@@ -142779,7 +143060,7 @@
-
+
@@ -142870,7 +143151,7 @@
-
+
@@ -142881,27 +143162,27 @@
-
-
+
+
-
+
-
+
-
+
-
+
@@ -142909,7 +143190,7 @@
-
+
@@ -142917,14 +143198,14 @@
-
+
-
+
@@ -142932,7 +143213,7 @@
-
+
@@ -142941,7 +143222,7 @@
-
+
@@ -142950,84 +143231,16 @@
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -143069,36 +143282,35 @@
-
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom
index bc845325be2a..9668330586d7 100644
--- a/android/abi_gki_aarch64_qcom
+++ b/android/abi_gki_aarch64_qcom
@@ -6,12 +6,12 @@
add_wait_queue
adjust_managed_page_count
alarm_cancel
+ alarm_expires_remaining
alarm_init
alarm_start_relative
- alarm_expires_remaining
+ alarmtimer_get_rtcdev
alloc_chrdev_region
__alloc_disk_node
- alarmtimer_get_rtcdev
alloc_etherdev_mqs
alloc_io_pgtable_ops
alloc_netdev_mqs
@@ -44,6 +44,7 @@
backlight_device_set_brightness
backlight_device_unregister
bin2hex
+ bio_crypt_should_process
__bitmap_clear
bitmap_find_free_region
bitmap_find_next_zero_area_off
@@ -109,10 +110,10 @@
bpf_prog_put
bpf_prog_sub
bpf_stats_enabled_key
+ bpf_trace_run1
bpf_trace_run10
bpf_trace_run11
bpf_trace_run12
- bpf_trace_run1
bpf_trace_run2
bpf_trace_run3
bpf_trace_run4
@@ -127,8 +128,10 @@
bus_find_device
bus_for_each_dev
bus_register
+ bus_register_notifier
bus_set_iommu
bus_unregister
+ bus_unregister_notifier
call_netdevice_notifiers
cancel_delayed_work
cancel_delayed_work_sync
@@ -318,8 +321,8 @@
csum_tcpudp_nofold
_ctype
current_time
- datagram_poll
d_add
+ datagram_poll
d_drop
deactivate_locked_super
default_llseek
@@ -407,6 +410,8 @@
devm_extcon_register_notifier
devm_free_irq
devm_fwnode_get_index_gpiod_from_child
+ devm_gpiochip_add_data
+ devm_gpiod_get
devm_gpiod_get_index
devm_gpiod_get_optional
devm_gpio_request
@@ -441,6 +446,7 @@
devm_pinctrl_get
devm_pinctrl_put
devm_pinctrl_register
+ devm_pinctrl_register_and_init
devm_platform_ioremap_resource
devm_power_supply_get_by_phandle
devm_power_supply_register
@@ -567,14 +573,15 @@
dma_get_slave_channel
d_make_root
dmam_alloc_attrs
- dmam_free_coherent
dma_max_mapping_size
+ dmam_free_coherent
dma_mmap_attrs
dma_pool_alloc
dma_pool_create
dma_pool_destroy
dma_pool_free
dma_release_channel
+ __dma_request_channel
dma_request_slave_channel
dma_resv_add_excl_fence
dma_resv_add_shared_fence
@@ -585,7 +592,6 @@
dma_resv_test_signaled_rcu
dma_resv_wait_timeout_rcu
dma_set_coherent_mask
- __dma_request_channel
dma_set_mask
do_exit
do_wait_intr
@@ -657,12 +663,14 @@
drm_atomic_state_default_release
__drm_atomic_state_free
drm_atomic_state_init
+ drm_bridge_add
drm_bridge_attach
drm_bridge_disable
drm_bridge_enable
drm_bridge_mode_set
drm_bridge_post_disable
drm_bridge_pre_enable
+ drm_bridge_remove
drm_class_device_register
drm_class_device_unregister
drm_clflush_pages
@@ -877,8 +885,8 @@
drm_vma_offset_manager_destroy
drm_vma_offset_manager_init
drm_vma_offset_remove
- drop_nlink
drm_wait_one_vblank
+ drop_nlink
dump_stack
enable_irq
enable_percpu_irq
@@ -938,8 +946,8 @@
freq_qos_add_request
freq_qos_remove_request
freq_qos_update_request
- fsl8250_handle_irq
fs_kobj
+ fsl8250_handle_irq
fsstack_copy_attr_all
ftrace_set_clr_event
full_name_hash
@@ -1014,11 +1022,15 @@
gnss_register_device
gpiochip_add_data_with_key
gpiochip_add_pin_range
+ gpiochip_generic_config
gpiochip_generic_free
gpiochip_generic_request
gpiochip_get_data
+ gpiochip_irqchip_add_key
+ gpiochip_line_is_irq
gpiochip_line_is_valid
gpiochip_remove
+ gpiochip_set_nested_irqchip
gpiod_cansleep
gpiod_direction_input
gpiod_direction_output
@@ -1077,21 +1089,30 @@
i2c_adapter_type
i2c_add_adapter
i2c_add_numbered_adapter
+ i2c_bus_type
i2c_del_adapter
i2c_del_driver
+ i2c_for_each_dev
+ i2c_get_adapter
i2c_get_device_id
i2c_get_dma_safe_msg_buf
+ i2c_put_adapter
i2c_put_dma_safe_msg_buf
i2c_register_driver
i2c_smbus_read_byte
- i2c_smbus_write_byte
i2c_smbus_read_byte_data
+ i2c_smbus_read_byte_data
+ i2c_smbus_read_i2c_block_data
+ i2c_smbus_write_byte
i2c_smbus_write_byte_data
+ i2c_smbus_write_byte_data
+ i2c_smbus_write_i2c_block_data
__i2c_smbus_xfer
i2c_smbus_xfer
__i2c_transfer
i2c_transfer
i2c_transfer_buffer_flags
+ i2c_verify_client
icc_get
icc_link_create
icc_node_add
@@ -1244,7 +1265,6 @@
irq_get_irq_data
irq_modify_status
irq_of_parse_and_map
- irq_work_queue
irq_set_affinity_hint
irq_set_affinity_notifier
irq_set_chained_handler_and_data
@@ -1257,6 +1277,7 @@
irq_set_irq_wake
irq_set_parent
irq_to_desc
+ irq_work_queue
iterate_dir
iterate_fd
jiffies
@@ -1279,11 +1300,10 @@
kernfs_put
kern_path
keyslot_manager_create
- keyslot_manager_private
- keyslot_manager_set_max_dun_bytes
- keyslot_manager_reprogram_all_keys
keyslot_manager_destroy
- bio_crypt_should_process
+ keyslot_manager_private
+ keyslot_manager_reprogram_all_keys
+ keyslot_manager_set_max_dun_bytes
__kfifo_in
__kfifo_out
kfree
@@ -1398,8 +1418,8 @@
mdiobus_free
__mdiobus_register
mdiobus_unregister
- media_create_pad_link
media_create_intf_link
+ media_create_pad_link
media_device_cleanup
media_device_init
__media_device_register
@@ -1516,8 +1536,8 @@
nf_conntrack_destroy
nla_memcpy
__nla_parse
- nla_put_64bit
nla_put
+ nla_put_64bit
__nlmsg_put
no_llseek
nonseekable_open
@@ -1527,8 +1547,8 @@
nr_swap_pages
ns_capable
nsecs_to_jiffies
- ns_to_timespec64
ns_to_timespec
+ ns_to_timespec64
__num_online_cpus
nvmem_cell_get
nvmem_cell_put
@@ -1586,11 +1606,11 @@
of_get_parent
of_get_property
of_get_regulator_init_data
+ of_graph_get_endpoint_by_regs
of_graph_get_next_endpoint
of_graph_get_remote_node
- of_graph_get_remote_port_parent
of_graph_get_remote_port
- of_graph_get_endpoint_by_regs
+ of_graph_get_remote_port_parent
of_graph_parse_endpoint
of_hwspin_lock_get_id
of_icc_get
@@ -1673,17 +1693,22 @@
pci_common_swizzle
pci_d3cold_disable
pci_device_group
+ pci_device_is_present
+ pci_dev_present
pci_disable_device
pci_disable_msi
pcie_bus_configure_settings
+ pcie_capability_clear_and_set_word
pcie_capability_read_word
pci_enable_device
+ pci_find_bus
pci_find_capability
pci_find_ext_capability
pci_find_next_capability
pci_find_pcie_root_port
pci_free_irq_vectors
pci_get_device
+ pci_get_slot
pci_iomap
pci_iomap_range
pci_irq_get_affinity
@@ -1713,7 +1738,6 @@
pci_walk_bus
pci_write_config_dword
pci_write_config_word
- pci_dev_present
PDE_DATA
__per_cpu_offset
perf_trace_buf_alloc
@@ -1740,6 +1764,7 @@
pid_task
pinconf_generic_dt_node_to_map
pinctrl_dev_get_drvdata
+ pinctrl_enable
pinctrl_force_default
pinctrl_force_sleep
pinctrl_get
@@ -2095,10 +2120,10 @@
sdev_prefix_printk
__sdhci_add_host
sdhci_add_host
+ sdhci_cleanup_host
sdhci_cqe_disable
sdhci_cqe_enable
sdhci_cqe_irq
- sdhci_cleanup_host
sdhci_dumpregs
sdhci_enable_clk
sdhci_get_property
@@ -2146,6 +2171,7 @@
sg_alloc_table_from_pages
sg_copy_from_buffer
sg_copy_to_buffer
+ sget
sg_free_table
sg_init_one
sg_init_table
@@ -2161,7 +2187,6 @@
sg_pcopy_from_buffer
sg_pcopy_to_buffer
sg_scsi_ioctl
- sget
shmem_file_setup
shmem_read_mapping_page_gfp
shmem_truncate_range
@@ -2370,6 +2395,7 @@
strcmp
strcpy
strcspn
+ stream_open
strim
string_get_size
string_unescape
@@ -2779,8 +2805,8 @@
vb2_ops_wait_prepare
vb2_plane_cookie
vb2_plane_vaddr
- vb2_prepare_buf
vb2_poll
+ vb2_prepare_buf
vb2_qbuf
vb2_querybuf
vb2_queue_error
@@ -2895,7 +2921,3 @@
xdp_rxq_info_reg
xdp_rxq_info_reg_mem_model
xdp_rxq_info_unreg
- pci_get_slot
- pcie_capability_clear_and_set_word
- pci_device_is_present
- pci_find_bus
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index 9dccb0fe93e1..e6a91eaebe6a 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -1981,6 +1981,7 @@ static void binder_deferred_fd_close(int fd)
}
static void binder_transaction_buffer_release(struct binder_proc *proc,
+ struct binder_thread *thread,
struct binder_buffer *buffer,
binder_size_t failed_at,
bool is_failure)
@@ -2140,8 +2141,16 @@ static void binder_transaction_buffer_release(struct binder_proc *proc,
&proc->alloc, &fd, buffer,
offset, sizeof(fd));
WARN_ON(err);
- if (!err)
+ if (!err) {
binder_deferred_fd_close(fd);
+ /*
+ * Need to make sure the thread goes
+ * back to userspace to complete the
+ * deferred close
+ */
+ if (thread)
+ thread->looper_need_return = true;
+ }
}
} break;
default:
@@ -3222,7 +3231,7 @@ err_bad_parent:
err_copy_data_failed:
binder_free_txn_fixups(t);
trace_binder_transaction_failed_buffer_release(t->buffer);
- binder_transaction_buffer_release(target_proc, t->buffer,
+ binder_transaction_buffer_release(target_proc, NULL, t->buffer,
buffer_offset, true);
if (target_node)
binder_dec_node_tmpref(target_node);
@@ -3301,7 +3310,9 @@ err_invalid_target_handle:
* Cleanup buffer and free it.
*/
static void
-binder_free_buf(struct binder_proc *proc, struct binder_buffer *buffer)
+binder_free_buf(struct binder_proc *proc,
+ struct binder_thread *thread,
+ struct binder_buffer *buffer)
{
binder_inner_proc_lock(proc);
if (buffer->transaction) {
@@ -3329,7 +3340,7 @@ binder_free_buf(struct binder_proc *proc, struct binder_buffer *buffer)
binder_node_inner_unlock(buf_node);
}
trace_binder_transaction_buffer_release(buffer);
- binder_transaction_buffer_release(proc, buffer, 0, false);
+ binder_transaction_buffer_release(proc, thread, buffer, 0, false);
binder_alloc_free_buf(&proc->alloc, buffer);
}
@@ -3523,7 +3534,7 @@ static int binder_thread_write(struct binder_proc *proc,
proc->pid, thread->pid, (u64)data_ptr,
buffer->debug_id,
buffer->transaction ? "active" : "finished");
- binder_free_buf(proc, buffer);
+ binder_free_buf(proc, thread, buffer);
break;
}
@@ -4210,7 +4221,7 @@ retry:
buffer->transaction = NULL;
binder_cleanup_transaction(t, "fd fixups failed",
BR_FAILED_REPLY);
- binder_free_buf(proc, buffer);
+ binder_free_buf(proc, thread, buffer);
binder_debug(BINDER_DEBUG_FAILED_TRANSACTION,
"%d:%d %stransaction %d fd fixups failed %d/%d, line %d\n",
proc->pid, thread->pid,
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index b6740ad773ee..7b020e8c8aef 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1998,6 +1998,9 @@ int hid_connect(struct hid_device *hdev, unsigned int connect_mask)
case BUS_I2C:
bus = "I2C";
break;
+ case BUS_SPI:
+ bus = "SPI";
+ break;
case BUS_VIRTUAL:
bus = "VIRTUAL";
break;
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 872a772981ce..d08b13a55068 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -860,6 +860,8 @@
#define USB_DEVICE_ID_MS_POWER_COVER 0x07da
#define USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER 0x02fd
#define USB_DEVICE_ID_MS_PIXART_MOUSE 0x00cb
+#define SPI_DEVICE_ID_MS_SURFACE_D6_0 0x0c1d
+#define SPI_DEVICE_ID_MS_SURFACE_D6_1 0x0c42
#define USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS 0x02e0
#define USB_VENDOR_ID_MOJO 0x8282
diff --git a/drivers/hid/hid-microsoft.c b/drivers/hid/hid-microsoft.c
index 8cb1ca1936e4..e449ee9cc04c 100644
--- a/drivers/hid/hid-microsoft.c
+++ b/drivers/hid/hid-microsoft.c
@@ -27,6 +27,7 @@
#define MS_DUPLICATE_USAGES BIT(5)
#define MS_SURFACE_DIAL BIT(6)
#define MS_QUIRK_FF BIT(7)
+#define MS_NOHIDINPUT BIT(8)
struct ms_data {
unsigned long quirks;
@@ -370,6 +371,7 @@ static int ms_probe(struct hid_device *hdev, const struct hid_device_id *id)
unsigned long quirks = id->driver_data;
struct ms_data *ms;
int ret;
+ unsigned int connect_mask;
ms = devm_kzalloc(&hdev->dev, sizeof(*ms), GFP_KERNEL);
if (ms == NULL)
@@ -379,20 +381,25 @@ static int ms_probe(struct hid_device *hdev, const struct hid_device_id *id)
hid_set_drvdata(hdev, ms);
+ connect_mask = HID_CONNECT_DEFAULT | ((quirks & MS_HIDINPUT) ?
+ HID_CONNECT_HIDINPUT_FORCE : 0);
+
if (quirks & MS_NOGET)
hdev->quirks |= HID_QUIRK_NOGET;
if (quirks & MS_SURFACE_DIAL)
hdev->quirks |= HID_QUIRK_INPUT_PER_APP;
+ if (quirks & MS_NOHIDINPUT)
+ connect_mask &= ~HID_CONNECT_HIDINPUT;
+
ret = hid_parse(hdev);
if (ret) {
hid_err(hdev, "parse failed\n");
goto err_free;
}
- ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT | ((quirks & MS_HIDINPUT) ?
- HID_CONNECT_HIDINPUT_FORCE : 0));
+ ret = hid_hw_start(hdev, connect_mask);
if (ret) {
hid_err(hdev, "hw start failed\n");
goto err_free;
@@ -451,6 +458,10 @@ static const struct hid_device_id ms_devices[] = {
.driver_data = MS_SURFACE_DIAL },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER),
.driver_data = MS_QUIRK_FF },
+ { HID_SPI_DEVICE(USB_VENDOR_ID_MICROSOFT, SPI_DEVICE_ID_MS_SURFACE_D6_0),
+ .driver_data = MS_NOHIDINPUT },
+ { HID_SPI_DEVICE(USB_VENDOR_ID_MICROSOFT, SPI_DEVICE_ID_MS_SURFACE_D6_1),
+ .driver_data = MS_NOHIDINPUT },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS),
.driver_data = MS_QUIRK_FF },
{ }
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
index 687094327bbd..786c09ebfdc5 100644
--- a/drivers/hid/hid-quirks.c
+++ b/drivers/hid/hid-quirks.c
@@ -519,6 +519,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3KV1) },
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER) },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_BT) },
+ { HID_SPI_DEVICE(USB_VENDOR_ID_MICROSOFT, SPI_DEVICE_ID_MS_SURFACE_D6_0) },
+ { HID_SPI_DEVICE(USB_VENDOR_ID_MICROSOFT, SPI_DEVICE_ID_MS_SURFACE_D6_1) },
#endif
#if IS_ENABLED(CONFIG_HID_MONTEREY)
{ HID_USB_DEVICE(USB_VENDOR_ID_MONTEREY, USB_DEVICE_ID_GENIUS_KB29E) },
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 85e6f80335c9..2c2b26ac11f6 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -681,6 +681,8 @@ struct hid_descriptor {
.bus = BUS_BLUETOOTH, .vendor = (ven), .product = (prod)
#define HID_I2C_DEVICE(ven, prod) \
.bus = BUS_I2C, .vendor = (ven), .product = (prod)
+#define HID_SPI_DEVICE(ven, prod) \
+ .bus = BUS_SPI, .vendor = (ven), .product = (prod)
#define HID_REPORT_ID(rep) \
.report_type = (rep)