Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp362333pxb; Wed, 14 Apr 2021 17:54:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwpNlL8ysSpJ3rrX7FLEu2KXDEIYllOS7SuLk3r3yTAMxXtPsa+IQ69WseBYJ6lPPdGgkQ2 X-Received: by 2002:a17:907:3f9f:: with SMTP id hr31mr731348ejc.349.1618448049727; Wed, 14 Apr 2021 17:54:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618448049; cv=none; d=google.com; s=arc-20160816; b=ZAC4Q4OB3fAxRMJWsszKzMWK7bk3i6ihF8tkz/1fuE0ICWy8ULaa3SLp0SRpI4JJy/ +046eBtZo45MablI7xeUG+TBeiLIdnPtVR4B/x6qkNCOu/me9RJrfi/+yVDvkeSCw9Rk NL4GLw4xGdw8cJeNH7Q/rdMVdOgL3XQ830IuyUz+PWJy4GjFqBdFwxTB0zIWHg985S4P hW6Oj3p+ZrRq08305OD7rVADC84ssy13uPdpv1L52s+BtZzd6diulQ6wqMZXiKgB8SAw Eiee3QUn0ewXg12W8UwP1AXO2i7h7ULFiBe4GdVJ7F8uYLTfmbsr84RVvEnmiUkctOFN cOEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=F3L9TxbVL//OxPcHbOkIIqVaXh3RR1niQJ9tn5d2kY0=; b=x5Jhxd9tjifwuanx/vTg/xwWCDQsqEqn9pGxxpxnhaTX6iHKMyrkRndvP4tqgj/LFk BGGahPecvkcO6ITXC5J3YhHmEWzONcLWPbC9WzWDkyijt9y9xvQTlFsvG752cEEHkyyd FkwCtOdfcbTYsZqLtTyePJCxDh4TIsecSlg/v1WjT40Ry5rgIdrw+d0VT0kDdbi3M/pd tc6KlpkIf6MgR4Xitr7SuuoHBUvVADzsK4RCxtlZ2YZRs2oSrSSIPr4X9JGwdnYn0HYN gqs1uvY39zapGIcYbMLvHMLEEdJvy00ami7Ubc9NXSF0TPEgOEw0uIiLTrgdm5zUjBIo qTkA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n20si486750ejz.161.2021.04.14.17.53.46; Wed, 14 Apr 2021 17:54:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230289AbhDOAWs (ORCPT + 99 others); Wed, 14 Apr 2021 20:22:48 -0400 Received: from www262.sakura.ne.jp ([202.181.97.72]:54972 "EHLO www262.sakura.ne.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229436AbhDOAWr (ORCPT ); Wed, 14 Apr 2021 20:22:47 -0400 Received: from fsav403.sakura.ne.jp (fsav403.sakura.ne.jp [133.242.250.102]) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTP id 13F0MNLF023164; Thu, 15 Apr 2021 09:22:23 +0900 (JST) (envelope-from penguin-kernel@i-love.sakura.ne.jp) Received: from www262.sakura.ne.jp (202.181.97.72) by fsav403.sakura.ne.jp (F-Secure/fsigk_smtp/550/fsav403.sakura.ne.jp); Thu, 15 Apr 2021 09:22:23 +0900 (JST) X-Virus-Status: clean(F-Secure/fsigk_smtp/550/fsav403.sakura.ne.jp) Received: from [192.168.1.9] (M106072142033.v4.enabler.ne.jp [106.72.142.33]) (authenticated bits=0) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTPSA id 13F0MNZN023156 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NO); Thu, 15 Apr 2021 09:22:23 +0900 (JST) (envelope-from penguin-kernel@i-love.sakura.ne.jp) Subject: [PATCH] ttyprintk: Add TTY hangup callback. To: =?UTF-8?Q?Samo_Poga=c4=8dnik?= , Greg Kroah-Hartman , Jiri Slaby Cc: Petr Mladek , Sergey Senozhatsky , Steven Rostedt , John Ogness , linux-kernel@vger.kernel.org, syzkaller-bugs References: <20210403041444.4081-1-penguin-kernel@I-love.SAKURA.ne.jp> <3c15d32f-c568-7f6f-fa7e-af4deb9b49f9@i-love.sakura.ne.jp> <051b550c-1cdd-6503-d2b7-0877bf0578fc@i-love.sakura.ne.jp> <32e75be6-6e9f-b33f-d585-13db220519da@i-love.sakura.ne.jp> <095d5393-b212-c4d8-5d6d-666bd505cc3d@i-love.sakura.ne.jp> <31a4dec3d36ed131402244693cae180816ebd4d7.camel@t-2.net> From: Tetsuo Handa Message-ID: <17e0652d-89b7-c8c0-fb53-e7566ac9add4@i-love.sakura.ne.jp> Date: Thu, 15 Apr 2021 09:22:22 +0900 User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.9.1 MIME-Version: 1.0 In-Reply-To: <31a4dec3d36ed131402244693cae180816ebd4d7.camel@t-2.net> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org syzbot is reporting hung task due to flood of tty_warn(tty, "%s: tty->count = 1 port count = %d\n", __func__, port->count); message [1], for ioctl(TIOCVHANGUP) prevents tty_port_close() from decrementing port->count due to tty_hung_up_p() == true. ---------- #include #include #include #include #include int main(int argc, char *argv[]) { int i; int fd[10]; for (i = 0; i < 10; i++) fd[i] = open("/dev/ttyprintk", O_WRONLY); ioctl(fd[0], TIOCVHANGUP); for (i = 0; i < 10; i++) close(fd[i]); close(open("/dev/ttyprintk", O_WRONLY)); return 0; } ---------- When TTY hangup happens, port->count needs to be reset via "struct tty_operations"->hangup callback. [1] https://syzkaller.appspot.com/bug?id=39ea6caa479af471183997376dc7e90bc7d64a6a Reported-by: syzbot Reported-by: syzbot Tested-by: syzbot Signed-off-by: Tetsuo Handa Fixes: 24b4b67d17c308aa ("add ttyprintk driver") --- drivers/char/ttyprintk.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/char/ttyprintk.c b/drivers/char/ttyprintk.c index 6a0059e508e3..93f5d11c830b 100644 --- a/drivers/char/ttyprintk.c +++ b/drivers/char/ttyprintk.c @@ -158,12 +158,23 @@ static int tpk_ioctl(struct tty_struct *tty, return 0; } +/* + * TTY operations hangup function. + */ +static void tpk_hangup(struct tty_struct *tty) +{ + struct ttyprintk_port *tpkp = tty->driver_data; + + tty_port_hangup(&tpkp->port); +} + static const struct tty_operations ttyprintk_ops = { .open = tpk_open, .close = tpk_close, .write = tpk_write, .write_room = tpk_write_room, .ioctl = tpk_ioctl, + .hangup = tpk_hangup, }; static const struct tty_port_operations null_ops = { }; -- 2.18.4