diff options
| author | Michael Bestas <mkbestas@lineageos.org> | 2020-08-23 00:37:37 +0300 |
|---|---|---|
| committer | Michael Bestas <mkbestas@lineageos.org> | 2020-08-23 00:37:37 +0300 |
| commit | 250f46158452aac57109fd256ccd675f87c6c07a (patch) | |
| tree | 60e02a035fda8c20c2773becd457ec0bb5a55dd6 /kernel | |
| parent | 87d399cdabf1a0090ea16259bd747f162dd194c9 (diff) | |
| parent | 59f04f292e871fb7fd7b3425d7fd3fd489a44078 (diff) | |
Merge branch 'android-4.4-p' of https://android.googlesource.com/kernel/common into lineage-17.1-caf-msm8998
This brings LA.UM.8.4.r1-05900-8x98.0 up to date with
https://android.googlesource.com/kernel/common/ android-4.4-p at commit:
59f04f292e871 ANDROID: fix a bug in quota2
Conflicts:
Makefile
fs/ext4/inode.c
fs/f2fs/dir.c
Change-Id: Ic71b44a02908cf633d96114f0ff745cf1e1186de
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/events/core.c | 5 | ||||
| -rw-r--r-- | kernel/events/uprobes.c | 2 | ||||
| -rw-r--r-- | kernel/kprobes.c | 7 | ||||
| -rw-r--r-- | kernel/time/timer.c | 8 |
4 files changed, 21 insertions, 1 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index 40d738294f0c..8cc235d115ee 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -4036,7 +4036,9 @@ EXPORT_SYMBOL_GPL(perf_event_read_value); static int __perf_read_group_add(struct perf_event *leader, u64 read_format, u64 *values) { + struct perf_event_context *ctx = leader->ctx; struct perf_event *sub; + unsigned long flags; int n = 1; /* skip @nr */ int ret; @@ -4066,12 +4068,15 @@ static int __perf_read_group_add(struct perf_event *leader, if (read_format & PERF_FORMAT_ID) values[n++] = primary_event_id(leader); + raw_spin_lock_irqsave(&ctx->lock, flags); + list_for_each_entry(sub, &leader->sibling_list, group_entry) { values[n++] += perf_event_count(sub); if (read_format & PERF_FORMAT_ID) values[n++] = primary_event_id(sub); } + raw_spin_unlock_irqrestore(&ctx->lock, flags); return 0; } diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c index f206a3bc431e..93f70912d380 100644 --- a/kernel/events/uprobes.c +++ b/kernel/events/uprobes.c @@ -1874,7 +1874,7 @@ static void handle_swbp(struct pt_regs *regs) if (!uprobe) { if (is_swbp > 0) { /* No matching uprobe; signal SIGTRAP. */ - send_sig(SIGTRAP, current, 0); + force_sig(SIGTRAP, current); } else { /* * Either we raced with uprobe_unregister() or we can't diff --git a/kernel/kprobes.c b/kernel/kprobes.c index 5bda113a3116..9241a29a1f9d 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -2029,6 +2029,13 @@ static void kill_kprobe(struct kprobe *p) * the original probed function (which will be freed soon) any more. */ arch_remove_kprobe(p); + + /* + * The module is going away. We should disarm the kprobe which + * is using ftrace. + */ + if (kprobe_ftrace(p)) + disarm_kprobe_ftrace(p); } /* Disable one kprobe */ diff --git a/kernel/time/timer.c b/kernel/time/timer.c index 903705687b52..539070e3ae3a 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -42,6 +42,7 @@ #include <linux/sched/sysctl.h> #include <linux/slab.h> #include <linux/compat.h> +#include <linux/random.h> #include <asm/uaccess.h> #include <asm/unistd.h> @@ -1469,6 +1470,13 @@ void update_process_times(int user_tick) #endif scheduler_tick(); run_posix_cpu_timers(p); + + /* The current CPU might make use of net randoms without receiving IRQs + * to renew them often enough. Let's update the net_rand_state from a + * non-constant value that's not affine to the number of calls to make + * sure it's updated when there's some activity (we don't care in idle). + */ + this_cpu_add(net_rand_state.s1, rol32(jiffies, 24) + user_tick); } /* |
