From 6cf4b652443b20d2da44a1620a09ab8892a954f1 Mon Sep 17 00:00:00 2001 From: Yunfei Wang Date: Thu, 4 Nov 2021 19:10:12 +0800 Subject: [PATCH 01/24] FROMGIT: dma-buf: acquire name lock before read/write dma_buf.name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Because dma-buf.name can be freed in func: "dma_buf_set_name", so, we need to acquire lock first before we read/write dma_buf.name to prevent Use After Free(UAF) issue. Signed-off-by: Guangming Cao Reviewed-by: Christian König Signed-off-by: Christian König Link: https://lore.kernel.org/lkml/20211029021541.101157-1-guangming.cao@mediatek.com/T/ Bug: 205102180 (cherry picked from commit 8c0fd126263730c35927cc8445727afb79219a19 https://cgit.freedesktop.org/drm/drm-misc) Change-Id: I4ba911137ad9dae7682230245d2fa2a19f7c209f Signed-off-by: Yunfei Wang --- drivers/dma-buf/dma-buf.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index 0ee38382ba17..e4fdefbfe107 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -1425,6 +1425,7 @@ static int dma_buf_debug_show(struct seq_file *s, void *unused) if (ret) goto error_unlock; + spin_lock(&buf_obj->name_lock); seq_printf(s, "%08zu\t%08x\t%08x\t%08ld\t%s\t%08lu\t%s\n", buf_obj->size, buf_obj->file->f_flags, buf_obj->file->f_mode, @@ -1432,6 +1433,7 @@ static int dma_buf_debug_show(struct seq_file *s, void *unused) buf_obj->exp_name, file_inode(buf_obj->file)->i_ino, buf_obj->name ?: ""); + spin_unlock(&buf_obj->name_lock); robj = buf_obj->resv; while (true) { From a61d61bab7c3d221d5d2250eacab2e4e9f59b252 Mon Sep 17 00:00:00 2001 From: Liujie Xie Date: Thu, 11 Nov 2021 22:15:49 +0800 Subject: [PATCH 02/24] ANDROID: vendor_hooks: Add hooks to record the time of the process in various states These hooks will do the following works: a) record the time of the process in various states b) Make corresponding optimization strategies in different hooks Bug: 205938967 Signed-off-by: Liujie Xie Change-Id: Ia3c47bbf0aadd17337ce18fd910343b1b8c3ef93 --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/sched.h | 4 ++++ kernel/sched/fair.c | 2 ++ kernel/sched/rt.c | 2 ++ 4 files changed, 9 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 1f6ac9318411..d5fbbfd703fc 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -312,6 +312,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dequeue_entity); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_entity_tick); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_enqueue_task_fair); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dequeue_task_fair); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_stat_runtime_rt); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_prepare_update_load_avg_se); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_finish_update_load_avg_se); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_selinux_is_initialized); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 3b7d022c4328..78f57b106e6c 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -354,6 +354,10 @@ DECLARE_HOOK(android_vh_prepare_update_load_avg_se, TP_PROTO(struct sched_entity *se, int flags), TP_ARGS(se, flags)); +DECLARE_HOOK(android_vh_sched_stat_runtime_rt, + TP_PROTO(struct task_struct *tsk, u64 delta), + TP_ARGS(tsk, delta)); + DECLARE_HOOK(android_vh_finish_update_load_avg_se, TP_PROTO(struct sched_entity *se, int flags), TP_ARGS(se, flags)); diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 74ee2d1d16ce..8b45d14616ee 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -24,6 +24,8 @@ #include +EXPORT_TRACEPOINT_SYMBOL_GPL(sched_stat_runtime); + /* * Targeted preemption latency for CPU-bound tasks: * diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index da40e5f07a57..1c4b0b14777f 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -1026,6 +1026,8 @@ static void update_curr_rt(struct rq *rq) curr->se.exec_start = now; cgroup_account_cputime(curr, delta_exec); + trace_android_vh_sched_stat_runtime_rt(curr, delta_exec); + if (!rt_bandwidth_enabled()) return; From 0db69258686618687ccba6fef65e1f5d602c7515 Mon Sep 17 00:00:00 2001 From: xieliujie Date: Thu, 11 Nov 2021 09:57:31 +0800 Subject: [PATCH 03/24] ANDROID: vendor_hooks: export get_wchan Export get_wchan to get the block reason Bug: 205684022 Signed-off-by: xieliujie Change-Id: I7b65bb502b805e7dac13e5f9d725da1ff70fe306 --- arch/arm64/kernel/process.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index 9a545ebc3661..52608dd0cdde 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -625,6 +625,7 @@ out: put_task_stack(p); return ret; } +EXPORT_SYMBOL_GPL(get_wchan); unsigned long arch_align_stack(unsigned long sp) { From 054a3c228a73d76389cc0cf9ad9073f9cdd7f86b Mon Sep 17 00:00:00 2001 From: xieliujie Date: Thu, 11 Nov 2021 11:39:01 +0800 Subject: [PATCH 04/24] ANDROID: GKI: Update symbols to symbol list Update get_wchan to symbol list externed by oem modules. Leaf changes summary: 1 artifact changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 1 Added function: [A] 'function unsigned long int get_wchan(task_struct*)' Bug: 205684022 Signed-off-by: xieliujie Change-Id: I2c1f5821a7ab354552a87ad4aa6aaa2336d74424 --- android/abi_gki_aarch64.xml | 149 ++++++++++++++++++---------------- android/abi_gki_aarch64_oplus | 1 + 2 files changed, 78 insertions(+), 72 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index a3abbe5acc40..ff24f8ca46e1 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -2413,6 +2413,7 @@ + @@ -113098,10 +113099,10 @@ - - - - + + + + @@ -116333,8 +116334,8 @@ - - + + @@ -119434,13 +119435,13 @@ - - - - + + + + - + @@ -119490,9 +119491,9 @@ - - - + + + @@ -119507,12 +119508,12 @@ - - + + - - + + @@ -119534,12 +119535,12 @@ - - + + - - + + @@ -119547,12 +119548,12 @@ - - + + - - + + @@ -121995,12 +121996,12 @@ - - - - - - + + + + + + @@ -126422,6 +126423,10 @@ + + + + @@ -138772,63 +138777,63 @@ - - - - + + + + - - + + - - - - - + + + + + - - - - - - - + + + + + + + - - + + - - + + - - + + - - - - - - - - - + + + + + + + + + - - + + - - - + + + @@ -138840,8 +138845,8 @@ - - + + diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index 793058c27644..08f0c30078da 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -974,6 +974,7 @@ get_user_pages get_user_pages_remote get_vaddr_frames + get_wchan get_zeroed_page gic_nonsecure_priorities gov_attr_set_get From 7e2fbdaeabb31251f42e38bed0ae0b660408f8e6 Mon Sep 17 00:00:00 2001 From: Liujie Xie Date: Thu, 11 Nov 2021 17:05:49 +0800 Subject: [PATCH 05/24] ANDROID: vendor_hooks: Add hooks for frequency optimization These hooks will do the following works: a) Record the number of times when target_freq being clamped b) Record the number of times when target_freq is greater than policy->cur c) Make corresponding optimization strategies in different hooks Bug: 205906618 Signed-off-by: Liujie Xie Change-Id: I8eba66fd0c6d36393ca39045cf228b659834e0ae Signed-off-by: xieliujie --- drivers/android/vendor_hooks.c | 3 +++ drivers/cpufreq/cpufreq.c | 6 ++++++ include/trace/hooks/cpufreq.h | 15 +++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index d5fbbfd703fc..952053d4f5fa 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -136,6 +136,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_suspend_epoch_val); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_resume_epoch_val); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_max_freq); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_table_limits); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpufreq_resolve_freq); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpufreq_fast_switch); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpufreq_target); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_newidle_balance); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_nohz_balancer_kick); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_rebalance_domains); diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index f0ec98dbfc96..5ea258839bcc 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -543,7 +543,10 @@ EXPORT_SYMBOL_GPL(cpufreq_disable_fast_switch); unsigned int cpufreq_driver_resolve_freq(struct cpufreq_policy *policy, unsigned int target_freq) { + unsigned int old_target_freq = target_freq; + target_freq = clamp_val(target_freq, policy->min, policy->max); + trace_android_vh_cpufreq_resolve_freq(policy, target_freq, old_target_freq); policy->cached_target_freq = target_freq; if (cpufreq_driver->target_index) { @@ -2094,9 +2097,11 @@ unsigned int cpufreq_driver_fast_switch(struct cpufreq_policy *policy, unsigned int target_freq) { unsigned int freq; + unsigned int old_target_freq = target_freq; int cpu; target_freq = clamp_val(target_freq, policy->min, policy->max); + trace_android_vh_cpufreq_fast_switch(policy, target_freq, old_target_freq); freq = cpufreq_driver->fast_switch(policy, target_freq); if (!freq) @@ -2213,6 +2218,7 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy, /* Make sure that target_freq is within supported range */ target_freq = clamp_val(target_freq, policy->min, policy->max); + trace_android_vh_cpufreq_target(policy, target_freq, old_target_freq); pr_debug("target for CPU %u: %u kHz, relation %u, requested %u kHz\n", policy->cpu, target_freq, relation, old_target_freq); diff --git a/include/trace/hooks/cpufreq.h b/include/trace/hooks/cpufreq.h index 500c96ac7776..5e20f7d00d3d 100644 --- a/include/trace/hooks/cpufreq.h +++ b/include/trace/hooks/cpufreq.h @@ -31,6 +31,21 @@ DECLARE_HOOK(android_vh_cpufreq_acct_update_power, DECLARE_RESTRICTED_HOOK(android_rvh_cpufreq_transition, TP_PROTO(struct cpufreq_policy *policy), TP_ARGS(policy), 1); + +DECLARE_HOOK(android_vh_cpufreq_resolve_freq, + TP_PROTO(struct cpufreq_policy *policy, unsigned int target_freq, + unsigned int old_target_freq), + TP_ARGS(policy, target_freq, old_target_freq)); + +DECLARE_HOOK(android_vh_cpufreq_fast_switch, + TP_PROTO(struct cpufreq_policy *policy, unsigned int target_freq, + unsigned int old_target_freq), + TP_ARGS(policy, target_freq, old_target_freq)); + +DECLARE_HOOK(android_vh_cpufreq_target, + TP_PROTO(struct cpufreq_policy *policy, unsigned int target_freq, + unsigned int old_target_freq), + TP_ARGS(policy, target_freq, old_target_freq)); /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_CPUFREQ_H */ From d492977395503ab74263affc531509f2865b681a Mon Sep 17 00:00:00 2001 From: Todd Kjos Date: Tue, 12 Oct 2021 09:56:12 -0700 Subject: [PATCH 06/24] BACKPORT: binder: use euid from cred instead of using task Save the 'struct cred' associated with a binder process at initial open to avoid potential race conditions when converting to an euid. Set a transaction's sender_euid from the 'struct cred' saved at binder_open() instead of looking up the euid from the binder proc's 'struct task'. This ensures the euid is associated with the security context that of the task that opened binder. Cc: stable@vger.kernel.org # 4.4+ Fixes: 457b9a6f09f0 ("Staging: android: add binder driver") Signed-off-by: Todd Kjos Suggested-by: Stephen Smalley Suggested-by: Jann Horn Acked-by: Casey Schaufler Signed-off-by: Paul Moore Bug: 200688826 (cherry picked from commit 29bc22ac5e5bc63275e850f0c8fc549e3d0e306b) [ refactored to avoid changing KMI: struct binder_proc ] Change-Id: Icaf996a7f5543b7d6943dff3cbe89bfc3614044c --- drivers/android/binder.c | 12 +++++++++--- drivers/android/binder_internal.h | 23 +++++++++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 2cc96a0e75ae..2d2457cc0752 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -2842,7 +2842,7 @@ static void binder_transaction(struct binder_proc *proc, t->from = thread; else t->from = NULL; - t->sender_euid = task_euid(proc->tsk); + t->sender_euid = binder_get_cred(proc)->euid; t->to_proc = target_proc; t->to_thread = target_thread; t->code = tr->code; @@ -4486,6 +4486,8 @@ static struct binder_thread *binder_get_thread(struct binder_proc *proc) static void binder_free_proc(struct binder_proc *proc) { struct binder_device *device; + struct binder_proc_ext *eproc = + container_of(proc, struct binder_proc_ext, proc); BUG_ON(!list_empty(&proc->todo)); BUG_ON(!list_empty(&proc->delivered_death)); @@ -4499,8 +4501,9 @@ static void binder_free_proc(struct binder_proc *proc) } binder_alloc_deferred_release(&proc->alloc); put_task_struct(proc->tsk); + put_cred(eproc->cred); binder_stats_deleted(BINDER_STAT_PROC); - kfree(proc); + kfree(eproc); } static void binder_free_thread(struct binder_thread *thread) @@ -5187,6 +5190,7 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma) static int binder_open(struct inode *nodp, struct file *filp) { struct binder_proc *proc, *itr; + struct binder_proc_ext *eproc; struct binder_device *binder_dev; struct binderfs_info *info; struct dentry *binder_binderfs_dir_entry_proc = NULL; @@ -5195,13 +5199,15 @@ static int binder_open(struct inode *nodp, struct file *filp) binder_debug(BINDER_DEBUG_OPEN_CLOSE, "%s: %d:%d\n", __func__, current->group_leader->pid, current->pid); - proc = kzalloc(sizeof(*proc), GFP_KERNEL); + eproc = kzalloc(sizeof(*eproc), GFP_KERNEL); + proc = &eproc->proc; if (proc == NULL) return -ENOMEM; spin_lock_init(&proc->inner_lock); spin_lock_init(&proc->outer_lock); get_task_struct(current->group_leader); proc->tsk = current->group_leader; + eproc->cred = get_cred(filp->f_cred); INIT_LIST_HEAD(&proc->todo); init_waitqueue_head(&proc->freeze_wait); if (binder_supported_policy(current->policy)) { diff --git a/drivers/android/binder_internal.h b/drivers/android/binder_internal.h index 8508a7e45865..93f02395b0d7 100644 --- a/drivers/android/binder_internal.h +++ b/drivers/android/binder_internal.h @@ -473,6 +473,29 @@ struct binder_proc { bool oneway_spam_detection_enabled; }; +/** + * struct binder_proc_ext - binder process bookkeeping + * @proc: element for binder_procs list + * @cred struct cred associated with the `struct file` + * in binder_open() + * (invariant after initialized) + * + * Extended binder_proc -- needed to add the "cred" field without + * changing the KMI for binder_proc. + */ +struct binder_proc_ext { + struct binder_proc proc; + const struct cred *cred; +}; + +static inline const struct cred *binder_get_cred(struct binder_proc *proc) +{ + struct binder_proc_ext *eproc; + + eproc = container_of(proc, struct binder_proc_ext, proc); + return eproc->cred; +} + /** * struct binder_thread - binder thread bookkeeping * @proc: binder process for this thread From 3af7a2f6102338563cec384e4f80b4bcb81d16ca Mon Sep 17 00:00:00 2001 From: Todd Kjos Date: Tue, 12 Oct 2021 09:56:13 -0700 Subject: [PATCH 07/24] BACKPORT: binder: use cred instead of task for selinux checks Since binder was integrated with selinux, it has passed 'struct task_struct' associated with the binder_proc to represent the source and target of transactions. The conversion of task to SID was then done in the hook implementations. It turns out that there are race conditions which can result in an incorrect security context being used. Fix by using the 'struct cred' saved during binder_open and pass it to the selinux subsystem. Cc: stable@vger.kernel.org # 5.14 (need backport for earlier stables) Fixes: 79af73079d75 ("Add security hooks to binder and implement the hooks for SELinux.") Suggested-by: Jann Horn Signed-off-by: Todd Kjos Acked-by: Casey Schaufler Signed-off-by: Paul Moore Bug: 200688826 (cherry picked from commit 52f88693378a58094c538662ba652aff0253c4fe) [ refactored to avoid changing KMI: struct binder_proc ] Change-Id: I1664c1f0c2142c17e9ca0d6790bb94de79f531e3 --- drivers/android/binder.c | 15 +++++++++------ include/linux/lsm_hook_defs.h | 14 +++++++------- include/linux/lsm_hooks.h | 14 +++++++------- include/linux/security.h | 28 +++++++++++++-------------- security/security.c | 14 +++++++------- security/selinux/hooks.c | 36 +++++++++++++++-------------------- 6 files changed, 59 insertions(+), 62 deletions(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 2d2457cc0752..39778af28b25 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -2181,7 +2181,8 @@ static int binder_translate_binder(struct flat_binder_object *fp, ret = -EINVAL; goto done; } - if (security_binder_transfer_binder(proc->tsk, target_proc->tsk)) { + if (security_binder_transfer_binder(binder_get_cred(proc), + binder_get_cred(target_proc))) { ret = -EPERM; goto done; } @@ -2227,7 +2228,8 @@ static int binder_translate_handle(struct flat_binder_object *fp, proc->pid, thread->pid, fp->handle); return -EINVAL; } - if (security_binder_transfer_binder(proc->tsk, target_proc->tsk)) { + if (security_binder_transfer_binder(binder_get_cred(proc), + binder_get_cred(target_proc))) { ret = -EPERM; goto done; } @@ -2315,7 +2317,8 @@ static int binder_translate_fd(u32 fd, binder_size_t fd_offset, ret = -EBADF; goto err_fget; } - ret = security_binder_transfer_file(proc->tsk, target_proc->tsk, file); + ret = security_binder_transfer_file(binder_get_cred(proc), + binder_get_cred(target_proc), file); if (ret < 0) { ret = -EPERM; goto err_security; @@ -2725,8 +2728,8 @@ static void binder_transaction(struct binder_proc *proc, } e->to_node = target_node->debug_id; trace_android_vh_binder_trans(target_proc, proc, thread, tr); - if (security_binder_transaction(proc->tsk, - target_proc->tsk) < 0) { + if (security_binder_transaction(binder_get_cred(proc), + binder_get_cred(target_proc)) < 0) { return_error = BR_FAILED_REPLY; return_error_param = -EPERM; return_error_line = __LINE__; @@ -4714,7 +4717,7 @@ static int binder_ioctl_set_ctx_mgr(struct file *filp, ret = -EBUSY; goto out; } - ret = security_binder_set_context_mgr(proc->tsk); + ret = security_binder_set_context_mgr(binder_get_cred(proc)); if (ret < 0) goto out; if (uid_valid(context->binder_context_mgr_uid)) { diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h index 435a2e22ff95..37dc5594081d 100644 --- a/include/linux/lsm_hook_defs.h +++ b/include/linux/lsm_hook_defs.h @@ -26,13 +26,13 @@ * #undef LSM_HOOK * }; */ -LSM_HOOK(int, 0, binder_set_context_mgr, struct task_struct *mgr) -LSM_HOOK(int, 0, binder_transaction, struct task_struct *from, - struct task_struct *to) -LSM_HOOK(int, 0, binder_transfer_binder, struct task_struct *from, - struct task_struct *to) -LSM_HOOK(int, 0, binder_transfer_file, struct task_struct *from, - struct task_struct *to, struct file *file) +LSM_HOOK(int, 0, binder_set_context_mgr, const struct cred *mgr) +LSM_HOOK(int, 0, binder_transaction, const struct cred *from, + const struct cred *to) +LSM_HOOK(int, 0, binder_transfer_binder, const struct cred *from, + const struct cred *to) +LSM_HOOK(int, 0, binder_transfer_file, const struct cred *from, + const struct cred *to, struct file *file) LSM_HOOK(int, 0, ptrace_access_check, struct task_struct *child, unsigned int mode) LSM_HOOK(int, 0, ptrace_traceme, struct task_struct *parent) diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h index 3af055b7ee1f..0ad8aa657914 100644 --- a/include/linux/lsm_hooks.h +++ b/include/linux/lsm_hooks.h @@ -1297,22 +1297,22 @@ * * @binder_set_context_mgr: * Check whether @mgr is allowed to be the binder context manager. - * @mgr contains the task_struct for the task being registered. + * @mgr contains the struct cred for the current binder process. * Return 0 if permission is granted. * @binder_transaction: * Check whether @from is allowed to invoke a binder transaction call * to @to. - * @from contains the task_struct for the sending task. - * @to contains the task_struct for the receiving task. + * @from contains the struct cred for the sending process. + * @to contains the struct cred for the receiving process. * @binder_transfer_binder: * Check whether @from is allowed to transfer a binder reference to @to. - * @from contains the task_struct for the sending task. - * @to contains the task_struct for the receiving task. + * @from contains the struct cred for the sending process. + * @to contains the struct cred for the receiving process. * @binder_transfer_file: * Check whether @from is allowed to transfer @file to @to. - * @from contains the task_struct for the sending task. + * @from contains the struct cred for the sending process. * @file contains the struct file being transferred. - * @to contains the task_struct for the receiving task. + * @to contains the struct cred for the receiving process. * * @ptrace_access_check: * Check permission before allowing the current process to trace the diff --git a/include/linux/security.h b/include/linux/security.h index 48c6ed9ba086..9af6bc48c751 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -252,13 +252,13 @@ extern int security_init(void); extern int early_security_init(void); /* Security operations */ -int security_binder_set_context_mgr(struct task_struct *mgr); -int security_binder_transaction(struct task_struct *from, - struct task_struct *to); -int security_binder_transfer_binder(struct task_struct *from, - struct task_struct *to); -int security_binder_transfer_file(struct task_struct *from, - struct task_struct *to, struct file *file); +int security_binder_set_context_mgr(const struct cred *mgr); +int security_binder_transaction(const struct cred *from, + const struct cred *to); +int security_binder_transfer_binder(const struct cred *from, + const struct cred *to); +int security_binder_transfer_file(const struct cred *from, + const struct cred *to, struct file *file); int security_ptrace_access_check(struct task_struct *child, unsigned int mode); int security_ptrace_traceme(struct task_struct *parent); int security_capget(struct task_struct *target, @@ -494,25 +494,25 @@ static inline int early_security_init(void) return 0; } -static inline int security_binder_set_context_mgr(struct task_struct *mgr) +static inline int security_binder_set_context_mgr(const struct cred *mgr) { return 0; } -static inline int security_binder_transaction(struct task_struct *from, - struct task_struct *to) +static inline int security_binder_transaction(const struct cred *from, + const struct cred *to) { return 0; } -static inline int security_binder_transfer_binder(struct task_struct *from, - struct task_struct *to) +static inline int security_binder_transfer_binder(const struct cred *from, + const struct cred *to) { return 0; } -static inline int security_binder_transfer_file(struct task_struct *from, - struct task_struct *to, +static inline int security_binder_transfer_file(const struct cred *from, + const struct cred *to, struct file *file) { return 0; diff --git a/security/security.c b/security/security.c index cf8ddcae1c6b..1e0f79c665a3 100644 --- a/security/security.c +++ b/security/security.c @@ -689,25 +689,25 @@ static void __init lsm_early_task(struct task_struct *task) /* Security operations */ -int security_binder_set_context_mgr(struct task_struct *mgr) +int security_binder_set_context_mgr(const struct cred *mgr) { return call_int_hook(binder_set_context_mgr, 0, mgr); } -int security_binder_transaction(struct task_struct *from, - struct task_struct *to) +int security_binder_transaction(const struct cred *from, + const struct cred *to) { return call_int_hook(binder_transaction, 0, from, to); } -int security_binder_transfer_binder(struct task_struct *from, - struct task_struct *to) +int security_binder_transfer_binder(const struct cred *from, + const struct cred *to) { return call_int_hook(binder_transfer_binder, 0, from, to); } -int security_binder_transfer_file(struct task_struct *from, - struct task_struct *to, struct file *file) +int security_binder_transfer_file(const struct cred *from, + const struct cred *to, struct file *file) { return call_int_hook(binder_transfer_file, 0, from, to, file); } diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index a490c8449cac..0a18cbc641e3 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -2007,22 +2007,19 @@ static inline u32 open_file_to_av(struct file *file) /* Hook functions begin here. */ -static int selinux_binder_set_context_mgr(struct task_struct *mgr) +static int selinux_binder_set_context_mgr(const struct cred *mgr) { - u32 mysid = current_sid(); - u32 mgrsid = task_sid(mgr); - return avc_has_perm(&selinux_state, - mysid, mgrsid, SECCLASS_BINDER, + current_sid(), cred_sid(mgr), SECCLASS_BINDER, BINDER__SET_CONTEXT_MGR, NULL); } -static int selinux_binder_transaction(struct task_struct *from, - struct task_struct *to) +static int selinux_binder_transaction(const struct cred *from, + const struct cred *to) { u32 mysid = current_sid(); - u32 fromsid = task_sid(from); - u32 tosid = task_sid(to); + u32 fromsid = cred_sid(from); + u32 tosid = cred_sid(to); int rc; if (mysid != fromsid) { @@ -2033,27 +2030,24 @@ static int selinux_binder_transaction(struct task_struct *from, return rc; } - return avc_has_perm(&selinux_state, - fromsid, tosid, SECCLASS_BINDER, BINDER__CALL, - NULL); + return avc_has_perm(&selinux_state, fromsid, tosid, + SECCLASS_BINDER, BINDER__CALL, NULL); } -static int selinux_binder_transfer_binder(struct task_struct *from, - struct task_struct *to) +static int selinux_binder_transfer_binder(const struct cred *from, + const struct cred *to) { - u32 fromsid = task_sid(from); - u32 tosid = task_sid(to); - return avc_has_perm(&selinux_state, - fromsid, tosid, SECCLASS_BINDER, BINDER__TRANSFER, + cred_sid(from), cred_sid(to), + SECCLASS_BINDER, BINDER__TRANSFER, NULL); } -static int selinux_binder_transfer_file(struct task_struct *from, - struct task_struct *to, +static int selinux_binder_transfer_file(const struct cred *from, + const struct cred *to, struct file *file) { - u32 sid = task_sid(to); + u32 sid = cred_sid(to); struct file_security_struct *fsec = selinux_file(file); struct dentry *dentry = file->f_path.dentry; struct inode_security_struct *isec; From 11db2de0af2a919a11051f4c3050a63c3a003e46 Mon Sep 17 00:00:00 2001 From: Todd Kjos Date: Tue, 12 Oct 2021 09:56:14 -0700 Subject: [PATCH 08/24] BACKPORT: binder: use cred instead of task for getsecid Use the 'struct cred' saved at binder_open() to lookup the security ID via security_cred_getsecid(). This ensures that the security context that opened binder is the one used to generate the secctx. Cc: stable@vger.kernel.org # 5.4+ Fixes: ec74136ded79 ("binder: create node flag to request sender's security context") Signed-off-by: Todd Kjos Suggested-by: Stephen Smalley Reported-by: kernel test robot Acked-by: Casey Schaufler Signed-off-by: Paul Moore Bug: 200688826 (cherry picked from commit 4d5b5539742d2554591751b4248b0204d20dcc9d) [ refactored to avoid changing KMI: struct binder_proc ] Change-Id: Ie023be3190caf20ca3901560455e9f027c9426cd --- drivers/android/binder.c | 2 +- include/linux/security.h | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 39778af28b25..962f3203aa6a 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -2865,7 +2865,7 @@ static void binder_transaction(struct binder_proc *proc, size_t added_size; int max_retries = 100; - security_task_getsecid(proc->tsk, &secid); + security_cred_getsecid(binder_get_cred(proc), &secid); retry_alloc: ret = security_secid_to_secctx(secid, &secctx, &secctx_sz); if (ret == -ENOMEM && max_retries-- > 0) { diff --git a/include/linux/security.h b/include/linux/security.h index 9af6bc48c751..a87cbacab078 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -1011,6 +1011,11 @@ static inline void security_transfer_creds(struct cred *new, { } +static inline void security_cred_getsecid(const struct cred *c, u32 *secid) +{ + *secid = 0; +} + static inline int security_kernel_act_as(struct cred *cred, u32 secid) { return 0; From 6b7c37f6c44952d6702ccd410b3a4f7866f5e263 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Fri, 5 Nov 2021 15:44:18 -0700 Subject: [PATCH 09/24] ANDROID: fips140: use UTS_RELEASE as FIPS version Use the standard auto-generated kernel version string instead of a manually assigned version number that will get out-of-date. There was discussion of custom version numbers being needed for certification purposes, but it appears that they won't be needed after all. This will produce a version string like "5.10.66-android12-9-00017-g0b8a0a4df237". Bug: 188620248 Change-Id: Ia369e91e4a18f489418123c672686e05ca99063d Signed-off-by: Eric Biggers (cherry picked from commit 4e0c1040758540aac34b753ed41792c8ad322a8c) --- crypto/fips140-module.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crypto/fips140-module.h b/crypto/fips140-module.h index ff99d5b2ab4a..b83547726a0f 100644 --- a/crypto/fips140-module.h +++ b/crypto/fips140-module.h @@ -8,17 +8,17 @@ #include #include +#include #undef pr_fmt #define pr_fmt(fmt) "fips140: " fmt /* * This is the name and version number of the module that are shown on the FIPS - * certificate. These don't necessarily have any relation to the filename of - * the .ko file, or to the git branch or commit ID. + * certificate. */ #define FIPS140_MODULE_NAME "Android Kernel Cryptographic Module" -#define FIPS140_MODULE_VERSION "v1.0" +#define FIPS140_MODULE_VERSION UTS_RELEASE #ifdef CONFIG_CRYPTO_FIPS140_MOD_ERROR_INJECTION extern char *fips140_broken_alg; From a4eacf3227bd9978e420eebb1b4520d3b43e433f Mon Sep 17 00:00:00 2001 From: Todd Kjos Date: Thu, 11 Nov 2021 18:31:04 -0800 Subject: [PATCH 10/24] ANDROID: binder: fix regression in sender_euid A recent change to use proc->cred instead of proc->tsk as the source for sender_euid caused a failure in the CredentialsTest#CaptureLayersTest test. Revert 1 line of the patch to fix the test. The rest of the patch needs to remain since the subsequent patches rely on it. Before fixing upstream, we need to investigate more since the code looks correct so the issue may be a latent userspace bug. Bug: 205938623 Fixes: d65efd5b73dc ("UPSTREAM: binder: use euid from cred instead of using task") Signed-off-by: Todd Kjos Change-Id: I16543a50f43f79131234995fb0813de00795bd3d --- drivers/android/binder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 962f3203aa6a..b03bf4e11a08 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -2845,7 +2845,7 @@ static void binder_transaction(struct binder_proc *proc, t->from = thread; else t->from = NULL; - t->sender_euid = binder_get_cred(proc)->euid; + t->sender_euid = task_euid(proc->tsk); t->to_proc = target_proc; t->to_thread = target_thread; t->code = tr->code; From ea592f07f67cc143c4fccec0f355b9d3326297f1 Mon Sep 17 00:00:00 2001 From: TF Huang Date: Fri, 12 Nov 2021 14:03:43 +0800 Subject: [PATCH 11/24] ANDROID: Update symbol list for mtk 1. Generated with: BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh --update Leaf changes summary: 1 artifact changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 1 Added function: [A] 'function int dev_change_flags(net_device*, unsigned int, netlink_ext_ack*)' Bug: 206011764 Signed-off-by: TF Huang Change-Id: Id90b001f629d5d0c525cc88b0abcbffa4ad24891 --- android/abi_gki_aarch64.xml | 7 +++++++ android/abi_gki_aarch64_mtk | 1 + 2 files changed, 8 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index ff24f8ca46e1..4b2111b34ed6 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -1282,6 +1282,7 @@ + @@ -120442,6 +120443,12 @@ + + + + + + diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index 9dd6a627f4ab..43ed832528e8 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -292,6 +292,7 @@ destroy_workqueue dev_alloc_name dev_base_lock + dev_change_flags dev_change_net_namespace dev_close dev_driver_string From fa9c9074531e448cf3647d6984b3122619c1834a Mon Sep 17 00:00:00 2001 From: Liujie Xie Date: Fri, 12 Nov 2021 17:56:48 +0800 Subject: [PATCH 12/24] ANDROID: GKI: Update symbol list Update the list of symbols exported in the patch below: https://android-review.googlesource.com/c/kernel/common/+/1887858 https://android-review.googlesource.com/c/kernel/common/+/1889015 Leaf changes summary: 10 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 5 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 5 Added variables 5 Added functions: [A] 'function int __traceiter_android_vh_cpufreq_fast_switch(void*, cpufreq_policy*, unsigned int, unsigned int)' [A] 'function int __traceiter_android_vh_cpufreq_resolve_freq(void*, cpufreq_policy*, unsigned int, unsigned int)' [A] 'function int __traceiter_android_vh_cpufreq_target(void*, cpufreq_policy*, unsigned int, unsigned int)' [A] 'function int __traceiter_android_vh_sched_stat_runtime_rt(void*, task_struct*, u64)' [A] 'function int __traceiter_sched_stat_runtime(void*, task_struct*, u64, u64)' 5 Added variables: [A] 'tracepoint __tracepoint_android_vh_cpufreq_fast_switch' [A] 'tracepoint __tracepoint_android_vh_cpufreq_resolve_freq' [A] 'tracepoint __tracepoint_android_vh_cpufreq_target' [A] 'tracepoint __tracepoint_android_vh_sched_stat_runtime_rt' [A] 'tracepoint __tracepoint_sched_stat_runtime' Bug: 206063495 Signed-off-by: Liujie Xie Change-Id: I55e2d4ffaf4f712389af1e364bcea9a6dd05dd6e --- android/abi_gki_aarch64.xml | 382 ++++++++++++++++++++++------------ android/abi_gki_aarch64_oplus | 12 +- 2 files changed, 258 insertions(+), 136 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 4b2111b34ed6..95915ee26106 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -391,6 +391,9 @@ + + + @@ -468,6 +471,7 @@ + @@ -561,6 +565,7 @@ + @@ -5779,6 +5784,9 @@ + + + @@ -5868,6 +5876,7 @@ + @@ -5967,6 +5976,7 @@ + @@ -22886,7 +22896,59 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -80641,54 +80703,54 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -91517,6 +91579,14 @@ + + + + + + + + @@ -104548,66 +104618,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -110147,6 +110217,9 @@ + + + @@ -113100,10 +113173,10 @@ - - - - + + + + @@ -114521,10 +114594,10 @@ - - - - + + + + @@ -114537,14 +114610,14 @@ - - - + + + - - - + + + @@ -115190,6 +115263,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -115281,10 +115375,10 @@ - - - - + + + + @@ -115666,6 +115760,12 @@ + + + + + + @@ -115756,11 +115856,11 @@ - - - - - + + + + + @@ -116238,6 +116338,13 @@ + + + + + + + @@ -116364,11 +116471,11 @@ - + - - + + @@ -116473,12 +116580,15 @@ + + + - + @@ -116488,7 +116598,7 @@ - + @@ -116562,6 +116672,7 @@ + @@ -116578,7 +116689,7 @@ - + @@ -116661,6 +116772,7 @@ + @@ -119426,9 +119538,9 @@ - - - + + + @@ -119436,13 +119548,13 @@ - - - - + + + + - + @@ -119481,45 +119593,45 @@ - - + + - - + + - + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - + + + @@ -119536,25 +119648,25 @@ - - + + - - + + - - - + + + - - + + - - + + @@ -132940,9 +133052,9 @@ - - - + + + @@ -134133,8 +134245,8 @@ - - + + @@ -135440,38 +135552,38 @@ - - + + - - + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + @@ -138507,7 +138619,7 @@ - + @@ -138648,9 +138760,9 @@ - - - + + + diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index 08f0c30078da..bb62b99da69a 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -1113,8 +1113,8 @@ init_uts_ns init_wait_entry __init_waitqueue_head - inode_permission inode_owner_or_capable + inode_permission input_alloc_absinfo input_allocate_device input_close_device @@ -2605,6 +2605,9 @@ __traceiter_android_vh_clear_reserved_fmt_fields __traceiter_android_vh_commit_creds __traceiter_android_vh_cpufreq_acct_update_power + __traceiter_android_vh_cpufreq_fast_switch + __traceiter_android_vh_cpufreq_resolve_freq + __traceiter_android_vh_cpufreq_target __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit __traceiter_android_vh_cpu_up @@ -2652,6 +2655,7 @@ __traceiter_android_vh_rwsem_write_finished __traceiter_android_vh_save_track_hash __traceiter_android_vh_save_vmalloc_stack + __traceiter_android_vh_sched_stat_runtime_rt __traceiter_android_vh_scheduler_tick __traceiter_android_vh_selinux_avc_insert __traceiter_android_vh_selinux_avc_lookup @@ -2695,6 +2699,7 @@ __traceiter_sched_overutilized_tp __traceiter_sched_stat_blocked __traceiter_sched_stat_iowait + __traceiter_sched_stat_runtime __traceiter_sched_stat_sleep __traceiter_sched_stat_wait __traceiter_sched_switch @@ -2791,6 +2796,9 @@ __tracepoint_android_vh_clear_reserved_fmt_fields __tracepoint_android_vh_commit_creds __tracepoint_android_vh_cpufreq_acct_update_power + __tracepoint_android_vh_cpufreq_fast_switch + __tracepoint_android_vh_cpufreq_resolve_freq + __tracepoint_android_vh_cpufreq_target __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit __tracepoint_android_vh_cpu_up @@ -2838,6 +2846,7 @@ __tracepoint_android_vh_rwsem_write_finished __tracepoint_android_vh_save_track_hash __tracepoint_android_vh_save_vmalloc_stack + __tracepoint_android_vh_sched_stat_runtime_rt __tracepoint_android_vh_scheduler_tick __tracepoint_android_vh_selinux_avc_insert __tracepoint_android_vh_selinux_avc_lookup @@ -2884,6 +2893,7 @@ __tracepoint_sched_overutilized_tp __tracepoint_sched_stat_blocked __tracepoint_sched_stat_iowait + __tracepoint_sched_stat_runtime __tracepoint_sched_stat_sleep __tracepoint_sched_stat_wait __tracepoint_sched_switch From cc98cd4a3edf0af4c82a4094445900a6b83a8429 Mon Sep 17 00:00:00 2001 From: hefayun Date: Fri, 12 Nov 2021 09:20:44 +0800 Subject: [PATCH 13/24] ANDROID: GKI: add allowed list file for xiaomi Leaf changes summary: 3 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 3 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 3 Added functions: [A] 'function void* mempool_alloc_pages(gfp_t, void*)' [A] 'function void mempool_free_pages(void*, void*)' [A] 'function int mempool_resize(mempool_t*, int)' Bug: 205803389 Change-Id: Iaa91649754f327b579e53537f904b5adb425acd1 Signed-off-by: hefayun Signed-off-by: Giuliano Procida --- android/abi_gki_aarch64.xml | 10741 ++++++++++++++++--------------- android/abi_gki_aarch64_xiaomi | 4 + 2 files changed, 5472 insertions(+), 5273 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 95915ee26106..07753e497e9d 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -3081,16 +3081,19 @@ + + + @@ -8613,9 +8616,9 @@ - - - + + + @@ -8628,6 +8631,7 @@ + @@ -8709,6 +8713,7 @@ + @@ -11570,7 +11575,6 @@ - @@ -11977,8 +11981,8 @@ - - + + @@ -12611,23 +12615,7 @@ - - - - - - - - - - - - - - - - - + @@ -13274,7 +13262,6 @@ - @@ -14824,6 +14811,12 @@ + + + + + + @@ -15318,9 +15311,6 @@ - - - @@ -15520,29 +15510,7 @@ - - - - - - - - - - - - - - - - - - - - - - - + @@ -16897,8 +16865,8 @@ - - + + @@ -18426,6 +18394,7 @@ + @@ -18799,7 +18768,11 @@ - + + + + + @@ -19754,6 +19727,7 @@ + @@ -19951,6 +19925,7 @@ + @@ -20388,6 +20363,14 @@ + + + + + + + + @@ -20738,7 +20721,7 @@ - + @@ -21452,7 +21435,6 @@ - @@ -22193,11 +22175,6 @@ - - - - - @@ -24367,7 +24344,7 @@ - + @@ -24592,7 +24569,6 @@ - @@ -24897,23 +24873,7 @@ - - - - - - - - - - - - - - - - - + @@ -25575,7 +25535,7 @@ - + @@ -25731,7 +25691,7 @@ - + @@ -25952,6 +25912,7 @@ + @@ -26029,7 +25990,7 @@ - + @@ -26086,7 +26047,6 @@ - @@ -26440,7 +26400,6 @@ - @@ -27071,7 +27030,7 @@ - + @@ -28006,6 +27965,7 @@ + @@ -31751,9 +31711,9 @@ - - - + + + @@ -32627,6 +32587,7 @@ + @@ -32881,68 +32842,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -33447,6 +33347,7 @@ + @@ -33861,7 +33762,6 @@ - @@ -34060,7 +33960,7 @@ - + @@ -37607,6 +37507,7 @@ + @@ -38396,8 +38297,8 @@ - - + + @@ -39369,6 +39270,17 @@ + + + + + + + + + + + @@ -39648,9 +39560,9 @@ - - - + + + @@ -40157,7 +40069,6 @@ - @@ -41115,6 +41026,7 @@ + @@ -43616,7 +43528,15 @@ + + + + + + + + @@ -43953,7 +43873,18 @@ - + + + + + + + + + + + + @@ -44049,12 +43980,12 @@ - - - - - - + + + + + + @@ -44159,6 +44090,7 @@ + @@ -44939,21 +44871,21 @@ - + - + - + - + - + - + @@ -45399,6 +45331,7 @@ + @@ -47049,8 +46982,8 @@ - - + + @@ -47396,35 +47329,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -47985,14 +47890,7 @@ - - - - - - - - + @@ -48638,6 +48536,11 @@ + + + + + @@ -49043,7 +48946,7 @@ - + @@ -49169,11 +49072,6 @@ - - - - - @@ -49627,7 +49525,56 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -49968,7 +49915,6 @@ - @@ -50904,7 +50850,7 @@ - + @@ -51749,8 +51695,26 @@ + + + + + + + + + + + + + + + + + + @@ -52009,6 +51973,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -52146,6 +52130,7 @@ + @@ -52196,7 +52181,6 @@ - @@ -52786,23 +52770,7 @@ - - - - - - - - - - - - - - - - - + @@ -53164,6 +53132,7 @@ + @@ -54094,9 +54063,9 @@ - - - + + + @@ -54816,7 +54785,6 @@ - @@ -55401,7 +55369,7 @@ - + @@ -55866,7 +55834,7 @@ - + @@ -56732,6 +56700,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -56940,7 +56928,6 @@ - @@ -58077,6 +58064,7 @@ + @@ -58539,6 +58527,11 @@ + + + + + @@ -59763,7 +59756,44 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -60953,7 +60983,65 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -61730,6 +61818,7 @@ + @@ -62679,17 +62768,7 @@ - - - - - - - - - - - + @@ -63755,7 +63834,7 @@ - + @@ -64249,10 +64328,10 @@ - - - - + + + + @@ -64302,12 +64381,6 @@ - - - - - - @@ -64567,7 +64640,6 @@ - @@ -64891,7 +64963,47 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -65486,6 +65598,11 @@ + + + + + @@ -66512,6 +66629,11 @@ + + + + + @@ -66972,7 +67094,7 @@ - + @@ -68836,6 +68958,7 @@ + @@ -69032,7 +69155,6 @@ - @@ -70641,7 +70763,14 @@ - + + + + + + + + @@ -70775,6 +70904,14 @@ + + + + + + + + @@ -71463,8 +71600,8 @@ - - + + @@ -71583,6 +71720,7 @@ + @@ -72269,8 +72407,8 @@ - - + + @@ -72342,7 +72480,6 @@ - @@ -72807,7 +72944,38 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -72918,7 +73086,7 @@ - + @@ -75606,6 +75774,7 @@ + @@ -77013,11 +77182,11 @@ - + - + @@ -78070,12 +78239,12 @@ - - - - - - + + + + + + @@ -79361,7 +79530,6 @@ - @@ -79601,6 +79769,7 @@ + @@ -80326,7 +80495,6 @@ - @@ -80914,7 +81082,6 @@ - @@ -80987,9 +81154,6 @@ - - - @@ -81006,6 +81170,11 @@ + + + + + @@ -81028,6 +81197,7 @@ + @@ -81488,7 +81658,7 @@ - + @@ -81564,6 +81734,14 @@ + + + + + + + + @@ -84642,7 +84820,6 @@ - @@ -85261,7 +85438,7 @@ - + @@ -85942,9 +86119,9 @@ - - - + + + @@ -86413,7 +86590,26 @@ - + + + + + + + + + + + + + + + + + + + + @@ -86438,7 +86634,7 @@ - + @@ -86463,7 +86659,6 @@ - @@ -86502,7 +86697,6 @@ - @@ -87915,7 +88109,7 @@ - + @@ -88546,8 +88740,8 @@ - - + + @@ -89616,6 +89810,7 @@ + @@ -89776,14 +89971,6 @@ - - - - - - - - @@ -90218,20 +90405,7 @@ - - - - - - - - - - - - - - + @@ -90788,7 +90962,7 @@ - + @@ -90963,7 +91137,7 @@ - + @@ -91258,7 +91432,6 @@ - @@ -91394,12 +91567,12 @@ - + - + @@ -92965,6 +93138,7 @@ + @@ -93477,6 +93651,17 @@ + + + + + + + + + + + @@ -94239,7 +94424,7 @@ - + @@ -94751,7 +94936,7 @@ - + @@ -94797,7 +94982,7 @@ - + @@ -95235,7 +95420,7 @@ - + @@ -95941,6 +96126,9 @@ + + + @@ -97180,7 +97368,6 @@ - @@ -97456,8 +97643,8 @@ - - + + @@ -97666,8 +97853,8 @@ - - + + @@ -98822,7 +99009,6 @@ - @@ -99798,14 +99984,7 @@ - - - - - - - - + @@ -101288,10 +101467,10 @@ - - - + + + @@ -101315,7 +101494,7 @@ - + @@ -101456,8 +101635,8 @@ - - + + @@ -102057,6 +102236,7 @@ + @@ -102325,7 +102505,6 @@ - @@ -102851,20 +103030,7 @@ - - - - - - - - - - - - - - + @@ -102923,9 +103089,6 @@ - - - @@ -106333,7 +106496,6 @@ - @@ -106348,6 +106510,20 @@ + + + + + + + + + + + + + + @@ -106682,7 +106858,6 @@ - @@ -110607,6 +110782,11 @@ + + + + + @@ -110933,7 +111113,6 @@ - @@ -112689,6 +112868,7 @@ + @@ -112773,6 +112953,7 @@ + @@ -112891,8 +113072,8 @@ - - + + @@ -113429,7 +113610,6 @@ - @@ -116973,9 +117153,9 @@ - - - + + + @@ -116986,33 +117166,33 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + @@ -117022,27 +117202,27 @@ - - - + + + - - - + + + - - - + + + - - - + + + @@ -117052,8 +117232,8 @@ - - + + @@ -117072,8 +117252,8 @@ - - + + @@ -117089,57 +117269,57 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + @@ -117150,16 +117330,16 @@ - - + + - - + + @@ -117183,12 +117363,12 @@ - - - - - - + + + + + + @@ -117205,9 +117385,9 @@ - - - + + + @@ -117223,33 +117403,33 @@ - - + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + @@ -117262,22 +117442,22 @@ - - - - + + + + - - - - + + + + - - - - + + + + @@ -117356,13 +117536,13 @@ - - - - - - - + + + + + + + @@ -117371,29 +117551,29 @@ - - - + + + - - - - - - + + + + + + - - - - + + + + - - + + @@ -117435,11 +117615,11 @@ - - - - - + + + + + @@ -117459,14 +117639,14 @@ - - + + - - - - + + + + @@ -117489,15 +117669,15 @@ - - - - + + + + - - - + + + @@ -117505,11 +117685,11 @@ - - - - - + + + + + @@ -117560,21 +117740,21 @@ - - - - - + + + + + - - - - - - + + + + + + - - + + @@ -117615,18 +117795,18 @@ - - + + - - - + + + - - - + + + @@ -117659,17 +117839,17 @@ - - - - + + + + - - - - - + + + + + @@ -117680,53 +117860,53 @@ - - - - + + + + - - + + - - - + + + - - - + + + - - + + - - - - + + + + - - + + - - + + - - + + - - - - - + + + + + @@ -117734,9 +117914,9 @@ - - - + + + @@ -117745,49 +117925,49 @@ - - - - + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -117797,10 +117977,10 @@ - - - - + + + + @@ -117844,17 +118024,17 @@ - - + + - - + + - - - + + + @@ -117889,10 +118069,10 @@ - - - - + + + + @@ -117924,13 +118104,13 @@ - - - + + + - - + + @@ -117961,8 +118141,8 @@ - - + + @@ -117971,8 +118151,8 @@ - - + + @@ -117994,8 +118174,8 @@ - - + + @@ -118042,8 +118222,8 @@ - - + + @@ -118065,10 +118245,10 @@ - - - - + + + + @@ -118104,9 +118284,9 @@ - - - + + + @@ -118250,16 +118430,16 @@ - - + + - - + + @@ -118308,26 +118488,26 @@ - - - - + + + + - - - - + + + + - - - + + + - - - + + + @@ -118336,31 +118516,31 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -118378,9 +118558,9 @@ - - - + + + @@ -118428,67 +118608,67 @@ - - - - + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + @@ -118504,16 +118684,16 @@ - - + + - - - - - - + + + + + + @@ -118534,22 +118714,22 @@ - - + + - - + + - - + + - - + + @@ -118566,23 +118746,23 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + @@ -118592,8 +118772,8 @@ - - + + @@ -118606,8 +118786,8 @@ - - + + @@ -118677,9 +118857,9 @@ - - - + + + @@ -118718,11 +118898,11 @@ - - - - - + + + + + @@ -118738,19 +118918,19 @@ - - - + + + - - - + + + - - - + + + @@ -118782,9 +118962,9 @@ - - - + + + @@ -118873,14 +119053,14 @@ - - - + + + - - - + + + @@ -118889,65 +119069,65 @@ - - - + + + - - - - + + + + - - + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - + + + + - - + + - - + + - - - + + + - - - + + + @@ -118956,48 +119136,48 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -119008,8 +119188,8 @@ - - + + @@ -119127,8 +119307,8 @@ - - + + @@ -119230,28 +119410,28 @@ - - - + + + - - + + - - - - - + + + + + @@ -119266,11 +119446,11 @@ - - - - - + + + + + @@ -119282,11 +119462,11 @@ - - - - - + + + + + @@ -119305,8 +119485,8 @@ - - + + @@ -119343,10 +119523,10 @@ - - - - + + + + @@ -119384,22 +119564,22 @@ - - + + - - - - + + + + - - + + - - + + @@ -119426,22 +119606,22 @@ - - + + - - - - + + + + - - - + + + @@ -119502,8 +119682,8 @@ - - + + @@ -119534,18 +119714,18 @@ - - + + - - - + + + - - - + + + @@ -119557,8 +119737,8 @@ - - + + @@ -119574,9 +119754,9 @@ - - - + + + @@ -119609,12 +119789,12 @@ - - + + - - + + @@ -119625,23 +119805,23 @@ - - + + - - - + + + - - - - + + + + @@ -119656,9 +119836,9 @@ - - - + + + @@ -119677,8 +119857,8 @@ - - + + @@ -119698,58 +119878,58 @@ - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - + - + - - - + + + - - - - - + + + + + - - - - - + + + + + @@ -119792,12 +119972,12 @@ - - + + - - + + @@ -119826,10 +120006,10 @@ - - - - + + + + @@ -119884,42 +120064,42 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - + + - - - + + + - - - + + + - + @@ -119962,10 +120142,10 @@ - - - - + + + + @@ -119973,9 +120153,9 @@ - - - + + + @@ -119985,7 +120165,7 @@ - + @@ -120006,8 +120186,8 @@ - - + + @@ -120028,22 +120208,22 @@ - - + + - - - + + + - - - + + + @@ -120093,11 +120273,11 @@ - - - - - + + + + + @@ -120105,44 +120285,44 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - + + - - + + - - - - + + + + @@ -120163,8 +120343,8 @@ - - + + @@ -120189,18 +120369,18 @@ - - - + + + - - - + + + @@ -120217,9 +120397,9 @@ - - - + + + @@ -120230,11 +120410,11 @@ - - - - - + + + + + @@ -120244,8 +120424,8 @@ - - + + @@ -120261,18 +120441,18 @@ - - + + - - + + - - - - + + + + @@ -120303,12 +120483,12 @@ - - + + - - + + @@ -120317,7 +120497,7 @@ - + @@ -120348,11 +120528,11 @@ - - - - - + + + + + @@ -120362,25 +120542,25 @@ - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -120417,11 +120597,11 @@ - - - - - + + + + + @@ -120431,11 +120611,11 @@ - - - - - + + + + + @@ -120467,9 +120647,9 @@ - - - + + + @@ -120480,8 +120660,8 @@ - - + + @@ -120491,9 +120671,9 @@ - - - + + + @@ -120502,11 +120682,11 @@ - - - - - + + + + + @@ -120519,16 +120699,16 @@ - - + + - - + + - - + + @@ -120539,8 +120719,8 @@ - - + + @@ -120549,18 +120729,18 @@ + + + + + + - - - - - - @@ -120582,49 +120762,49 @@ - - + + - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -120646,9 +120826,9 @@ - - - + + + @@ -120661,9 +120841,9 @@ - - - + + + @@ -120685,10 +120865,10 @@ - - - - + + + + @@ -120719,15 +120899,15 @@ - - - - + + + + - - - + + + @@ -120747,8 +120927,8 @@ - - + + @@ -120764,8 +120944,8 @@ - - + + @@ -120773,13 +120953,13 @@ - - + + - - - + + + @@ -120790,9 +120970,9 @@ - - - + + + @@ -120809,16 +120989,16 @@ - - + + - - + + @@ -120843,9 +121023,9 @@ - - - + + + @@ -120935,9 +121115,9 @@ - - - + + + @@ -120950,17 +121130,17 @@ - - - - + + + + - - - - + + + + @@ -120968,10 +121148,10 @@ - - - - + + + + @@ -120979,9 +121159,9 @@ - - - + + + @@ -121002,11 +121182,11 @@ - - - - - + + + + + @@ -121078,20 +121258,20 @@ - - + + - - + + - - + + @@ -121104,8 +121284,8 @@ - - + + @@ -121127,12 +121307,12 @@ - - - - - - + + + + + + @@ -121141,40 +121321,40 @@ - - - + + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -121209,28 +121389,28 @@ - - - + + + - - + + - - - - + + + + - - - + + + @@ -121252,10 +121432,10 @@ - - - - + + + + @@ -121277,11 +121457,11 @@ - - - - - + + + + + @@ -121304,15 +121484,15 @@ - - - + + + - - - - + + + + @@ -121329,14 +121509,14 @@ - - - + + + - - - + + + @@ -121365,22 +121545,22 @@ - - + + - - + + - - - - + + + + @@ -121403,10 +121583,10 @@ - - - - + + + + @@ -121414,15 +121594,15 @@ - - - - + + + + - - - + + + @@ -121529,11 +121709,11 @@ - - - - - + + + + + @@ -121731,29 +121911,29 @@ - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + + + @@ -121763,10 +121943,10 @@ - - - - + + + + @@ -121805,14 +121985,14 @@ - - - - - - - - + + + + + + + + @@ -121825,9 +122005,9 @@ - - - + + + @@ -121860,8 +122040,8 @@ - - + + @@ -121928,14 +122108,14 @@ - - - + + + - - - + + + @@ -121943,10 +122123,10 @@ - - - - + + + + @@ -121991,15 +122171,15 @@ - - - - + + + + - - - + + + @@ -122098,16 +122278,16 @@ - - - + + + - - - - - + + + + + @@ -122157,46 +122337,46 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - - + + + + + - - + + - - + + @@ -122291,9 +122471,9 @@ - - - + + + @@ -122315,17 +122495,17 @@ - - + + - - - + + + - - + + @@ -122333,15 +122513,15 @@ - - - + + + - - - - + + + + @@ -122352,34 +122532,34 @@ - - + + - - - - + + + + - - + + - - - + + + - - - - + + + + @@ -122391,9 +122571,9 @@ - - - + + + @@ -122401,8 +122581,8 @@ - - + + @@ -122413,15 +122593,15 @@ - + - - - - - - + + + + + + @@ -122433,13 +122613,13 @@ - - - - + + + + - - + + @@ -122459,10 +122639,10 @@ - - - - + + + + @@ -122612,46 +122792,46 @@ - - - + + + - - - + + + - - + + - - - - - + + + + + - - + + - - - + + + - - - - + + + + - - - - - + + + + + @@ -122784,8 +122964,8 @@ - - + + @@ -122818,16 +122998,16 @@ - - + + - - + + - - + + @@ -122839,8 +123019,8 @@ - - + + @@ -122851,8 +123031,8 @@ - - + + @@ -122872,9 +123052,9 @@ - - - + + + @@ -122884,62 +123064,62 @@ - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -122957,14 +123137,14 @@ - - - + + + - - - + + + @@ -122999,13 +123179,13 @@ - - - - - - - + + + + + + + @@ -123229,62 +123409,62 @@ - - + + - - - + + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + @@ -123300,15 +123480,15 @@ - - + + - - - - - + + + + + @@ -123319,10 +123499,10 @@ - - - - + + + + @@ -123351,8 +123531,8 @@ - - + + @@ -123360,9 +123540,9 @@ - - - + + + @@ -123399,9 +123579,9 @@ - - - + + + @@ -123410,8 +123590,8 @@ - - + + @@ -123419,19 +123599,19 @@ - - - - - + + + + + - - - - - - + + + + + + @@ -123439,20 +123619,20 @@ - - + + - - + + - - + + - - + + @@ -123465,17 +123645,17 @@ - - + + - - + + - - - + + + @@ -123522,19 +123702,19 @@ - - - - - - - + + + + + + + - - - + + + @@ -123542,17 +123722,17 @@ - - - + + + - - + + @@ -123570,20 +123750,20 @@ - - + + - - + + - - + + @@ -123596,11 +123776,11 @@ - - - - - + + + + + @@ -123611,33 +123791,33 @@ - - - + + + - - - - + + + + - - - - + + + + - - + + - - + + @@ -123921,23 +124101,23 @@ - - + + - - - - + + + + - - - + + + @@ -123953,12 +124133,12 @@ - - - - - - + + + + + + @@ -124010,20 +124190,20 @@ - - + + - - - - + + + + - - - - + + + + @@ -124178,10 +124358,10 @@ - - - - + + + + @@ -124231,9 +124411,9 @@ - - - + + + @@ -124362,19 +124542,19 @@ - - - + + + - - - + + + - - - + + + @@ -124475,8 +124655,8 @@ - - + + @@ -124498,9 +124678,9 @@ - - - + + + @@ -124528,8 +124708,8 @@ - - + + @@ -124544,24 +124724,24 @@ - - + + - - - + + + - - - - + + + + - - - + + + @@ -124580,9 +124760,9 @@ - - - + + + @@ -124596,18 +124776,18 @@ - - + + - - - + + + - - - + + + @@ -124628,9 +124808,9 @@ - - - + + + @@ -124661,28 +124841,28 @@ - - + + - - + + - - - + + + - - - - + + + + - - - + + + @@ -124693,83 +124873,83 @@ - - - + + + - - - - + + + + - - - + + + - - + + - - - + + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + @@ -124825,17 +125005,17 @@ - - + + - - + + - - - + + + @@ -124849,20 +125029,20 @@ - - + + - - + + - - + + @@ -124931,9 +125111,9 @@ - - - + + + @@ -124941,44 +125121,44 @@ - - + + - - - - - + + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + @@ -124988,12 +125168,12 @@ - - - - - - + + + + + + @@ -125004,9 +125184,9 @@ - - - + + + @@ -125014,18 +125194,18 @@ - - - - + + + + - - - - - - - + + + + + + + @@ -125040,30 +125220,30 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + @@ -125099,8 +125279,8 @@ - - + + @@ -125176,20 +125356,20 @@ - - + + - - - - - - - - - - + + + + + + + + + + @@ -125198,19 +125378,19 @@ - - - + + + - - - - + + + + - - - + + + @@ -125237,36 +125417,36 @@ - - - - + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -125505,8 +125685,8 @@ - - + + @@ -125520,13 +125700,13 @@ - - + + - - - + + + @@ -125565,14 +125745,14 @@ - - - + + + - - - + + + @@ -125580,17 +125760,17 @@ - - - - + + + + - - + + @@ -125605,9 +125785,9 @@ - - - + + + @@ -125621,50 +125801,50 @@ - - - - + + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - + + @@ -125674,15 +125854,15 @@ - - - + + + - - - - + + + + @@ -125715,27 +125895,27 @@ - - - - + + + + - - - - - + + + + + - - - + + + - - + + @@ -125749,9 +125929,9 @@ - - - + + + @@ -125760,30 +125940,30 @@ - - - + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -125799,26 +125979,26 @@ - - + + - - - + + + - - + + - - - + + + @@ -125835,8 +126015,8 @@ - - + + @@ -125851,8 +126031,8 @@ - - + + @@ -125900,18 +126080,18 @@ - - - + + + - - + + - - - + + + @@ -125919,13 +126099,13 @@ - - + + - - - + + + @@ -125933,9 +126113,9 @@ - - - + + + @@ -125993,8 +126173,8 @@ - - + + @@ -126003,9 +126183,9 @@ - - - + + + @@ -126018,8 +126198,8 @@ - - + + @@ -126062,12 +126242,12 @@ - - + + - - + + @@ -126104,35 +126284,35 @@ - - + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - - - + + + @@ -126144,13 +126324,13 @@ - - - + + + - - + + @@ -126193,33 +126373,33 @@ - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + @@ -126240,8 +126420,8 @@ - - + + @@ -126266,10 +126446,10 @@ - - - - + + + + @@ -126279,12 +126459,12 @@ - - + + - - + + @@ -126295,17 +126475,17 @@ - - - - - - - + + + + + + + - - + + @@ -126322,8 +126502,8 @@ - - + + @@ -126349,15 +126529,15 @@ - - + + - - - - - + + + + + @@ -126369,8 +126549,8 @@ - - + + @@ -126396,8 +126576,8 @@ - - + + @@ -126407,20 +126587,20 @@ - - + + - + - - - + + + @@ -126434,41 +126614,41 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -126478,13 +126658,13 @@ - - + + - - - + + + @@ -126498,41 +126678,41 @@ - - - - - - + + + + + + - - + + - - - - - - + + + + + + - - - - - + + + + + - - - - - - - - + + + + + + + + @@ -126546,8 +126726,8 @@ - - + + @@ -126559,18 +126739,18 @@ - - + + - - - - + + + + @@ -126594,23 +126774,23 @@ - - - + + + - - - + + + - - - + + + - - + + @@ -126623,9 +126803,9 @@ - - - + + + @@ -126633,29 +126813,29 @@ - - - - + + + + - - + + - - - - - + + + + + - - - - - - + + + + + + @@ -126688,9 +126868,9 @@ - - - + + + @@ -126699,13 +126879,13 @@ - - + + - - - + + + @@ -126802,8 +126982,8 @@ - - + + @@ -126828,13 +127008,13 @@ - - - + + + - - + + @@ -126879,10 +127059,10 @@ - - + + - + @@ -126897,22 +127077,22 @@ - - - + + + - - - + + + - - + + - - + + @@ -126963,38 +127143,38 @@ - - - - + + + + - - - - - - - - + + + + + + + + - - + + - - + + - + - - + + @@ -127005,9 +127185,9 @@ - - - + + + @@ -127022,26 +127202,26 @@ - - + + - - - - + + + + - - - - - - + + + + + + - - + + @@ -127056,28 +127236,28 @@ - - + + - - - + + + - - + + - - - - - + + + + + - - - - + + + + @@ -127092,28 +127272,28 @@ - - - - - + + + + + - - + + - - - - - + + + + + - - - - + + + + @@ -127135,18 +127315,18 @@ - - + + - - + + - - + + @@ -127169,12 +127349,12 @@ - - + + - - + + @@ -127211,9 +127391,9 @@ - - - + + + @@ -127248,81 +127428,81 @@ - - - + + + - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -127447,12 +127627,12 @@ - - + + - - + + @@ -127495,14 +127675,14 @@ - - + + - - - - + + + + @@ -127523,36 +127703,36 @@ - - - - - + + + + + - - + + - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -127563,39 +127743,39 @@ - - + + - - - + + + - - - - + + + + - - - + + + - - + + - - - + + + - - - - + + + + @@ -127621,14 +127801,14 @@ - - + + - - - - + + + + @@ -127645,8 +127825,8 @@ - - + + @@ -127736,14 +127916,14 @@ - - - - - - - - + + + + + + + + @@ -127753,8 +127933,8 @@ - - + + @@ -127778,9 +127958,9 @@ - - - + + + @@ -127800,18 +127980,18 @@ - - - - + + + + - - - + + + @@ -127819,27 +127999,27 @@ - - - - - - + + + + + + - - - + + + - - - + + + - - - + + + @@ -127849,8 +128029,8 @@ - - + + @@ -127871,8 +128051,8 @@ - - + + @@ -127887,8 +128067,8 @@ - - + + @@ -127921,20 +128101,20 @@ - - + + - - + + - - + + @@ -127971,12 +128151,12 @@ - - + + - - + + @@ -127984,34 +128164,34 @@ - - + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -128093,9 +128273,9 @@ - - - + + + @@ -128256,41 +128436,41 @@ - - - + + + - - + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - - - + + + + @@ -128298,53 +128478,53 @@ - - - - + + + + - - - - - + + + + + - - - - + + + + - - + + - - + + - - - - - - + + + + + + - - - - - + + + + + @@ -128379,8 +128559,8 @@ - - + + @@ -128480,13 +128660,13 @@ - - - + + + - - + + @@ -128497,15 +128677,15 @@ - - - - - - - - - + + + + + + + + + @@ -128541,9 +128721,9 @@ - - - + + + @@ -128569,30 +128749,30 @@ - - - + + + - - - - + + + + - - - - + + + + - - - + + + @@ -128605,10 +128785,10 @@ - - - - + + + + @@ -128616,11 +128796,11 @@ - - - - - + + + + + @@ -128643,10 +128823,10 @@ - - - - + + + + @@ -128659,20 +128839,20 @@ - - - + + + - - - - + + + + - + - - + + @@ -128682,9 +128862,9 @@ - - - + + + @@ -128773,14 +128953,14 @@ - - - + + + - - + + @@ -128862,8 +129042,8 @@ - - + + @@ -128873,66 +129053,66 @@ - - + + - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - + + + + + + + + + - - + + - - + + - - + + - - + + - + - - - - + + + + @@ -128952,21 +129132,21 @@ - - - - + + + + - - - + + + - - - - + + + + @@ -128977,23 +129157,23 @@ - - - - - - - - + + + + + + + + - - + + - - - + + + @@ -129002,10 +129182,10 @@ - - - - + + + + @@ -129037,46 +129217,46 @@ - - - - + + + + - - - + + + - - + + - - + + - - - + + + - - - - - + + + + + - - + + - - - + + + @@ -129085,31 +129265,31 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -129118,23 +129298,23 @@ - - - + + + - - - + + + - - - + + + @@ -129142,34 +129322,34 @@ - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + @@ -129179,16 +129359,16 @@ - - - - + + + + - - - - + + + + @@ -129204,10 +129384,10 @@ - - - - + + + + @@ -129217,10 +129397,10 @@ - - - - + + + + @@ -129230,37 +129410,37 @@ - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -129271,9 +129451,9 @@ - - - + + + @@ -129287,11 +129467,11 @@ - - - - - + + + + + @@ -129323,11 +129503,11 @@ - - + + - + @@ -129344,15 +129524,15 @@ - - + + - - + + - - + + @@ -129372,8 +129552,8 @@ - - + + @@ -129383,8 +129563,8 @@ - - + + @@ -129396,8 +129576,8 @@ - - + + @@ -129411,18 +129591,18 @@ - - - + + + - - - - + + + + - - + + @@ -129430,10 +129610,10 @@ - - - - + + + + @@ -129446,14 +129626,14 @@ - - - - + + + + - - + + @@ -129489,18 +129669,18 @@ - - - + + + - - - + + + @@ -129511,8 +129691,8 @@ - - + + @@ -129523,29 +129703,29 @@ - - - - + + + + - - - - - + + + + + - - + + - - - + + + - - + + @@ -129564,11 +129744,11 @@ - - - - - + + + + + @@ -129576,8 +129756,8 @@ - - + + @@ -129595,11 +129775,11 @@ - - - - - + + + + + @@ -129627,21 +129807,21 @@ - - - + + + - - - - + + + + - - - - + + + + @@ -129654,9 +129834,9 @@ - - - + + + @@ -129667,13 +129847,13 @@ - - + + - - - + + + @@ -129681,50 +129861,50 @@ - - - + + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -129738,8 +129918,8 @@ - - + + @@ -129815,9 +129995,9 @@ - - - + + + @@ -129855,12 +130035,12 @@ - - + + - - - + + + @@ -129870,17 +130050,17 @@ - - - + + + - - - + + + - + @@ -129893,9 +130073,9 @@ - - - + + + @@ -129903,6 +130083,11 @@ + + + + + @@ -129937,6 +130122,11 @@ + + + + + @@ -129960,10 +130150,15 @@ - - - - + + + + + + + + + @@ -129991,13 +130186,13 @@ - - - - - - - + + + + + + + @@ -130184,12 +130379,12 @@ - - + + - - + + @@ -130201,11 +130396,11 @@ - - - - - + + + + + @@ -130246,8 +130441,8 @@ - - + + @@ -130300,8 +130495,8 @@ - - + + @@ -130313,9 +130508,9 @@ - - - + + + @@ -130326,28 +130521,28 @@ - - - + + + - - - - - - + + + + + + - - + + - - - - - + + + + + @@ -130358,9 +130553,9 @@ - - - + + + @@ -130421,8 +130616,8 @@ - - + + @@ -130461,9 +130656,9 @@ - - - + + + @@ -130519,8 +130714,8 @@ - - + + @@ -130573,51 +130768,51 @@ - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + @@ -130625,18 +130820,18 @@ - - - - + + + + - - + + @@ -130644,14 +130839,14 @@ - - - - + + + + - - - + + + @@ -130687,17 +130882,17 @@ - - + + - - - + + + @@ -130707,9 +130902,9 @@ - - - + + + @@ -130751,12 +130946,12 @@ - - + + - - + + @@ -130770,67 +130965,67 @@ - - - + + + - - + + - - + + - - + + - - + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + @@ -130838,19 +131033,19 @@ - - + + - - + + - - - - - + + + + + @@ -130861,41 +131056,41 @@ - - - - + + + + - - - + + + - - + + - - - - - + + + + + - - + + - - + + @@ -130909,16 +131104,16 @@ - - - - + + + + - - - - + + + + @@ -130939,11 +131134,11 @@ - - - - - + + + + + @@ -130960,24 +131155,24 @@ - - - - + + + + - - - - - + + + + + - - - - - + + + + + @@ -131012,12 +131207,12 @@ - - + + - - + + @@ -131042,18 +131237,18 @@ - - - + + + - - + + - - - + + + @@ -131077,18 +131272,18 @@ - - - - - + + + + + - - - - - + + + + + @@ -131099,19 +131294,19 @@ - - - - + + + + - - + + - - - + + + @@ -131130,14 +131325,14 @@ - - - + + + - - - + + + @@ -131163,9 +131358,9 @@ - - - + + + @@ -131178,22 +131373,22 @@ - - - - + + + + - - + + - - + + @@ -131207,43 +131402,43 @@ - - + + - - - + + + - - - + + + - - - - - + + + + + - - - + + + - - - - - + + + + + @@ -131256,9 +131451,9 @@ - - - + + + @@ -131291,14 +131486,14 @@ - - - - + + + + - - + + @@ -131309,44 +131504,44 @@ - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -131380,16 +131575,16 @@ - - - - - - + + + + + + - - - + + + @@ -131397,9 +131592,9 @@ - - - + + + @@ -131443,33 +131638,33 @@ - - - + + + - - - + + + - - + + - - + + - - - + + + - - - - + + + + @@ -131494,9 +131689,9 @@ - - - + + + @@ -131512,32 +131707,32 @@ - - - - + + + + - - + + - - + + - - - + + + - - - + + + - - - + + + @@ -131546,9 +131741,9 @@ - - - + + + @@ -131556,74 +131751,74 @@ - - - + + + - - + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - - + + - - - - + + + + @@ -131635,42 +131830,42 @@ - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - + + @@ -131685,8 +131880,8 @@ - - + + @@ -131706,8 +131901,8 @@ - - + + @@ -131721,61 +131916,61 @@ - - - - - + + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - + + + + @@ -131793,12 +131988,12 @@ - - - - - - + + + + + + @@ -131809,12 +132004,12 @@ - - - - - - + + + + + + @@ -131829,9 +132024,9 @@ - - - + + + @@ -131844,15 +132039,15 @@ - - + + - - - - - + + + + + @@ -131869,10 +132064,10 @@ - - - - + + + + @@ -131892,10 +132087,10 @@ - - - - + + + + @@ -131929,8 +132124,8 @@ - - + + @@ -131941,8 +132136,8 @@ - - + + @@ -132045,33 +132240,33 @@ - - + + - - + + - - - - - - + + + + + + - - - + + + - - + + @@ -132097,8 +132292,8 @@ - - + + @@ -132113,16 +132308,16 @@ - - + + - - + + - - + + @@ -132207,19 +132402,19 @@ - - - + + + - - - + + + - - - + + + @@ -132234,8 +132429,8 @@ - - + + @@ -132266,9 +132461,9 @@ - - - + + + @@ -132298,14 +132493,14 @@ - - - + + + - - - + + + @@ -132318,9 +132513,9 @@ - - - + + + @@ -132328,10 +132523,10 @@ - - - - + + + + @@ -132345,12 +132540,12 @@ - - + + - - + + @@ -132371,9 +132566,9 @@ - - - + + + @@ -132385,9 +132580,9 @@ - - - + + + @@ -132435,8 +132630,8 @@ - - + + @@ -132482,9 +132677,9 @@ - - - + + + @@ -132500,10 +132695,10 @@ - - - - + + + + @@ -132524,10 +132719,10 @@ - - - - + + + + @@ -132560,17 +132755,17 @@ - - + + - - - + + + @@ -132584,40 +132779,40 @@ - - + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - + + - - + + - - + + @@ -132639,20 +132834,20 @@ - - - - - - + + + + + + - - + + - - + + @@ -132660,21 +132855,21 @@ - - - - - + + + + + - - - - - + + + + + - - + + @@ -132685,7 +132880,7 @@ - + @@ -132704,21 +132899,21 @@ - - - - + + + + - - - - - - - - - + + + + + + + + + @@ -132752,8 +132947,8 @@ - - + + @@ -132773,9 +132968,9 @@ - - - + + + @@ -132783,23 +132978,23 @@ - - - + + + - - - + + + - - - + + + @@ -132820,37 +133015,37 @@ - - + + - - - - + + + + - - - + + + - - + + - - - - + + + + @@ -132864,11 +133059,11 @@ - - - - - + + + + + @@ -132919,10 +133114,10 @@ - - - - + + + + @@ -132981,24 +133176,24 @@ - - + + - - + + - - + + @@ -133008,11 +133203,11 @@ - - - - - + + + + + @@ -133057,14 +133252,14 @@ - - - - + + + + - - - + + + @@ -133296,8 +133491,8 @@ - - + + @@ -133317,29 +133512,29 @@ - - - + + + - - + + - - + + - - + + - - + + - - + + @@ -133351,14 +133546,14 @@ - - - + + + - - - + + + @@ -133371,16 +133566,16 @@ - - - - + + + + - - - - + + + + @@ -133432,12 +133627,12 @@ - - + + - - + + @@ -133484,24 +133679,24 @@ - - + + - - + + - - + + - - + + @@ -133521,13 +133716,13 @@ - - + + - - - + + + @@ -133541,19 +133736,18 @@ - - - - + + + + - - - - + + + + - @@ -133571,8 +133765,8 @@ - - + + @@ -133587,8 +133781,8 @@ - - + + @@ -133622,8 +133816,8 @@ - - + + @@ -133641,10 +133835,10 @@ - - - - + + + + @@ -133657,54 +133851,54 @@ - - + + - - - + + + - - + + - + - + - - - - + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - + + - - + + @@ -133713,36 +133907,36 @@ - - - - - + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - + + + + + + @@ -133753,12 +133947,12 @@ - - - - - - + + + + + + @@ -133777,9 +133971,9 @@ - - - + + + @@ -133789,8 +133983,8 @@ - - + + @@ -133804,10 +133998,10 @@ - - - - + + + + @@ -133820,13 +134014,13 @@ - - - + + + - - + + @@ -133879,11 +134073,11 @@ - - - - - + + + + + @@ -133899,20 +134093,20 @@ - - + + - - + + - - + + @@ -133920,24 +134114,24 @@ - - + + - - + + - - + + @@ -133997,8 +134191,8 @@ - - + + @@ -134008,21 +134202,21 @@ - - - - - + + + + + - - - - + + + + @@ -134036,19 +134230,19 @@ - - - + + + - - + + - - - - + + + + @@ -134071,48 +134265,48 @@ - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + @@ -134121,7 +134315,7 @@ - + @@ -134161,17 +134355,17 @@ - + - + - - + + @@ -134190,8 +134384,8 @@ - - + + @@ -134218,31 +134412,31 @@ - - + + - - - - + + + + - - - + + + - - - + + + @@ -134302,8 +134496,8 @@ - - + + @@ -134344,16 +134538,16 @@ - - + + - - + + - - + + @@ -134364,8 +134558,8 @@ - - + + @@ -134388,12 +134582,12 @@ - - + + - - + + @@ -134409,8 +134603,8 @@ - - + + @@ -134529,10 +134723,10 @@ - - - - + + + + @@ -134541,20 +134735,20 @@ - - - - - - - - + + + + + + + + - - - - + + + + @@ -134562,14 +134756,14 @@ - - - + + + - - - + + + @@ -134587,8 +134781,8 @@ - - + + @@ -134600,8 +134794,8 @@ - - + + @@ -134638,8 +134832,8 @@ - - + + @@ -134690,22 +134884,22 @@ - - - - + + + + - - - - + + + + - - - - + + + + @@ -134795,8 +134989,8 @@ - - + + @@ -134804,22 +134998,22 @@ - - + + - - - - - - + + + + + + - - - - + + + + @@ -134832,9 +135026,9 @@ - - - + + + @@ -134842,9 +135036,9 @@ - - - + + + @@ -134892,13 +135086,13 @@ - - - - - - - + + + + + + + @@ -134906,28 +135100,28 @@ - - + + - - + + - - + + - - + + - - + + @@ -134943,20 +135137,20 @@ - - - - - - + + + + + + - - - + + + - - + + @@ -134972,8 +135166,8 @@ - - + + @@ -134990,8 +135184,8 @@ - - + + @@ -135004,15 +135198,15 @@ - - - + + + - - - - + + + + @@ -135020,39 +135214,39 @@ - - - + + + - - - - + + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + @@ -135060,30 +135254,30 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + @@ -135210,8 +135404,8 @@ - - + + @@ -135330,12 +135524,12 @@ - - + + - - + + @@ -135352,9 +135546,9 @@ - - - + + + @@ -135362,9 +135556,9 @@ - - - + + + @@ -135372,9 +135566,9 @@ - - - + + + @@ -135399,12 +135593,12 @@ - - + + - - + + @@ -135422,10 +135616,10 @@ - - - - + + + + @@ -135442,62 +135636,62 @@ - - - - + + + + - - - + + + - - + + - - - - - - + + + + + + - - - - + + + + - - - - - - - + + + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -135508,7 +135702,7 @@ - + @@ -135542,10 +135736,10 @@ - - - - + + + + @@ -135587,7 +135781,7 @@ - + @@ -135595,34 +135789,34 @@ - - + + - - + + - - + + - - - - - - + + + + + + - - - - + + + + - - + + @@ -135633,10 +135827,10 @@ - - - - + + + + @@ -135646,8 +135840,8 @@ - - + + @@ -135658,8 +135852,8 @@ - - + + @@ -135697,8 +135891,8 @@ - - + + @@ -135736,14 +135930,14 @@ - - - - - + + + + + - - + + @@ -135781,11 +135975,11 @@ - - - - - + + + + + @@ -135929,21 +136123,21 @@ - - + + - - - + + + - - + + - - + + @@ -135977,11 +136171,11 @@ - - - - - + + + + + @@ -135996,21 +136190,21 @@ - - + + - - + + - - + + - - - + + + @@ -136026,11 +136220,11 @@ - - - - - + + + + + @@ -136071,21 +136265,21 @@ - - - - + + + + - - - - + + + + - - - + + + @@ -136106,26 +136300,26 @@ - - - - + + + + - - - + + + - - - - - + + + + + - - - + + + @@ -136134,20 +136328,20 @@ - - - + + + - - - + + + - - - + + + @@ -136157,26 +136351,26 @@ - - - + + + - - - + + + - - - - + + + + - - - - + + + + @@ -136322,9 +136516,9 @@ - - - + + + @@ -136333,9 +136527,9 @@ - - - + + + @@ -136343,21 +136537,21 @@ - - + + - - - - + + + + - - + + - - + + @@ -136365,15 +136559,15 @@ - - - + + + - - - - + + + + @@ -136385,33 +136579,33 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - - + + + @@ -136419,28 +136613,28 @@ - - - + + + - - - - - + + + + + - - + + - - - + + + - - + + @@ -136451,13 +136645,13 @@ - - - - - - - + + + + + + + @@ -136489,14 +136683,14 @@ - - + + - - - - + + + + @@ -136504,10 +136698,10 @@ - - - - + + + + @@ -136515,10 +136709,10 @@ - - - - + + + + @@ -136541,10 +136735,10 @@ - - - - + + + + @@ -136560,29 +136754,29 @@ - + - - + + - - + + - - - - + + + + - - - - - - + + + + + + @@ -136611,13 +136805,13 @@ - - - - - - - + + + + + + + @@ -136636,10 +136830,10 @@ - - - - + + + + @@ -136656,10 +136850,10 @@ - - - - + + + + @@ -136669,30 +136863,30 @@ - - - + + + - - - - - - + + + + + + - - + + - - - - - - - + + + + + + + @@ -136709,13 +136903,13 @@ - - + + - - - + + + @@ -136734,39 +136928,39 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - + + @@ -136789,55 +136983,55 @@ - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -136847,9 +137041,9 @@ - - - + + + @@ -136859,16 +137053,16 @@ - - - - - + + + + + - - - + + + @@ -136903,15 +137097,15 @@ - - - + + + - - - - + + + + @@ -136924,11 +137118,11 @@ - - - - - + + + + + @@ -136938,16 +137132,16 @@ - - - - - + + + + + - - - + + + @@ -136957,8 +137151,8 @@ - - + + @@ -136970,25 +137164,25 @@ - - + + - - + + - - - - - - - + + + + + + + - - + + @@ -136999,9 +137193,9 @@ - - - + + + @@ -137053,9 +137247,9 @@ - - - + + + @@ -137089,22 +137283,22 @@ - - - - - + + + + + - - - - - + + + + + - - + + @@ -137183,13 +137377,13 @@ - - + + - - - + + + @@ -137241,8 +137435,8 @@ - - + + @@ -137258,9 +137452,9 @@ - - - + + + @@ -137270,17 +137464,17 @@ - - - - + + + + - - - - - + + + + + @@ -137297,17 +137491,17 @@ - - + + - - - - - - - + + + + + + + @@ -137316,23 +137510,23 @@ - - + + - - - - + + + + - - - + + + - - + + @@ -137343,12 +137537,12 @@ - - - - - - + + + + + + @@ -137360,8 +137554,8 @@ - - + + @@ -137373,18 +137567,18 @@ - - - - - - + + + + + + - - - - + + + + @@ -137392,12 +137586,12 @@ - - + + - - + + @@ -137435,9 +137629,9 @@ - - - + + + @@ -137449,8 +137643,8 @@ - - + + @@ -137482,45 +137676,45 @@ - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + @@ -137565,9 +137759,9 @@ - - - + + + @@ -137598,10 +137792,10 @@ - - - - + + + + @@ -137693,14 +137887,14 @@ - - - - + + + + - - + + @@ -137718,8 +137912,8 @@ - - + + @@ -137964,9 +138158,9 @@ - - - + + + @@ -138055,9 +138249,9 @@ - - - + + + @@ -138078,13 +138272,13 @@ - - - - - - - + + + + + + + @@ -138096,29 +138290,29 @@ - - - + + + - - + + - - + + - - - - - - + + + + + + - - + + @@ -138176,9 +138370,9 @@ - - - + + + @@ -138190,17 +138384,17 @@ - - - - - - + + + + + + - - - + + + @@ -138324,9 +138518,9 @@ - - - + + + @@ -138359,30 +138553,30 @@ - - + + - - + + - - + + - - - - + + + + - - - - - - + + + + + + @@ -138405,9 +138599,9 @@ - - - + + + @@ -138425,8 +138619,8 @@ - - + + @@ -138461,10 +138655,10 @@ - - - - + + + + @@ -138473,21 +138667,21 @@ - - - - + + + + - - - + + + - - - - + + + + @@ -138495,21 +138689,21 @@ - - - - + + + + - - - - - + + + + + - - - + + + @@ -138528,12 +138722,12 @@ - - - + + + - - + + @@ -138548,26 +138742,26 @@ - - + + - - + + - - + + - + - + @@ -138579,12 +138773,12 @@ - - + + - - + + @@ -138599,23 +138793,23 @@ - - + + - - + + - - - + + + - + - + @@ -138634,15 +138828,15 @@ - - - + + + - - - - + + + + @@ -138655,20 +138849,20 @@ - - - + + + - - - - + + + + - - - + + + @@ -138690,9 +138884,9 @@ - - - + + + @@ -138701,10 +138895,10 @@ - - - - + + + + @@ -138712,9 +138906,9 @@ - - - + + + @@ -138722,9 +138916,9 @@ - - - + + + @@ -138733,17 +138927,17 @@ - - - - + + + + - + @@ -138755,8 +138949,8 @@ - - + + @@ -138798,8 +138992,8 @@ - - + + @@ -138892,8 +139086,8 @@ - - + + @@ -138902,8 +139096,8 @@ - - + + @@ -138935,19 +139129,19 @@ - - - - - - - - - + + + + + + + + + - - + + @@ -138959,9 +139153,9 @@ - - - + + + @@ -138980,14 +139174,14 @@ - - - - + + + + - - + + @@ -139015,9 +139209,9 @@ - - - + + + @@ -139035,6 +139229,7 @@ + @@ -139056,19 +139251,19 @@ - - + + - - - - + + + + - - - + + + @@ -139086,8 +139281,8 @@ - - + + @@ -139097,24 +139292,24 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -139124,32 +139319,32 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -139166,12 +139361,12 @@ - + - - - + + + @@ -139299,10 +139494,10 @@ - - - - + + + + @@ -139310,10 +139505,10 @@ - - - - + + + + @@ -139392,19 +139587,19 @@ - - - + + + - - - + + + - - - + + + @@ -139434,8 +139629,8 @@ - - + + @@ -139453,16 +139648,16 @@ - - + + - - + + @@ -139515,9 +139710,9 @@ - - - + + + @@ -139531,9 +139726,9 @@ - - - + + + @@ -139572,8 +139767,8 @@ - - + + @@ -139619,9 +139814,9 @@ - - - + + + @@ -139712,11 +139907,11 @@ - - - - - + + + + + @@ -139951,9 +140146,9 @@ - - - + + + @@ -140071,15 +140266,15 @@ - - + + - - - - - + + + + + @@ -140113,8 +140308,8 @@ - - + + @@ -140153,17 +140348,17 @@ - - + + - - + + - - - + + + @@ -140174,8 +140369,8 @@ - - + + @@ -140206,12 +140401,12 @@ - - + + - - + + @@ -140234,8 +140429,8 @@ - - + + @@ -140257,8 +140452,8 @@ - - + + @@ -140294,9 +140489,9 @@ - - - + + + @@ -140319,9 +140514,9 @@ - - - + + + @@ -140336,16 +140531,16 @@ - - + + - - + + - - + + @@ -140364,8 +140559,8 @@ - - + + @@ -140380,16 +140575,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -140423,8 +140618,8 @@ - - + + @@ -140439,15 +140634,15 @@ - - - - + + + + - - - + + + @@ -140458,9 +140653,9 @@ - - - + + + @@ -140472,9 +140667,9 @@ - - - + + + @@ -140493,24 +140688,24 @@ - - - + + + - - - - + + + + - - - + + + @@ -140537,8 +140732,8 @@ - - + + @@ -140557,9 +140752,9 @@ - - - + + + @@ -140568,28 +140763,28 @@ - - - - + + + + - - + + - - + + - - - + + + - - - + + + @@ -140598,14 +140793,14 @@ - - - - + + + + - - + + @@ -140616,9 +140811,9 @@ - - - + + + @@ -140633,8 +140828,8 @@ - - + + @@ -140656,8 +140851,8 @@ - - + + @@ -140759,15 +140954,15 @@ - - - + + + - - - - + + + + @@ -140779,8 +140974,8 @@ - - + + @@ -140846,16 +141041,16 @@ - - + + - - + + @@ -140863,10 +141058,10 @@ - - - - + + + + @@ -140890,38 +141085,38 @@ - - + + - - + + - - - + + + - - - + + + - - + + - - + + @@ -140929,10 +141124,10 @@ - - - - + + + + @@ -140956,9 +141151,9 @@ - - - + + + @@ -140966,8 +141161,8 @@ - - + + @@ -141006,9 +141201,9 @@ - - - + + + @@ -141029,10 +141224,10 @@ - - - - + + + + @@ -141082,9 +141277,9 @@ - - - + + + @@ -141144,21 +141339,21 @@ - - - + + + - - - - - - + + + + + + - - + + @@ -141334,9 +141529,9 @@ - - - + + + @@ -141350,27 +141545,27 @@ - - + + - - - - + + + + - - - + + + @@ -141384,33 +141579,33 @@ - - - - - + + + + + - - - + + + - - + + - - + + - - + + - - - + + + @@ -141656,15 +141851,15 @@ - - - + + + - - - - + + + + @@ -141715,15 +141910,15 @@ - - - + + + - - - + + + @@ -141736,15 +141931,15 @@ - - - - + + + + - - - + + + @@ -141822,9 +142017,9 @@ - - - + + + @@ -141840,36 +142035,36 @@ - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -141884,9 +142079,9 @@ - - - + + + @@ -141901,14 +142096,14 @@ - - - + + + - - - + + + @@ -141950,15 +142145,15 @@ - - + + - - - - - + + + + + @@ -141966,11 +142161,11 @@ - - - - - + + + + + @@ -141986,8 +142181,8 @@ - - + + @@ -142007,8 +142202,8 @@ - - + + @@ -142051,8 +142246,8 @@ - - + + @@ -142088,8 +142283,8 @@ - - + + @@ -142156,9 +142351,9 @@ - - - + + + @@ -142229,26 +142424,26 @@ - - - - - - - + + + + + + + - - + + - - - + + + @@ -142285,21 +142480,21 @@ - - - + + + - - - + + + - - - + + + @@ -142363,15 +142558,15 @@ - - + + - - + + @@ -142382,16 +142577,16 @@ - - - - - + + + + + - - - + + + @@ -142400,11 +142595,11 @@ - - - - - + + + + + @@ -142413,9 +142608,9 @@ - - - + + + @@ -142465,11 +142660,11 @@ - - - - - + + + + + @@ -142479,23 +142674,23 @@ - - - - + + + + - - - + + + - - + + - - + + @@ -142508,12 +142703,12 @@ - - + + - - + + @@ -142521,8 +142716,8 @@ - - + + @@ -142539,8 +142734,8 @@ - - + + @@ -142548,12 +142743,12 @@ - - - + + + - + @@ -142562,9 +142757,9 @@ - - - + + + @@ -142587,17 +142782,17 @@ - - - + + + - - + + @@ -142664,28 +142859,28 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - + + + @@ -142695,17 +142890,17 @@ - - + + - - - - + + + + @@ -142716,26 +142911,26 @@ - - - - + + + + - - - - + + + + - - + + - - - - + + + + @@ -142746,9 +142941,9 @@ - - - + + + @@ -142780,10 +142975,10 @@ - - - - + + + + @@ -142816,9 +143011,9 @@ - - - + + + @@ -142835,15 +143030,15 @@ - - - - + + + + - - - + + + @@ -142867,12 +143062,12 @@ - - - - - - + + + + + + @@ -142894,13 +143089,13 @@ - - + + - - - + + + @@ -142917,10 +143112,10 @@ - - - - + + + + @@ -142931,47 +143126,47 @@ - - - + + + - - + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + diff --git a/android/abi_gki_aarch64_xiaomi b/android/abi_gki_aarch64_xiaomi index ff95f2ae9959..b6b8934aa985 100644 --- a/android/abi_gki_aarch64_xiaomi +++ b/android/abi_gki_aarch64_xiaomi @@ -40,6 +40,7 @@ scsi_print_command scsi_dma_map scsi_host_alloc + scsi_normalize_sense sg_copy_from_buffer sg_copy_to_buffer ufshcd_alloc_host @@ -58,6 +59,9 @@ blk_queue_update_dma_alignment blk_queue_update_dma_pad blk_ksm_get_slot_idx + mempool_resize + mempool_alloc_pages + mempool_free_pages #required by cs35l41 module regmap_raw_write_async From a1a4c802659b30cd49269156661268d4b6da0a49 Mon Sep 17 00:00:00 2001 From: Daeho Jeong Date: Sun, 25 Jul 2021 21:18:19 -0700 Subject: [PATCH 14/24] UPSTREAM: f2fs: change fiemap way in printing compression chunk When we print out a discontinuous compression chunk, it shows like a continuous chunk now. To show it more correctly, I've changed the way of printing fiemap info like below. Plus, eliminated NEW_ADDR(-1) in fiemap info, since it is not in fiemap user api manual. Let's assume 16KB compression cluster. Logical Physical Length Flags 0: 0000000000000000 00000002c091f000 0000000000004000 1008 1: 0000000000004000 00000002c0920000 0000000000004000 1008 ... 9: 0000000000034000 0000000f8c623000 0000000000004000 1008 10: 0000000000038000 000000101a6eb000 0000000000004000 1008 0: 0000000000000000 00000002c091f000 0000000000004000 1008 1: 0000000000004000 00000002c0920000 0000000000004000 1008 ... 9: 0000000000034000 0000000f8c623000 0000000000001000 1008 10: 0000000000035000 000000101a6ea000 0000000000003000 1008 11: 0000000000038000 000000101a6eb000 0000000000002000 1008 12: 000000000003a000 00000002c3544000 0000000000002000 1008 Flags 0x1000 => FIEMAP_EXTENT_MERGED 0x0008 => FIEMAP_EXTENT_ENCODED Signed-off-by: Daeho Jeong Tested-by: Eric Biggers Signed-off-by: Jaegeuk Kim Bug: 205123902 (cherry picked from commit 093f0bac32b617960899c7e00f4550373c383dd0) Change-Id: Id140cc153be1213c4823b24076a6da0684e195ba Signed-off-by: Daeho Jeong --- fs/f2fs/data.c | 75 ++++++++++++++++++++++++++++---------------------- 1 file changed, 42 insertions(+), 33 deletions(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 4a986daad16b..9fb150cca9d7 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -1859,8 +1859,9 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, u64 logical = 0, phys = 0, size = 0; u32 flags = 0; int ret = 0; - bool compr_cluster = false; + bool compr_cluster = false, compr_appended; unsigned int cluster_size = F2FS_I(inode)->i_cluster_size; + unsigned int count_in_cluster = 0; loff_t maxbytes; if (fieinfo->fi_flags & FIEMAP_FLAG_CACHE) { @@ -1908,15 +1909,17 @@ next: map.m_next_pgofs = &next_pgofs; map.m_seg_type = NO_CHECK_TYPE; - if (compr_cluster) - map.m_len = cluster_size - 1; + if (compr_cluster) { + map.m_lblk += 1; + map.m_len = cluster_size - count_in_cluster; + } ret = f2fs_map_blocks(inode, &map, 0, F2FS_GET_BLOCK_FIEMAP); if (ret) goto out; /* HOLE */ - if (!(map.m_flags & F2FS_MAP_FLAGS)) { + if (!compr_cluster && !(map.m_flags & F2FS_MAP_FLAGS)) { start_blk = next_pgofs; if (blks_to_bytes(inode, start_blk) < blks_to_bytes(inode, @@ -1926,6 +1929,14 @@ next: flags |= FIEMAP_EXTENT_LAST; } + compr_appended = false; + /* In a case of compressed cluster, append this to the last extent */ + if (compr_cluster && ((map.m_flags & F2FS_MAP_UNWRITTEN) || + !(map.m_flags & F2FS_MAP_FLAGS))) { + compr_appended = true; + goto skip_fill; + } + if (size) { flags |= FIEMAP_EXTENT_MERGED; if (IS_ENCRYPTED(inode)) @@ -1942,39 +1953,37 @@ next: if (start_blk > last_blk) goto out; - if (compr_cluster) { - compr_cluster = false; - - - logical = blks_to_bytes(inode, start_blk - 1); - phys = blks_to_bytes(inode, map.m_pblk); - size = blks_to_bytes(inode, cluster_size); - - flags |= FIEMAP_EXTENT_ENCODED; - - start_blk += cluster_size - 1; - - if (start_blk > last_blk) - goto out; - - goto prep_next; - } - +skip_fill: if (map.m_pblk == COMPRESS_ADDR) { compr_cluster = true; - start_blk++; - goto prep_next; + count_in_cluster = 1; + } else if (compr_appended) { + unsigned int appended_blks = cluster_size - + count_in_cluster + 1; + size += blks_to_bytes(inode, appended_blks); + start_blk += appended_blks; + compr_cluster = false; + } else { + logical = blks_to_bytes(inode, start_blk); + phys = __is_valid_data_blkaddr(map.m_pblk) ? + blks_to_bytes(inode, map.m_pblk) : 0; + size = blks_to_bytes(inode, map.m_len); + flags = 0; + + if (compr_cluster) { + flags = FIEMAP_EXTENT_ENCODED; + count_in_cluster += map.m_len; + if (count_in_cluster == cluster_size) { + compr_cluster = false; + size += blks_to_bytes(inode, 1); + } + } else if (map.m_flags & F2FS_MAP_UNWRITTEN) { + flags = FIEMAP_EXTENT_UNWRITTEN; + } + + start_blk += bytes_to_blks(inode, size); } - logical = blks_to_bytes(inode, start_blk); - phys = blks_to_bytes(inode, map.m_pblk); - size = blks_to_bytes(inode, map.m_len); - flags = 0; - if (map.m_flags & F2FS_MAP_UNWRITTEN) - flags = FIEMAP_EXTENT_UNWRITTEN; - - start_blk += bytes_to_blks(inode, size); - prep_next: cond_resched(); if (fatal_signal_pending(current)) From 7a7b5f89d96f514a0754957debeca3c6936bc580 Mon Sep 17 00:00:00 2001 From: mazhenhua Date: Wed, 10 Nov 2021 11:16:06 +0800 Subject: [PATCH 15/24] ANDROID: locking/rwsem: only clean RWSEM_FLAG_HANDOFF when already set sem->count will be negative after writer is killed if flag RWSEM_FLAG_HANDOFF is not set, we shouldn't clean again CPU2 CPU4 task A[reader] task B[writer] down_read_killable[locked] sem->count=0x100 down_write_killable sem->count=0x102[wlist not empty] up_read count=0x2 sig kill received down_read_killable sem->count=0x102[wlist not empty] goto branch out_nolock: list_del(&waiter.list); wait list is empty sem->count-RWSEM_FLAG_HANDOFF sem->count=0xFE list_empty(&sem->wait_list) is TRUE sem->count andnot RWSEM_FLAG_WAITERS sem->count=0xFC up_read sem->count-=0x100 sem->count=0xFFFFFFFFFFFFFFFC DEBUG_RWSEMS_WARN_ON(tmp < 0, sem); Bug: 204595609 Link: https://lore.kernel.org/all/a630a9aa-8c66-31c9-21a0-3d30bde2c9df@redhat.com/T/ Signed-off-by: mazhenhua Change-Id: Ife64c179335d74768a3d68e402c72d10148f3e7e --- kernel/locking/rwsem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c index e0505b9b8a31..7b0d64f0d550 100644 --- a/kernel/locking/rwsem.c +++ b/kernel/locking/rwsem.c @@ -1287,7 +1287,7 @@ out_nolock: list_del(&waiter.list); if (unlikely(wstate == WRITER_HANDOFF)) - atomic_long_add(-RWSEM_FLAG_HANDOFF, &sem->count); + atomic_long_andnot(RWSEM_FLAG_HANDOFF, &sem->count); if (list_empty(&sem->wait_list)) atomic_long_andnot(RWSEM_FLAG_WAITERS, &sem->count); From 8630facf34057a107e55b0e0138f7c5841908119 Mon Sep 17 00:00:00 2001 From: Rick Yiu Date: Tue, 16 Nov 2021 12:25:03 +0800 Subject: [PATCH 16/24] Revert "sched/fair: Ensure _sum and _avg values stay consistent" This reverts commit 20285dc2711c96a7fc1a72707823c580702edde6, which causes serious performance downgrade because the calculated cpu frequency will be much lower than before due to change of cpu util. Bug: 205915994 Test: build pass Change-Id: I68dced7a58547a3324fcfeebea6c02bb30c4182d Signed-off-by: Rick Yiu --- kernel/sched/fair.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 8b45d14616ee..f9c570d86282 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -3682,15 +3682,15 @@ update_cfs_rq_load_avg(u64 now, struct cfs_rq *cfs_rq) r = removed_load; sub_positive(&sa->load_avg, r); - sa->load_sum = sa->load_avg * divider; + sub_positive(&sa->load_sum, r * divider); r = removed_util; sub_positive(&sa->util_avg, r); - sa->util_sum = sa->util_avg * divider; + sub_positive(&sa->util_sum, r * divider); r = removed_runnable; sub_positive(&sa->runnable_avg, r); - sa->runnable_sum = sa->runnable_avg * divider; + sub_positive(&sa->runnable_sum, r * divider); /* * removed_runnable is the unweighted version of removed_load so we From de0ba4ea3c417b3cac2f6cef6fcbae6bde36b88d Mon Sep 17 00:00:00 2001 From: Rick Yiu Date: Tue, 16 Nov 2021 12:33:07 +0800 Subject: [PATCH 17/24] Revert "sched/pelt: Ensure that *_sum is always synced with *_avg" This reverts commit 813ff24f1d08cb4b4605fe222bb104a8dbdfd7f5. Bug: 205915994 Test: build pass Signed-off-by: Rick Yiu Change-Id: I77d9a103d71da43ce2fe9b630c7a5e12b62e8e42 --- kernel/sched/fair.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index f9c570d86282..aa3d2291874d 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -3777,17 +3777,11 @@ static void attach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *s */ static void detach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se) { - /* - * cfs_rq->avg.period_contrib can be used for both cfs_rq and se. - * See ___update_load_avg() for details. - */ - u32 divider = get_pelt_divider(&cfs_rq->avg); - dequeue_load_avg(cfs_rq, se); sub_positive(&cfs_rq->avg.util_avg, se->avg.util_avg); - cfs_rq->avg.util_sum = cfs_rq->avg.util_avg * divider; + sub_positive(&cfs_rq->avg.util_sum, se->avg.util_sum); sub_positive(&cfs_rq->avg.runnable_avg, se->avg.runnable_avg); - cfs_rq->avg.runnable_sum = cfs_rq->avg.runnable_avg * divider; + sub_positive(&cfs_rq->avg.runnable_sum, se->avg.runnable_sum); add_tg_cfs_propagate(cfs_rq, -se->avg.load_sum); From d736cbf8d9ac2f39a42a1b784c384b0ad12c28d9 Mon Sep 17 00:00:00 2001 From: Rick Yiu Date: Tue, 16 Nov 2021 12:34:15 +0800 Subject: [PATCH 18/24] Revert "sched/fair: Keep load_avg and load_sum synced" This reverts commit 4c37b062edae8ad3e1f279ecc084f254bc8161ae. Bug: 205915994 Test: build pass Signed-off-by: Rick Yiu Change-Id: Ifb4ca2d5beab425665b1cc047899e33ceb0ded23 --- kernel/sched/fair.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index aa3d2291874d..7d009aaccb72 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -3511,9 +3511,10 @@ update_tg_cfs_runnable(struct cfs_rq *cfs_rq, struct sched_entity *se, struct cf static inline void update_tg_cfs_load(struct cfs_rq *cfs_rq, struct sched_entity *se, struct cfs_rq *gcfs_rq) { - long delta, running_sum, runnable_sum = gcfs_rq->prop_runnable_sum; + long delta_avg, running_sum, runnable_sum = gcfs_rq->prop_runnable_sum; unsigned long load_avg; u64 load_sum = 0; + s64 delta_sum; u32 divider; if (!runnable_sum) @@ -3560,13 +3561,13 @@ update_tg_cfs_load(struct cfs_rq *cfs_rq, struct sched_entity *se, struct cfs_rq load_sum = (s64)se_weight(se) * runnable_sum; load_avg = div_s64(load_sum, divider); - delta = load_avg - se->avg.load_avg; + delta_sum = load_sum - (s64)se_weight(se) * se->avg.load_sum; + delta_avg = load_avg - se->avg.load_avg; se->avg.load_sum = runnable_sum; se->avg.load_avg = load_avg; - - add_positive(&cfs_rq->avg.load_avg, delta); - cfs_rq->avg.load_sum = cfs_rq->avg.load_avg * divider; + add_positive(&cfs_rq->avg.load_avg, delta_avg); + add_positive(&cfs_rq->avg.load_sum, delta_sum); } static inline void add_tg_cfs_propagate(struct cfs_rq *cfs_rq, long runnable_sum) From 775cd2119d2b8b69788028aeaa29e7d94f88017a Mon Sep 17 00:00:00 2001 From: Shaleen Agrawal Date: Tue, 16 Nov 2021 13:18:03 -0800 Subject: [PATCH 19/24] ANDROID: qcom: Add smp_call_function_single_async to ABI Need to add additional symbol in execution path to ABI list. Bug: 176077958 Change-Id: I676b4f9a016c825572d10de49b6062a90078f2f2 Signed-off-by: Shaleen Agrawal --- android/abi_gki_aarch64_qcom | 1 + 1 file changed, 1 insertion(+) diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index be9112998f23..c2a299356d27 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -2251,6 +2251,7 @@ smp_call_function smp_call_function_any smp_call_function_single + smp_call_function_single_async snd_card_free snd_card_new snd_card_register From 2f3f5731de0536a6a1048ae01e129cebec48e664 Mon Sep 17 00:00:00 2001 From: Liangliang Li Date: Wed, 10 Nov 2021 18:05:13 +0800 Subject: [PATCH 20/24] ANDROID: GKI: Add vendor hook to binder transaction We want to get binder free space information in the binder transaction, but this needs to hold the mutex lock. So we add this restrict hook to do this. Bug: 205648032 Change-Id: Ie1f377018da686bd62f5ac2d1e5421899741e6d5 Signed-off-by: Liangliang Li --- drivers/android/binder.c | 1 + drivers/android/vendor_hooks.c | 1 + include/trace/hooks/binder.h | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index b03bf4e11a08..c845c1f8a695 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -2797,6 +2797,7 @@ static void binder_transaction(struct binder_proc *proc, if (target_thread) e->to_thread = target_thread->pid; e->to_proc = target_proc->pid; + trace_android_rvh_binder_transaction(target_proc, proc, thread, tr); /* TODO: reuse incoming transaction for reply */ t = kzalloc(sizeof(*t), GFP_KERNEL); diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 952053d4f5fa..9d2a765b164d 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -289,6 +289,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_timerfd_create); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_alloc_new_buf_locked); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_reply); 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_new_ref); diff --git a/include/trace/hooks/binder.h b/include/trace/hooks/binder.h index ffba8746e58b..36a70248f5cf 100644 --- a/include/trace/hooks/binder.h +++ b/include/trace/hooks/binder.h @@ -52,6 +52,10 @@ DECLARE_HOOK(android_vh_binder_trans, TP_PROTO(struct binder_proc *target_proc, struct binder_proc *proc, struct binder_thread *thread, struct binder_transaction_data *tr), TP_ARGS(target_proc, proc, thread, tr)); +DECLARE_RESTRICTED_HOOK(android_rvh_binder_transaction, + TP_PROTO(struct binder_proc *target_proc, struct binder_proc *proc, + struct binder_thread *thread, struct binder_transaction_data *tr), + TP_ARGS(target_proc, proc, thread, tr), 1); DECLARE_HOOK(android_vh_binder_preset, TP_PROTO(struct hlist_head *hhead, struct mutex *lock), TP_ARGS(hhead, lock)); From 5dac28a174baa3d6a8f8b6dc71cde594efc30d8a Mon Sep 17 00:00:00 2001 From: Anton Yakovlev Date: Tue, 2 Mar 2021 17:47:01 +0100 Subject: [PATCH 21/24] BACKPORT: uapi: virtio_ids: add a sound device type ID from OASIS spec The OASIS virtio spec defines a sound device type ID that is not present in the header yet. Signed-off-by: Anton Yakovlev Link: https://lore.kernel.org/r/20210302164709.3142702-2-anton.yakovlev@opensynergy.com Signed-off-by: Takashi Iwai (cherry picked from commit 0ae0337f929a970ee8d83e0e95e6b8d05562ce3b https://github.com/torvalds/linux.git master) Change-Id: I486371e1ec8d25d42f85f710ce82e866367df4da Signed-off-by: Hao Chen --- include/uapi/linux/virtio_ids.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/uapi/linux/virtio_ids.h b/include/uapi/linux/virtio_ids.h index b052355ac7a3..bc740d6d2259 100644 --- a/include/uapi/linux/virtio_ids.h +++ b/include/uapi/linux/virtio_ids.h @@ -45,6 +45,7 @@ #define VIRTIO_ID_CRYPTO 20 /* virtio crypto */ #define VIRTIO_ID_IOMMU 23 /* virtio IOMMU */ #define VIRTIO_ID_MEM 24 /* virtio mem */ +#define VIRTIO_ID_SOUND 25 /* virtio sound */ #define VIRTIO_ID_FS 26 /* virtio filesystem */ #define VIRTIO_ID_PMEM 27 /* virtio pmem */ #define VIRTIO_ID_MAC80211_HWSIM 29 /* virtio mac80211-hwsim */ From e41b11646321b4c57c2599bc8666ad5b25e2cf38 Mon Sep 17 00:00:00 2001 From: Alistair Delva Date: Wed, 17 Nov 2021 09:58:10 -0800 Subject: [PATCH 22/24] ANDROID: setlocalversion: make KMI_GENERATION optional GKI required the KMI_GENERATION to be added to the kernel version string, but this only makes sense for GKI kernels, for non-GKI kernels we don't need it. Leave all the other stuff we added, though, as it seems useful. Bug: 205897686 Change-Id: I2e7b3cb7ed5529f1e5e7c9d79a1f7ce4a1b6ee1f Signed-off-by: Alistair Delva --- scripts/setlocalversion | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/setlocalversion b/scripts/setlocalversion index 3f8a8ee14b10..842936656b84 100755 --- a/scripts/setlocalversion +++ b/scripts/setlocalversion @@ -41,8 +41,6 @@ if test $# -gt 0; then kmi_generation=$1 [ $(expr $kmi_generation : '^[0-9]\+$') -eq 0 ] && usage shift - else - usage fi fi if test $# -gt 0 -o ! -d "$srctree"; then @@ -68,6 +66,8 @@ scm_version() if [ -n "$android_release" ] && [ -n "$kmi_generation" ]; then printf '%s' "-$android_release-$kmi_generation" + elif [ -n "$android_release" ]; then + printf '%s' "-$android_release" fi # If we are at a tagged commit (like "v2.6.30-rc6"), we ignore From 47458bf124aee3aa95449f2dbd1d59724618be9d Mon Sep 17 00:00:00 2001 From: Yang Yang Date: Tue, 9 Nov 2021 10:42:15 +0800 Subject: [PATCH 23/24] ANDROID: block: export tracepoints This patch will export some tracepoints so that vendor modules can use them. Export these tracepoint functions to track IO data flow for performance tuning. Bug: 205648026 Change-Id: Ia37b8f99b2d940cecce46c8bc24f724c14450517 Signed-off-by: Yang Yang --- block/blk-core.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/block/blk-core.c b/block/blk-core.c index 0e66579c299f..ac17d70157d6 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -58,6 +58,13 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_remap); EXPORT_TRACEPOINT_SYMBOL_GPL(block_bio_complete); EXPORT_TRACEPOINT_SYMBOL_GPL(block_split); EXPORT_TRACEPOINT_SYMBOL_GPL(block_unplug); +EXPORT_TRACEPOINT_SYMBOL_GPL(block_bio_queue); +EXPORT_TRACEPOINT_SYMBOL_GPL(block_getrq); +EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_insert); +EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_issue); +EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_merge); +EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_requeue); +EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_complete); DEFINE_IDA(blk_queue_ida); From d30938528e5d46ba48795d446858d83ce8633286 Mon Sep 17 00:00:00 2001 From: Yang Yang Date: Tue, 16 Nov 2021 16:20:04 +0800 Subject: [PATCH 24/24] ANDROID: GKI: Update symbol list for VIVO Leaf changes summary: 18 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 9 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 9 Added variables 9 Added functions: [A] 'function int __traceiter_block_bio_complete(void*, request_queue*, bio*)' [A] 'function int __traceiter_block_bio_queue(void*, request_queue*, bio*)' [A] 'function int __traceiter_block_getrq(void*, request_queue*, bio*, int)' [A] 'function int __traceiter_block_rq_complete(void*, request*, int, unsigned int)' [A] 'function int __traceiter_block_rq_insert(void*, request_queue*, request*)' [A] 'function int __traceiter_block_rq_issue(void*, request_queue*, request*)' [A] 'function int __traceiter_block_rq_merge(void*, request_queue*, request*)' [A] 'function int __traceiter_block_rq_requeue(void*, request_queue*, request*)' [A] 'function int __traceiter_block_split(void*, request_queue*, bio*, unsigned int)' 9 Added variables: [A] 'tracepoint __tracepoint_block_bio_complete' [A] 'tracepoint __tracepoint_block_bio_queue' [A] 'tracepoint __tracepoint_block_getrq' [A] 'tracepoint __tracepoint_block_rq_complete' [A] 'tracepoint __tracepoint_block_rq_insert' [A] 'tracepoint __tracepoint_block_rq_issue' [A] 'tracepoint __tracepoint_block_rq_merge' [A] 'tracepoint __tracepoint_block_rq_requeue' [A] 'tracepoint __tracepoint_block_split' Bug: 206557432 Change-Id: I0441bbc9f88dbccb410dfd6b21c7dfb3891e49c4 Signed-off-by: Yang Yang --- android/abi_gki_aarch64.xml | 214 ++++++++++++++++++++++++----------- android/abi_gki_aarch64_vivo | 18 +++ 2 files changed, 167 insertions(+), 65 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 07753e497e9d..bd43a42bb7b0 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -530,6 +530,15 @@ + + + + + + + + + @@ -5944,6 +5953,15 @@ + + + + + + + + + @@ -116311,6 +116329,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -116917,6 +116992,15 @@ + + + + + + + + + @@ -117994,8 +118078,8 @@ - - + + @@ -118005,8 +118089,8 @@ - - + + @@ -118036,15 +118120,15 @@ - - - - + + + + - - - + + + @@ -118251,12 +118335,12 @@ - - + + - - + + @@ -118289,14 +118373,14 @@ - - - + + + - - - + + + @@ -118422,8 +118506,8 @@ - - + + @@ -118442,8 +118526,8 @@ - - + + @@ -118451,10 +118535,10 @@ - - - - + + + + @@ -122379,16 +122463,16 @@ - - - - + + + + - - - - + + + + @@ -132222,16 +132306,16 @@ - - - - + + + + - - - - + + + + @@ -135508,8 +135592,8 @@ - - + + @@ -135746,38 +135830,38 @@ - - + + - - + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo index f464cbad7f17..5ff5cad3dc1c 100644 --- a/android/abi_gki_aarch64_vivo +++ b/android/abi_gki_aarch64_vivo @@ -1749,6 +1749,15 @@ __traceiter_android_vh_ufs_send_command __traceiter_android_vh_ufs_update_sdev __traceiter_binder_transaction_received + __traceiter_block_bio_complete + __traceiter_block_bio_queue + __traceiter_block_getrq + __traceiter_block_rq_complete + __traceiter_block_rq_insert + __traceiter_block_rq_issue + __traceiter_block_rq_merge + __traceiter_block_rq_requeue + __traceiter_block_split __traceiter_cpu_frequency_limits __traceiter_cpu_idle __traceiter_dwc3_complete_trb @@ -1852,6 +1861,15 @@ __tracepoint_android_vh_ufs_update_sdev __tracepoint_android_vh_vmpressure __tracepoint_binder_transaction_received + __tracepoint_block_bio_complete + __tracepoint_block_bio_queue + __tracepoint_block_getrq + __tracepoint_block_rq_complete + __tracepoint_block_rq_insert + __tracepoint_block_rq_issue + __tracepoint_block_rq_merge + __tracepoint_block_rq_requeue + __tracepoint_block_split __tracepoint_cpu_frequency_limits __tracepoint_cpu_idle __tracepoint_dwc3_complete_trb