mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-07 04:12:04 -04:00
Merge branch 'android11-5.4' into 'android11-5.4-lts'
Sync up with android11-5.4 for the following commits:ea5b4af68fANDROID: Update the KMI_GENERATION after KMI changes on October 3140799f06ceANDROID: Input: bump SW_MAX up to 0x3fd1f4f1327dANDROID: GKI: ABI update for Oct 31 KABI break95dc566101ANDROID: GKI: add Android ABI padding to struct nf_conn0709341102ANDROID: GKI: add vendor padding variable in struct skb_shared_info01435b2e91ANDROID: GKI: net: add vendor hooks for 'struct nf_conn' lifecycle0bc7257c7fANDROID: GKI: add vendor padding variable in struct nf_conn20dd49792aANDROID: GKI: net: add vendor hooks for 'struct sock' lifecycleb3d5bbd878ANDROID: GKI: add vendor padding variable in struct sock24ab59f6bbANDROID: fuse: Add support for d_canonical_path854f380681ANDROID: vfs: add d_canonical_path for stacked filesystem supportaa445f97a0ANDROID: fscrypt: prevent fscrypt_operations from affecting KMId2a52d0eaaRevert "ANDROID: GKI: fix ABI breakage in module.h"a273b843acANDROID: ABI: update allowed list for galaxy6ca1e28c7fFROMLIST: char: misc: increase DYNAMIC_MINORS value Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I0fafb78b93dca8fd7b76c5808c89e32ae640a75e
This commit is contained in:
commit
ec9ecb5d11
27 changed files with 4940 additions and 5264 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -38,6 +38,7 @@
|
|||
__cpuhp_setup_state
|
||||
__cpuhp_setup_state_cpuslocked
|
||||
__dev_kfree_skb_any
|
||||
__dev_kfree_skb_irq
|
||||
__devm_iio_device_register
|
||||
__devm_irq_alloc_descs
|
||||
__devm_of_phy_provider_register
|
||||
|
|
@ -115,6 +116,7 @@
|
|||
__pm_runtime_suspend
|
||||
__pm_runtime_use_autosuspend
|
||||
__pm_stay_awake
|
||||
__printk_ratelimit
|
||||
__pskb_pull_tail
|
||||
__put_cred
|
||||
__put_page
|
||||
|
|
@ -136,6 +138,7 @@
|
|||
__sdhci_add_host
|
||||
__sg_page_iter_next
|
||||
__sg_page_iter_start
|
||||
__skb_get_hash
|
||||
__skb_pad
|
||||
__spi_alloc_controller
|
||||
__spi_register_driver
|
||||
|
|
@ -149,13 +152,17 @@
|
|||
__tasklet_hi_schedule
|
||||
__tasklet_schedule
|
||||
__trace_bprintk
|
||||
__trace_puts
|
||||
__tracepoint_android_vh_ipi_stop
|
||||
__tracepoint_android_vh_is_fpsimd_save
|
||||
__tracepoint_android_vh_kfree_skb
|
||||
__tracepoint_android_vh_ptype_head
|
||||
__tracepoint_device_pm_callback_end
|
||||
__tracepoint_device_pm_callback_start
|
||||
__tracepoint_gpu_mem_total
|
||||
__tracepoint_pelt_cfs_tp
|
||||
__tracepoint_suspend_resume
|
||||
__tty_alloc_driver
|
||||
__tty_insert_flip_char
|
||||
__udelay
|
||||
__uio_register_device
|
||||
|
|
@ -253,6 +260,7 @@
|
|||
bitmap_zalloc
|
||||
blk_execute_rq_nowait
|
||||
blk_get_request
|
||||
blk_lookup_devt
|
||||
blk_mq_rq_cpu
|
||||
blk_put_request
|
||||
blk_queue_bounce_limit
|
||||
|
|
@ -262,6 +270,7 @@
|
|||
blk_rq_map_user_iov
|
||||
blk_rq_unmap_user
|
||||
blk_verify_command
|
||||
blkdev_get_by_dev
|
||||
blkdev_get_by_path
|
||||
blkdev_put
|
||||
blocking_notifier_call_chain
|
||||
|
|
@ -289,10 +298,12 @@
|
|||
bus_unregister
|
||||
bus_unregister_notifier
|
||||
cache_line_size
|
||||
call_rcu
|
||||
cancel_delayed_work
|
||||
cancel_delayed_work_sync
|
||||
cancel_work_sync
|
||||
capable
|
||||
cdc_parse_cdc_header
|
||||
cdev_add
|
||||
cdev_alloc
|
||||
cdev_del
|
||||
|
|
@ -428,6 +439,7 @@
|
|||
cpufreq_register_notifier
|
||||
cpufreq_table_index_unsorted
|
||||
cpufreq_unregister_driver
|
||||
cpufreq_unregister_notifier
|
||||
cpuhp_tasks_frozen
|
||||
cpuidle_pause_and_lock
|
||||
cpuidle_resume_and_unlock
|
||||
|
|
@ -435,6 +447,7 @@
|
|||
cpumask_next_and
|
||||
cpus_read_lock
|
||||
cpus_read_unlock
|
||||
crc16
|
||||
crc32_le
|
||||
crc8
|
||||
crc8_populate_msb
|
||||
|
|
@ -444,10 +457,12 @@
|
|||
crypto_register_rngs
|
||||
crypto_shash_digest
|
||||
crypto_unregister_rngs
|
||||
csum_partial
|
||||
d_add
|
||||
d_drop
|
||||
d_instantiate
|
||||
d_make_root
|
||||
d_path
|
||||
dapm_pinctrl_event
|
||||
dapm_regulator_event
|
||||
datagram_poll
|
||||
|
|
@ -702,6 +717,7 @@
|
|||
downgrade_write
|
||||
dput
|
||||
drain_workqueue
|
||||
driver_attach
|
||||
driver_find
|
||||
driver_find_device
|
||||
driver_register
|
||||
|
|
@ -935,7 +951,9 @@
|
|||
eth_type_trans
|
||||
eth_validate_addr
|
||||
ether_setup
|
||||
ethtool_convert_legacy_u32_to_link_mode
|
||||
ethtool_op_get_link
|
||||
ethtool_op_get_ts_info
|
||||
event_triggers_call
|
||||
extcon_find_edev_by_node
|
||||
extcon_get_edev_by_phandle
|
||||
|
|
@ -949,6 +967,8 @@
|
|||
fb_mode_option
|
||||
fd_install
|
||||
fget
|
||||
filp_close
|
||||
filp_open
|
||||
find_get_pid
|
||||
find_last_bit
|
||||
find_next_bit
|
||||
|
|
@ -972,6 +992,7 @@
|
|||
free_pages_exact
|
||||
free_percpu
|
||||
free_percpu_irq
|
||||
free_reserved_area
|
||||
freezing_slow_path
|
||||
freq_qos_add_request
|
||||
freq_qos_remove_request
|
||||
|
|
@ -1000,6 +1021,7 @@
|
|||
generic_file_read_iter
|
||||
generic_file_splice_read
|
||||
generic_handle_irq
|
||||
generic_mii_ioctl
|
||||
generic_read_dir
|
||||
generic_shutdown_super
|
||||
genl_register_family
|
||||
|
|
@ -1013,6 +1035,8 @@
|
|||
get_pid_task
|
||||
get_random_bytes
|
||||
get_random_u32
|
||||
get_task_exe_file
|
||||
get_task_mm
|
||||
get_task_pid
|
||||
get_thermal_instance
|
||||
get_unmapped_area
|
||||
|
|
@ -1145,6 +1169,9 @@
|
|||
idr_preload
|
||||
idr_remove
|
||||
idr_replace
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_freq_khz_to_channel
|
||||
ieee80211_get_channel_khz
|
||||
iget5_locked
|
||||
ignore_console_lock_warning
|
||||
ihold
|
||||
|
|
@ -1297,6 +1324,7 @@
|
|||
jiffies_64_to_clock_t
|
||||
jiffies_to_msecs
|
||||
jiffies_to_usecs
|
||||
jiffies64_to_msecs
|
||||
kasprintf
|
||||
kern_path
|
||||
kernel_bind
|
||||
|
|
@ -1428,6 +1456,7 @@
|
|||
media_entity_pads_init
|
||||
media_entity_remove_links
|
||||
media_remove_intf_links
|
||||
memblock_free
|
||||
memchr
|
||||
memcmp
|
||||
memcpy
|
||||
|
|
@ -1441,6 +1470,9 @@
|
|||
memweight
|
||||
mfd_add_devices
|
||||
mfd_remove_devices
|
||||
mii_check_media
|
||||
mii_ethtool_gset
|
||||
mii_nway_restart
|
||||
mipi_dsi_create_packet
|
||||
mipi_dsi_dcs_set_display_brightness
|
||||
mipi_dsi_dcs_set_tear_off
|
||||
|
|
@ -1464,6 +1496,7 @@
|
|||
mmc_request_done
|
||||
mmc_send_tuning
|
||||
mmc_wait_for_req
|
||||
mmput
|
||||
mod_delayed_work_on
|
||||
mod_node_page_state
|
||||
mod_timer
|
||||
|
|
@ -1482,7 +1515,10 @@
|
|||
napi_gro_flush
|
||||
napi_gro_receive
|
||||
napi_schedule_prep
|
||||
netdev_err
|
||||
netdev_info
|
||||
netdev_update_features
|
||||
netdev_warn
|
||||
netif_carrier_off
|
||||
netif_carrier_on
|
||||
netif_device_attach
|
||||
|
|
@ -1490,8 +1526,10 @@
|
|||
netif_napi_add
|
||||
netif_napi_del
|
||||
netif_receive_skb
|
||||
netif_receive_skb_list
|
||||
netif_rx
|
||||
netif_rx_ni
|
||||
netif_schedule_queue
|
||||
netif_tx_wake_queue
|
||||
netlink_broadcast
|
||||
netlink_kernel_release
|
||||
|
|
@ -1558,6 +1596,7 @@
|
|||
of_get_child_by_name
|
||||
of_get_cpu_node
|
||||
of_get_dma_window
|
||||
of_get_mac_address
|
||||
of_get_named_gpio_flags
|
||||
of_get_next_available_child
|
||||
of_get_next_child
|
||||
|
|
@ -1780,8 +1819,11 @@
|
|||
proc_symlink
|
||||
proto_register
|
||||
proto_unregister
|
||||
pskb_expand_head
|
||||
put_device
|
||||
put_disk
|
||||
put_pid
|
||||
put_tty_driver
|
||||
put_unused_fd
|
||||
pwm_apply_state
|
||||
pwm_get_chip_data
|
||||
|
|
@ -1938,12 +1980,14 @@
|
|||
rtnl_lock
|
||||
rtnl_unlock
|
||||
save_stack_trace
|
||||
save_stack_trace_tsk
|
||||
sched_clock
|
||||
sched_setscheduler
|
||||
sched_setscheduler_nocheck
|
||||
sched_show_task
|
||||
schedule
|
||||
schedule_timeout
|
||||
schedule_timeout_interruptible
|
||||
schedule_timeout_uninterruptible
|
||||
scmd_printk
|
||||
scnprintf
|
||||
|
|
@ -1997,6 +2041,7 @@
|
|||
seq_putc
|
||||
seq_puts
|
||||
seq_read
|
||||
seq_release
|
||||
set_anon_super
|
||||
set_cpus_allowed_ptr
|
||||
set_normalized_timespec64
|
||||
|
|
@ -2202,6 +2247,7 @@
|
|||
sock_release
|
||||
sock_unregister
|
||||
sock_wfree
|
||||
softnet_data
|
||||
sort
|
||||
spi_bus_type
|
||||
spi_controller_resume
|
||||
|
|
@ -2293,6 +2339,12 @@
|
|||
system_wq
|
||||
tasklet_init
|
||||
tasklet_kill
|
||||
tcp_register_congestion_control
|
||||
tcp_reno_cong_avoid
|
||||
tcp_reno_ssthresh
|
||||
tcp_reno_undo_cwnd
|
||||
tcp_slow_start
|
||||
tcp_unregister_congestion_control
|
||||
thermal_cdev_update
|
||||
thermal_cooling_device_unregister
|
||||
thermal_of_cooling_device_register
|
||||
|
|
@ -2322,9 +2374,30 @@
|
|||
try_module_get
|
||||
try_wait_for_completion
|
||||
tty_flip_buffer_push
|
||||
tty_hangup
|
||||
tty_insert_flip_string_fixed_flag
|
||||
tty_kref_put
|
||||
tty_ldisc_deref
|
||||
tty_ldisc_ref
|
||||
tty_port_close
|
||||
tty_port_destroy
|
||||
tty_port_hangup
|
||||
tty_port_init
|
||||
tty_port_open
|
||||
tty_port_put
|
||||
tty_port_register_device
|
||||
tty_port_tty_get
|
||||
tty_port_tty_hangup
|
||||
tty_port_tty_wakeup
|
||||
tty_register_driver
|
||||
tty_set_operations
|
||||
tty_standard_install
|
||||
tty_std_termios
|
||||
tty_termios_baud_rate
|
||||
tty_termios_copy_hw
|
||||
tty_unregister_device
|
||||
tty_unregister_driver
|
||||
tty_vhangup
|
||||
typec_altmode_get_partner
|
||||
typec_altmode_update_active
|
||||
typec_get_drvdata
|
||||
|
|
@ -2408,6 +2481,7 @@
|
|||
usb_alloc_dev
|
||||
usb_alloc_streams
|
||||
usb_alloc_urb
|
||||
usb_altnum_to_altsetting
|
||||
usb_amd_dev_put
|
||||
usb_amd_pt_check_port
|
||||
usb_amd_quirk_pll_check
|
||||
|
|
@ -2417,8 +2491,10 @@
|
|||
usb_asmedia_modifyflowcontrol
|
||||
usb_assign_descriptors
|
||||
usb_autopm_get_interface
|
||||
usb_autopm_get_interface_async
|
||||
usb_autopm_get_interface_no_resume
|
||||
usb_autopm_put_interface
|
||||
usb_autopm_put_interface_async
|
||||
usb_autopm_put_interface_no_suspend
|
||||
usb_bulk_msg
|
||||
usb_choose_configuration
|
||||
|
|
@ -2469,6 +2545,7 @@
|
|||
usb_get_current_frame_number
|
||||
usb_get_dev
|
||||
usb_get_dr_mode
|
||||
usb_get_from_anchor
|
||||
usb_get_intf
|
||||
usb_get_maximum_speed
|
||||
usb_get_urb
|
||||
|
|
@ -2497,6 +2574,7 @@
|
|||
usb_kill_anchored_urbs
|
||||
usb_kill_urb
|
||||
usb_lock_device_for_reset
|
||||
usb_match_id
|
||||
usb_match_one_id
|
||||
usb_os_desc_prepare_interf_dir
|
||||
usb_otg_state_string
|
||||
|
|
@ -2522,15 +2600,48 @@
|
|||
usb_sg_cancel
|
||||
usb_sg_init
|
||||
usb_sg_wait
|
||||
usb_show_dynids
|
||||
usb_speed_string
|
||||
usb_store_new_id
|
||||
usb_string
|
||||
usb_string_id
|
||||
usb_submit_urb
|
||||
usb_unanchor_urb
|
||||
usb_unlink_urb
|
||||
usb_unpoison_urb
|
||||
usb_unregister_notify
|
||||
usb_wait_anchor_empty_timeout
|
||||
usb_wakeup_notification
|
||||
usbnet_change_mtu
|
||||
usbnet_defer_kevent
|
||||
usbnet_disconnect
|
||||
usbnet_get_drvinfo
|
||||
usbnet_get_endpoints
|
||||
usbnet_get_ethernet_addr
|
||||
usbnet_get_link
|
||||
usbnet_get_link_ksettings
|
||||
usbnet_get_msglevel
|
||||
usbnet_get_stats64
|
||||
usbnet_link_change
|
||||
usbnet_manage_power
|
||||
usbnet_nway_reset
|
||||
usbnet_open
|
||||
usbnet_probe
|
||||
usbnet_read_cmd
|
||||
usbnet_read_cmd_nopm
|
||||
usbnet_resume
|
||||
usbnet_set_link_ksettings
|
||||
usbnet_set_msglevel
|
||||
usbnet_skb_return
|
||||
usbnet_start_xmit
|
||||
usbnet_stop
|
||||
usbnet_suspend
|
||||
usbnet_tx_timeout
|
||||
usbnet_unlink_rx_urbs
|
||||
usbnet_update_max_qlen
|
||||
usbnet_write_cmd
|
||||
usbnet_write_cmd_async
|
||||
usbnet_write_cmd_nopm
|
||||
user_path_at_empty
|
||||
usleep_range
|
||||
v4l_bound_align_image
|
||||
|
|
@ -2668,6 +2779,7 @@
|
|||
wake_up_process
|
||||
wakeup_source_add
|
||||
wakeup_source_register
|
||||
wakeup_source_remove
|
||||
wakeup_source_unregister
|
||||
watchdog_init_timeout
|
||||
watchdog_register_device
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
BRANCH=android11-5.4
|
||||
KMI_GENERATION=1
|
||||
KMI_GENERATION=2
|
||||
|
||||
CC=clang
|
||||
LD=ld.lld
|
||||
|
|
|
|||
|
|
@ -47,6 +47,10 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_finish);
|
|||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_show_task);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ptype_head);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kfree_skb);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sk_alloc);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sk_free);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_nf_conn_alloc);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_nf_conn_free);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_arch_set_freq_scale);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_transaction_init);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_set_priority);
|
||||
|
|
@ -62,4 +66,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_printk_store);
|
|||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_regs);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sysrq_crash);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group);
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ static DEFINE_MUTEX(misc_mtx);
|
|||
/*
|
||||
* Assigned numbers, used for dynamic minors
|
||||
*/
|
||||
#define DYNAMIC_MINORS 64 /* like dynamic majors */
|
||||
#define DYNAMIC_MINORS 128 /* like dynamic majors */
|
||||
static DECLARE_BITMAP(misc_minors, DYNAMIC_MINORS);
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
#ifndef _FSCRYPT_PRIVATE_H
|
||||
#define _FSCRYPT_PRIVATE_H
|
||||
|
||||
#define FSCRYPT_NEED_OPS
|
||||
#include <linux/fscrypt.h>
|
||||
#include <linux/siphash.h>
|
||||
#include <crypto/hash.h>
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
#include <linux/compat.h>
|
||||
#endif
|
||||
|
||||
#define FSCRYPT_NEED_OPS
|
||||
#include <linux/fscrypt.h>
|
||||
#include <linux/fsverity.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
#include <linux/quotaops.h>
|
||||
#include <crypto/hash.h>
|
||||
|
||||
#define FSCRYPT_NEED_OPS
|
||||
#include <linux/fscrypt.h>
|
||||
#include <linux/fsverity.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
#include <linux/sched/signal.h>
|
||||
#include <linux/uio.h>
|
||||
#include <linux/miscdevice.h>
|
||||
#include <linux/namei.h>
|
||||
#include <linux/pagemap.h>
|
||||
#include <linux/file.h>
|
||||
#include <linux/slab.h>
|
||||
|
|
@ -1898,6 +1899,12 @@ static ssize_t fuse_dev_do_write(struct fuse_dev *fud,
|
|||
err = copy_out_args(cs, req->args, nbytes);
|
||||
fuse_copy_finish(cs);
|
||||
|
||||
if (!err && req->in.h.opcode == FUSE_CANONICAL_PATH) {
|
||||
char *path = (char *)req->args->out_args[0].value;
|
||||
path[req->args->out_args[0].size - 1] = 0;
|
||||
req->out.h.error = kern_path(path, 0, req->args->canonical_path);
|
||||
}
|
||||
|
||||
spin_lock(&fpq->lock);
|
||||
clear_bit(FR_LOCKED, &req->flags);
|
||||
if (!fpq->connected)
|
||||
|
|
|
|||
|
|
@ -298,6 +298,42 @@ static int fuse_dentry_delete(const struct dentry *dentry)
|
|||
return time_before64(fuse_dentry_time(dentry), get_jiffies_64());
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the canonical path. Since we must translate to a path, this must be done
|
||||
* in the context of the userspace daemon, however, the userspace daemon cannot
|
||||
* look up paths on its own. Instead, we handle the lookup as a special case
|
||||
* inside of the write request.
|
||||
*/
|
||||
static void fuse_dentry_canonical_path(const struct path *path, struct path *canonical_path) {
|
||||
struct inode *inode = d_inode(path->dentry);
|
||||
struct fuse_conn *fc = get_fuse_conn(inode);
|
||||
FUSE_ARGS(args);
|
||||
char *path_name;
|
||||
int err;
|
||||
|
||||
path_name = (char*)__get_free_page(GFP_KERNEL);
|
||||
if (!path_name)
|
||||
goto default_path;
|
||||
|
||||
args.opcode = FUSE_CANONICAL_PATH;
|
||||
args.nodeid = get_node_id(inode);
|
||||
args.in_numargs = 0;
|
||||
args.out_numargs = 1;
|
||||
args.out_args[0].size = PATH_MAX;
|
||||
args.out_args[0].value = path_name;
|
||||
args.canonical_path = canonical_path;
|
||||
args.out_argvar = 1;
|
||||
|
||||
err = fuse_simple_request(fc, &args);
|
||||
free_page((unsigned long)path_name);
|
||||
if (err > 0)
|
||||
return;
|
||||
default_path:
|
||||
canonical_path->dentry = path->dentry;
|
||||
canonical_path->mnt = path->mnt;
|
||||
path_get(canonical_path);
|
||||
}
|
||||
|
||||
const struct dentry_operations fuse_dentry_operations = {
|
||||
.d_revalidate = fuse_dentry_revalidate,
|
||||
.d_delete = fuse_dentry_delete,
|
||||
|
|
@ -305,6 +341,7 @@ const struct dentry_operations fuse_dentry_operations = {
|
|||
.d_init = fuse_dentry_init,
|
||||
.d_release = fuse_dentry_release,
|
||||
#endif
|
||||
.d_canonical_path = fuse_dentry_canonical_path,
|
||||
};
|
||||
|
||||
const struct dentry_operations fuse_root_dentry_operations = {
|
||||
|
|
|
|||
|
|
@ -253,6 +253,9 @@ struct fuse_args {
|
|||
struct fuse_in_arg in_args[3];
|
||||
struct fuse_arg out_args[2];
|
||||
void (*end)(struct fuse_conn *fc, struct fuse_args *args, int error);
|
||||
|
||||
/* Path used for completing d_canonical_path */
|
||||
struct path *canonical_path;
|
||||
};
|
||||
|
||||
struct fuse_args_pages {
|
||||
|
|
|
|||
|
|
@ -701,6 +701,8 @@ SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname,
|
|||
struct fsnotify_group *group;
|
||||
struct inode *inode;
|
||||
struct path path;
|
||||
struct path alteredpath;
|
||||
struct path *canonical_path = &path;
|
||||
struct fd f;
|
||||
int ret;
|
||||
unsigned flags = 0;
|
||||
|
|
@ -747,13 +749,23 @@ SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname,
|
|||
if (ret)
|
||||
goto fput_and_out;
|
||||
|
||||
/* support stacked filesystems */
|
||||
if (path.dentry && path.dentry->d_op) {
|
||||
if (path.dentry->d_op->d_canonical_path) {
|
||||
path.dentry->d_op->d_canonical_path(&path,
|
||||
&alteredpath);
|
||||
canonical_path = &alteredpath;
|
||||
path_put(&path);
|
||||
}
|
||||
}
|
||||
|
||||
/* inode held in place by reference to path; group by fget on fd */
|
||||
inode = path.dentry->d_inode;
|
||||
inode = canonical_path->dentry->d_inode;
|
||||
group = f.file->private_data;
|
||||
|
||||
/* create/update an inode mark */
|
||||
ret = inotify_update_watch(group, inode, mask);
|
||||
path_put(&path);
|
||||
path_put(canonical_path);
|
||||
fput_and_out:
|
||||
fdput(f);
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include <crypto/hash.h>
|
||||
#include <crypto/algapi.h>
|
||||
|
||||
#define FSCRYPT_NEED_OPS
|
||||
#include <linux/fscrypt.h>
|
||||
|
||||
#include "ubifs-media.h"
|
||||
|
|
|
|||
|
|
@ -151,6 +151,7 @@ struct dentry_operations {
|
|||
struct vfsmount *(*d_automount)(struct path *);
|
||||
int (*d_manage)(const struct path *, bool);
|
||||
struct dentry *(*d_real)(struct dentry *, const struct inode *);
|
||||
void (*d_canonical_path)(const struct path *, struct path *);
|
||||
|
||||
ANDROID_KABI_RESERVE(1);
|
||||
ANDROID_KABI_RESERVE(2);
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ struct fscrypt_name {
|
|||
*/
|
||||
#define FS_CFLG_OWN_PAGES (1U << 1)
|
||||
|
||||
#ifdef FSCRYPT_NEED_OPS
|
||||
/*
|
||||
* crypto operations for filesystems
|
||||
*/
|
||||
|
|
@ -74,6 +75,7 @@ struct fscrypt_operations {
|
|||
void (*get_devices)(struct super_block *sb,
|
||||
struct request_queue **devs);
|
||||
};
|
||||
#endif
|
||||
|
||||
static inline bool fscrypt_has_encryption_key(const struct inode *inode)
|
||||
{
|
||||
|
|
@ -97,6 +99,7 @@ static inline bool fscrypt_needs_contents_encryption(const struct inode *inode)
|
|||
return IS_ENCRYPTED(inode) && S_ISREG(inode->i_mode);
|
||||
}
|
||||
|
||||
#ifdef FSCRYPT_NEED_OPS
|
||||
static inline const union fscrypt_context *
|
||||
fscrypt_get_dummy_context(struct super_block *sb)
|
||||
{
|
||||
|
|
@ -104,6 +107,7 @@ fscrypt_get_dummy_context(struct super_block *sb)
|
|||
return NULL;
|
||||
return sb->s_cop->get_dummy_context(sb);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* When d_splice_alias() moves a directory's encrypted alias to its decrypted
|
||||
|
|
@ -801,6 +805,7 @@ static inline int fscrypt_prepare_setattr(struct dentry *dentry,
|
|||
* -ENOKEY if the encryption key is missing, or another -errno code if a problem
|
||||
* occurred while setting up the encryption key.
|
||||
*/
|
||||
#ifdef FSCRYPT_NEED_OPS
|
||||
static inline int fscrypt_prepare_symlink(struct inode *dir,
|
||||
const char *target,
|
||||
unsigned int len,
|
||||
|
|
@ -816,6 +821,7 @@ static inline int fscrypt_prepare_symlink(struct inode *dir,
|
|||
return -ENAMETOOLONG;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* fscrypt_encrypt_symlink() - encrypt the symlink target if needed
|
||||
|
|
|
|||
|
|
@ -262,6 +262,7 @@ static inline void fsnotify_modify(struct file *file)
|
|||
static inline void fsnotify_open(struct file *file)
|
||||
{
|
||||
const struct path *path = &file->f_path;
|
||||
struct path lower_path;
|
||||
struct inode *inode = file_inode(file);
|
||||
__u32 mask = FS_OPEN;
|
||||
|
||||
|
|
@ -270,6 +271,12 @@ static inline void fsnotify_open(struct file *file)
|
|||
if (file->f_flags & __FMODE_EXEC)
|
||||
mask |= FS_OPEN_EXEC;
|
||||
|
||||
if (path->dentry->d_op && path->dentry->d_op->d_canonical_path) {
|
||||
path->dentry->d_op->d_canonical_path(path, &lower_path);
|
||||
fsnotify_parent(&lower_path, NULL, mask);
|
||||
fsnotify(lower_path.dentry->d_inode, mask, &lower_path, FSNOTIFY_EVENT_PATH, NULL, 0);
|
||||
path_put(&lower_path);
|
||||
}
|
||||
fsnotify_path(inode, path, mask);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -318,7 +318,7 @@ struct pcmcia_device_id {
|
|||
#define INPUT_DEVICE_ID_LED_MAX 0x0f
|
||||
#define INPUT_DEVICE_ID_SND_MAX 0x07
|
||||
#define INPUT_DEVICE_ID_FF_MAX 0x7f
|
||||
#define INPUT_DEVICE_ID_SW_MAX 0x10
|
||||
#define INPUT_DEVICE_ID_SW_MAX 0x3f
|
||||
#define INPUT_DEVICE_ID_PROP_MAX 0x1f
|
||||
|
||||
#define INPUT_DEVICE_ID_MATCH_BUS 1
|
||||
|
|
|
|||
|
|
@ -346,11 +346,6 @@ struct klp_modinfo {
|
|||
};
|
||||
#endif
|
||||
|
||||
struct module_kabi_preserve_1 {
|
||||
u64 using_gplonly_symbols:1;
|
||||
u64 free:63;
|
||||
};
|
||||
|
||||
struct module {
|
||||
enum module_state state;
|
||||
|
||||
|
|
@ -387,6 +382,7 @@ struct module {
|
|||
unsigned int num_gpl_syms;
|
||||
const struct kernel_symbol *gpl_syms;
|
||||
const s32 *gpl_crcs;
|
||||
bool using_gplonly_symbols;
|
||||
|
||||
#ifdef CONFIG_UNUSED_SYMBOLS
|
||||
/* unused exported symbols. */
|
||||
|
|
@ -520,7 +516,7 @@ struct module {
|
|||
struct error_injection_entry *ei_funcs;
|
||||
unsigned int num_ei_funcs;
|
||||
#endif
|
||||
ANDROID_KABI_USE(1, struct module_kabi_preserve_1 m1);
|
||||
ANDROID_KABI_RESERVE(1);
|
||||
ANDROID_KABI_RESERVE(2);
|
||||
ANDROID_KABI_RESERVE(3);
|
||||
ANDROID_KABI_RESERVE(4);
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@
|
|||
#include <linux/netfilter/nf_conntrack_common.h>
|
||||
#endif
|
||||
#include <linux/android_kabi.h>
|
||||
#include <linux/android_vendor.h>
|
||||
|
||||
/* The interface for checksum offload between the stack and networking drivers
|
||||
* is as follows...
|
||||
|
|
@ -530,6 +531,8 @@ struct skb_shared_info {
|
|||
* remains valid until skb destructor */
|
||||
void * destructor_arg;
|
||||
|
||||
ANDROID_VENDOR_DATA_ARRAY(1, 3);
|
||||
|
||||
/* must be last field, see pskb_expand_head() */
|
||||
skb_frag_t frags[MAX_SKB_FRAGS];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@
|
|||
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/android_kabi.h>
|
||||
#include <linux/android_vendor.h>
|
||||
|
||||
#include <linux/netfilter/nf_conntrack_common.h>
|
||||
#include <linux/netfilter/nf_conntrack_tcp.h>
|
||||
|
|
@ -105,6 +107,11 @@ struct nf_conn {
|
|||
|
||||
/* Storage reserved for other modules, must be the last member */
|
||||
union nf_conntrack_proto proto;
|
||||
|
||||
ANDROID_KABI_RESERVE(1);
|
||||
ANDROID_KABI_RESERVE(2);
|
||||
|
||||
ANDROID_VENDOR_DATA(1);
|
||||
};
|
||||
|
||||
static inline struct nf_conn *
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@
|
|||
#include <net/smc.h>
|
||||
#include <net/l3mdev.h>
|
||||
#include <linux/android_kabi.h>
|
||||
#include <linux/android_vendor.h>
|
||||
|
||||
/*
|
||||
* This structure really needs to be cleaned up.
|
||||
|
|
@ -521,6 +522,8 @@ struct sock {
|
|||
ANDROID_KABI_RESERVE(6);
|
||||
ANDROID_KABI_RESERVE(7);
|
||||
ANDROID_KABI_RESERVE(8);
|
||||
|
||||
ANDROID_VENDOR_DATA(1);
|
||||
};
|
||||
|
||||
enum sk_pacing {
|
||||
|
|
|
|||
|
|
@ -13,14 +13,29 @@
|
|||
struct packet_type;
|
||||
struct list_head;
|
||||
struct sk_buff;
|
||||
struct sock;
|
||||
struct nf_conn;
|
||||
|
||||
DECLARE_HOOK(android_vh_ptype_head,
|
||||
TP_PROTO(const struct packet_type *pt, struct list_head *vendor_pt),
|
||||
TP_ARGS(pt, vendor_pt));
|
||||
DECLARE_HOOK(android_vh_kfree_skb,
|
||||
TP_PROTO(struct sk_buff *skb), TP_ARGS(skb));
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_sk_alloc,
|
||||
TP_PROTO(struct sock *sock), TP_ARGS(sock), 1);
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_sk_free,
|
||||
TP_PROTO(struct sock *sock), TP_ARGS(sock), 1);
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_nf_conn_alloc,
|
||||
TP_PROTO(struct nf_conn *nf_conn), TP_ARGS(nf_conn), 1);
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_nf_conn_free,
|
||||
TP_PROTO(struct nf_conn *nf_conn), TP_ARGS(nf_conn), 1);
|
||||
#else
|
||||
#define trace_android_vh_ptype_head(pt, vendor_pt)
|
||||
#define trace_android_vh_kfree_skb(skb)
|
||||
#define trace_android_rvh_sk_alloc(sock)
|
||||
#define trace_android_rvh_sk_free(sock)
|
||||
#define trace_android_rvh_sk_alloc(nf_conn)
|
||||
#define trace_android_rvh_sk_free(nf_conn)
|
||||
#endif
|
||||
#endif /* _TRACE_HOOK_NET_VH_H */
|
||||
/* This part must be outside protection */
|
||||
|
|
|
|||
|
|
@ -465,6 +465,7 @@ enum fuse_opcode {
|
|||
FUSE_COPY_FILE_RANGE = 47,
|
||||
FUSE_SETUPMAPPING = 48,
|
||||
FUSE_REMOVEMAPPING = 49,
|
||||
FUSE_CANONICAL_PATH = 2016,
|
||||
|
||||
/* CUSE specific operations */
|
||||
CUSE_INIT = 4096,
|
||||
|
|
|
|||
|
|
@ -809,7 +809,7 @@
|
|||
#define SW_MUTE_DEVICE 0x0e /* set = device disabled */
|
||||
#define SW_PEN_INSERTED 0x0f /* set = pen inserted */
|
||||
#define SW_MACHINE_COVER 0x10 /* set = cover closed */
|
||||
#define SW_MAX 0x10
|
||||
#define SW_MAX 0x3f
|
||||
#define SW_CNT (SW_MAX+1)
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1433,7 +1433,7 @@ static bool inherit_taint(struct module *mod, struct module *owner)
|
|||
if (!owner || !test_bit(TAINT_PROPRIETARY_MODULE, &owner->taints))
|
||||
return true;
|
||||
|
||||
if (mod->m1.using_gplonly_symbols) {
|
||||
if (mod->using_gplonly_symbols) {
|
||||
pr_err("%s: module using GPL-only symbols uses symbols from proprietary module %s.\n",
|
||||
mod->name, owner->name);
|
||||
return false;
|
||||
|
|
@ -1472,7 +1472,7 @@ static const struct kernel_symbol *resolve_symbol(struct module *mod,
|
|||
goto unlock;
|
||||
|
||||
if (license == GPL_ONLY)
|
||||
mod->m1.using_gplonly_symbols = true;
|
||||
mod->using_gplonly_symbols = true;
|
||||
|
||||
if (!inherit_taint(mod, owner)) {
|
||||
sym = NULL;
|
||||
|
|
|
|||
|
|
@ -134,6 +134,7 @@
|
|||
#include <net/bpf_sk_storage.h>
|
||||
|
||||
#include <trace/events/sock.h>
|
||||
#include <trace/hooks/net.h>
|
||||
|
||||
#include <net/tcp.h>
|
||||
#include <net/busy_poll.h>
|
||||
|
|
@ -1604,6 +1605,8 @@ static struct sock *sk_prot_alloc(struct proto *prot, gfp_t priority,
|
|||
if (security_sk_alloc(sk, family, priority))
|
||||
goto out_free;
|
||||
|
||||
trace_android_rvh_sk_alloc(sk);
|
||||
|
||||
if (!try_module_get(prot->owner))
|
||||
goto out_free_sec;
|
||||
sk_tx_queue_clear(sk);
|
||||
|
|
@ -1613,6 +1616,7 @@ static struct sock *sk_prot_alloc(struct proto *prot, gfp_t priority,
|
|||
|
||||
out_free_sec:
|
||||
security_sk_free(sk);
|
||||
trace_android_rvh_sk_free(sk);
|
||||
out_free:
|
||||
if (slab != NULL)
|
||||
kmem_cache_free(slab, sk);
|
||||
|
|
@ -1632,6 +1636,7 @@ static void sk_prot_free(struct proto *prot, struct sock *sk)
|
|||
cgroup_sk_free(&sk->sk_cgrp_data);
|
||||
mem_cgroup_sk_free(sk);
|
||||
security_sk_free(sk);
|
||||
trace_android_rvh_sk_free(sk);
|
||||
if (slab != NULL)
|
||||
kmem_cache_free(slab, sk);
|
||||
else
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
#include <linux/mm.h>
|
||||
#include <linux/nsproxy.h>
|
||||
#include <linux/rculist_nulls.h>
|
||||
#include <trace/hooks/net.h>
|
||||
|
||||
#include <net/netfilter/nf_conntrack.h>
|
||||
#include <net/netfilter/nf_conntrack_l4proto.h>
|
||||
|
|
@ -1387,6 +1388,8 @@ __nf_conntrack_alloc(struct net *net,
|
|||
|
||||
nf_ct_zone_add(ct, zone);
|
||||
|
||||
trace_android_rvh_nf_conn_alloc(ct);
|
||||
|
||||
/* Because we use RCU lookups, we set ct_general.use to zero before
|
||||
* this is inserted in any list.
|
||||
*/
|
||||
|
|
@ -1420,6 +1423,7 @@ void nf_conntrack_free(struct nf_conn *ct)
|
|||
nf_ct_ext_free(ct);
|
||||
kmem_cache_free(nf_conntrack_cachep, ct);
|
||||
smp_mb__before_atomic();
|
||||
trace_android_rvh_nf_conn_free(ct);
|
||||
atomic_dec(&net->ct.count);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nf_conntrack_free);
|
||||
|
|
|
|||
Loading…
Reference in a new issue