Merge 4.1-rc7 into driver-core-next
We want the fixes in this branch as well for testing and merge resolution. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
+4
-2
@@ -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)
|
||||
|
||||
@@ -3380,6 +3380,9 @@ static int load_module(struct load_info *info, const char __user *uargs,
|
||||
module_bug_cleanup(mod);
|
||||
mutex_unlock(&module_mutex);
|
||||
|
||||
blocking_notifier_call_chain(&module_notify_list,
|
||||
MODULE_STATE_GOING, mod);
|
||||
|
||||
/* we can't deallocate the module until we clear memory protection */
|
||||
unset_module_init_ro_nx(mod);
|
||||
unset_module_core_ro_nx(mod);
|
||||
|
||||
+1
-4
@@ -4389,10 +4389,7 @@ long __sched io_schedule_timeout(long timeout)
|
||||
long ret;
|
||||
|
||||
current->in_iowait = 1;
|
||||
if (old_iowait)
|
||||
blk_schedule_flush_plug(current);
|
||||
else
|
||||
blk_flush_plug(current);
|
||||
blk_schedule_flush_plug(current);
|
||||
|
||||
delayacct_blkio_start();
|
||||
rq = raw_rq();
|
||||
|
||||
@@ -266,21 +266,23 @@ lock_hrtimer_base(const struct hrtimer *timer, unsigned long *flags)
|
||||
/*
|
||||
* Divide a ktime value by a nanosecond value
|
||||
*/
|
||||
u64 __ktime_divns(const ktime_t kt, s64 div)
|
||||
s64 __ktime_divns(const ktime_t kt, s64 div)
|
||||
{
|
||||
u64 dclc;
|
||||
int sft = 0;
|
||||
s64 dclc;
|
||||
u64 tmp;
|
||||
|
||||
dclc = ktime_to_ns(kt);
|
||||
tmp = dclc < 0 ? -dclc : dclc;
|
||||
|
||||
/* Make sure the divisor is less than 2^32: */
|
||||
while (div >> 32) {
|
||||
sft++;
|
||||
div >>= 1;
|
||||
}
|
||||
dclc >>= sft;
|
||||
do_div(dclc, (unsigned long) div);
|
||||
|
||||
return dclc;
|
||||
tmp >>= sft;
|
||||
do_div(tmp, (unsigned long) div);
|
||||
return dclc < 0 ? -tmp : tmp;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__ktime_divns);
|
||||
#endif /* BITS_PER_LONG >= 64 */
|
||||
|
||||
+1
-1
@@ -621,7 +621,7 @@ void watchdog_nmi_enable_all(void)
|
||||
put_online_cpus();
|
||||
|
||||
unlock:
|
||||
mutex_lock(&watchdog_proc_mutex);
|
||||
mutex_unlock(&watchdog_proc_mutex);
|
||||
}
|
||||
|
||||
void watchdog_nmi_disable_all(void)
|
||||
|
||||
Reference in New Issue
Block a user