Re: [PATCH] workqueue: Add the allocation flags to function schedule_on_each_cpu_gfp

From: Minfei Huang
Date: Mon Aug 03 2015 - 11:05:39 EST


On 08/03/15 at 10:04am, Steven Rostedt wrote:
> On Mon, 3 Aug 2015 17:15:53 +0800
> yalin wang <yalin.wang2010@xxxxxxxxx> wrote:
>
> > better to also provide a wrapper function with name schedule_on_each_cpu(),
> > as this function is used frequently .
> >
> > #define schedule_on_each_cpu(f) schedule_on_each_cpu_gfp(f, GFP_KERNEL)
>
> I was about to say pretty much the same thing. But please make it an
> inline function:
>
> static inline int schedule_on_each_cpu(work_func_t func)
> {
> return schedule_on_each_cpu_gfp(func, GFP_KERNEL);
> }
>
> Otherwise, NACK to the patch to the ftrace code.

Hi, Steve.

The main reason I posted this patch is to fix the data race bug, when
ftrace tries to free the ops->trampoline in arch x86.

Function schedule_on_each_cpu may fail to alloc percpu work to
synchronise each online cpu. In such situation, trying to free the
trampoline may casue the kernel crash, because one cpu may be executing
the trampoline at this moment.

So I add a new wrapper function to fix it.

Thanks
Minfei
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/