Merge branch 'android11-5.4' into 'android11-5.4-lts'

Sync up with android11-5.4 for the following commits:

ea5b4af68f ANDROID: Update the KMI_GENERATION after KMI changes on October 31
40799f06ce ANDROID: Input: bump SW_MAX up to 0x3f
d1f4f1327d ANDROID: GKI: ABI update for Oct 31 KABI break
95dc566101 ANDROID: GKI: add Android ABI padding to struct nf_conn
0709341102 ANDROID: GKI: add vendor padding variable in struct skb_shared_info
01435b2e91 ANDROID: GKI: net: add vendor hooks for 'struct nf_conn' lifecycle
0bc7257c7f ANDROID: GKI: add vendor padding variable in struct nf_conn
20dd49792a ANDROID: GKI: net: add vendor hooks for 'struct sock' lifecycle
b3d5bbd878 ANDROID: GKI: add vendor padding variable in struct sock
24ab59f6bb ANDROID: fuse: Add support for d_canonical_path
854f380681 ANDROID: vfs: add d_canonical_path for stacked filesystem support
aa445f97a0 ANDROID: fscrypt: prevent fscrypt_operations from affecting KMI
d2a52d0eaa Revert "ANDROID: GKI: fix ABI breakage in module.h"
a273b843ac ANDROID: ABI: update allowed list for galaxy
6ca1e28c7f FROMLIST: char: misc: increase DYNAMIC_MINORS value

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I0fafb78b93dca8fd7b76c5808c89e32ae640a75e
This commit is contained in:
Greg Kroah-Hartman 2020-11-01 12:05:12 +01:00
commit ec9ecb5d11
27 changed files with 4940 additions and 5264 deletions

File diff suppressed because it is too large Load diff

View file

@ -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

View file

@ -1,5 +1,5 @@
BRANCH=android11-5.4
KMI_GENERATION=1
KMI_GENERATION=2
CC=clang
LD=ld.lld

View file

@ -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);

View file

@ -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

View file

@ -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>

View file

@ -40,6 +40,7 @@
#include <linux/compat.h>
#endif
#define FSCRYPT_NEED_OPS
#include <linux/fscrypt.h>
#include <linux/fsverity.h>

View file

@ -24,6 +24,7 @@
#include <linux/quotaops.h>
#include <crypto/hash.h>
#define FSCRYPT_NEED_OPS
#include <linux/fscrypt.h>
#include <linux/fsverity.h>

View file

@ -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)

View file

@ -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 = {

View file

@ -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 {

View file

@ -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;

View file

@ -31,6 +31,7 @@
#include <crypto/hash.h>
#include <crypto/algapi.h>
#define FSCRYPT_NEED_OPS
#include <linux/fscrypt.h>
#include "ubifs-media.h"

View file

@ -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);

View file

@ -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

View file

@ -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);
}

View file

@ -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

View file

@ -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);

View file

@ -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];
};

View file

@ -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 *

View file

@ -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 {

View file

@ -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 */

View file

@ -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,

View file

@ -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)
/*

View file

@ -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;

View file

@ -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

View file

@ -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);