Re: [PATCH 1/2] Allow a kthread to declare that it calls task_work_run()

From: Matthew Wilcox
Date: Sun Dec 03 2023 - 21:25:35 EST


On Mon, Dec 04, 2023 at 12:36:41PM +1100, NeilBrown wrote:
> +++ b/fs/namespace.c
> @@ -1328,7 +1328,7 @@ static void mntput_no_expire(struct mount *mnt)
>
> if (likely(!(mnt->mnt.mnt_flags & MNT_INTERNAL))) {
> struct task_struct *task = current;
> - if (likely(!(task->flags & PF_KTHREAD))) {
> + if (likely((task->flags & PF_RUNS_TASK_WORK))) {

You could lose one set of parens here ...

if (likely(task->flags & PF_RUNS_TASK_WORK)) {

> #define PF_RANDOMIZE 0x00400000 /* Randomize virtual address space */
> -#define PF__HOLE__00800000 0x00800000
> +#define PF_RUNS_TASK_WORK 0x00800000 /* Will call task_work_run() periodically */

And you could lose "Will" here:

#define PF_RUNS_TASK_WORK 0x00800000 /* Calls task_work_run() periodically */

> diff --git a/kernel/task_work.c b/kernel/task_work.c
> index 95a7e1b7f1da..aec19876e121 100644
> --- a/kernel/task_work.c
> +++ b/kernel/task_work.c
> @@ -183,3 +183,4 @@ void task_work_run(void)
> } while (work);
> }
> }
> +EXPORT_SYMBOL(task_work_run);

_GPL?