ANDROID: qcom: Add flush_delayed_fput to ABI

When a kernel thread calls dma_buf_put() to release the last reference
to a dma-buf, fput_many() defers calling the release callback to a
workqueue. This means that if the same kernel thread later calls
dma_heap_buffer_alloc(), it has no guarantee that the memory from the
prior free is available, leading to random failures. As a short-term
workaround, call flush_delayed_fput() to ensure the free completes
synchronously.

Leaf changes summary: 1 artifact changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

1 Added function:

  [A] 'function void flush_delayed_fput()'

Bug: 210598057
Change-Id: Id936aa0bcd410b23b12f4b922b676aa61a358b4c
Signed-off-by: Patrick Daly <quic_pdaly@quicinc.com>
This commit is contained in:
Patrick Daly 2021-12-13 22:54:29 -08:00 committed by Todd Kjos
parent 5d8520b557
commit 70c9301d9c
2 changed files with 5 additions and 0 deletions

View File

@ -2308,6 +2308,7 @@
<elf-symbol name='firmware_request_nowarn' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x4bff2d19'/>
<elf-symbol name='fixed_size_llseek' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x2f7f02bb'/>
<elf-symbol name='flush_dcache_page' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xcb0082ac'/>
<elf-symbol name='flush_delayed_fput' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x55339365'/>
<elf-symbol name='flush_delayed_work' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x1148c0ea'/>
<elf-symbol name='flush_signals' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xdb4212b1'/>
<elf-symbol name='flush_work' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x4735ac17'/>
@ -126166,6 +126167,9 @@
<parameter type-id='02f11ed4' name='page' filepath='arch/arm64/mm/flush.c' line='70' column='1'/>
<return type-id='48b5725f'/>
</function-decl>
<function-decl name='flush_delayed_fput' mangled-name='flush_delayed_fput' filepath='fs/file_table.c' line='327' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='flush_delayed_fput'>
<return type-id='48b5725f'/>
</function-decl>
<function-decl name='flush_delayed_work' mangled-name='flush_delayed_work' filepath='kernel/workqueue.c' line='3205' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='flush_delayed_work'>
<parameter type-id='1a7ee447' name='dwork' filepath='kernel/workqueue.c' line='3205' column='1'/>
<return type-id='b50a4934'/>

View File

@ -899,6 +899,7 @@
finish_wait
firmware_request_nowarn
flush_dcache_page
flush_delayed_fput
flush_delayed_work
__flush_icache_range
flush_work