From 71ed9f183ba9a2cb4230353b7ae62ac335c53c7c Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Thu, 20 Jul 2023 21:28:03 -0400 Subject: [PATCH] Run shrinkers when pthread_create fails Signed-off-by: Kent Overstreet --- linux/kthread.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/linux/kthread.c b/linux/kthread.c index 134aeee..17830e5 100644 --- a/linux/kthread.c +++ b/linux/kthread.c @@ -80,7 +80,13 @@ struct task_struct *kthread_create(int (*thread_fn)(void *data), pthread_attr_init(&attr); pthread_attr_setstacksize(&attr, 32 << 10); - ret = pthread_create(&p->thread, &attr, kthread_start_fn, p); + for (unsigned i = 0; i < 10; i++) { + ret = pthread_create(&p->thread, &attr, kthread_start_fn, p); + if (!ret) + break; + + run_shrinkers(GFP_KERNEL, true); + } if (ret) return ERR_PTR(-ret); pthread_setname_np(p->thread, p->comm); -- 2.39.2