Merge branch 'android12-5.10' into android12-5.10-lts
Sync up with android12-5.10 for the following commits:2c152aa329
UPSTREAM: f2fs: reduce the scope of setting fsck tag when de->name_len is zeroc29dd368ef
ANDROID: GKI: Update symbols to abi_gki_aarch64_oplus428d0bb762
ANDROID: Add initial ASUS symbol list87a74496ed
ANDROID: configfs: add proper module namespace markingb7a6c15a6f
ANDROID: Configure out the macros in android_kabi and android_vendorbdc772adbd
ANDROID: kernel: fix debug_kinfo set twice crash issued483eed85f
ANDROID: GKI: set vfs-only exports into their own namespace27fc5a7c69
UPSTREAM: net/packet: rx_owner_map depends on pg_vecf70ea63f3b
ANDROID: GKI: Update symbols to symbol lista593acdae8
FROMLIST: module.h: allow #define strings to work with MODULE_IMPORT_NSeb171b4cbe
FROMLIST: export: fix string handling of namespace in EXPORT_SYMBOL_NS05c23b7a50
ANDROID: vendor_hooks: Add hooks for bindere99926fdfa
ANDROID: mm/oom_kill: allow process_mrelease reclaim memory in parallel with exit_mmapf4f2c619d5
FROMLIST: mm/oom_kill: allow process_mrelease to run under mmap_lock protection2452622293
FROMLIST: mm: protect free_pgtables with mmap_lock write lock in exit_mmapfd7af95538
UPSTREAM: mm/oom_kill.c: prevent a race between process_mrelease and exit_mmapfe50dcab7a
UPSTREAM: mm: wire up syscall process_mrelease7fc3ac4968
UPSTREAM: mm: introduce process_mrelease system callac44888155
Revert "FROMGIT: mm: improve mprotect(R|W) efficiency on pages referenced once"3a624c9ccd
ANDROID: fips140: add show_invalid_inputs command to fips140_lab_utila481d43521
ANDROID: fips140: refactor and rename fips140_lab_testd4b5ca56b5
ANDROID: GKI: add lenovo symbol list47874cc690
ANDROID: abi_gki_aarch64_qcom: Add rproc_set_firmwarec41767a8ec
UPSTREAM: remoteproc: Add a rproc_set_firmware() API28d62c68d1
FROMGIT: iommu/io-pgtable-arm-v7s: Add error handle for page table allocation failure99ad261273
UPSTREAM: sctp: add param size validation for SCTP_PARAM_SET_PRIMARY282a4de8f0
UPSTREAM: sctp: validate chunk size in __rcv_asconf_lookupfef7dba3a7
UPSTREAM: bpf: Fix integer overflow in prealloc_elems_and_freelist()893425f545
ANDROID: GKI: Update symbol listcef0df2218
ANDROID: ABI: update allowed list for galaxya7ab784f60
ANDROID: vendor_hooks: Add hooks for futex84fc3abca0
ANDROID: dma-contiguous: Add tracehook to allow subpage allocations in dma_alloc_contiguousd94655c43e
ANDROID: Update the ABI xml and symbol list414c32d38e
UPSTREAM: ALSA: memalloc: Align buffer allocations in page size75617df5b3
ANDROID: Fix mmu_notifier_trylock definition for !CONFIG_MMU_NOTIFIER config7531e63661
FROMGIT: USB: gadget: bRequestType is a bitfield, not a enum70c9301d9c
ANDROID: qcom: Add flush_delayed_fput to ABI5d8520b557
ANDROID: fix ABI breakage caused by mm_struct->mmu_notifier_lock additiona4d26b9a4b
ANDROID: fix ABI breakage caused by percpu_rw_semaphore changes6971350406
ANDROID: fix mmu_notifier race caused by not taking mmap_lock during SPF2fc2c66b9c
ANDROID: percpu-rwsem: enable percpu_sem destruction in atomic contextf3f87608d8
FROMLIST: virtio_mmio: pm: Add notification handlers for restore and freeze9180348b91
FROMLIST: virtio: do not reset stateful devices on resume392cb940f6
FROMGIT: f2fs: avoid EINVAL by SBI_NEED_FSCK when pinning a fileddd9e01504
UPSTREAM: mm, slub: fix incorrect memcg slab count for bulk free82ac5b0b1d
UPSTREAM: mm, slub: fix potential use-after-free in slab_debugfs_fopse07a663f5d
UPSTREAM: mm, slub: fix potential memoryleak in kmem_cache_open()cd02f347ab
UPSTREAM: mm, slub: fix mismatch between reconstructed freelist depth and cnt6b6725f77d
UPSTREAM: mm, slub: fix two bugs in slab_debug_trace_open()791f85d16d
UPSTREAM: mm, slub: allocate private object map for debugfs listings1260b47d4f
FROMGIT: dma-buf: remove restriction of IOCTL:DMA_BUF_SET_NAMEe80be54e4b
UPSTREAM: usb: dwc3: core: balance phy init and exit89137e0047
UPSTREAM: xhci: Fix failure to give back some cached cancelled URBs.f37b6d79f8
ANDROID: mm/memory_hotplug: Don't special case memory_block_size_bytes8b7ffd60a5
UPSTREAM: usb: gadget: uvc: fix multiple opensae22ebebbb
UPSTREAM: aio: fix use-after-free due to missing POLLFREE handlingb9c8788830
UPSTREAM: aio: keep poll requests on waitqueue until completedf965176884
UPSTREAM: signalfd: use wake_up_pollfree()49744a390d
UPSTREAM: binder: use wake_up_pollfree()e50fe1de2f
UPSTREAM: wait: add wake_up_pollfree()53afb231f5
UPSTREAM: USB: gadget: zero allocate endpoint 0 buffers593309a377
BACKPORT: scsi: ufs: Improve SCSI abort handling further21949c429a
FROMGIT: scsi: ufs: Introduce ufshcd_release_scsi_cmd()d600bdedac
FROMGIT: scsi: ufs: Remove the 'update_scaling' local variable5f9614157c
UPSTREAM: scsi: ufs: core: Fix another task management completion race76760a995c
BACKPORT: scsi: ufs: core: Fix task management completion timeout racedab2a8a288
ANDROID: qcom: Add android_rvh_do_ptrauth_fault to ABIb4604acd52
UPSTREAM: USB: gadget: detect too-big endpoint 0 requests2d6a43c036
ANDROID: ABI: Add symbols used by frame buffer driver183905923f
UPSTREAM: xhci: Add bus number to some debug messages5b15c955a6
UPSTREAM: xhci: Add additional dynamic debug to follow URBs in cancel and error cases.f4cbe34956
UPSTREAM: Revert "USB: xhci: fix U1/U2 handling for hardware with XHCI_INTEL_HOST quirk set"c23b0e7c47
UPSTREAM: xhci: Fix failure to give back some cached cancelled URBs.7320fb1abd
UPSTREAM: HID: check for valid USB device for many HID driverse98c96b8b8
UPSTREAM: HID: wacom: fix problems when device is not a valid USB device5a72ef56c8
UPSTREAM: HID: bigbenff: prevent null pointer dereference7b8a19b917
UPSTREAM: HID: add USB_HID dependancy on some USB HID drivers8219b106a3
UPSTREAM: HID: add USB_HID dependancy to hid-chiconya4909c90b7
UPSTREAM: HID: add USB_HID dependancy to hid-prodikeysddea17081f
UPSTREAM: HID: add hid_is_usb() function to make it simpler for USB detection81b6ea435e
FROMGIT: clk: Don't parent clks until the parent is fully registered78ea29e570
UPSTREAM: mm/gup: remove the vma allocation from gup_longterm_locked()709fde7c61
BACKPORT: usb: typec: tcpm: Wait in SNK_DEBOUNCED until disconnectea4a92c6af
ANDROID: ABI: Add iio_write_channel_raw symbolf803f248dd
ANDROID: GKI: Update symbols to symbol list672d51b2a7
UPSTREAM: ASoC: dapm: use component prefix when checking widget names686cd3b2d8
ANDROID: ABI: Add symbols used by clocksource driver80c1cef2d1
ANDROID: GKI: Export clocksource_mmio_init84881c68b1
ANDROID: GKI: Export sched_clock_register9e5446d7de
FROMGIT: f2fs: show number of pending discard commands28de741861
ANDROID: workqueue: export symbol of the function wq_worker_comm()71f00d64c1
ANDROID: GKI: Update symbols to symbol list05aa93d251
ANDROID: vendor_hooks: Add hooks for binder proc transaction Also update the .xml file for the following new symbols that are now being tracked: Leaf changes summary: 165 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 154 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 11 Added variables 154 Added functions: [A] 'function void __bforget(buffer_head*)' [A] 'function ssize_t __blockdev_direct_IO(kiocb*, inode*, block_device*, iov_iter*, get_block_t*, dio_iodone_t*, dio_submit_t*, int)' [A] 'function buffer_head* __bread_gfp(block_device*, sector_t, unsigned int, gfp_t)' [A] 'function void __breadahead(block_device*, sector_t, unsigned int)' [A] 'function void __brelse(buffer_head*)' [A] 'function void __cancel_dirty_page(page*)' [A] 'function void __cleancache_invalidate_inode(address_space*)' [A] 'function void __filemap_set_wb_err(address_space*, int)' [A] 'function void __insert_inode_hash(inode*, unsigned long int)' [A] 'function void __mark_inode_dirty(inode*, int)' [A] 'function void __pagevec_release(pagevec*)' [A] 'function void __remove_inode_hash(inode*)' [A] 'function int __set_page_dirty_buffers(page*)' [A] 'function int __set_page_dirty_nobuffers(page*)' [A] 'function int __test_set_page_writeback(page*, bool)' [A] 'function int __traceiter_android_vh_binder_free_proc(void*, binder_proc*)' [A] 'function int __traceiter_android_vh_binder_has_work_ilocked(void*, binder_thread*, bool, int*)' [A] 'function int __traceiter_android_vh_binder_looper_state_registered(void*, binder_thread*, binder_proc*)' [A] 'function int __traceiter_android_vh_binder_proc_transaction_end(void*, task_struct*, task_struct*, task_struct*, unsigned int, bool, bool)' [A] 'function int __traceiter_android_vh_binder_read_done(void*, binder_proc*, binder_thread*)' [A] 'function int __traceiter_android_vh_binder_thread_read(void*, list_head**, binder_proc*, binder_thread*)' [A] 'function int __traceiter_android_vh_binder_thread_release(void*, binder_proc*, binder_thread*)' [A] 'function int __traceiter_android_vh_futex_sleep_start(void*, task_struct*)' [A] 'function int __traceiter_block_bio_remap(void*, request_queue*, bio*, dev_t, sector_t)' [A] 'function int add_to_page_cache_locked(page*, address_space*, unsigned long int, gfp_t)' [A] 'function bio* bio_split(bio*, int, gfp_t, bio_set*)' [A] 'function wait_queue_head* bit_waitqueue(void*, int)' [A] 'function blk_plug_cb* blk_check_plugged(blk_plug_cb_fn, void*, int)' [A] 'function void blk_queue_max_write_same_sectors(request_queue*, unsigned int)' [A] 'function int blkdev_issue_discard(block_device*, sector_t, sector_t, gfp_t, unsigned long int)' [A] 'function void block_invalidatepage(page*, unsigned int, unsigned int)' [A] 'function int block_is_partially_uptodate(page*, unsigned long int, unsigned long int)' [A] 'function int buffer_migrate_page(address_space*, page*, page*, migrate_mode)' [A] 'function bool capable_wrt_inode_uidgid(const inode*, int)' [A] 'function void clean_bdev_aliases(block_device*, sector_t, sector_t)' [A] 'function void clear_inode(inode*)' [A] 'function int clear_page_dirty_for_io(page*)' [A] 'function int clk_set_duty_cycle(clk*, unsigned int, unsigned int)' [A] 'function int clocksource_mmio_init(void*, const char*, unsigned long int, int, unsigned int, typedef u64 (clocksource*)*)' [A] 'function u64 clocksource_mmio_readl_up(clocksource*)' [A] 'function void create_empty_buffers(page*, unsigned long int, unsigned long int)' [A] 'function int current_umask()' [A] 'function dentry* d_add_ci(dentry*, inode*, qstr*)' [A] 'function void d_instantiate(dentry*, inode*)' [A] 'function dentry* d_obtain_alias(inode*)' [A] 'function dentry* d_splice_alias(inode*, dentry*)' [A] 'function void delete_from_page_cache(page*)' [A] 'function void disk_stack_limits(gendisk*, block_device*, sector_t)' [A] 'function void drop_nlink(inode*)' [A] 'function void end_buffer_write_sync(buffer_head*, int)' [A] 'function void end_page_writeback(page*)' [A] 'function errseq_t errseq_set(errseq_t*, int)' [A] 'function int fb_get_options(const char*, char**)' [A] 'function int fiemap_fill_next_extent(fiemap_extent_info*, u64, u64, u64, u32)' [A] 'function int fiemap_prep(inode*, fiemap_extent_info*, u64, u64*, u32)' [A] 'function int file_remove_privs(file*)' [A] 'function int file_update_time(file*)' [A] 'function int file_write_and_wait_range(file*, loff_t, loff_t)' [A] 'function vm_fault_t filemap_fault(vm_fault*)' [A] 'function int filemap_fdatawait_range(address_space*, loff_t, loff_t)' [A] 'function int filemap_fdatawrite(address_space*)' [A] 'function int filemap_flush(address_space*)' [A] 'function int filemap_write_and_wait_range(address_space*, loff_t, loff_t)' [A] 'function file* filp_open(const char*, int, umode_t)' [A] 'function void flush_delayed_fput()' [A] 'function int freq_qos_remove_notifier(freq_constraints*, freq_qos_req_type, notifier_block*)' [A] 'function int generic_error_remove_page(address_space*, page*)' [A] 'function ssize_t generic_file_direct_write(kiocb*, iov_iter*)' [A] 'function int generic_file_mmap(file*, vm_area_struct*)' [A] 'function int generic_file_open(inode*, file*)' [A] 'function ssize_t generic_file_splice_read(file*, loff_t*, pipe_inode_info*, size_t, unsigned int)' [A] 'function void generic_fillattr(inode*, kstat*)' [A] 'function ssize_t generic_read_dir(file*, char*, size_t, loff_t*)' [A] 'function page* grab_cache_page_write_begin(address_space*, unsigned long int, unsigned int)' [A] 'function inode* iget5_locked(super_block*, unsigned long int, int (inode*, void*)*, int (inode*, void*)*, void*)' [A] 'function inode* igrab(inode*)' [A] 'function void ihold(inode*)' [A] 'function int iio_write_channel_raw(iio_channel*, int)' [A] 'function inode* ilookup5(super_block*, unsigned long int, int (inode*, void*)*, void*)' [A] 'function int in_group_p(kgid_t)' [A] 'function void inc_nlink(inode*)' [A] 'function void init_special_inode(inode*, umode_t, dev_t)' [A] 'function void inode_dio_wait(inode*)' [A] 'function void inode_init_once(inode*)' [A] 'function void inode_init_owner(inode*, const inode*, umode_t)' [A] 'function int inode_newsize_ok(const inode*, loff_t)' [A] 'function void inode_set_flags(inode*, unsigned int, unsigned int)' [A] 'function void io_schedule()' [A] 'function void iov_iter_advance(iov_iter*, size_t)' [A] 'function unsigned long int iov_iter_alignment(const iov_iter*)' [A] 'function size_t iov_iter_copy_from_user_atomic(page*, iov_iter*, unsigned long int, size_t)' [A] 'function int iov_iter_fault_in_readable(iov_iter*, size_t)' [A] 'function ssize_t iov_iter_get_pages(iov_iter*, page**, size_t, unsigned int, size_t*)' [A] 'function size_t iov_iter_single_seg_count(const iov_iter*)' [A] 'function bool is_bad_inode(inode*)' [A] 'function ssize_t iter_file_splice_write(pipe_inode_info*, file*, loff_t*, size_t, unsigned int)' [A] 'function ino_t iunique(super_block*, ino_t)' [A] 'function void kill_block_super(super_block*)' [A] 'function void ll_rw_block(int, int, int, buffer_head**)' [A] 'function nls_table* load_nls(char*)' [A] 'function nls_table* load_nls_default()' [A] 'function void lru_cache_add(page*)' [A] 'function void make_bad_inode(inode*)' [A] 'function void mark_buffer_async_write(buffer_head*)' [A] 'function void mark_buffer_dirty(buffer_head*)' [A] 'function void mark_buffer_write_io_error(buffer_head*)' [A] 'function void mark_page_accessed(page*)' [A] 'function void mnt_drop_write_file(file*)' [A] 'function int mnt_want_write_file(file*)' [A] 'function dentry* mount_bdev(file_system_type*, int, const char*, void*, int (super_block*, void*, int)*)' [A] 'function void mpage_readahead(readahead_control*, get_block_t*)' [A] 'function int mpage_readpage(page*, get_block_t*)' [A] 'function int notify_change(dentry*, iattr*, inode**)' [A] 'function unsigned long int page_cache_next_miss(address_space*, unsigned long int, unsigned long int)' [A] 'function unsigned long int page_cache_prev_miss(address_space*, unsigned long int, unsigned long int)' [A] 'function bool page_mapped(page*)' [A] 'function int page_mkclean(page*)' [A] 'function void page_zero_new_buffers(page*, unsigned int, unsigned int)' [A] 'function page* pagecache_get_page(address_space*, unsigned long int, int, gfp_t)' [A] 'function unsigned int pagevec_lookup_range(pagevec*, address_space*, unsigned long int*, unsigned long int)' [A] 'function unsigned int pagevec_lookup_range_tag(pagevec*, address_space*, unsigned long int*, unsigned long int, xa_mark_t)' [A] 'function void put_pages_list(list_head*)' [A] 'function gfp_t readahead_gfp_mask(address_space*)' [A] 'function int redirty_page_for_writepage(writeback_control*, page*)' [A] 'function int rproc_set_firmware(rproc*, const char*)' [A] 'function int sb_min_blocksize(super_block*, int)' [A] 'function int sb_set_blocksize(super_block*, int)' [A] 'function void sched_clock_register(typedef u64 ()*, int, unsigned long int)' [A] 'function int security_inode_init_security(inode*, inode*, const qstr*, const initxattrs, void*)' [A] 'function void set_nlink(inode*, unsigned int)' [A] 'function int setattr_prepare(dentry*, iattr*)' [A] 'function blk_qc_t submit_bio_noacct(bio*)' [A] 'function int sync_dirty_buffer(buffer_head*)' [A] 'function int sync_filesystem(super_block*)' [A] 'function int sync_inode_metadata(inode*, int)' [A] 'function void tag_pages_for_writeback(address_space*, unsigned long int, unsigned long int)' [A] 'function timespec64 timestamp_truncate(timespec64, inode*)' [A] 'function void touch_atime(const path*)' [A] 'function void truncate_inode_pages(address_space*, loff_t)' [A] 'function void truncate_inode_pages_final(address_space*)' [A] 'function void truncate_pagecache(inode*, loff_t)' [A] 'function void truncate_setsize(inode*, loff_t)' [A] 'function int try_to_release_page(page*, gfp_t)' [A] 'function void try_to_writeback_inodes_sb(super_block*, wb_reason)' [A] 'function void unload_nls(nls_table*)' [A] 'function void unlock_buffer(buffer_head*)' [A] 'function void unlock_new_inode(inode*)' [A] 'function void usbnet_cdc_unbind(usbnet*, usb_interface*)' [A] 'function int usbnet_generic_cdc_bind(usbnet*, usb_interface*)' [A] 'function void wait_on_page_bit(page*, int)' [A] 'function int wake_bit_function(wait_queue_entry*, unsigned int, int, void*)' [A] 'function void wq_worker_comm(char*, size_t, task_struct*)' [A] 'function int write_inode_now(inode*, int)' [A] 'function int write_one_page(page*)' 11 Added variables: [A] 'tracepoint __tracepoint_android_rvh_do_ptrauth_fault' [A] 'tracepoint __tracepoint_android_vh_binder_free_proc' [A] 'tracepoint __tracepoint_android_vh_binder_has_work_ilocked' [A] 'tracepoint __tracepoint_android_vh_binder_looper_state_registered' [A] 'tracepoint __tracepoint_android_vh_binder_proc_transaction_end' [A] 'tracepoint __tracepoint_android_vh_binder_read_done' [A] 'tracepoint __tracepoint_android_vh_binder_thread_read' [A] 'tracepoint __tracepoint_android_vh_binder_thread_release' [A] 'tracepoint __tracepoint_android_vh_futex_sleep_start' [A] 'tracepoint __tracepoint_android_vh_subpage_dma_contig_alloc' [A] 'tracepoint __tracepoint_block_bio_remap' Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I064b6ff0420cee2d64e17814f43fbff8e2d9b019 Change-Id: Ia880c70c912f2b801a770feb1fdc4f4eb390d34d
This commit is contained in:
commit
f45f895af5
@ -113,6 +113,11 @@ Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description: Set timeout to issue discard commands during umount.
|
||||
Default: 5 secs
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/pending_discard
|
||||
Date: November 2021
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description: Shows the number of pending discard commands in the queue.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/max_victim_search
|
||||
Date: January 2014
|
||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||
|
File diff suppressed because it is too large
Load Diff
280
android/abi_gki_aarch64_asus
Executable file
280
android/abi_gki_aarch64_asus
Executable file
@ -0,0 +1,280 @@
|
||||
[abi_symbol_list]
|
||||
add_to_page_cache_locked
|
||||
__alloc_pages_nodemask
|
||||
__arch_copy_from_user
|
||||
__arch_copy_to_user
|
||||
arm64_const_caps_ready
|
||||
autoremove_wake_function
|
||||
balance_dirty_pages_ratelimited
|
||||
bcmp
|
||||
bdev_read_only
|
||||
__bforget
|
||||
bio_add_page
|
||||
bio_alloc_bioset
|
||||
bio_associate_blkg
|
||||
bio_put
|
||||
__bitmap_weight
|
||||
bit_waitqueue
|
||||
blkdev_issue_discard
|
||||
blkdev_issue_flush
|
||||
blk_finish_plug
|
||||
blk_start_plug
|
||||
__blockdev_direct_IO
|
||||
block_invalidatepage
|
||||
block_is_partially_uptodate
|
||||
__breadahead
|
||||
__bread_gfp
|
||||
__brelse
|
||||
buffer_migrate_page
|
||||
__cancel_dirty_page
|
||||
capable
|
||||
capable_wrt_inode_uidgid
|
||||
__cfi_slowpath
|
||||
__check_object_size
|
||||
clean_bdev_aliases
|
||||
__cleancache_invalidate_inode
|
||||
clear_inode
|
||||
clear_page
|
||||
clear_page_dirty_for_io
|
||||
complete_and_exit
|
||||
cpu_hwcap_keys
|
||||
cpu_hwcaps
|
||||
create_empty_buffers
|
||||
current_umask
|
||||
d_add
|
||||
d_add_ci
|
||||
delete_from_page_cache
|
||||
d_instantiate
|
||||
d_make_root
|
||||
d_obtain_alias
|
||||
down_read
|
||||
down_write
|
||||
down_write_trylock
|
||||
dput
|
||||
drop_nlink
|
||||
d_splice_alias
|
||||
dump_stack
|
||||
end_buffer_read_sync
|
||||
end_buffer_write_sync
|
||||
end_page_writeback
|
||||
errseq_set
|
||||
failure_tracking
|
||||
fget
|
||||
fiemap_fill_next_extent
|
||||
fiemap_prep
|
||||
filemap_fault
|
||||
filemap_fdatawait_range
|
||||
filemap_fdatawrite
|
||||
filemap_flush
|
||||
__filemap_set_wb_err
|
||||
filemap_write_and_wait_range
|
||||
file_remove_privs
|
||||
file_update_time
|
||||
file_write_and_wait_range
|
||||
filp_close
|
||||
filp_open
|
||||
finish_wait
|
||||
flush_dcache_page
|
||||
fput
|
||||
freezing_slow_path
|
||||
fs_bio_set
|
||||
generic_error_remove_page
|
||||
generic_file_direct_write
|
||||
generic_file_llseek
|
||||
generic_file_mmap
|
||||
generic_file_open
|
||||
generic_file_read_iter
|
||||
generic_file_splice_read
|
||||
generic_fillattr
|
||||
generic_perform_write
|
||||
generic_read_dir
|
||||
generic_write_checks
|
||||
__getblk_gfp
|
||||
gic_nonsecure_priorities
|
||||
grab_cache_page_write_begin
|
||||
iget5_locked
|
||||
igrab
|
||||
ihold
|
||||
ilookup5
|
||||
inc_nlink
|
||||
in_group_p
|
||||
__init_rwsem
|
||||
init_special_inode
|
||||
init_wait_entry
|
||||
__init_waitqueue_head
|
||||
inode_dio_wait
|
||||
inode_init_once
|
||||
inode_init_owner
|
||||
inode_newsize_ok
|
||||
inode_set_flags
|
||||
__insert_inode_hash
|
||||
invalidate_bdev
|
||||
invalidate_mapping_pages
|
||||
io_schedule
|
||||
iov_iter_advance
|
||||
iov_iter_alignment
|
||||
iov_iter_copy_from_user_atomic
|
||||
iov_iter_fault_in_readable
|
||||
iov_iter_get_pages
|
||||
iov_iter_single_seg_count
|
||||
iput
|
||||
is_bad_inode
|
||||
iter_file_splice_write
|
||||
iunique
|
||||
jiffies
|
||||
kasan_flag_enabled
|
||||
kfree
|
||||
kill_block_super
|
||||
__kmalloc
|
||||
kmalloc_caches
|
||||
kmem_cache_alloc
|
||||
kmem_cache_alloc_trace
|
||||
kmem_cache_create
|
||||
kmem_cache_create_usercopy
|
||||
kmem_cache_destroy
|
||||
kmem_cache_free
|
||||
kthread_create_on_node
|
||||
kthread_should_stop
|
||||
kthread_stop
|
||||
ktime_get_coarse_real_ts64
|
||||
kvfree
|
||||
__list_add_valid
|
||||
__list_del_entry_valid
|
||||
ll_rw_block
|
||||
load_nls
|
||||
load_nls_default
|
||||
__lock_buffer
|
||||
__lock_page
|
||||
lru_cache_add
|
||||
make_bad_inode
|
||||
mark_buffer_async_write
|
||||
mark_buffer_dirty
|
||||
mark_buffer_write_io_error
|
||||
__mark_inode_dirty
|
||||
mark_page_accessed
|
||||
memcmp
|
||||
memcpy
|
||||
memmove
|
||||
memset
|
||||
mktime64
|
||||
mnt_drop_write_file
|
||||
mnt_want_write_file
|
||||
module_layout
|
||||
mount_bdev
|
||||
mpage_readahead
|
||||
mpage_readpage
|
||||
__mutex_init
|
||||
mutex_lock
|
||||
mutex_trylock
|
||||
mutex_unlock
|
||||
new_inode
|
||||
notify_change
|
||||
pagecache_get_page
|
||||
page_cache_next_miss
|
||||
page_cache_prev_miss
|
||||
page_mapped
|
||||
__page_pinner_migration_failed
|
||||
pagevec_lookup_range
|
||||
pagevec_lookup_range_tag
|
||||
__pagevec_release
|
||||
page_zero_new_buffers
|
||||
__percpu_down_read
|
||||
preempt_schedule
|
||||
preempt_schedule_notrace
|
||||
prepare_to_wait
|
||||
prepare_to_wait_event
|
||||
printk
|
||||
__printk_ratelimit
|
||||
__put_page
|
||||
put_pages_list
|
||||
___ratelimit
|
||||
_raw_read_lock
|
||||
_raw_read_lock_irqsave
|
||||
_raw_read_unlock
|
||||
_raw_read_unlock_irqrestore
|
||||
_raw_spin_lock
|
||||
_raw_spin_lock_irqsave
|
||||
_raw_spin_unlock
|
||||
_raw_spin_unlock_irqrestore
|
||||
_raw_write_lock
|
||||
_raw_write_lock_irqsave
|
||||
_raw_write_unlock
|
||||
_raw_write_unlock_irqrestore
|
||||
rcuwait_wake_up
|
||||
readahead_gfp_mask
|
||||
read_cache_page
|
||||
redirty_page_for_writepage
|
||||
__refrigerator
|
||||
register_filesystem
|
||||
__remove_inode_hash
|
||||
sb_min_blocksize
|
||||
sb_set_blocksize
|
||||
schedule
|
||||
schedule_timeout_interruptible
|
||||
security_inode_init_security
|
||||
seq_printf
|
||||
setattr_prepare
|
||||
set_freezable
|
||||
set_nlink
|
||||
set_page_dirty
|
||||
__set_page_dirty_buffers
|
||||
__set_page_dirty_nobuffers
|
||||
set_user_nice
|
||||
simple_strtol
|
||||
simple_strtoul
|
||||
simple_strtoull
|
||||
snprintf
|
||||
sprintf
|
||||
sscanf
|
||||
__stack_chk_fail
|
||||
__stack_chk_guard
|
||||
strchr
|
||||
strcmp
|
||||
strlen
|
||||
strncasecmp
|
||||
strncmp
|
||||
strsep
|
||||
strstr
|
||||
submit_bh
|
||||
submit_bio
|
||||
sync_blockdev
|
||||
__sync_dirty_buffer
|
||||
sync_dirty_buffer
|
||||
sync_filesystem
|
||||
sync_inode_metadata
|
||||
system_freezing_cnt
|
||||
sys_tz
|
||||
tag_pages_for_writeback
|
||||
__test_set_page_writeback
|
||||
time64_to_tm
|
||||
timestamp_truncate
|
||||
touch_atime
|
||||
truncate_inode_pages
|
||||
truncate_inode_pages_final
|
||||
truncate_pagecache
|
||||
truncate_setsize
|
||||
try_to_release_page
|
||||
try_to_writeback_inodes_sb
|
||||
unload_nls
|
||||
unlock_buffer
|
||||
unlock_new_inode
|
||||
unlock_page
|
||||
unmap_mapping_range
|
||||
unregister_filesystem
|
||||
up_read
|
||||
up_write
|
||||
vfree
|
||||
vfs_fsync_range
|
||||
vmalloc
|
||||
__vmalloc
|
||||
vsnprintf
|
||||
vzalloc
|
||||
__wait_on_buffer
|
||||
wait_on_page_bit
|
||||
wake_bit_function
|
||||
__wake_up
|
||||
wake_up_process
|
||||
__warn_printk
|
||||
write_inode_now
|
||||
write_one_page
|
||||
xa_load
|
@ -4317,9 +4317,11 @@
|
||||
usb_unpoison_urb
|
||||
usb_unregister_notify
|
||||
usb_wakeup_notification
|
||||
usbnet_cdc_unbind
|
||||
usbnet_change_mtu
|
||||
usbnet_defer_kevent
|
||||
usbnet_disconnect
|
||||
usbnet_generic_cdc_bind
|
||||
usbnet_get_drvinfo
|
||||
usbnet_get_endpoints
|
||||
usbnet_get_link
|
||||
|
@ -63,6 +63,7 @@
|
||||
bitmap_to_arr32
|
||||
__bitmap_weight
|
||||
blk_alloc_queue
|
||||
blk_check_plugged
|
||||
blk_cleanup_queue
|
||||
blkdev_get_by_dev
|
||||
blkdev_put
|
||||
@ -686,6 +687,7 @@
|
||||
drm_property_create_range
|
||||
drm_property_lookup_blob
|
||||
drm_property_replace_blob
|
||||
drm_puts
|
||||
__drm_puts_seq_file
|
||||
drm_read
|
||||
drm_rect_clip_scaled
|
||||
@ -1012,6 +1014,7 @@
|
||||
__kfifo_in
|
||||
__kfifo_init
|
||||
__kfifo_out
|
||||
__kfifo_out_peek
|
||||
kfree
|
||||
kfree_sensitive
|
||||
kfree_skb
|
||||
@ -1032,6 +1035,7 @@
|
||||
kobject_add
|
||||
kobject_create_and_add
|
||||
kobject_del
|
||||
kobject_get
|
||||
kobject_init
|
||||
kobject_init_and_add
|
||||
kobject_put
|
||||
@ -1079,6 +1083,7 @@
|
||||
ktime_get_real_seconds
|
||||
ktime_get_real_ts64
|
||||
ktime_get_seconds
|
||||
ktime_get_snapshot
|
||||
ktime_get_ts64
|
||||
ktime_get_with_offset
|
||||
kvfree
|
||||
@ -1590,6 +1595,7 @@
|
||||
rtc_valid_tm
|
||||
__rt_mutex_init
|
||||
rt_mutex_lock
|
||||
rt_mutex_trylock
|
||||
rt_mutex_unlock
|
||||
rtnl_is_locked
|
||||
rtnl_lock
|
||||
|
@ -20,6 +20,9 @@
|
||||
bcmp
|
||||
bdput
|
||||
__bitmap_and
|
||||
blocking_notifier_call_chain
|
||||
blocking_notifier_chain_register
|
||||
blocking_notifier_chain_unregister
|
||||
bpf_trace_run1
|
||||
bpf_trace_run2
|
||||
bpf_trace_run3
|
||||
@ -67,6 +70,7 @@
|
||||
clk_set_parent
|
||||
clk_set_rate
|
||||
clk_unprepare
|
||||
clockevents_config_and_register
|
||||
complete
|
||||
complete_all
|
||||
completion_done
|
||||
@ -102,6 +106,7 @@
|
||||
debugfs_create_dir
|
||||
debugfs_create_file
|
||||
debugfs_remove
|
||||
default_llseek
|
||||
deferred_free
|
||||
delayed_work_timer_fn
|
||||
del_timer
|
||||
@ -160,6 +165,7 @@
|
||||
devm_phy_create
|
||||
devm_phy_get
|
||||
devm_pinctrl_get
|
||||
devm_pinctrl_put
|
||||
devm_platform_ioremap_resource
|
||||
__devm_regmap_init
|
||||
__devm_regmap_init_i2c
|
||||
@ -201,6 +207,12 @@
|
||||
dma_buf_map_attachment
|
||||
dma_buf_put
|
||||
dma_buf_unmap_attachment
|
||||
dma_fence_context_alloc
|
||||
dma_fence_default_wait
|
||||
dma_fence_init
|
||||
dma_fence_release
|
||||
dma_fence_signal_locked
|
||||
dma_fence_wait_timeout
|
||||
dma_free_attrs
|
||||
dma_heap_add
|
||||
dma_heap_get_dev
|
||||
@ -368,6 +380,7 @@
|
||||
event_triggers_call
|
||||
extcon_set_state_sync
|
||||
failure_tracking
|
||||
fd_install
|
||||
find_next_bit
|
||||
finish_wait
|
||||
flush_work
|
||||
@ -398,6 +411,7 @@
|
||||
get_cpu_device
|
||||
get_device
|
||||
get_random_bytes
|
||||
get_unused_fd_flags
|
||||
gic_nonsecure_priorities
|
||||
gpiochip_generic_free
|
||||
gpiochip_generic_request
|
||||
@ -430,6 +444,7 @@
|
||||
i2c_recover_bus
|
||||
i2c_register_driver
|
||||
i2c_smbus_read_byte_data
|
||||
i2c_smbus_write_byte_data
|
||||
i2c_transfer
|
||||
i2c_transfer_buffer_flags
|
||||
i2c_unregister_device
|
||||
@ -510,6 +525,7 @@
|
||||
__list_add_valid
|
||||
__list_del_entry_valid
|
||||
__local_bh_enable_ip
|
||||
__lock_page
|
||||
__log_post_read_mmio
|
||||
__log_read_mmio
|
||||
__log_write_mmio
|
||||
@ -531,6 +547,7 @@
|
||||
__memcpy_fromio
|
||||
memdup_user
|
||||
memmove
|
||||
memparse
|
||||
memset
|
||||
__memset_io
|
||||
memstart_addr
|
||||
@ -590,6 +607,7 @@
|
||||
of_alias_get_id
|
||||
of_clk_add_hw_provider
|
||||
of_clk_get
|
||||
of_clk_get_by_name
|
||||
of_clk_hw_onecell_get
|
||||
of_count_phandle_with_args
|
||||
of_device_get_match_data
|
||||
@ -614,6 +632,7 @@
|
||||
of_get_next_child
|
||||
of_get_parent
|
||||
of_get_property
|
||||
of_get_regulator_init_data
|
||||
of_graph_get_next_endpoint
|
||||
of_graph_get_port_by_id
|
||||
of_graph_get_remote_node
|
||||
@ -881,6 +900,7 @@
|
||||
__stack_chk_fail
|
||||
__stack_chk_guard
|
||||
strcasecmp
|
||||
strcat
|
||||
strcmp
|
||||
strcpy
|
||||
strlcpy
|
||||
@ -889,11 +909,14 @@
|
||||
strncpy
|
||||
strrchr
|
||||
strscpy
|
||||
strsep
|
||||
strstr
|
||||
__sw_hweight16
|
||||
__sw_hweight32
|
||||
__sw_hweight64
|
||||
__sw_hweight8
|
||||
sync_file_create
|
||||
sync_file_get_fence
|
||||
synchronize_irq
|
||||
synchronize_net
|
||||
synchronize_rcu
|
||||
@ -911,6 +934,7 @@
|
||||
tasklet_init
|
||||
tasklet_kill
|
||||
__tasklet_schedule
|
||||
timer_of_init
|
||||
trace_event_buffer_commit
|
||||
trace_event_buffer_reserve
|
||||
trace_event_ignore_this_pid
|
||||
@ -945,6 +969,7 @@
|
||||
uart_update_timeout
|
||||
uart_write_wakeup
|
||||
__udelay
|
||||
unlock_page
|
||||
__unregister_chrdev
|
||||
unregister_chrdev_region
|
||||
unregister_inet6addr_notifier
|
||||
@ -1058,6 +1083,7 @@
|
||||
vmap
|
||||
vsnprintf
|
||||
vunmap
|
||||
wait_for_completion
|
||||
wait_for_completion_interruptible
|
||||
wait_for_completion_interruptible_timeout
|
||||
wait_for_completion_timeout
|
||||
@ -1249,9 +1275,6 @@
|
||||
mmc_cqe_request_done
|
||||
|
||||
# required by device_cooling.ko
|
||||
blocking_notifier_call_chain
|
||||
blocking_notifier_chain_register
|
||||
blocking_notifier_chain_unregister
|
||||
thermal_cooling_device_unregister
|
||||
thermal_of_cooling_device_register
|
||||
|
||||
@ -1283,6 +1306,29 @@
|
||||
devm_phy_optional_get
|
||||
drm_of_encoder_active_endpoint
|
||||
|
||||
# required by fb.ko
|
||||
__arch_copy_in_user
|
||||
compat_alloc_user_space
|
||||
console_lock
|
||||
console_unlock
|
||||
fb_mode_option
|
||||
file_update_time
|
||||
file_write_and_wait_range
|
||||
ignore_console_lock_warning
|
||||
int_sqrt
|
||||
is_console_locked
|
||||
__memcpy_toio
|
||||
of_get_videomode
|
||||
page_mkclean
|
||||
proc_create_seq_private
|
||||
simple_strtol
|
||||
vm_get_page_prot
|
||||
vm_iomap_memory
|
||||
|
||||
# required by fb_fence.ko
|
||||
put_unused_fd
|
||||
system_unbound_wq
|
||||
|
||||
# required by fec.ko
|
||||
ethtool_op_get_ts_info
|
||||
mdiobus_alloc_size
|
||||
@ -1329,6 +1375,12 @@
|
||||
tso_count_descs
|
||||
tso_start
|
||||
|
||||
# required by fp9931-core.ko
|
||||
devm_mfd_add_devices
|
||||
|
||||
# required by fp9931-regulator.ko
|
||||
gpiod_get_raw_value
|
||||
|
||||
# required by fsl-edma-v3.ko
|
||||
dma_get_slave_channel
|
||||
of_dma_controller_free
|
||||
@ -1355,13 +1407,7 @@
|
||||
dev_pm_opp_add
|
||||
dev_pm_opp_remove
|
||||
dma_fence_array_ops
|
||||
dma_fence_context_alloc
|
||||
dma_fence_default_wait
|
||||
dma_fence_init
|
||||
dma_fence_release
|
||||
dma_fence_signal
|
||||
dma_fence_signal_locked
|
||||
dma_fence_wait_timeout
|
||||
down
|
||||
driver_create_file
|
||||
driver_remove_file
|
||||
@ -1369,10 +1415,8 @@
|
||||
drm_gem_object_lookup
|
||||
drm_gem_object_release
|
||||
drm_gem_private_object_init
|
||||
fd_install
|
||||
find_vma
|
||||
find_vpid
|
||||
get_unused_fd_flags
|
||||
get_user_pages
|
||||
hrtimer_resolution
|
||||
iommu_attach_device
|
||||
@ -1389,24 +1433,18 @@
|
||||
platform_bus_type
|
||||
reset_control_reset
|
||||
schedule_hrtimeout
|
||||
sync_file_create
|
||||
sync_file_get_fence
|
||||
__task_pid_nr_ns
|
||||
_totalram_pages
|
||||
vm_mmap
|
||||
vm_munmap
|
||||
vm_zone_stat
|
||||
|
||||
# required by gmsl-max9286.ko
|
||||
i2c_smbus_write_byte_data
|
||||
|
||||
# required by goodix.ko
|
||||
gpiod_direction_input
|
||||
input_alloc_absinfo
|
||||
input_mt_sync_frame
|
||||
touchscreen_parse_properties
|
||||
touchscreen_report_pos
|
||||
wait_for_completion
|
||||
|
||||
# required by gpio-imx-rpmsg.ko
|
||||
__irq_alloc_descs
|
||||
@ -1441,7 +1479,6 @@
|
||||
# required by gpio-regulator.ko
|
||||
devm_kstrdup
|
||||
gpiod_count
|
||||
of_get_regulator_init_data
|
||||
|
||||
# required by gpio-reset.ko
|
||||
reset_controller_register
|
||||
@ -1759,11 +1796,9 @@
|
||||
sdio_writeb
|
||||
sdio_writesb
|
||||
skb_realloc_headroom
|
||||
strcat
|
||||
strchr
|
||||
strim
|
||||
strncasecmp
|
||||
strsep
|
||||
vprintk
|
||||
wakeup_source_add
|
||||
wakeup_source_remove
|
||||
@ -1822,13 +1857,15 @@
|
||||
clk_unregister
|
||||
divider_get_val
|
||||
divider_recalc_rate
|
||||
of_clk_get_by_name
|
||||
of_clk_get_from_provider
|
||||
|
||||
# required by mxc-jpeg-encdec.ko
|
||||
v4l2_m2m_dqbuf
|
||||
v4l2_m2m_qbuf
|
||||
|
||||
# required by mxc_epdc_v2_fb.ko
|
||||
fb_get_options
|
||||
|
||||
# required by mxs-dma.ko
|
||||
dmaenginem_async_device_register
|
||||
tasklet_setup
|
||||
@ -1866,9 +1903,6 @@
|
||||
v4l2_event_subdev_unsubscribe
|
||||
__v4l2_find_nearest_size
|
||||
|
||||
# required by ov5640_camera_mipi_v2.ko
|
||||
devm_pinctrl_put
|
||||
|
||||
# required by panel-raydium-rm67191.ko
|
||||
devm_backlight_device_register
|
||||
mipi_dsi_dcs_get_display_brightness
|
||||
@ -2123,7 +2157,6 @@
|
||||
snd_interval_refine
|
||||
|
||||
# required by snd-soc-imx-audmux.ko
|
||||
default_llseek
|
||||
simple_open
|
||||
simple_read_from_buffer
|
||||
|
||||
@ -2236,9 +2269,10 @@
|
||||
dmabuf_page_pool_destroy
|
||||
dmabuf_page_pool_free
|
||||
|
||||
# required by timer-imx-sysctr.ko
|
||||
clockevents_config_and_register
|
||||
timer_of_init
|
||||
# required by timer-imx-tpm.ko
|
||||
clocksource_mmio_init
|
||||
clocksource_mmio_readl_up
|
||||
sched_clock_register
|
||||
|
||||
# required by trusty-ipc.ko
|
||||
_copy_from_iter
|
||||
@ -2336,7 +2370,6 @@
|
||||
fsync_bdev
|
||||
__get_free_pages
|
||||
__init_rwsem
|
||||
memparse
|
||||
memset64
|
||||
__num_online_cpus
|
||||
page_endio
|
||||
@ -2359,7 +2392,6 @@
|
||||
kern_mount
|
||||
kern_unmount
|
||||
kill_anon_super
|
||||
__lock_page
|
||||
page_mapping
|
||||
_raw_read_lock
|
||||
_raw_read_unlock
|
||||
@ -2367,5 +2399,4 @@
|
||||
_raw_write_unlock
|
||||
register_shrinker
|
||||
__SetPageMovable
|
||||
unlock_page
|
||||
unregister_shrinker
|
||||
|
10
android/abi_gki_aarch64_lenovo
Normal file
10
android/abi_gki_aarch64_lenovo
Normal file
@ -0,0 +1,10 @@
|
||||
[abi_symbol_list]
|
||||
# required by raid0.ko
|
||||
__tracepoint_block_bio_remap
|
||||
disk_stack_limits
|
||||
blk_queue_max_write_same_sectors
|
||||
__traceiter_block_bio_remap
|
||||
submit_bio_noacct
|
||||
bio_split
|
||||
# required by lenovo-fan.ko
|
||||
clk_set_duty_cycle
|
@ -893,6 +893,7 @@
|
||||
freezing_slow_path
|
||||
freq_qos_add_notifier
|
||||
freq_qos_add_request
|
||||
freq_qos_remove_notifier
|
||||
freq_qos_remove_request
|
||||
freq_qos_update_request
|
||||
freq_scale
|
||||
@ -2585,16 +2586,23 @@
|
||||
__traceiter_android_vh_alter_rwsem_list_add
|
||||
__traceiter_android_vh_arch_set_freq_scale
|
||||
__traceiter_android_vh_binder_alloc_new_buf_locked
|
||||
__traceiter_android_vh_binder_new_ref
|
||||
__traceiter_android_vh_binder_del_ref
|
||||
__traceiter_android_vh_binder_proc_transaction
|
||||
__traceiter_android_vh_binder_free_proc
|
||||
__traceiter_android_vh_binder_has_work_ilocked
|
||||
__traceiter_android_vh_binder_looper_state_registered
|
||||
__traceiter_android_vh_binder_new_ref
|
||||
__traceiter_android_vh_binder_preset
|
||||
__traceiter_android_vh_binder_priority_skip
|
||||
__traceiter_android_vh_binder_proc_transaction
|
||||
__traceiter_android_vh_binder_proc_transaction_end
|
||||
__traceiter_android_vh_binder_read_done
|
||||
__traceiter_android_vh_binder_reply
|
||||
__traceiter_android_vh_binder_restore_priority
|
||||
__traceiter_android_vh_binder_set_priority
|
||||
__traceiter_android_vh_binder_trans
|
||||
__traceiter_android_vh_binder_transaction_init
|
||||
__traceiter_android_vh_binder_thread_read
|
||||
__traceiter_android_vh_binder_thread_release
|
||||
__traceiter_android_vh_binder_wait_for_work
|
||||
__traceiter_android_vh_binder_wakeup_ilocked
|
||||
__traceiter_android_vh_build_sched_domains
|
||||
@ -2626,6 +2634,7 @@
|
||||
__traceiter_android_vh_ftrace_oops_enter
|
||||
__traceiter_android_vh_ftrace_oops_exit
|
||||
__traceiter_android_vh_ftrace_size_check
|
||||
__traceiter_android_vh_futex_sleep_start
|
||||
__traceiter_android_vh_get_from_fragment_pool
|
||||
__traceiter_android_vh_gpio_block_read
|
||||
__traceiter_android_vh_include_reserved_zone
|
||||
@ -2779,14 +2788,21 @@
|
||||
__tracepoint_android_vh_alter_rwsem_list_add
|
||||
__tracepoint_android_vh_arch_set_freq_scale
|
||||
__tracepoint_android_vh_binder_alloc_new_buf_locked
|
||||
__tracepoint_android_vh_binder_new_ref
|
||||
__tracepoint_android_vh_binder_del_ref
|
||||
__tracepoint_android_vh_binder_proc_transaction
|
||||
__tracepoint_android_vh_binder_free_proc
|
||||
__tracepoint_android_vh_binder_has_work_ilocked
|
||||
__tracepoint_android_vh_binder_looper_state_registered
|
||||
__tracepoint_android_vh_binder_new_ref
|
||||
__tracepoint_android_vh_binder_preset
|
||||
__tracepoint_android_vh_binder_priority_skip
|
||||
__tracepoint_android_vh_binder_proc_transaction
|
||||
__tracepoint_android_vh_binder_proc_transaction_end
|
||||
__tracepoint_android_vh_binder_read_done
|
||||
__tracepoint_android_vh_binder_reply
|
||||
__tracepoint_android_vh_binder_restore_priority
|
||||
__tracepoint_android_vh_binder_set_priority
|
||||
__tracepoint_android_vh_binder_thread_read
|
||||
__tracepoint_android_vh_binder_thread_release
|
||||
__tracepoint_android_vh_binder_trans
|
||||
__tracepoint_android_vh_binder_transaction_init
|
||||
__tracepoint_android_vh_binder_wait_for_work
|
||||
@ -2820,6 +2836,7 @@
|
||||
__tracepoint_android_vh_ftrace_oops_enter
|
||||
__tracepoint_android_vh_ftrace_oops_exit
|
||||
__tracepoint_android_vh_ftrace_size_check
|
||||
__tracepoint_android_vh_futex_sleep_start
|
||||
__tracepoint_android_vh_get_from_fragment_pool
|
||||
__tracepoint_android_vh_gpio_block_read
|
||||
__tracepoint_android_vh_include_reserved_zone
|
||||
@ -3325,6 +3342,7 @@
|
||||
woken_wake_function
|
||||
work_busy
|
||||
work_on_cpu
|
||||
wq_worker_comm
|
||||
ww_mutex_lock
|
||||
ww_mutex_unlock
|
||||
__xa_alloc
|
||||
|
@ -899,6 +899,7 @@
|
||||
finish_wait
|
||||
firmware_request_nowarn
|
||||
flush_dcache_page
|
||||
flush_delayed_fput
|
||||
flush_delayed_work
|
||||
__flush_icache_range
|
||||
flush_work
|
||||
@ -1104,6 +1105,7 @@
|
||||
idr_replace
|
||||
iio_channel_get_all
|
||||
iio_read_channel_processed
|
||||
iio_write_channel_raw
|
||||
import_iovec
|
||||
in4_pton
|
||||
in6_pton
|
||||
@ -2089,6 +2091,7 @@
|
||||
rproc_put
|
||||
rproc_remove_subdev
|
||||
rproc_report_crash
|
||||
rproc_set_firmware
|
||||
rproc_shutdown
|
||||
rtc_ktime_to_tm
|
||||
__rtc_register_device
|
||||
@ -2613,6 +2616,7 @@
|
||||
__tracepoint_android_rvh_cpu_cgroup_online
|
||||
__tracepoint_android_rvh_cpufreq_transition
|
||||
__tracepoint_android_rvh_dequeue_task
|
||||
__tracepoint_android_rvh_do_ptrauth_fault
|
||||
__tracepoint_android_rvh_do_sched_yield
|
||||
__tracepoint_android_rvh_enqueue_task
|
||||
__tracepoint_android_rvh_find_busiest_queue
|
||||
@ -2696,6 +2700,7 @@
|
||||
__tracepoint_android_vh_show_max_freq
|
||||
__tracepoint_android_vh_show_resume_epoch_val
|
||||
__tracepoint_android_vh_show_suspend_epoch_val
|
||||
__tracepoint_android_vh_subpage_dma_contig_alloc
|
||||
__tracepoint_android_vh_timer_calc_index
|
||||
__tracepoint_android_vh_ufs_check_int_errors
|
||||
__tracepoint_android_vh_ufs_clock_scaling
|
||||
|
@ -480,3 +480,5 @@
|
||||
548 common pidfd_getfd sys_pidfd_getfd
|
||||
549 common faccessat2 sys_faccessat2
|
||||
550 common process_madvise sys_process_madvise
|
||||
# 557 reserved for memfd_secret
|
||||
558 common process_mrelease sys_process_mrelease
|
||||
|
@ -454,3 +454,5 @@
|
||||
438 common pidfd_getfd sys_pidfd_getfd
|
||||
439 common faccessat2 sys_faccessat2
|
||||
440 common process_madvise sys_process_madvise
|
||||
# 447 reserved for memfd_secret
|
||||
448 common process_mrelease sys_process_mrelease
|
||||
|
@ -38,7 +38,7 @@
|
||||
#define __ARM_NR_compat_set_tls (__ARM_NR_COMPAT_BASE + 5)
|
||||
#define __ARM_NR_COMPAT_END (__ARM_NR_COMPAT_BASE + 0x800)
|
||||
|
||||
#define __NR_compat_syscalls 441
|
||||
#define __NR_compat_syscalls 449
|
||||
#endif
|
||||
|
||||
#define __ARCH_WANT_SYS_CLONE
|
||||
|
@ -889,6 +889,8 @@ __SYSCALL(__NR_pidfd_getfd, sys_pidfd_getfd)
|
||||
__SYSCALL(__NR_faccessat2, sys_faccessat2)
|
||||
#define __NR_process_madvise 440
|
||||
__SYSCALL(__NR_process_madvise, sys_process_madvise)
|
||||
#define __NR_process_mrelease 448
|
||||
__SYSCALL(__NR_process_mrelease, sys_process_mrelease)
|
||||
|
||||
/*
|
||||
* Please add new compat syscalls above this comment and update
|
||||
|
@ -361,3 +361,5 @@
|
||||
438 common pidfd_getfd sys_pidfd_getfd
|
||||
439 common faccessat2 sys_faccessat2
|
||||
440 common process_madvise sys_process_madvise
|
||||
# 447 reserved for memfd_secret
|
||||
448 common process_mrelease sys_process_mrelease
|
||||
|
@ -440,3 +440,5 @@
|
||||
438 common pidfd_getfd sys_pidfd_getfd
|
||||
439 common faccessat2 sys_faccessat2
|
||||
440 common process_madvise sys_process_madvise
|
||||
# 447 reserved for memfd_secret
|
||||
448 common process_mrelease sys_process_mrelease
|
||||
|
@ -446,3 +446,5 @@
|
||||
438 common pidfd_getfd sys_pidfd_getfd
|
||||
439 common faccessat2 sys_faccessat2
|
||||
440 common process_madvise sys_process_madvise
|
||||
# 447 reserved for memfd_secret
|
||||
448 common process_mrelease sys_process_mrelease
|
||||
|
@ -379,3 +379,5 @@
|
||||
438 n32 pidfd_getfd sys_pidfd_getfd
|
||||
439 n32 faccessat2 sys_faccessat2
|
||||
440 n32 process_madvise sys_process_madvise
|
||||
# 447 reserved for memfd_secret
|
||||
448 n32 process_mrelease sys_process_mrelease
|
||||
|
@ -355,3 +355,5 @@
|
||||
438 n64 pidfd_getfd sys_pidfd_getfd
|
||||
439 n64 faccessat2 sys_faccessat2
|
||||
440 n64 process_madvise sys_process_madvise
|
||||
# 447 reserved for memfd_secret
|
||||
448 n64 process_mrelease sys_process_mrelease
|
||||
|
@ -428,3 +428,5 @@
|
||||
438 o32 pidfd_getfd sys_pidfd_getfd
|
||||
439 o32 faccessat2 sys_faccessat2
|
||||
440 o32 process_madvise sys_process_madvise
|
||||
# 447 reserved for memfd_secret
|
||||
448 o32 process_mrelease sys_process_mrelease
|
||||
|
@ -438,3 +438,5 @@
|
||||
438 common pidfd_getfd sys_pidfd_getfd
|
||||
439 common faccessat2 sys_faccessat2
|
||||
440 common process_madvise sys_process_madvise
|
||||
# 447 reserved for memfd_secret
|
||||
448 common process_mrelease sys_process_mrelease
|
||||
|
@ -530,3 +530,5 @@
|
||||
438 common pidfd_getfd sys_pidfd_getfd
|
||||
439 common faccessat2 sys_faccessat2
|
||||
440 common process_madvise sys_process_madvise
|
||||
# 447 reserved for memfd_secret
|
||||
448 common process_mrelease sys_process_mrelease
|
||||
|
@ -443,3 +443,5 @@
|
||||
438 common pidfd_getfd sys_pidfd_getfd sys_pidfd_getfd
|
||||
439 common faccessat2 sys_faccessat2 sys_faccessat2
|
||||
440 common process_madvise sys_process_madvise sys_process_madvise
|
||||
# 447 reserved for memfd_secret
|
||||
448 common process_mrelease sys_process_mrelease sys_process_mrelease
|
||||
|
@ -443,3 +443,5 @@
|
||||
438 common pidfd_getfd sys_pidfd_getfd
|
||||
439 common faccessat2 sys_faccessat2
|
||||
440 common process_madvise sys_process_madvise
|
||||
# 447 reserved for memfd_secret
|
||||
448 common process_mrelease sys_process_mrelease
|
||||
|
@ -486,3 +486,5 @@
|
||||
438 common pidfd_getfd sys_pidfd_getfd
|
||||
439 common faccessat2 sys_faccessat2
|
||||
440 common process_madvise sys_process_madvise
|
||||
# 447 reserved for memfd_secret
|
||||
448 common process_mrelease sys_process_mrelease
|
||||
|
@ -445,3 +445,4 @@
|
||||
438 i386 pidfd_getfd sys_pidfd_getfd
|
||||
439 i386 faccessat2 sys_faccessat2
|
||||
440 i386 process_madvise sys_process_madvise
|
||||
448 i386 process_mrelease sys_process_mrelease
|
||||
|
@ -362,6 +362,7 @@
|
||||
438 common pidfd_getfd sys_pidfd_getfd
|
||||
439 common faccessat2 sys_faccessat2
|
||||
440 common process_madvise sys_process_madvise
|
||||
448 common process_mrelease sys_process_mrelease
|
||||
|
||||
#
|
||||
# Due to a historical design error, certain syscalls are numbered differently
|
||||
|
@ -411,3 +411,5 @@
|
||||
438 common pidfd_getfd sys_pidfd_getfd
|
||||
439 common faccessat2 sys_faccessat2
|
||||
440 common process_madvise sys_process_madvise
|
||||
# 447 reserved for memfd_secret
|
||||
448 common process_mrelease sys_process_mrelease
|
||||
|
@ -19,6 +19,7 @@ android/abi_gki_aarch64_galaxy
|
||||
android/abi_gki_aarch64_generic
|
||||
android/abi_gki_aarch64_hikey960
|
||||
android/abi_gki_aarch64_imx
|
||||
android/abi_gki_aarch64_lenovo
|
||||
android/abi_gki_aarch64_mtk
|
||||
android/abi_gki_aarch64_oplus
|
||||
android/abi_gki_aarch64_qcom
|
||||
@ -27,6 +28,7 @@ android/abi_gki_aarch64_unisoc
|
||||
android/abi_gki_aarch64_virtual_device
|
||||
android/abi_gki_aarch64_vivo
|
||||
android/abi_gki_aarch64_xiaomi
|
||||
android/abi_gki_aarch64_asus
|
||||
"
|
||||
|
||||
FILES="${FILES}
|
||||
|
@ -74,6 +74,23 @@ config ANDROID_VENDOR_HOOKS
|
||||
Allow vendor modules to attach to tracepoint "hooks" defined via
|
||||
DECLARE_HOOK or DECLARE_RESTRICTED_HOOK.
|
||||
|
||||
config ANDROID_STRUCT_PADDING
|
||||
bool "Android Struct Padding"
|
||||
default y
|
||||
help
|
||||
This option enables the padding that the Android GKI kernel adds
|
||||
to many different kernel structures to support an in-kernel stable ABI
|
||||
over the lifespan of support for the kernel as well as OEM additional
|
||||
fields that are needed by some of the Android kernel tracepoints.
|
||||
|
||||
Only disable this option if you have a system that needs the Android
|
||||
kernel drivers, but is NOT an Android GKI kernel image and you do NOT
|
||||
use the Android kernel tracepoints. If disabled it has the possibility
|
||||
to make the kernel static and runtime image slightly smaller but will
|
||||
NOT be supported by the Google Android kernel team.
|
||||
|
||||
If even slightly unsure, say Y.
|
||||
|
||||
endif # if ANDROID
|
||||
|
||||
endmenu
|
||||
|
@ -491,6 +491,11 @@ static void binder_inc_node_tmpref_ilocked(struct binder_node *node);
|
||||
static bool binder_has_work_ilocked(struct binder_thread *thread,
|
||||
bool do_proc_work)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
trace_android_vh_binder_has_work_ilocked(thread, do_proc_work, &ret);
|
||||
if (ret)
|
||||
return true;
|
||||
return thread->process_todo ||
|
||||
thread->looper_need_return ||
|
||||
(do_proc_work &&
|
||||
@ -2528,6 +2533,9 @@ static int binder_proc_transaction(struct binder_transaction *t,
|
||||
binder_enqueue_work_ilocked(&t->work, &node->async_todo);
|
||||
}
|
||||
|
||||
trace_android_vh_binder_proc_transaction_end(current, proc->tsk,
|
||||
thread ? thread->task : NULL, t->code, pending_async, !oneway);
|
||||
|
||||
if (!pending_async)
|
||||
binder_wakeup_thread_ilocked(proc, thread, !oneway /* sync */);
|
||||
|
||||
@ -3617,6 +3625,7 @@ static int binder_thread_write(struct binder_proc *proc,
|
||||
}
|
||||
thread->looper |= BINDER_LOOPER_STATE_REGISTERED;
|
||||
binder_inner_proc_unlock(proc);
|
||||
trace_android_vh_binder_looper_state_registered(thread, proc);
|
||||
break;
|
||||
case BC_ENTER_LOOPER:
|
||||
binder_debug(BINDER_DEBUG_THREADS,
|
||||
@ -4041,6 +4050,7 @@ static int binder_thread_read(struct binder_proc *proc,
|
||||
binder_inner_proc_unlock(proc);
|
||||
break;
|
||||
}
|
||||
trace_android_vh_binder_thread_read(&list, proc, thread);
|
||||
w = binder_dequeue_work_head_ilocked(list);
|
||||
if (binder_worklist_empty_ilocked(&thread->todo))
|
||||
thread->process_todo = false;
|
||||
@ -4507,6 +4517,7 @@ static void binder_free_proc(struct binder_proc *proc)
|
||||
put_task_struct(proc->tsk);
|
||||
put_cred(eproc->cred);
|
||||
binder_stats_deleted(BINDER_STAT_PROC);
|
||||
trace_android_vh_binder_free_proc(proc);
|
||||
kfree(eproc);
|
||||
}
|
||||
|
||||
@ -4605,6 +4616,7 @@ static int binder_thread_release(struct binder_proc *proc,
|
||||
if (send_reply)
|
||||
binder_send_failed_reply(send_reply, BR_DEAD_REPLY);
|
||||
binder_release_work(proc, &thread->todo);
|
||||
trace_android_vh_binder_thread_release(proc, thread);
|
||||
binder_thread_dec_tmpref(thread);
|
||||
return active_transactions;
|
||||
}
|
||||
@ -4681,6 +4693,7 @@ static int binder_ioctl_write_read(struct file *filp,
|
||||
if (!binder_worklist_empty_ilocked(&proc->todo))
|
||||
binder_wakeup_proc_ilocked(proc);
|
||||
binder_inner_proc_unlock(proc);
|
||||
trace_android_vh_binder_read_done(proc, thread);
|
||||
if (ret < 0) {
|
||||
if (copy_to_user(ubuf, &bwr, sizeof(bwr)))
|
||||
ret = -EFAULT;
|
||||
|
@ -110,6 +110,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_finished);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_rwsem_list_add);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_futex_plist_add);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_sleep_start);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_wait_start);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_wait_finish);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rtmutex_wait_start);
|
||||
@ -293,6 +294,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_trans);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_binder_transaction);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_preset);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_proc_transaction);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_proc_transaction_end);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_new_ref);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_del_ref);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_post_init_entity_util_avg);
|
||||
@ -399,3 +401,10 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_css_offline);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_css_online);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_free);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_alloc);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_subpage_dma_contig_alloc);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_looper_state_registered);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_thread_read);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_free_proc);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_thread_release);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_has_work_ilocked);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_read_done);
|
||||
|
@ -21,6 +21,7 @@ u64 clocksource_mmio_readl_up(struct clocksource *c)
|
||||
{
|
||||
return (u64)readl_relaxed(to_mmio_clksrc(c)->reg);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(clocksource_mmio_readl_up);
|
||||
|
||||
u64 clocksource_mmio_readl_down(struct clocksource *c)
|
||||
{
|
||||
@ -46,7 +47,7 @@ u64 clocksource_mmio_readw_down(struct clocksource *c)
|
||||
* @bits: Number of valid bits
|
||||
* @read: One of clocksource_mmio_read*() above
|
||||
*/
|
||||
int __init clocksource_mmio_init(void __iomem *base, const char *name,
|
||||
int clocksource_mmio_init(void __iomem *base, const char *name,
|
||||
unsigned long hz, int rating, unsigned bits,
|
||||
u64 (*read)(struct clocksource *))
|
||||
{
|
||||
@ -68,3 +69,4 @@ int __init clocksource_mmio_init(void __iomem *base, const char *name,
|
||||
|
||||
return clocksource_register_hz(&cs->clksrc, hz);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(clocksource_mmio_init);
|
||||
|
@ -351,29 +351,18 @@ static __poll_t dma_buf_poll(struct file *file, poll_table *poll)
|
||||
|
||||
static long _dma_buf_set_name(struct dma_buf *dmabuf, const char *name)
|
||||
{
|
||||
long ret = 0;
|
||||
|
||||
dma_resv_lock(dmabuf->resv, NULL);
|
||||
if (!list_empty(&dmabuf->attachments)) {
|
||||
ret = -EBUSY;
|
||||
goto out_unlock;
|
||||
}
|
||||
spin_lock(&dmabuf->name_lock);
|
||||
kfree(dmabuf->name);
|
||||
dmabuf->name = name;
|
||||
spin_unlock(&dmabuf->name_lock);
|
||||
|
||||
out_unlock:
|
||||
dma_resv_unlock(dmabuf->resv);
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* dma_buf_set_name - Set a name to a specific dma_buf to track the usage.
|
||||
* The name of the dma-buf buffer can only be set when the dma-buf is not
|
||||
* attached to any devices. It could theoritically support changing the
|
||||
* name of the dma-buf if the same piece of memory is used for multiple
|
||||
* purpose between different devices.
|
||||
* It could support changing the name of the dma-buf if the same piece of
|
||||
* memory is used for multiple purpose between different devices.
|
||||
*
|
||||
* @dmabuf: [in] dmabuf buffer that will be renamed.
|
||||
* @buf: [in] A piece of userspace memory that contains the name of
|
||||
|
@ -246,13 +246,17 @@ static void *__arm_v7s_alloc_table(int lvl, gfp_t gfp,
|
||||
__GFP_ZERO | ARM_V7S_TABLE_GFP_DMA, get_order(size));
|
||||
else if (lvl == 2)
|
||||
table = kmem_cache_zalloc(data->l2_tables, gfp);
|
||||
|
||||
if (!table)
|
||||
return NULL;
|
||||
|
||||
phys = virt_to_phys(table);
|
||||
if (phys != (arm_v7s_iopte)phys) {
|
||||
/* Doesn't fit in PTE */
|
||||
dev_err(dev, "Page table does not fit in PTE: %pa", &phys);
|
||||
goto out_free;
|
||||
}
|
||||
if (table && !cfg->coherent_walk) {
|
||||
if (!cfg->coherent_walk) {
|
||||
dma = dma_map_single(dev, table, size, DMA_TO_DEVICE);
|
||||
if (dma_mapping_error(dev, dma))
|
||||
goto out_free;
|
||||
|
@ -2453,5 +2453,6 @@ static void __exit ns_cleanup_module(void)
|
||||
module_exit(ns_cleanup_module);
|
||||
|
||||
MODULE_LICENSE ("GPL");
|
||||
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||
MODULE_AUTHOR ("Artem B. Bityuckiy");
|
||||
MODULE_DESCRIPTION ("The NAND flash simulator");
|
||||
|
@ -1476,3 +1476,4 @@ MODULE_VERSION(__stringify(UBI_VERSION));
|
||||
MODULE_DESCRIPTION("UBI - Unsorted Block Images");
|
||||
MODULE_AUTHOR("Artem Bityutskiy");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||
|
@ -1602,3 +1602,4 @@ module_init(nvmet_init);
|
||||
module_exit(nvmet_exit);
|
||||
|
||||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||
|
@ -1944,6 +1944,69 @@ struct rproc *rproc_get_by_phandle(phandle phandle)
|
||||
#endif
|
||||
EXPORT_SYMBOL(rproc_get_by_phandle);
|
||||
|
||||
/**
|
||||
* rproc_set_firmware() - assign a new firmware
|
||||
* @rproc: rproc handle to which the new firmware is being assigned
|
||||
* @fw_name: new firmware name to be assigned
|
||||
*
|
||||
* This function allows remoteproc drivers or clients to configure a custom
|
||||
* firmware name that is different from the default name used during remoteproc
|
||||
* registration. The function does not trigger a remote processor boot,
|
||||
* only sets the firmware name used for a subsequent boot. This function
|
||||
* should also be called only when the remote processor is offline.
|
||||
*
|
||||
* This allows either the userspace to configure a different name through
|
||||
* sysfs or a kernel-level remoteproc or a remoteproc client driver to set
|
||||
* a specific firmware when it is controlling the boot and shutdown of the
|
||||
* remote processor.
|
||||
*
|
||||
* Return: 0 on success or a negative value upon failure
|
||||
*/
|
||||
int rproc_set_firmware(struct rproc *rproc, const char *fw_name)
|
||||
{
|
||||
struct device *dev;
|
||||
int ret, len;
|
||||
char *p;
|
||||
|
||||
if (!rproc || !fw_name)
|
||||
return -EINVAL;
|
||||
|
||||
dev = rproc->dev.parent;
|
||||
|
||||
ret = mutex_lock_interruptible(&rproc->lock);
|
||||
if (ret) {
|
||||
dev_err(dev, "can't lock rproc %s: %d\n", rproc->name, ret);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (rproc->state != RPROC_OFFLINE) {
|
||||
dev_err(dev, "can't change firmware while running\n");
|
||||
ret = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
|
||||
len = strcspn(fw_name, "\n");
|
||||
if (!len) {
|
||||
dev_err(dev, "can't provide empty string for firmware name\n");
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
p = kstrndup(fw_name, len, GFP_KERNEL);
|
||||
if (!p) {
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
kfree(rproc->firmware);
|
||||
rproc->firmware = p;
|
||||
|
||||
out:
|
||||
mutex_unlock(&rproc->lock);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(rproc_set_firmware);
|
||||
|
||||
static int rproc_validate(struct rproc *rproc)
|
||||
{
|
||||
switch (rproc->state) {
|
||||
|
@ -157,38 +157,9 @@ static ssize_t firmware_store(struct device *dev,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct rproc *rproc = to_rproc(dev);
|
||||
char *p;
|
||||
int err, len = count;
|
||||
int err;
|
||||
|
||||
err = mutex_lock_interruptible(&rproc->lock);
|
||||
if (err) {
|
||||
dev_err(dev, "can't lock rproc %s: %d\n", rproc->name, err);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (rproc->state != RPROC_OFFLINE) {
|
||||
dev_err(dev, "can't change firmware while running\n");
|
||||
err = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
|
||||
len = strcspn(buf, "\n");
|
||||
if (!len) {
|
||||
dev_err(dev, "can't provide a NULL firmware\n");
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
p = kstrndup(buf, len, GFP_KERNEL);
|
||||
if (!p) {
|
||||
err = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
kfree(rproc->firmware);
|
||||
rproc->firmware = p;
|
||||
out:
|
||||
mutex_unlock(&rproc->lock);
|
||||
err = rproc_set_firmware(rproc, buf);
|
||||
|
||||
return err ? err : count;
|
||||
}
|
||||
|
@ -5180,6 +5180,19 @@ static irqreturn_t ufshcd_uic_cmd_compl(struct ufs_hba *hba, u32 intr_status)
|
||||
return retval;
|
||||
}
|
||||
|
||||
/* Release the resources allocated for processing a SCSI command. */
|
||||
static void ufshcd_release_scsi_cmd(struct ufs_hba *hba,
|
||||
struct ufshcd_lrb *lrbp)
|
||||
{
|
||||
struct scsi_cmnd *cmd = lrbp->cmd;
|
||||
|
||||
scsi_dma_unmap(cmd);
|
||||
ufshcd_crypto_clear_prdt(hba, lrbp);
|
||||
lrbp->cmd = NULL; /* Mark the command as completed. */
|
||||
ufshcd_release(hba);
|
||||
ufshcd_clk_scaling_update_busy(hba);
|
||||
}
|
||||
|
||||
/**
|
||||
* __ufshcd_transfer_req_compl - handle SCSI and query command completion
|
||||
* @hba: per adapter instance
|
||||
@ -5190,9 +5203,7 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
|
||||
{
|
||||
struct ufshcd_lrb *lrbp;
|
||||
struct scsi_cmnd *cmd;
|
||||
int result;
|
||||
int index;
|
||||
bool update_scaling = false;
|
||||
|
||||
for_each_set_bit(index, &completed_reqs, hba->nutrs) {
|
||||
if (!test_and_clear_bit(index, &hba->outstanding_reqs))
|
||||
@ -5205,16 +5216,10 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
|
||||
ufshcd_update_monitor(hba, lrbp);
|
||||
trace_android_vh_ufs_compl_command(hba, lrbp);
|
||||
ufshcd_add_command_trace(hba, index, "complete");
|
||||
result = ufshcd_transfer_rsp_status(hba, lrbp);
|
||||
scsi_dma_unmap(cmd);
|
||||
cmd->result = result;
|
||||
ufshcd_crypto_clear_prdt(hba, lrbp);
|
||||
/* Mark completed command as NULL in LRB */
|
||||
lrbp->cmd = NULL;
|
||||
cmd->result = ufshcd_transfer_rsp_status(hba, lrbp);
|
||||
ufshcd_release_scsi_cmd(hba, lrbp);
|
||||
/* Do not touch lrbp after scsi done */
|
||||
cmd->scsi_done(cmd);
|
||||
ufshcd_release(hba);
|
||||
update_scaling = true;
|
||||
} else if (lrbp->command_type == UTP_CMD_TYPE_DEV_MANAGE ||
|
||||
lrbp->command_type == UTP_CMD_TYPE_UFS_STORAGE) {
|
||||
if (hba->dev_cmd.complete) {
|
||||
@ -5222,11 +5227,9 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
|
||||
ufshcd_add_command_trace(hba, index,
|
||||
"dev_complete");
|
||||
complete(hba->dev_cmd.complete);
|
||||
update_scaling = true;
|
||||
ufshcd_clk_scaling_update_busy(hba);
|
||||
}
|
||||
}
|
||||
if (update_scaling)
|
||||
ufshcd_clk_scaling_update_busy(hba);
|
||||
}
|
||||
}
|
||||
|
||||
@ -6366,9 +6369,8 @@ static irqreturn_t ufshcd_tmc_handler(struct ufs_hba *hba)
|
||||
irqreturn_t ret = IRQ_NONE;
|
||||
int tag;
|
||||
|
||||
pending = ufshcd_readl(hba, REG_UTP_TASK_REQ_DOOR_BELL);
|
||||
|
||||
spin_lock_irqsave(hba->host->host_lock, flags);
|
||||
pending = ufshcd_readl(hba, REG_UTP_TASK_REQ_DOOR_BELL);
|
||||
issued = hba->outstanding_tasks & ~pending;
|
||||
for_each_set_bit(tag, &issued, hba->nutmrs) {
|
||||
struct request *req = tmf_rqs[tag];
|
||||
@ -6939,6 +6941,7 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
|
||||
unsigned long flags;
|
||||
unsigned int tag;
|
||||
int err = FAILED, res;
|
||||
bool outstanding;
|
||||
struct ufshcd_lrb *lrbp;
|
||||
u32 reg;
|
||||
|
||||
@ -7025,6 +7028,17 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
|
||||
goto release;
|
||||
}
|
||||
|
||||
/*
|
||||
* Clear the corresponding bit from outstanding_reqs since the command
|
||||
* has been aborted successfully.
|
||||
*/
|
||||
spin_lock_irqsave(host->host_lock, flags);
|
||||
outstanding = __test_and_clear_bit(tag, &hba->outstanding_reqs);
|
||||
spin_unlock_irqrestore(host->host_lock, flags);
|
||||
|
||||
if (outstanding)
|
||||
ufshcd_release_scsi_cmd(hba, lrbp);
|
||||
|
||||
err = SUCCESS;
|
||||
|
||||
release:
|
||||
|
@ -81,7 +81,6 @@ static int build_info_set(const char *str, const struct kernel_param *kp)
|
||||
}
|
||||
|
||||
Exit:
|
||||
vunmap(all_info_addr);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -3652,6 +3652,7 @@ static void __exit target_core_exit_configfs(void)
|
||||
MODULE_DESCRIPTION("Target_Core_Mod/ConfigFS");
|
||||
MODULE_AUTHOR("nab@Linux-iSCSI.org");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||
|
||||
module_init(target_core_init_configfs);
|
||||
module_exit(target_core_exit_configfs);
|
||||
|
@ -956,6 +956,7 @@ static void __exit fileio_module_exit(void)
|
||||
MODULE_DESCRIPTION("TCM FILEIO subsystem plugin");
|
||||
MODULE_AUTHOR("nab@Linux-iSCSI.org");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||
|
||||
module_init(fileio_module_init);
|
||||
module_exit(fileio_module_exit);
|
||||
|
@ -3446,6 +3446,7 @@ static struct usb_function *fsg_alloc(struct usb_function_instance *fi)
|
||||
|
||||
DECLARE_USB_FUNCTION_INIT(mass_storage, fsg_alloc_inst, fsg_alloc);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||
MODULE_AUTHOR("Michal Nazarewicz");
|
||||
|
||||
/************************* Module parameters *************************/
|
||||
|
@ -1015,4 +1015,5 @@ static struct usb_function *f_audio_alloc(struct usb_function_instance *fi)
|
||||
|
||||
DECLARE_USB_FUNCTION_INIT(uac1_legacy, f_audio_alloc_inst, f_audio_alloc);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||
MODULE_AUTHOR("Bryan Wu");
|
||||
|
@ -520,3 +520,4 @@ ssize_t fsg_store_inquiry_string(struct fsg_lun *curlun, const char *buf,
|
||||
EXPORT_SYMBOL_GPL(fsg_store_inquiry_string);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||
|
@ -1588,7 +1588,8 @@ int xhci_hub_status_data(struct usb_hcd *hcd, char *buf)
|
||||
status = 1;
|
||||
}
|
||||
if (!status && !reset_change) {
|
||||
xhci_dbg(xhci, "%s: stopping port polling.\n", __func__);
|
||||
xhci_dbg(xhci, "%s: stopping usb%d port polling\n",
|
||||
__func__, hcd->self.busnum);
|
||||
clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
|
||||
}
|
||||
spin_unlock_irqrestore(&xhci->lock, flags);
|
||||
@ -1620,7 +1621,8 @@ int xhci_bus_suspend(struct usb_hcd *hcd)
|
||||
if (bus_state->resuming_ports || /* USB2 */
|
||||
bus_state->port_remote_wakeup) { /* USB3 */
|
||||
spin_unlock_irqrestore(&xhci->lock, flags);
|
||||
xhci_dbg(xhci, "suspend failed because a port is resuming\n");
|
||||
xhci_dbg(xhci, "usb%d bus suspend to fail because a port is resuming\n",
|
||||
hcd->self.busnum);
|
||||
return -EBUSY;
|
||||
}
|
||||
}
|
||||
|
@ -868,9 +868,14 @@ static void xhci_giveback_invalidated_tds(struct xhci_virt_ep *ep)
|
||||
|
||||
ring = xhci_urb_to_transfer_ring(ep->xhci, td->urb);
|
||||
|
||||
if (td->cancel_status == TD_CLEARED)
|
||||
if (td->cancel_status == TD_CLEARED) {
|
||||
xhci_dbg(ep->xhci, "%s: Giveback cancelled URB %p TD\n",
|
||||
__func__, td->urb);
|
||||
xhci_td_cleanup(ep->xhci, td, ring, td->status);
|
||||
|
||||
} else {
|
||||
xhci_dbg(ep->xhci, "%s: Keep cancelled URB %p TD as cancel_status is %d\n",
|
||||
__func__, td->urb, td->cancel_status);
|
||||
}
|
||||
if (ep->xhci->xhc_state & XHCI_STATE_DYING)
|
||||
return;
|
||||
}
|
||||
@ -888,6 +893,10 @@ static int xhci_reset_halted_ep(struct xhci_hcd *xhci, unsigned int slot_id,
|
||||
goto done;
|
||||
}
|
||||
|
||||
xhci_dbg(xhci, "%s-reset ep %u, slot %u\n",
|
||||
(reset_type == EP_HARD_RESET) ? "Hard" : "Soft",
|
||||
ep_index, slot_id);
|
||||
|
||||
ret = xhci_queue_reset_ep(xhci, command, slot_id, ep_index, reset_type);
|
||||
done:
|
||||
if (ret)
|
||||
@ -921,7 +930,8 @@ static int xhci_handle_halted_endpoint(struct xhci_hcd *xhci,
|
||||
}
|
||||
|
||||
if (ep->ep_state & EP_HALTED) {
|
||||
xhci_dbg(xhci, "Reset ep command already pending\n");
|
||||
xhci_dbg(xhci, "Reset ep command for ep_index %d already pending\n",
|
||||
ep->ep_index);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -960,9 +970,10 @@ static int xhci_invalidate_cancelled_tds(struct xhci_virt_ep *ep)
|
||||
|
||||
list_for_each_entry_safe(td, tmp_td, &ep->cancelled_td_list, cancelled_td_list) {
|
||||
xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb,
|
||||
"Removing canceled TD starting at 0x%llx (dma).",
|
||||
(unsigned long long)xhci_trb_virt_to_dma(
|
||||
td->start_seg, td->first_trb));
|
||||
"Removing canceled TD starting at 0x%llx (dma) in stream %u URB %p",
|
||||
(unsigned long long)xhci_trb_virt_to_dma(
|
||||
td->start_seg, td->first_trb),
|
||||
td->urb->stream_id, td->urb);
|
||||
list_del_init(&td->td_list);
|
||||
ring = xhci_urb_to_transfer_ring(xhci, td->urb);
|
||||
if (!ring) {
|
||||
@ -980,17 +991,21 @@ static int xhci_invalidate_cancelled_tds(struct xhci_virt_ep *ep)
|
||||
td->urb->stream_id);
|
||||
hw_deq &= ~0xf;
|
||||
|
||||
if (td->cancel_status == TD_HALTED) {
|
||||
cached_td = td;
|
||||
} else if (trb_in_td(xhci, td->start_seg, td->first_trb,
|
||||
td->last_trb, hw_deq, false)) {
|
||||
if (td->cancel_status == TD_HALTED ||
|
||||
trb_in_td(xhci, td->start_seg, td->first_trb, td->last_trb, hw_deq, false)) {
|
||||
switch (td->cancel_status) {
|
||||
case TD_CLEARED: /* TD is already no-op */
|
||||
case TD_CLEARING_CACHE: /* set TR deq command already queued */
|
||||
break;
|
||||
case TD_DIRTY: /* TD is cached, clear it */
|
||||
case TD_HALTED:
|
||||
/* FIXME stream case, several stopped rings */
|
||||
td->cancel_status = TD_CLEARING_CACHE;
|
||||
if (cached_td)
|
||||
/* FIXME stream case, several stopped rings */
|
||||
xhci_dbg(xhci,
|
||||
"Move dq past stream %u URB %p instead of stream %u URB %p\n",
|
||||
td->urb->stream_id, td->urb,
|
||||
cached_td->urb->stream_id, cached_td->urb);
|
||||
cached_td = td;
|
||||
break;
|
||||
}
|
||||
@ -999,18 +1014,24 @@ static int xhci_invalidate_cancelled_tds(struct xhci_virt_ep *ep)
|
||||
td->cancel_status = TD_CLEARED;
|
||||
}
|
||||
}
|
||||
if (cached_td) {
|
||||
cached_td->cancel_status = TD_CLEARING_CACHE;
|
||||
|
||||
err = xhci_move_dequeue_past_td(xhci, slot_id, ep->ep_index,
|
||||
cached_td->urb->stream_id,
|
||||
cached_td);
|
||||
/* Failed to move past cached td, try just setting it noop */
|
||||
if (err) {
|
||||
td_to_noop(xhci, ring, cached_td, false);
|
||||
cached_td->cancel_status = TD_CLEARED;
|
||||
/* If there's no need to move the dequeue pointer then we're done */
|
||||
if (!cached_td)
|
||||
return 0;
|
||||
|
||||
err = xhci_move_dequeue_past_td(xhci, slot_id, ep->ep_index,
|
||||
cached_td->urb->stream_id,
|
||||
cached_td);
|
||||
if (err) {
|
||||
/* Failed to move past cached td, just set cached TDs to no-op */
|
||||
list_for_each_entry_safe(td, tmp_td, &ep->cancelled_td_list, cancelled_td_list) {
|
||||
if (td->cancel_status != TD_CLEARING_CACHE)
|
||||
continue;
|
||||
xhci_dbg(xhci, "Failed to clear cancelled cached URB %p, mark clear anyway\n",
|
||||
td->urb);
|
||||
td_to_noop(xhci, ring, td, false);
|
||||
td->cancel_status = TD_CLEARED;
|
||||
}
|
||||
cached_td = NULL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -1107,6 +1128,8 @@ static void xhci_handle_cmd_stop_ep(struct xhci_hcd *xhci, int slot_id,
|
||||
return;
|
||||
case EP_STATE_RUNNING:
|
||||
/* Race, HW handled stop ep cmd before ep was running */
|
||||
xhci_dbg(xhci, "Stop ep completion ctx error, ep is running\n");
|
||||
|
||||
command = xhci_alloc_command(xhci, false, GFP_ATOMIC);
|
||||
if (!command)
|
||||
xhci_stop_watchdog_timer_in_irq(xhci, ep);
|
||||
@ -1428,7 +1451,12 @@ static void xhci_handle_cmd_set_deq(struct xhci_hcd *xhci, int slot_id,
|
||||
ep_ring = xhci_urb_to_transfer_ring(ep->xhci, td->urb);
|
||||
if (td->cancel_status == TD_CLEARING_CACHE) {
|
||||
td->cancel_status = TD_CLEARED;
|
||||
xhci_dbg(ep->xhci, "%s: Giveback cancelled URB %p TD\n",
|
||||
__func__, td->urb);
|
||||
xhci_td_cleanup(ep->xhci, td, ep_ring, td->status);
|
||||
} else {
|
||||
xhci_dbg(ep->xhci, "%s: Keep cancelled URB %p TD as cancel_status is %d\n",
|
||||
__func__, td->urb, td->cancel_status);
|
||||
}
|
||||
}
|
||||
cleanup:
|
||||
@ -2040,7 +2068,8 @@ static void handle_port_status(struct xhci_hcd *xhci,
|
||||
* bits are still set. When an event occurs, switch over to
|
||||
* polling to avoid losing status changes.
|
||||
*/
|
||||
xhci_dbg(xhci, "%s: starting port polling.\n", __func__);
|
||||
xhci_dbg(xhci, "%s: starting usb%d port polling.\n",
|
||||
__func__, hcd->self.busnum);
|
||||
set_bit(HCD_FLAG_POLL_RH, &hcd->flags);
|
||||
spin_unlock(&xhci->lock);
|
||||
/* Pass this up to the core */
|
||||
|
@ -993,7 +993,8 @@ int xhci_suspend(struct xhci_hcd *xhci, bool do_wakeup)
|
||||
xhci_dbc_suspend(xhci);
|
||||
|
||||
/* Don't poll the roothubs on bus suspend. */
|
||||
xhci_dbg(xhci, "%s: stopping port polling.\n", __func__);
|
||||
xhci_dbg(xhci, "%s: stopping usb%d port polling.\n",
|
||||
__func__, hcd->self.busnum);
|
||||
clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
|
||||
del_timer_sync(&hcd->rh_timer);
|
||||
clear_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags);
|
||||
@ -1257,7 +1258,8 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
|
||||
usb_asmedia_modifyflowcontrol(to_pci_dev(hcd->self.controller));
|
||||
|
||||
/* Re-enable port polling. */
|
||||
xhci_dbg(xhci, "%s: starting port polling.\n", __func__);
|
||||
xhci_dbg(xhci, "%s: starting usb%d port polling.\n",
|
||||
__func__, hcd->self.busnum);
|
||||
set_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags);
|
||||
usb_hcd_poll_rh_status(xhci->shared_hcd);
|
||||
set_bit(HCD_FLAG_POLL_RH, &hcd->flags);
|
||||
|
@ -419,6 +419,13 @@ int virtio_device_restore(struct virtio_device *dev)
|
||||
struct virtio_driver *drv = drv_to_virtio(dev->dev.driver);
|
||||
int ret;
|
||||
|
||||
/* Short path for stateful devices. Here we assume that if the device
|
||||
* does not have a freeze callback, its state was not changed when
|
||||
* suspended.
|
||||
*/
|
||||
if (drv && !drv->freeze)
|
||||
goto on_config_enable;
|
||||
|
||||
/* We always start by resetting the device, in case a previous
|
||||
* driver messed it up. */
|
||||
dev->config->reset(dev);
|
||||
@ -450,6 +457,7 @@ int virtio_device_restore(struct virtio_device *dev)
|
||||
/* Finally, tell the device we're all set */
|
||||
virtio_add_status(dev, VIRTIO_CONFIG_S_DRIVER_OK);
|
||||
|
||||
on_config_enable:
|
||||
virtio_config_enable(dev);
|
||||
|
||||
return 0;
|
||||
|
@ -763,6 +763,26 @@ static void vm_unregister_cmdline_devices(void)
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
static int virtio_mmio_freeze(struct device *dev)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev);
|
||||
|
||||
return virtio_device_freeze(&vm_dev->vdev);
|
||||
}
|
||||
|
||||
static int virtio_mmio_restore(struct device *dev)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev);
|
||||
|
||||
return virtio_device_restore(&vm_dev->vdev);
|
||||
}
|
||||
#endif
|
||||
|
||||
static SIMPLE_DEV_PM_OPS(virtio_mmio_pm_ops, virtio_mmio_freeze, virtio_mmio_restore);
|
||||
|
||||
/* Platform driver */
|
||||
|
||||
static const struct of_device_id virtio_mmio_match[] = {
|
||||
@ -786,6 +806,7 @@ static struct platform_driver virtio_mmio_driver = {
|
||||
.name = "virtio-mmio",
|
||||
.of_match_table = virtio_mmio_match,
|
||||
.acpi_match_table = ACPI_PTR(virtio_mmio_acpi_match),
|
||||
.pm = &virtio_mmio_pm_ops,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -738,3 +738,4 @@ MODULE_AUTHOR("Latchesar Ionkov <lucho@ionkov.net>");
|
||||
MODULE_AUTHOR("Eric Van Hensbergen <ericvh@gmail.com>");
|
||||
MODULE_AUTHOR("Ron Minnich <rminnich@lanl.gov>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
@ -6,6 +6,8 @@
|
||||
# Rewritten to use lists instead of if-statements.
|
||||
#
|
||||
|
||||
subdir-ccflags-y += -DANDROID_GKI_VFS_EXPORT_ONLY=VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver
|
||||
|
||||
obj-y := open.o read_write.o file_table.o super.o \
|
||||
char_dev.o stat.o exec.o pipe.o namei.o fcntl.o \
|
||||
ioctl.o readdir.o select.o dcache.o inode.o \
|
||||
|
@ -492,3 +492,4 @@ static void __exit exit_adfs_fs(void)
|
||||
module_init(init_adfs_fs)
|
||||
module_exit(exit_adfs_fs)
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
@ -676,6 +676,7 @@ static void __exit exit_affs_fs(void)
|
||||
|
||||
MODULE_DESCRIPTION("Amiga filesystem support for Linux");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
module_init(init_affs_fs)
|
||||
module_exit(exit_affs_fs)
|
||||
|
@ -18,6 +18,7 @@
|
||||
MODULE_DESCRIPTION("AFS Client File System");
|
||||
MODULE_AUTHOR("Red Hat, Inc.");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
unsigned afs_debug;
|
||||
module_param_named(debug, afs_debug, uint, S_IWUSR | S_IRUGO);
|
||||
|
@ -114,7 +114,7 @@ int setattr_prepare(struct dentry *dentry, struct iattr *attr)
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(setattr_prepare);
|
||||
EXPORT_SYMBOL_NS(setattr_prepare, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* inode_newsize_ok - may this inode be truncated to a given size
|
||||
@ -158,7 +158,7 @@ int inode_newsize_ok(const struct inode *inode, loff_t offset)
|
||||
out_big:
|
||||
return -EFBIG;
|
||||
}
|
||||
EXPORT_SYMBOL(inode_newsize_ok);
|
||||
EXPORT_SYMBOL_NS(inode_newsize_ok, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* setattr_copy - copy simple metadata updates into the generic inode
|
||||
@ -345,4 +345,4 @@ int notify_change(struct dentry * dentry, struct iattr * attr, struct inode **de
|
||||
|
||||
return error;
|
||||
}
|
||||
EXPORT_SYMBOL(notify_change);
|
||||
EXPORT_SYMBOL_NS(notify_change, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
@ -44,3 +44,4 @@ static void __exit exit_autofs_fs(void)
|
||||
module_init(init_autofs_fs)
|
||||
module_exit(exit_autofs_fs)
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
@ -207,7 +207,7 @@ void make_bad_inode(struct inode *inode)
|
||||
inode->i_opflags &= ~IOP_XATTR;
|
||||
inode->i_fop = &bad_file_ops;
|
||||
}
|
||||
EXPORT_SYMBOL(make_bad_inode);
|
||||
EXPORT_SYMBOL_NS(make_bad_inode, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/*
|
||||
* This tests whether an inode has been flagged as bad. The test uses
|
||||
@ -227,7 +227,7 @@ bool is_bad_inode(struct inode *inode)
|
||||
return (inode->i_op == &bad_inode_ops);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(is_bad_inode);
|
||||
EXPORT_SYMBOL_NS(is_bad_inode, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* iget_failed - Mark an under-construction inode as dead and release it
|
||||
|
@ -34,6 +34,7 @@
|
||||
MODULE_DESCRIPTION("BeOS File System (BeFS) driver");
|
||||
MODULE_AUTHOR("Will Dyson");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/* The units the vfs expects inode->i_blocks to be in */
|
||||
#define VFS_BLOCK_SIZE 512
|
||||
|
@ -22,6 +22,7 @@
|
||||
MODULE_AUTHOR("Tigran Aivazian <aivazian.tigran@gmail.com>");
|
||||
MODULE_DESCRIPTION("SCO UnixWare BFS filesystem for Linux");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
#undef DEBUG
|
||||
|
||||
|
@ -832,3 +832,4 @@ static void __exit exit_misc_binfmt(void)
|
||||
core_initcall(init_misc_binfmt);
|
||||
module_exit(exit_misc_binfmt);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
@ -186,7 +186,7 @@ int sb_set_blocksize(struct super_block *sb, int size)
|
||||
return sb->s_blocksize;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(sb_set_blocksize);
|
||||
EXPORT_SYMBOL_NS(sb_set_blocksize, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
int sb_min_blocksize(struct super_block *sb, int size)
|
||||
{
|
||||
@ -196,7 +196,7 @@ int sb_min_blocksize(struct super_block *sb, int size)
|
||||
return sb_set_blocksize(sb, size);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(sb_min_blocksize);
|
||||
EXPORT_SYMBOL_NS(sb_min_blocksize, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
static int
|
||||
blkdev_get_block(struct inode *inode, sector_t iblock,
|
||||
|
@ -2597,6 +2597,7 @@ late_initcall(init_btrfs_fs);
|
||||
module_exit(exit_btrfs_fs)
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
MODULE_SOFTDEP("pre: crc32c");
|
||||
MODULE_SOFTDEP("pre: xxhash64");
|
||||
MODULE_SOFTDEP("pre: sha256");
|
||||
|
34
fs/buffer.c
34
fs/buffer.c
@ -173,7 +173,7 @@ void end_buffer_write_sync(struct buffer_head *bh, int uptodate)
|
||||
unlock_buffer(bh);
|
||||
put_bh(bh);
|
||||
}
|
||||
EXPORT_SYMBOL(end_buffer_write_sync);
|
||||
EXPORT_SYMBOL_NS(end_buffer_write_sync, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/*
|
||||
* Various filesystems appear to want __find_get_block to be non-blocking.
|
||||
@ -419,7 +419,7 @@ void mark_buffer_async_write(struct buffer_head *bh)
|
||||
{
|
||||
mark_buffer_async_write_endio(bh, end_buffer_async_write);
|
||||
}
|
||||
EXPORT_SYMBOL(mark_buffer_async_write);
|
||||
EXPORT_SYMBOL_NS(mark_buffer_async_write, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
|
||||
/*
|
||||
@ -674,7 +674,7 @@ int __set_page_dirty_buffers(struct page *page)
|
||||
|
||||
return newly_dirty;
|
||||
}
|
||||
EXPORT_SYMBOL(__set_page_dirty_buffers);
|
||||
EXPORT_SYMBOL_NS(__set_page_dirty_buffers, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/*
|
||||
* Write out and wait upon a list of buffers.
|
||||
@ -1141,7 +1141,7 @@ void mark_buffer_dirty(struct buffer_head *bh)
|
||||
__mark_inode_dirty(mapping->host, I_DIRTY_PAGES);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(mark_buffer_dirty);
|
||||
EXPORT_SYMBOL_NS(mark_buffer_dirty, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
void mark_buffer_write_io_error(struct buffer_head *bh)
|
||||
{
|
||||
@ -1159,7 +1159,7 @@ void mark_buffer_write_io_error(struct buffer_head *bh)
|
||||
errseq_set(&sb->s_wb_err, -EIO);
|
||||
rcu_read_unlock();
|
||||
}
|
||||
EXPORT_SYMBOL(mark_buffer_write_io_error);
|
||||
EXPORT_SYMBOL_NS(mark_buffer_write_io_error, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/*
|
||||
* Decrement a buffer_head's reference count. If all buffers against a page
|
||||
@ -1176,7 +1176,7 @@ void __brelse(struct buffer_head * buf)
|
||||
}
|
||||
WARN(1, KERN_ERR "VFS: brelse: Trying to free free buffer\n");
|
||||
}
|
||||
EXPORT_SYMBOL(__brelse);
|
||||
EXPORT_SYMBOL_NS(__brelse, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/*
|
||||
* bforget() is like brelse(), except it discards any
|
||||
@ -1195,7 +1195,7 @@ void __bforget(struct buffer_head *bh)
|
||||
}
|
||||
__brelse(bh);
|
||||
}
|
||||
EXPORT_SYMBOL(__bforget);
|
||||
EXPORT_SYMBOL_NS(__bforget, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
static struct buffer_head *__bread_slow(struct buffer_head *bh)
|
||||
{
|
||||
@ -1376,7 +1376,7 @@ void __breadahead(struct block_device *bdev, sector_t block, unsigned size)
|
||||
brelse(bh);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(__breadahead);
|
||||
EXPORT_SYMBOL_NS(__breadahead, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
void __breadahead_gfp(struct block_device *bdev, sector_t block, unsigned size,
|
||||
gfp_t gfp)
|
||||
@ -1411,7 +1411,7 @@ __bread_gfp(struct block_device *bdev, sector_t block,
|
||||
bh = __bread_slow(bh);
|
||||
return bh;
|
||||
}
|
||||
EXPORT_SYMBOL(__bread_gfp);
|
||||
EXPORT_SYMBOL_NS(__bread_gfp, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
static void __invalidate_bh_lrus(struct bh_lru *b)
|
||||
{
|
||||
@ -1573,7 +1573,7 @@ void block_invalidatepage(struct page *page, unsigned int offset,
|
||||
out:
|
||||
return;
|
||||
}
|
||||
EXPORT_SYMBOL(block_invalidatepage);
|
||||
EXPORT_SYMBOL_NS(block_invalidatepage, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
|
||||
/*
|
||||
@ -1609,7 +1609,7 @@ void create_empty_buffers(struct page *page,
|
||||
attach_page_private(page, head);
|
||||
spin_unlock(&page->mapping->private_lock);
|
||||
}
|
||||
EXPORT_SYMBOL(create_empty_buffers);
|
||||
EXPORT_SYMBOL_NS(create_empty_buffers, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* clean_bdev_aliases: clean a range of buffers in block device
|
||||
@ -1683,7 +1683,7 @@ void clean_bdev_aliases(struct block_device *bdev, sector_t block, sector_t len)
|
||||
break;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(clean_bdev_aliases);
|
||||
EXPORT_SYMBOL_NS(clean_bdev_aliases, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/*
|
||||
* Size is a power-of-two in the range 512..PAGE_SIZE,
|
||||
@ -1941,7 +1941,7 @@ void page_zero_new_buffers(struct page *page, unsigned from, unsigned to)
|
||||
bh = bh->b_this_page;
|
||||
} while (bh != head);
|
||||
}
|
||||
EXPORT_SYMBOL(page_zero_new_buffers);
|
||||
EXPORT_SYMBOL_NS(page_zero_new_buffers, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
static void
|
||||
iomap_to_bh(struct inode *inode, sector_t block, struct buffer_head *bh,
|
||||
@ -2275,7 +2275,7 @@ int block_is_partially_uptodate(struct page *page, unsigned long from,
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(block_is_partially_uptodate);
|
||||
EXPORT_SYMBOL_NS(block_is_partially_uptodate, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/*
|
||||
* Generic "read page" function for block devices that have the normal
|
||||
@ -3142,7 +3142,7 @@ void ll_rw_block(int op, int op_flags, int nr, struct buffer_head *bhs[])
|
||||
unlock_buffer(bh);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(ll_rw_block);
|
||||
EXPORT_SYMBOL_NS(ll_rw_block, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
void write_dirty_buffer(struct buffer_head *bh, int op_flags)
|
||||
{
|
||||
@ -3189,13 +3189,13 @@ int __sync_dirty_buffer(struct buffer_head *bh, int op_flags)
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(__sync_dirty_buffer);
|
||||
EXPORT_SYMBOL_NS(__sync_dirty_buffer, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
int sync_dirty_buffer(struct buffer_head *bh)
|
||||
{
|
||||
return __sync_dirty_buffer(bh, REQ_SYNC);
|
||||
}
|
||||
EXPORT_SYMBOL(sync_dirty_buffer);
|
||||
EXPORT_SYMBOL_NS(sync_dirty_buffer, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/*
|
||||
* try_to_free_buffers() checks if all the buffers on this particular page
|
||||
|
@ -28,6 +28,7 @@ MODULE_PARM_DESC(cachefiles_debug, "CacheFiles debugging mask");
|
||||
MODULE_DESCRIPTION("Mounted-filesystem based cache");
|
||||
MODULE_AUTHOR("Red Hat, Inc.");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
struct kmem_cache *cachefiles_object_jar;
|
||||
|
||||
|
@ -1335,3 +1335,4 @@ MODULE_AUTHOR("Yehuda Sadeh <yehuda@hq.newdream.net>");
|
||||
MODULE_AUTHOR("Patience Warnick <patience@newdream.net>");
|
||||
MODULE_DESCRIPTION("Ceph filesystem for Linux");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
@ -1692,6 +1692,7 @@ exit_cifs(void)
|
||||
|
||||
MODULE_AUTHOR("Steve French");
|
||||
MODULE_LICENSE("GPL"); /* combination of LGPL + GPL source behaves as GPL */
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
MODULE_DESCRIPTION
|
||||
("VFS to access SMB3 servers e.g. Samba, Macs, Azure and Windows (and "
|
||||
"also older servers complying with the SNIA CIFS Specification)");
|
||||
|
@ -388,6 +388,7 @@ MODULE_AUTHOR("Jan Harkes, Peter J. Braam");
|
||||
MODULE_DESCRIPTION("Coda Distributed File System VFS interface");
|
||||
MODULE_ALIAS_CHARDEV_MAJOR(CODA_PSDEV_MAJOR);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
MODULE_VERSION("7.0");
|
||||
|
||||
static int __init init_coda(void)
|
||||
|
@ -173,6 +173,7 @@ static void __exit configfs_exit(void)
|
||||
|
||||
MODULE_AUTHOR("Oracle");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||
MODULE_VERSION("0.0.2");
|
||||
MODULE_DESCRIPTION("Simple RAM filesystem for user driven kernel subsystem configuration.");
|
||||
|
||||
|
@ -1010,3 +1010,4 @@ static void __exit exit_cramfs_fs(void)
|
||||
module_init(init_cramfs_fs)
|
||||
module_exit(exit_cramfs_fs)
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
@ -2110,7 +2110,7 @@ struct dentry *d_obtain_alias(struct inode *inode)
|
||||
{
|
||||
return __d_obtain_alias(inode, true);
|
||||
}
|
||||
EXPORT_SYMBOL(d_obtain_alias);
|
||||
EXPORT_SYMBOL_NS(d_obtain_alias, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* d_obtain_root - find or allocate a dentry for a given inode
|
||||
@ -2184,7 +2184,7 @@ struct dentry *d_add_ci(struct dentry *dentry, struct inode *inode,
|
||||
}
|
||||
return found;
|
||||
}
|
||||
EXPORT_SYMBOL(d_add_ci);
|
||||
EXPORT_SYMBOL_NS(d_add_ci, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
|
||||
static inline bool d_same_name(const struct dentry *dentry,
|
||||
@ -3065,7 +3065,7 @@ struct dentry *d_splice_alias(struct inode *inode, struct dentry *dentry)
|
||||
__d_add(dentry, inode);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(d_splice_alias);
|
||||
EXPORT_SYMBOL_NS(d_splice_alias, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/*
|
||||
* Test whether new_dentry is a subdirectory of old_dentry.
|
||||
|
@ -1380,7 +1380,7 @@ ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
|
||||
end_io, submit_io, flags);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(__blockdev_direct_IO);
|
||||
EXPORT_SYMBOL_NS(__blockdev_direct_IO, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
static __init int dio_init(void)
|
||||
{
|
||||
|
@ -891,6 +891,7 @@ MODULE_AUTHOR("Michael A. Halcrow <mhalcrow@us.ibm.com>");
|
||||
MODULE_DESCRIPTION("eCryptfs");
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
module_init(ecryptfs_init)
|
||||
module_exit(ecryptfs_exit)
|
||||
|
@ -272,6 +272,7 @@ static __exit void efivarfs_exit(void)
|
||||
MODULE_AUTHOR("Matthew Garrett, Jeremy Kerr");
|
||||
MODULE_DESCRIPTION("EFI Variable Filesystem");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
MODULE_ALIAS_FS("efivarfs");
|
||||
|
||||
module_init(efivarfs_init);
|
||||
|
@ -311,3 +311,4 @@ efs_block_t efs_map_block(struct inode *inode, efs_block_t block) {
|
||||
}
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
@ -752,4 +752,5 @@ module_exit(erofs_module_exit);
|
||||
MODULE_DESCRIPTION("Enhanced ROM File System");
|
||||
MODULE_AUTHOR("Gao Xiang, Chao Yu, Miao Xie, CONSUMER BG, HUAWEI Inc.");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
|
@ -836,5 +836,6 @@ module_exit(exit_exfat_fs);
|
||||
|
||||
MODULE_ALIAS_FS("exfat");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
MODULE_DESCRIPTION("exFAT filesystem support");
|
||||
MODULE_AUTHOR("Samsung Electronics Co., Ltd.");
|
||||
|
@ -1650,5 +1650,6 @@ static void __exit exit_ext2_fs(void)
|
||||
MODULE_AUTHOR("Remy Card and others");
|
||||
MODULE_DESCRIPTION("Second Extended Filesystem");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
module_init(init_ext2_fs)
|
||||
module_exit(exit_ext2_fs)
|
||||
|
@ -6744,6 +6744,7 @@ static void __exit ext4_exit_fs(void)
|
||||
MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others");
|
||||
MODULE_DESCRIPTION("Fourth Extended Filesystem");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
MODULE_SOFTDEP("pre: crc32c");
|
||||
module_init(ext4_init_fs)
|
||||
module_exit(ext4_exit_fs)
|
||||
|
@ -2531,6 +2531,11 @@ bool f2fs_should_update_outplace(struct inode *inode, struct f2fs_io_info *fio)
|
||||
{
|
||||
struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
|
||||
|
||||
/* The below cases were checked when setting it. */
|
||||
if (f2fs_is_pinned_file(inode))
|
||||
return false;
|
||||
if (fio && is_sbi_flag_set(sbi, SBI_NEED_FSCK))
|
||||
return true;
|
||||
if (f2fs_lfs_mode(sbi))
|
||||
return true;
|
||||
if (S_ISDIR(inode->i_mode))
|
||||
@ -2539,8 +2544,6 @@ bool f2fs_should_update_outplace(struct inode *inode, struct f2fs_io_info *fio)
|
||||
return true;
|
||||
if (f2fs_is_atomic_file(inode))
|
||||
return true;
|
||||
if (is_sbi_flag_set(sbi, SBI_NEED_FSCK))
|
||||
return true;
|
||||
|
||||
/* swap file is migrating in aligned write mode */
|
||||
if (is_inode_flag_set(inode, FI_ALIGNED_WRITE))
|
||||
|
@ -3248,17 +3248,17 @@ static int f2fs_ioc_set_pin_file(struct file *filp, unsigned long arg)
|
||||
|
||||
inode_lock(inode);
|
||||
|
||||
if (f2fs_should_update_outplace(inode, NULL)) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!pin) {
|
||||
clear_inode_flag(inode, FI_PIN_FILE);
|
||||
f2fs_i_gc_failures_write(inode, 0);
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (f2fs_should_update_outplace(inode, NULL)) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (f2fs_pin_file_control(inode, false)) {
|
||||
ret = -EAGAIN;
|
||||
goto out;
|
||||
|
@ -4441,5 +4441,6 @@ module_exit(exit_f2fs_fs)
|
||||
MODULE_AUTHOR("Samsung Electronics's Praesto Team");
|
||||
MODULE_DESCRIPTION("Flash Friendly File System");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
MODULE_SOFTDEP("pre: crc32");
|
||||
|
||||
|
@ -117,6 +117,15 @@ static ssize_t sb_status_show(struct f2fs_attr *a,
|
||||
return sprintf(buf, "%lx\n", sbi->s_flag);
|
||||
}
|
||||
|
||||
static ssize_t pending_discard_show(struct f2fs_attr *a,
|
||||
struct f2fs_sb_info *sbi, char *buf)
|
||||
{
|
||||
if (!SM_I(sbi)->dcc_info)
|
||||
return -EINVAL;
|
||||
return sprintf(buf, "%llu\n", (unsigned long long)atomic_read(
|
||||
&SM_I(sbi)->dcc_info->discard_cmd_cnt));
|
||||
}
|
||||
|
||||
static ssize_t features_show(struct f2fs_attr *a,
|
||||
struct f2fs_sb_info *sbi, char *buf)
|
||||
{
|
||||
@ -713,6 +722,7 @@ F2FS_GENERAL_RO_ATTR(unusable);
|
||||
F2FS_GENERAL_RO_ATTR(encoding);
|
||||
F2FS_GENERAL_RO_ATTR(mounted_time_sec);
|
||||
F2FS_GENERAL_RO_ATTR(main_blkaddr);
|
||||
F2FS_GENERAL_RO_ATTR(pending_discard);
|
||||
#ifdef CONFIG_F2FS_STAT_FS
|
||||
F2FS_STAT_ATTR(STAT_INFO, f2fs_stat_info, cp_foreground_calls, cp_count);
|
||||
F2FS_STAT_ATTR(STAT_INFO, f2fs_stat_info, cp_background_calls, bg_cp_count);
|
||||
@ -778,6 +788,7 @@ static struct attribute *f2fs_attrs[] = {
|
||||
ATTR_LIST(main_blkaddr),
|
||||
ATTR_LIST(max_small_discards),
|
||||
ATTR_LIST(discard_granularity),
|
||||
ATTR_LIST(pending_discard),
|
||||
ATTR_LIST(batched_trim_sections),
|
||||
ATTR_LIST(ipu_policy),
|
||||
ATTR_LIST(min_ipu_util),
|
||||
|
@ -1979,3 +1979,4 @@ module_init(init_fat_fs)
|
||||
module_exit(exit_fat_fs)
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
@ -680,6 +680,7 @@ static void __exit exit_msdos_fs(void)
|
||||
}
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
MODULE_AUTHOR("Werner Almesberger");
|
||||
MODULE_DESCRIPTION("MS-DOS filesystem support");
|
||||
|
||||
|
@ -1077,6 +1077,7 @@ static void __exit exit_vfat_fs(void)
|
||||
}
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
MODULE_DESCRIPTION("VFAT filesystem support");
|
||||
MODULE_AUTHOR("Gordon Chaffee");
|
||||
|
||||
|
@ -52,6 +52,7 @@
|
||||
MODULE_AUTHOR("Christoph Hellwig, Krzysztof Blaszkowski");
|
||||
MODULE_DESCRIPTION("Veritas Filesystem (VxFS) driver");
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
static struct kmem_cache *vxfs_inode_cachep;
|
||||
|
||||
|
@ -2338,7 +2338,7 @@ void __mark_inode_dirty(struct inode *inode, int flags)
|
||||
out_unlock_inode:
|
||||
spin_unlock(&inode->i_lock);
|
||||
}
|
||||
EXPORT_SYMBOL(__mark_inode_dirty);
|
||||
EXPORT_SYMBOL_NS(__mark_inode_dirty, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/*
|
||||
* The @s_sync_lock is used to serialise concurrent sync operations
|
||||
@ -2504,7 +2504,7 @@ void try_to_writeback_inodes_sb(struct super_block *sb, enum wb_reason reason)
|
||||
__writeback_inodes_sb_nr(sb, get_nr_dirty_pages(), reason, true);
|
||||
up_read(&sb->s_umount);
|
||||
}
|
||||
EXPORT_SYMBOL(try_to_writeback_inodes_sb);
|
||||
EXPORT_SYMBOL_NS(try_to_writeback_inodes_sb, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* sync_inodes_sb - sync sb inode pages
|
||||
@ -2571,7 +2571,7 @@ int write_inode_now(struct inode *inode, int sync)
|
||||
might_sleep();
|
||||
return writeback_single_inode(inode, &wbc);
|
||||
}
|
||||
EXPORT_SYMBOL(write_inode_now);
|
||||
EXPORT_SYMBOL_NS(write_inode_now, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* sync_inode - write an inode and its pages to disk.
|
||||
@ -2608,4 +2608,4 @@ int sync_inode_metadata(struct inode *inode, int wait)
|
||||
|
||||
return sync_inode(inode, &wbc);
|
||||
}
|
||||
EXPORT_SYMBOL(sync_inode_metadata);
|
||||
EXPORT_SYMBOL_NS(sync_inode_metadata, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
@ -27,6 +27,7 @@
|
||||
MODULE_AUTHOR("Miklos Szeredi <miklos@szeredi.hu>");
|
||||
MODULE_DESCRIPTION("Filesystem in Userspace");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
static struct kmem_cache *fuse_inode_cachep;
|
||||
struct list_head fuse_conn_list;
|
||||
|
@ -260,6 +260,7 @@ static void __exit exit_gfs2_fs(void)
|
||||
MODULE_DESCRIPTION("Global File System");
|
||||
MODULE_AUTHOR("Red Hat, Inc.");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
module_init(init_gfs2_fs);
|
||||
module_exit(exit_gfs2_fs);
|
||||
|
@ -29,6 +29,7 @@
|
||||
static struct kmem_cache *hfs_inode_cachep;
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
static int hfs_sync_fs(struct super_block *sb, int wait)
|
||||
{
|
||||
|
@ -617,6 +617,7 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent)
|
||||
MODULE_AUTHOR("Brad Boyer");
|
||||
MODULE_DESCRIPTION("Extended Macintosh Filesystem");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
static struct kmem_cache *hfsplus_inode_cachep;
|
||||
|
||||
|
@ -791,3 +791,4 @@ static void __exit exit_hpfs_fs(void)
|
||||
module_init(init_hpfs_fs)
|
||||
module_exit(exit_hpfs_fs)
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
@ -44,5 +44,6 @@ module_init(init_incfs_module);
|
||||
module_exit(cleanup_incfs_module);
|
||||
|
||||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
MODULE_AUTHOR("Eugene Zemtsov <ezemtsov@google.com>");
|
||||
MODULE_DESCRIPTION("Incremental File System");
|
||||
|
36
fs/inode.c
36
fs/inode.c
@ -307,7 +307,7 @@ void drop_nlink(struct inode *inode)
|
||||
if (!inode->i_nlink)
|
||||
atomic_long_inc(&inode->i_sb->s_remove_count);
|
||||
}
|
||||
EXPORT_SYMBOL(drop_nlink);
|
||||
EXPORT_SYMBOL_NS(drop_nlink, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* clear_nlink - directly zero an inode's link count
|
||||
@ -346,7 +346,7 @@ void set_nlink(struct inode *inode, unsigned int nlink)
|
||||
inode->__i_nlink = nlink;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(set_nlink);
|
||||
EXPORT_SYMBOL_NS(set_nlink, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* inc_nlink - directly increment an inode's link count
|
||||
@ -399,7 +399,7 @@ void inode_init_once(struct inode *inode)
|
||||
__address_space_init_once(&inode->i_data);
|
||||
i_size_ordered_init(inode);
|
||||
}
|
||||
EXPORT_SYMBOL(inode_init_once);
|
||||
EXPORT_SYMBOL_NS(inode_init_once, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
static void init_once(void *foo)
|
||||
{
|
||||
@ -423,7 +423,7 @@ void ihold(struct inode *inode)
|
||||
{
|
||||
WARN_ON(atomic_inc_return(&inode->i_count) < 2);
|
||||
}
|
||||
EXPORT_SYMBOL(ihold);
|
||||
EXPORT_SYMBOL_NS(ihold, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
static void inode_lru_list_add(struct inode *inode)
|
||||
{
|
||||
@ -503,7 +503,7 @@ void __insert_inode_hash(struct inode *inode, unsigned long hashval)
|
||||
spin_unlock(&inode->i_lock);
|
||||
spin_unlock(&inode_hash_lock);
|
||||
}
|
||||
EXPORT_SYMBOL(__insert_inode_hash);
|
||||
EXPORT_SYMBOL_NS(__insert_inode_hash, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* __remove_inode_hash - remove an inode from the hash
|
||||
@ -519,7 +519,7 @@ void __remove_inode_hash(struct inode *inode)
|
||||
spin_unlock(&inode->i_lock);
|
||||
spin_unlock(&inode_hash_lock);
|
||||
}
|
||||
EXPORT_SYMBOL(__remove_inode_hash);
|
||||
EXPORT_SYMBOL_NS(__remove_inode_hash, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
void clear_inode(struct inode *inode)
|
||||
{
|
||||
@ -539,7 +539,7 @@ void clear_inode(struct inode *inode)
|
||||
/* don't need i_lock here, no concurrent mods to i_state */
|
||||
inode->i_state = I_FREEING | I_CLEAR;
|
||||
}
|
||||
EXPORT_SYMBOL(clear_inode);
|
||||
EXPORT_SYMBOL_NS(clear_inode, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/*
|
||||
* Free the inode passed in, removing it from the lists it is still connected
|
||||
@ -1001,7 +1001,7 @@ void unlock_new_inode(struct inode *inode)
|
||||
wake_up_bit(&inode->i_state, __I_NEW);
|
||||
spin_unlock(&inode->i_lock);
|
||||
}
|
||||
EXPORT_SYMBOL(unlock_new_inode);
|
||||
EXPORT_SYMBOL_NS(unlock_new_inode, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
void discard_new_inode(struct inode *inode)
|
||||
{
|
||||
@ -1158,7 +1158,7 @@ struct inode *iget5_locked(struct super_block *sb, unsigned long hashval,
|
||||
}
|
||||
return inode;
|
||||
}
|
||||
EXPORT_SYMBOL(iget5_locked);
|
||||
EXPORT_SYMBOL_NS(iget5_locked, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* iget_locked - obtain an inode from a mounted file system
|
||||
@ -1290,7 +1290,7 @@ ino_t iunique(struct super_block *sb, ino_t max_reserved)
|
||||
|
||||
return res;
|
||||
}
|
||||
EXPORT_SYMBOL(iunique);
|
||||
EXPORT_SYMBOL_NS(iunique, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
struct inode *igrab(struct inode *inode)
|
||||
{
|
||||
@ -1373,7 +1373,7 @@ struct inode *ilookup5(struct super_block *sb, unsigned long hashval,
|
||||
}
|
||||
return inode;
|
||||
}
|
||||
EXPORT_SYMBOL(ilookup5);
|
||||
EXPORT_SYMBOL_NS(ilookup5, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* ilookup - search for an inode in the inode cache
|
||||
@ -1853,7 +1853,7 @@ void touch_atime(const struct path *path)
|
||||
skip_update:
|
||||
sb_end_write(inode->i_sb);
|
||||
}
|
||||
EXPORT_SYMBOL(touch_atime);
|
||||
EXPORT_SYMBOL_NS(touch_atime, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/*
|
||||
* The logic we want is
|
||||
@ -1949,7 +1949,7 @@ int file_remove_privs(struct file *file)
|
||||
|
||||
return error;
|
||||
}
|
||||
EXPORT_SYMBOL(file_remove_privs);
|
||||
EXPORT_SYMBOL_NS(file_remove_privs, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* file_update_time - update mtime and ctime time
|
||||
@ -2130,7 +2130,7 @@ void init_special_inode(struct inode *inode, umode_t mode, dev_t rdev)
|
||||
" inode %s:%lu\n", mode, inode->i_sb->s_id,
|
||||
inode->i_ino);
|
||||
}
|
||||
EXPORT_SYMBOL(init_special_inode);
|
||||
EXPORT_SYMBOL_NS(init_special_inode, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* inode_init_owner - Init uid,gid,mode for new inode according to posix standards
|
||||
@ -2156,7 +2156,7 @@ void inode_init_owner(struct inode *inode, const struct inode *dir,
|
||||
inode->i_gid = current_fsgid();
|
||||
inode->i_mode = mode;
|
||||
}
|
||||
EXPORT_SYMBOL(inode_init_owner);
|
||||
EXPORT_SYMBOL_NS(inode_init_owner, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* inode_owner_or_capable - check current task permissions to inode
|
||||
@ -2210,7 +2210,7 @@ void inode_dio_wait(struct inode *inode)
|
||||
if (atomic_read(&inode->i_dio_count))
|
||||
__inode_dio_wait(inode);
|
||||
}
|
||||
EXPORT_SYMBOL(inode_dio_wait);
|
||||
EXPORT_SYMBOL_NS(inode_dio_wait, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/*
|
||||
* inode_set_flags - atomically set some inode flags
|
||||
@ -2234,7 +2234,7 @@ void inode_set_flags(struct inode *inode, unsigned int flags,
|
||||
WARN_ON_ONCE(flags & ~mask);
|
||||
set_mask_bits(&inode->i_flags, mask, flags);
|
||||
}
|
||||
EXPORT_SYMBOL(inode_set_flags);
|
||||
EXPORT_SYMBOL_NS(inode_set_flags, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
void inode_nohighmem(struct inode *inode)
|
||||
{
|
||||
@ -2271,7 +2271,7 @@ struct timespec64 timestamp_truncate(struct timespec64 t, struct inode *inode)
|
||||
WARN(1, "invalid file time granularity: %u", gran);
|
||||
return t;
|
||||
}
|
||||
EXPORT_SYMBOL(timestamp_truncate);
|
||||
EXPORT_SYMBOL_NS(timestamp_truncate, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* current_time - Return FS time
|
||||
|
@ -146,7 +146,7 @@ int fiemap_fill_next_extent(struct fiemap_extent_info *fieinfo, u64 logical,
|
||||
return 1;
|
||||
return (flags & FIEMAP_EXTENT_LAST) ? 1 : 0;
|
||||
}
|
||||
EXPORT_SYMBOL(fiemap_fill_next_extent);
|
||||
EXPORT_SYMBOL_NS(fiemap_fill_next_extent, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
/**
|
||||
* fiemap_prep - check validity of requested flags for fiemap
|
||||
@ -191,7 +191,7 @@ int fiemap_prep(struct inode *inode, struct fiemap_extent_info *fieinfo,
|
||||
ret = filemap_write_and_wait(inode->i_mapping);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(fiemap_prep);
|
||||
EXPORT_SYMBOL_NS(fiemap_prep, ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
||||
static int ioctl_fiemap(struct file *filp, struct fiemap __user *ufiemap)
|
||||
{
|
||||
|
@ -1612,3 +1612,4 @@ static void __exit exit_iso9660_fs(void)
|
||||
module_init(init_iso9660_fs)
|
||||
module_exit(exit_iso9660_fs)
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
@ -3012,6 +3012,7 @@ static void __exit journal_exit(void)
|
||||
}
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
module_init(journal_init);
|
||||
module_exit(journal_exit);
|
||||
|
||||
|
@ -439,3 +439,4 @@ MODULE_DESCRIPTION("The Journalling Flash File System, v2");
|
||||
MODULE_AUTHOR("Red Hat, Inc.");
|
||||
MODULE_LICENSE("GPL"); // Actually dual-licensed, but it doesn't matter for
|
||||
// the sake of this tag. It's Free Software.
|
||||
MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user