Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
This commit is contained in:
@@ -912,7 +912,8 @@ long compat_get_bitmap(unsigned long *mask, const compat_ulong_t __user *umask,
|
||||
* bitmap. We must however ensure the end of the
|
||||
* kernel bitmap is zeroed.
|
||||
*/
|
||||
if (nr_compat_longs-- > 0) {
|
||||
if (nr_compat_longs) {
|
||||
nr_compat_longs--;
|
||||
if (__get_user(um, umask))
|
||||
return -EFAULT;
|
||||
} else {
|
||||
@@ -954,7 +955,8 @@ long compat_put_bitmap(compat_ulong_t __user *umask, unsigned long *mask,
|
||||
* We dont want to write past the end of the userspace
|
||||
* bitmap.
|
||||
*/
|
||||
if (nr_compat_longs-- > 0) {
|
||||
if (nr_compat_longs) {
|
||||
nr_compat_longs--;
|
||||
if (__put_user(um, umask))
|
||||
return -EFAULT;
|
||||
}
|
||||
|
@@ -3442,7 +3442,6 @@ static void free_event_rcu(struct rcu_head *head)
|
||||
if (event->ns)
|
||||
put_pid_ns(event->ns);
|
||||
perf_event_free_filter(event);
|
||||
perf_event_free_bpf_prog(event);
|
||||
kfree(event);
|
||||
}
|
||||
|
||||
@@ -3573,6 +3572,8 @@ static void __free_event(struct perf_event *event)
|
||||
put_callchain_buffers();
|
||||
}
|
||||
|
||||
perf_event_free_bpf_prog(event);
|
||||
|
||||
if (event->destroy)
|
||||
event->destroy(event);
|
||||
|
||||
|
@@ -493,6 +493,20 @@ int rb_alloc_aux(struct ring_buffer *rb, struct perf_event *event,
|
||||
rb->aux_pages[rb->aux_nr_pages] = page_address(page++);
|
||||
}
|
||||
|
||||
/*
|
||||
* In overwrite mode, PMUs that don't support SG may not handle more
|
||||
* than one contiguous allocation, since they rely on PMI to do double
|
||||
* buffering. In this case, the entire buffer has to be one contiguous
|
||||
* chunk.
|
||||
*/
|
||||
if ((event->pmu->capabilities & PERF_PMU_CAP_AUX_NO_SG) &&
|
||||
overwrite) {
|
||||
struct page *page = virt_to_page(rb->aux_pages[0]);
|
||||
|
||||
if (page_private(page) != max_order)
|
||||
goto out;
|
||||
}
|
||||
|
||||
rb->aux_priv = event->pmu->setup_aux(event->cpu, rb->aux_pages, nr_pages,
|
||||
overwrite);
|
||||
if (!rb->aux_priv)
|
||||
|
Reference in New Issue
Block a user