Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp3630822ybi; Mon, 29 Jul 2019 09:47:58 -0700 (PDT) X-Google-Smtp-Source: APXvYqwx+rvfwoIVVD4X7WFi7dwW4RogDnEcYhYJYzoz53/7vON3J2wC44YyPmR0DpCx5dyphNjQ X-Received: by 2002:a62:e20b:: with SMTP id a11mr37998589pfi.0.1564418878303; Mon, 29 Jul 2019 09:47:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564418878; cv=none; d=google.com; s=arc-20160816; b=DO6pP3L9W3++zX75uWrzgwBHr8pFGgOmhKZUxnR6UIGdJ/FUlNnv3Z+XpSeOjqoZsS FR7yuq+0gJkXFZZjWbPqIOfn4lJkZRvFXVE7DLUd+F3WCpWmvANQUoNdaFsjA2JT459p 9m+HhHAvPHe6doyXrHH4kkpm5QaP53oqzs/i08G19GRzyNcvGx9sN4hFMB6ZP2iwipWM ly0OaTZwx2vfWb5Ef7ezApG7CvEo/PinZq06IMb7rAQMZ4n7GTHTG/c5YOqZYMmxb9ok 4RxeXiXqexb03ginneIVVmc2TCo+GpTDV1j6cJgCXBhefP7cphRp6kYJuxNAIzfuQ3s6 Rt0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=DHVMtSjxHblhx8srqB8OuNrRbChIr9eVS1c++J6kqsE=; b=F7IeEDGBsPqz8fieedjKiZ+thsPp8ZvNy3oq8Sbzy1OkZ8jv4nzqvgEaMlV0VRO0Gg N4kFP7fYZvVPX/YdFDzOuZo+c3/3bOfI8toQVNTqt4dpBiZaU9K71bMWHpDTNuI5UewN bqhf0hbTgjLPAXicLUs9Wp3/daEVi3YzVW3IjpIQzcFwejZnQp0Dh/5xAerh657QUOM0 wRC9hCIYxyPRb4eHtGmZz2fKYcNRsknwIc+y0ljJtc561qoa44IAzp2Rw1nJI9JhL0GO 1CB8Q+oSj/7Aj/SO/K6ksRMRVhNZK9ggZJE2LZ1YliMjaKIHo2JsTW7GauYgrXYUTQo9 mdAA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@brauner.io header.s=google header.b=gUuXkOS0; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 132si26284790pgc.134.2019.07.29.09.47.43; Mon, 29 Jul 2019 09:47:58 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@brauner.io header.s=google header.b=gUuXkOS0; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387596AbfG2Q2a (ORCPT + 99 others); Mon, 29 Jul 2019 12:28:30 -0400 Received: from mail-io1-f66.google.com ([209.85.166.66]:42535 "EHLO mail-io1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387559AbfG2Q23 (ORCPT ); Mon, 29 Jul 2019 12:28:29 -0400 Received: by mail-io1-f66.google.com with SMTP id e20so90951474iob.9 for ; Mon, 29 Jul 2019 09:28:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brauner.io; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=DHVMtSjxHblhx8srqB8OuNrRbChIr9eVS1c++J6kqsE=; b=gUuXkOS07DLB8rjER8sOfxYBZ+PMPgw7mBd1QVP1d65kxP/UIs2709LyQoUtAXNzNv J3MmeaV+fCaVKcet3Un0AFU2HUO+1a2cTxpyEIAX2Enpo3OBBsFYJEU/VV3UeUo1gtNY PoWQUb1d/KjvGocN+bLnYjfV2U3TO9FNzIMJFCwo0FWCLHBa0HuON7k/Akw/dNzZDh7v ZgbjHEAuwJoLqBk1/bezqbp3ewiO8MeMfsuVX2KGfBjzvhLA7X2pDloMS0tRzXJDzZ2B d4wmWv9q46Ypwxs/o5sD+gGYQrbjfeyf0Y84jBWa1dW8MabeWz13NApFWdqFValIBtVl +zJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=DHVMtSjxHblhx8srqB8OuNrRbChIr9eVS1c++J6kqsE=; b=HsAFCCLOSjtuTme+fzliIZwW6ANBci4h2liYfAK79DGgfcsxssVE/zL5P6gOdh1MCX 03EKw5B4pYeKyJsg29ZOhfmrqmCexczRYfSCSxT7n4JXRhaGGrrwDvchNyo3BdHQ0SxD yWQ9kc+HSx2YSgQURKZneCk4R8BttEEM5UyNKm5dkx2uY9rVgEIiOtW3n3xR3ICwsJOM QLBirBr2h6UXIsexggAU0IwCez2kgvvpAT9IFL8VEDzH6z0Nl7DkwpBTw4f3iQZ3hkuA HH2z/0oGXhS7tgXR3BnLf5YbdwAdGSci74BcPfIU6w7CNCiKN7zEcsJeXdrwKebYQDka l1uQ== X-Gm-Message-State: APjAAAVb9O/ULq+uDwvAQ9Chk6o234f0FeISiesKXWPWztMme6gDRjV+ SxwBzluPjezKNOpQLsWab7s= X-Received: by 2002:a02:8814:: with SMTP id r20mr17712166jai.115.1564417708655; Mon, 29 Jul 2019 09:28:28 -0700 (PDT) Received: from localhost.localdomain ([162.223.5.124]) by smtp.gmail.com with ESMTPSA id l11sm45420026ioj.32.2019.07.29.09.28.27 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 29 Jul 2019 09:28:27 -0700 (PDT) From: Christian Brauner To: oleg@redhat.com, linux-kernel@vger.kernel.org Cc: akpm@linux-foundation.org, tj@kernel.org, tglx@linutronix.de, prsood@codeaurora.org, avagin@gmail.com, Christian Brauner , Linus Torvalds Subject: [PATCH] exit: make setting exit_state consistent Date: Mon, 29 Jul 2019 18:27:57 +0200 Message-Id: <20190729162757.22694-1-christian@brauner.io> X-Mailer: git-send-email 2.22.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Since commit [1] we unconditionally set exit_state to EXIT_ZOMBIE before calling into do_notify_parent(). This was done to eliminate a race when querying exit_state in do_notify_pidfd(). Back then we decided to do the absolute minimal thing to fix this and not touch the rest of the exit_notify() function where exit_state is set. Since this fix has not caused any issues change the setting of exit_state to EXIT_DEAD in the autoreap case to account for the fact hat exit_state is set to EXIT_ZOMBIE unconditionally. This fix was planned but also explicitly requested in [2] and makes the whole code more consistent. /* References */ [1]: b191d6491be6 ("pidfd: fix a poll race when setting exit_state") [2]: https://lore.kernel.org/lkml/CAHk-=wigcxGFR2szue4wavJtH5cYTTeNES=toUBVGsmX0rzX+g@mail.gmail.com Signed-off-by: Christian Brauner Cc: Oleg Nesterov Cc: Linus Torvalds --- kernel/exit.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/exit.c b/kernel/exit.c index 4436158a6d30..5b4a5dcce8f8 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -734,9 +734,10 @@ static void exit_notify(struct task_struct *tsk, int group_dead) autoreap = true; } - tsk->exit_state = autoreap ? EXIT_DEAD : EXIT_ZOMBIE; - if (tsk->exit_state == EXIT_DEAD) + if (autoreap) { + tsk->exit_state = EXIT_DEAD; list_add(&tsk->ptrace_entry, &dead); + } /* mt-exec, de_thread() is waiting for group leader */ if (unlikely(tsk->signal->notify_count < 0)) -- 2.22.0