diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/auditfilter.c | 3 | ||||
| -rw-r--r-- | kernel/cgroup.c | 31 | ||||
| -rw-r--r-- | kernel/range.c | 8 | ||||
| -rw-r--r-- | kernel/trace/ring_buffer.c | 3 | ||||
| -rw-r--r-- | kernel/trace/trace.c | 9 | ||||
| -rw-r--r-- | kernel/trace/trace_events.c | 4 |
6 files changed, 34 insertions, 24 deletions
diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c index 83a2970295d1..6bd4a90d1991 100644 --- a/kernel/auditfilter.c +++ b/kernel/auditfilter.c | |||
| @@ -1021,9 +1021,6 @@ static void audit_log_rule_change(char *action, struct audit_krule *rule, int re | |||
| 1021 | * @seq: netlink audit message sequence (serial) number | 1021 | * @seq: netlink audit message sequence (serial) number |
| 1022 | * @data: payload data | 1022 | * @data: payload data |
| 1023 | * @datasz: size of payload data | 1023 | * @datasz: size of payload data |
| 1024 | * @loginuid: loginuid of sender | ||
| 1025 | * @sessionid: sessionid for netlink audit message | ||
| 1026 | * @sid: SE Linux Security ID of sender | ||
| 1027 | */ | 1024 | */ |
| 1028 | int audit_receive_filter(int type, int pid, int seq, void *data, size_t datasz) | 1025 | int audit_receive_filter(int type, int pid, int seq, void *data, size_t datasz) |
| 1029 | { | 1026 | { |
diff --git a/kernel/cgroup.c b/kernel/cgroup.c index 2a9926275f80..a7c9e6ddb979 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c | |||
| @@ -1686,11 +1686,14 @@ static struct dentry *cgroup_mount(struct file_system_type *fs_type, | |||
| 1686 | */ | 1686 | */ |
| 1687 | cgroup_drop_root(opts.new_root); | 1687 | cgroup_drop_root(opts.new_root); |
| 1688 | 1688 | ||
| 1689 | if (((root->flags | opts.flags) & CGRP_ROOT_SANE_BEHAVIOR) && | 1689 | if (root->flags != opts.flags) { |
| 1690 | root->flags != opts.flags) { | 1690 | if ((root->flags | opts.flags) & CGRP_ROOT_SANE_BEHAVIOR) { |
| 1691 | pr_err("cgroup: sane_behavior: new mount options should match the existing superblock\n"); | 1691 | pr_err("cgroup: sane_behavior: new mount options should match the existing superblock\n"); |
| 1692 | ret = -EINVAL; | 1692 | ret = -EINVAL; |
| 1693 | goto drop_new_super; | 1693 | goto drop_new_super; |
| 1694 | } else { | ||
| 1695 | pr_warning("cgroup: new mount options do not match the existing superblock, will be ignored\n"); | ||
| 1696 | } | ||
| 1694 | } | 1697 | } |
| 1695 | 1698 | ||
| 1696 | /* no subsys rebinding, so refcounts don't change */ | 1699 | /* no subsys rebinding, so refcounts don't change */ |
| @@ -2699,13 +2702,14 @@ static int cgroup_add_file(struct cgroup *cgrp, struct cgroup_subsys *subsys, | |||
| 2699 | goto out; | 2702 | goto out; |
| 2700 | } | 2703 | } |
| 2701 | 2704 | ||
| 2705 | cfe->type = (void *)cft; | ||
| 2706 | cfe->dentry = dentry; | ||
| 2707 | dentry->d_fsdata = cfe; | ||
| 2708 | simple_xattrs_init(&cfe->xattrs); | ||
| 2709 | |||
| 2702 | mode = cgroup_file_mode(cft); | 2710 | mode = cgroup_file_mode(cft); |
| 2703 | error = cgroup_create_file(dentry, mode | S_IFREG, cgrp->root->sb); | 2711 | error = cgroup_create_file(dentry, mode | S_IFREG, cgrp->root->sb); |
| 2704 | if (!error) { | 2712 | if (!error) { |
| 2705 | cfe->type = (void *)cft; | ||
| 2706 | cfe->dentry = dentry; | ||
| 2707 | dentry->d_fsdata = cfe; | ||
| 2708 | simple_xattrs_init(&cfe->xattrs); | ||
| 2709 | list_add_tail(&cfe->node, &parent->files); | 2713 | list_add_tail(&cfe->node, &parent->files); |
| 2710 | cfe = NULL; | 2714 | cfe = NULL; |
| 2711 | } | 2715 | } |
| @@ -2953,11 +2957,8 @@ struct cgroup *cgroup_next_descendant_pre(struct cgroup *pos, | |||
| 2953 | WARN_ON_ONCE(!rcu_read_lock_held()); | 2957 | WARN_ON_ONCE(!rcu_read_lock_held()); |
| 2954 | 2958 | ||
| 2955 | /* if first iteration, pretend we just visited @cgroup */ | 2959 | /* if first iteration, pretend we just visited @cgroup */ |
| 2956 | if (!pos) { | 2960 | if (!pos) |
| 2957 | if (list_empty(&cgroup->children)) | ||
| 2958 | return NULL; | ||
| 2959 | pos = cgroup; | 2961 | pos = cgroup; |
| 2960 | } | ||
| 2961 | 2962 | ||
| 2962 | /* visit the first child if exists */ | 2963 | /* visit the first child if exists */ |
| 2963 | next = list_first_or_null_rcu(&pos->children, struct cgroup, sibling); | 2964 | next = list_first_or_null_rcu(&pos->children, struct cgroup, sibling); |
| @@ -2965,14 +2966,14 @@ struct cgroup *cgroup_next_descendant_pre(struct cgroup *pos, | |||
| 2965 | return next; | 2966 | return next; |
| 2966 | 2967 | ||
| 2967 | /* no child, visit my or the closest ancestor's next sibling */ | 2968 | /* no child, visit my or the closest ancestor's next sibling */ |
| 2968 | do { | 2969 | while (pos != cgroup) { |
| 2969 | next = list_entry_rcu(pos->sibling.next, struct cgroup, | 2970 | next = list_entry_rcu(pos->sibling.next, struct cgroup, |
| 2970 | sibling); | 2971 | sibling); |
| 2971 | if (&next->sibling != &pos->parent->children) | 2972 | if (&next->sibling != &pos->parent->children) |
| 2972 | return next; | 2973 | return next; |
| 2973 | 2974 | ||
| 2974 | pos = pos->parent; | 2975 | pos = pos->parent; |
| 2975 | } while (pos != cgroup); | 2976 | } |
| 2976 | 2977 | ||
| 2977 | return NULL; | 2978 | return NULL; |
| 2978 | } | 2979 | } |
diff --git a/kernel/range.c b/kernel/range.c index 071b0ab455cb..eb911dbce267 100644 --- a/kernel/range.c +++ b/kernel/range.c | |||
| @@ -48,9 +48,11 @@ int add_range_with_merge(struct range *range, int az, int nr_range, | |||
| 48 | final_start = min(range[i].start, start); | 48 | final_start = min(range[i].start, start); |
| 49 | final_end = max(range[i].end, end); | 49 | final_end = max(range[i].end, end); |
| 50 | 50 | ||
| 51 | range[i].start = final_start; | 51 | /* clear it and add it back for further merge */ |
| 52 | range[i].end = final_end; | 52 | range[i].start = 0; |
| 53 | return nr_range; | 53 | range[i].end = 0; |
| 54 | return add_range_with_merge(range, az, nr_range, | ||
| 55 | final_start, final_end); | ||
| 54 | } | 56 | } |
| 55 | 57 | ||
| 56 | /* Need to add it: */ | 58 | /* Need to add it: */ |
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index b59aea2c48c2..e444ff88f0a4 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c | |||
| @@ -620,6 +620,9 @@ int ring_buffer_poll_wait(struct ring_buffer *buffer, int cpu, | |||
| 620 | if (cpu == RING_BUFFER_ALL_CPUS) | 620 | if (cpu == RING_BUFFER_ALL_CPUS) |
| 621 | work = &buffer->irq_work; | 621 | work = &buffer->irq_work; |
| 622 | else { | 622 | else { |
| 623 | if (!cpumask_test_cpu(cpu, buffer->cpumask)) | ||
| 624 | return -EINVAL; | ||
| 625 | |||
| 623 | cpu_buffer = buffer->buffers[cpu]; | 626 | cpu_buffer = buffer->buffers[cpu]; |
| 624 | work = &cpu_buffer->irq_work; | 627 | work = &cpu_buffer->irq_work; |
| 625 | } | 628 | } |
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index ae6fa2d1cdf7..4d79485b3237 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
| @@ -6216,10 +6216,15 @@ __init static int tracer_alloc_buffers(void) | |||
| 6216 | 6216 | ||
| 6217 | trace_init_cmdlines(); | 6217 | trace_init_cmdlines(); |
| 6218 | 6218 | ||
| 6219 | register_tracer(&nop_trace); | 6219 | /* |
| 6220 | 6220 | * register_tracer() might reference current_trace, so it | |
| 6221 | * needs to be set before we register anything. This is | ||
| 6222 | * just a bootstrap of current_trace anyway. | ||
| 6223 | */ | ||
| 6221 | global_trace.current_trace = &nop_trace; | 6224 | global_trace.current_trace = &nop_trace; |
| 6222 | 6225 | ||
| 6226 | register_tracer(&nop_trace); | ||
| 6227 | |||
| 6223 | /* All seems OK, enable tracing */ | 6228 | /* All seems OK, enable tracing */ |
| 6224 | tracing_disabled = 0; | 6229 | tracing_disabled = 0; |
| 6225 | 6230 | ||
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 7a0cf68027cc..27963e2bf4bf 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c | |||
| @@ -2072,8 +2072,10 @@ event_enable_func(struct ftrace_hash *hash, | |||
| 2072 | out_reg: | 2072 | out_reg: |
| 2073 | /* Don't let event modules unload while probe registered */ | 2073 | /* Don't let event modules unload while probe registered */ |
| 2074 | ret = try_module_get(file->event_call->mod); | 2074 | ret = try_module_get(file->event_call->mod); |
| 2075 | if (!ret) | 2075 | if (!ret) { |
| 2076 | ret = -EBUSY; | ||
| 2076 | goto out_free; | 2077 | goto out_free; |
| 2078 | } | ||
| 2077 | 2079 | ||
| 2078 | ret = __ftrace_event_enable_disable(file, 1, 1); | 2080 | ret = __ftrace_event_enable_disable(file, 1, 1); |
| 2079 | if (ret < 0) | 2081 | if (ret < 0) |
