mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-16 14:30:06 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Conflicts: net/xdp/xsk.c0ebc27a4c6("xsk: avoid data corruption on cq descriptor number")8da7bea7db("xsk: add indirect call for xsk_destruct_skb")30ed05adca("xsk: use a smaller new lock for shared pool case") https://lore.kernel.org/20251127105450.4a1665ec@canb.auug.org.au https://lore.kernel.org/eb4eee14-7e24-4d1b-b312-e9ea738fefee@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -11901,7 +11901,7 @@ static int cpu_clock_event_add(struct perf_event *event, int flags)
|
||||
|
||||
static void cpu_clock_event_del(struct perf_event *event, int flags)
|
||||
{
|
||||
cpu_clock_event_stop(event, flags);
|
||||
cpu_clock_event_stop(event, PERF_EF_UPDATE);
|
||||
}
|
||||
|
||||
static void cpu_clock_event_read(struct perf_event *event)
|
||||
|
||||
@@ -4479,8 +4479,11 @@ static struct scx_sched *scx_alloc_and_add_sched(struct sched_ext_ops *ops)
|
||||
goto err_free_gdsqs;
|
||||
|
||||
sch->helper = kthread_run_worker(0, "sched_ext_helper");
|
||||
if (!sch->helper)
|
||||
if (IS_ERR(sch->helper)) {
|
||||
ret = PTR_ERR(sch->helper);
|
||||
goto err_free_pcpu;
|
||||
}
|
||||
|
||||
sched_set_fifo(sch->helper->task);
|
||||
|
||||
atomic_set(&sch->exit_kind, SCX_EXIT_NONE);
|
||||
|
||||
@@ -1152,16 +1152,15 @@ static bool report_idle_softirq(void)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ratelimit >= 10)
|
||||
return false;
|
||||
|
||||
/* On RT, softirq handling may be waiting on some lock */
|
||||
if (local_bh_blocked())
|
||||
return false;
|
||||
|
||||
pr_warn("NOHZ tick-stop error: local softirq work is pending, handler #%02x!!!\n",
|
||||
pending);
|
||||
ratelimit++;
|
||||
if (ratelimit < 10) {
|
||||
pr_warn("NOHZ tick-stop error: local softirq work is pending, handler #%02x!!!\n",
|
||||
pending);
|
||||
ratelimit++;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3060,29 +3060,32 @@ static const struct attribute_group aux_clock_enable_attr_group = {
|
||||
static int __init tk_aux_sysfs_init(void)
|
||||
{
|
||||
struct kobject *auxo, *tko = kobject_create_and_add("time", kernel_kobj);
|
||||
int ret = -ENOMEM;
|
||||
|
||||
if (!tko)
|
||||
return -ENOMEM;
|
||||
return ret;
|
||||
|
||||
auxo = kobject_create_and_add("aux_clocks", tko);
|
||||
if (!auxo) {
|
||||
kobject_put(tko);
|
||||
return -ENOMEM;
|
||||
}
|
||||
if (!auxo)
|
||||
goto err_clean;
|
||||
|
||||
for (int i = 0; i < MAX_AUX_CLOCKS; i++) {
|
||||
char id[2] = { [0] = '0' + i, };
|
||||
struct kobject *clk = kobject_create_and_add(id, auxo);
|
||||
|
||||
if (!clk)
|
||||
return -ENOMEM;
|
||||
|
||||
int ret = sysfs_create_group(clk, &aux_clock_enable_attr_group);
|
||||
goto err_clean;
|
||||
|
||||
ret = sysfs_create_group(clk, &aux_clock_enable_attr_group);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto err_clean;
|
||||
}
|
||||
return 0;
|
||||
|
||||
err_clean:
|
||||
kobject_put(auxo);
|
||||
kobject_put(tko);
|
||||
return ret;
|
||||
}
|
||||
late_initcall(tk_aux_sysfs_init);
|
||||
|
||||
|
||||
@@ -1458,10 +1458,11 @@ static int __try_to_del_timer_sync(struct timer_list *timer, bool shutdown)
|
||||
|
||||
base = lock_timer_base(timer, &flags);
|
||||
|
||||
if (base->running_timer != timer)
|
||||
if (base->running_timer != timer) {
|
||||
ret = detach_if_pending(timer, base, true);
|
||||
if (shutdown)
|
||||
timer->function = NULL;
|
||||
if (shutdown)
|
||||
timer->function = NULL;
|
||||
}
|
||||
|
||||
raw_spin_unlock_irqrestore(&base->lock, flags);
|
||||
|
||||
|
||||
@@ -8781,8 +8781,18 @@ static void tracing_buffers_mmap_close(struct vm_area_struct *vma)
|
||||
put_snapshot_map(iter->tr);
|
||||
}
|
||||
|
||||
static int tracing_buffers_may_split(struct vm_area_struct *vma, unsigned long addr)
|
||||
{
|
||||
/*
|
||||
* Trace buffer mappings require the complete buffer including
|
||||
* the meta page. Partial mappings are not supported.
|
||||
*/
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static const struct vm_operations_struct tracing_buffers_vmops = {
|
||||
.close = tracing_buffers_mmap_close,
|
||||
.may_split = tracing_buffers_may_split,
|
||||
};
|
||||
|
||||
static int tracing_buffers_mmap(struct file *filp, struct vm_area_struct *vma)
|
||||
|
||||
Reference in New Issue
Block a user