Received: by 2002:a05:7412:d1aa:b0:fc:a2b0:25d7 with SMTP id ba42csp1367951rdb; Tue, 30 Jan 2024 17:06:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IE/JvJqEJOF8J0hv34D1OMiDs4OC0DrYw8itde3VR2PUjiPgEf1tRcYstRrwhxBSzlq4vFE X-Received: by 2002:a05:6358:ed0b:b0:178:7e6b:311b with SMTP id hy11-20020a056358ed0b00b001787e6b311bmr5071781rwb.60.1706663164102; Tue, 30 Jan 2024 17:06:04 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706663164; cv=pass; d=google.com; s=arc-20160816; b=z0WS4f1CzFZ6rRt/5pqolaUrwXOuYiI9cYUloTZLhIWmG99r97tE7QX1UTq1AlxBxj sWuddZOsmuSBNF/xGVxNTyrKVkmf9AVMDOnhOtVuhAbYWI97O+3NgFKSibgz1gkCl4Jy qamDro1TZJKcq5F+KCrlKQTpjvREyltcMeU3H2TwhqPuiQ5SjtQVeET+cb5kIJ3AUQ66 KpD1NSDrJhqOcNKh/DfC+3Ula4yNCA61lc+vSW7fNUmmgfG9P2eAVrKPrctkcTEMkIx4 g6hyoH027jktiFzR5Cgzj8D2cTOACap8dKexIaXwxv5jnxERFtX4juh2/4ncNSKD+yie CxUw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:date :subject:cc:to:from:message-id:dkim-signature; bh=h/FOpSUNaj0QAhpqX2cYRguVmxQYM03WkzpdCI4Fd8E=; fh=FF3kjcLJ2IOoPnrhNCEDIxq4IzrfoNPd72ZUvUMjoOE=; b=hL1kS7RaPF5QQUBRZ+QaYLnbCLPYLHzWroklqt4uj8wMJQ/dBJJj7tukpN+1u0MC0W L2nT4/0wL5qYPh68aXDgOuxPxfK0wQg3Cvq4o7/Y7RNJzK2B0ydlPSspblHxPpwisvMC jXyPqW136VwXk+4U8ce1dTb4iVgsrIPmIVk7z/9C+cwA3wb9uL42hae6KQNQKZFQ8Iuw //EsJILJb6Bch+ERFZFJbSVI6vhZG5FkL61rZUvu1ysGce3Kc8j1CL3VosV/kgpR55/H NwVEeOfNdAtFkdCPDyuPSGcVITF3pxrAOFwVxunsjs0209PSW05UvbofDQIgHx0uh/0S ZyGQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@qq.com header.s=s201512 header.b=t4Ty4Pxl; arc=pass (i=1 spf=pass spfdomain=qq.com dkim=pass dkdomain=qq.com dmarc=pass fromdomain=qq.com); spf=pass (google.com: domain of linux-kernel+bounces-45566-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-45566-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=qq.com X-Forwarded-Encrypted: i=1; AJvYcCWh+wvYn7cRZ7JbXXIJdJg1MgHnBQ61LOPgdzZTXz8sWZcZgj1ebEqew4n/5UcNPMUVlW2FBVA8i3tPrvIrHasx8HS4/7crPJBNemb8gw== Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id c26-20020aa78c1a000000b006dafc2e3d48si8417182pfd.330.2024.01.30.17.06.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jan 2024 17:06:04 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-45566-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@qq.com header.s=s201512 header.b=t4Ty4Pxl; arc=pass (i=1 spf=pass spfdomain=qq.com dkim=pass dkdomain=qq.com dmarc=pass fromdomain=qq.com); spf=pass (google.com: domain of linux-kernel+bounces-45566-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-45566-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=qq.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id B671B280C44 for ; Wed, 31 Jan 2024 01:06:03 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id EA2B31C32; Wed, 31 Jan 2024 01:05:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=qq.com header.i=@qq.com header.b="t4Ty4Pxl" Received: from out203-205-221-173.mail.qq.com (out203-205-221-173.mail.qq.com [203.205.221.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D6147363 for ; Wed, 31 Jan 2024 01:05:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=203.205.221.173 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706663139; cv=none; b=cqBoHfl/qNkZrq2W4axITwnbPTBzwuKEjlp85aRiZBKhbi+h3ka3KEwG1xOazmtz7GFRnmKu1rRdUdu6cOG3y4fFScrVZQXODVg++WDyLfp5Lj0B07D4pTE+0O3FGM2Xznn6XAl/mSATnekawk3w3zUyVJkq2WoCs5k1yrZFSfA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706663139; c=relaxed/simple; bh=/reyIWrnc/s8U/muKotzHJXIvzUNgSoN9UxgvBBFV4g=; h=Message-ID:From:To:Cc:Subject:Date:In-Reply-To:References: MIME-Version; b=PIl86btaxlomtje0YdUyzSFL8pvCauVhYkQtWlOt6us/J/iWu9h/GYaDyaj4/j5KwNPkYMGPVvgui0ufJ0KWXAS+omIZ4XQoswK++BwiadSDQAj1yd4xYvdeXCN2G3fvDlcbn7TjhGOwZV1pZO0pZSZT0LPXHmwQIMy/b7VxEBU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=qq.com; spf=pass smtp.mailfrom=qq.com; dkim=pass (1024-bit key) header.d=qq.com header.i=@qq.com header.b=t4Ty4Pxl; arc=none smtp.client-ip=203.205.221.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=qq.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=qq.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1706663128; bh=h/FOpSUNaj0QAhpqX2cYRguVmxQYM03WkzpdCI4Fd8E=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=t4Ty4Pxl1ogme6lQASXp+Y/JBCacz1nVoVZtPTSZkXogbs2MKX3I7Y1rgFzxyPJLY UJW6+eU9D8e1rMmR0ETiYVEtxXr9kox1Pm3ZIVLNnXRFBokJOlqGDbB2zT5J4GIh/o A7hyTXMwq9HgqOFferV2BIctf6i2lNPfMPQET7VA= Received: from pek-lxu-l1.wrs.com ([111.198.225.215]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id 10D96450; Wed, 31 Jan 2024 09:04:13 +0800 X-QQ-mid: xmsmtpt1706663053tie8efjic Message-ID: X-QQ-XMAILINFO: OQhZ3T0tjf0aO645nJ9CGVH2jDx57WBcUcFsCu47V3F3i6dv7dUoNtZvnI9ELU Fy9X9kO+qNmse4wEX5M7lMjrbyzmwZQoTqcwTc3GhCQRbi5ZwB+RxuXLhMCHTWFA8hDV0fJzzzZO l18U+2WuPKCugqZai0IzaafVZM8/MhDTtcAaudMTmgorlnjGjD0OLjmO6YQTsENnSlUPzJ2OIqjk qFJ/IDZLoGvYMlsvYBx+Mm1LcAaaWY29G+pf5NA7xgR3Bi/FeWjfCe+tPpk+ueem4xMAtOaS+sNI grC5iNFZwx+yCOYAMgE0nGLNvxx9x5dtDmiEBoz0mwo6UkR3R/WU5VSYVr8ZGeC0bAjKGvOYZ4TT FA4nN11RtXfjqzpdHvb7onfNEbPJLPQ0YlYT0ODIBnYw9NZydupUOYj2snfE+W7FwMy5Wf4lgaDM d+t+68PpkuJ9PJK4i+OIqpO8X5RXh1w/JdvXkaDlQF+6S4bWWSKnYfxRjz8mV8HX7B7bWaMt0tzj BXG9vQOAeaJmYjlvRCR7iKVVnp+xg/lle2c5drAwudSqlkcfJ9FZFBe46ROnfIGUf1BUVEmjP/2j EAdYtrkCTRbypeIbEmqYgeT0RpsaZ4kG2HPRLOBvQq7wwx9VVO/GfN+YNG2BCS4j65jiOcgWDam3 ZDQu/dV6uSYH1iWKqrKwgTuJhkhl/LzjEWxJYoksUnuocgCEhJuJIRTBE+c+xXaxzd0DkbPaEypy bjzHw9bJ9bhnjqZ+PCcLPM9UNSsUEnAmy0KU+2mjaOUeRCIJwPvYUqwCzb6ONcS5yjtFkd0z6L6+ AYnkz373OGG+jF/TQY9guhyponjeKu3NLHDyd3hZic4PcnRAC7VXmxEOvK98JRwHbAZPkuMDrh4j 2u3GQL38t8lKrYhLSWgRa3wYsrmmJS5X57Vgi9/5Emcli/RgdGOJ3LhvoTzw7bpg== X-QQ-XMRINFO: NyFYKkN4Ny6FSmKK/uo/jdU= From: Edward Adam Davis To: syzbot+2373f6be3e6de4f92562@syzkaller.appspotmail.com Cc: linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com Subject: Re: [syzbot] [block?] [trace?] INFO: task hung in blk_trace_remove (2) Date: Wed, 31 Jan 2024 09:04:14 +0800 X-OQ-MSGID: <20240131010413.264977-2-eadavis@qq.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <0000000000002b1fc7060fca3adf@google.com> References: <0000000000002b1fc7060fca3adf@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit please test task hung in blk_trace_remove #syz test https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index d5d94510afd3..5eecdf9b8570 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -330,6 +330,13 @@ static void blk_trace_free(struct request_queue *q, struct blk_trace *bt) kfree(bt); } +static void blk_trace_free_rcu(struct blk_trace *bt) +{ + free_percpu(bt->sequence); + free_percpu(bt->msg_data); + kfree(bt); +} + static void get_probe_ref(void) { mutex_lock(&blk_probe_mutex); @@ -377,12 +384,32 @@ static int blk_trace_stop(struct blk_trace *bt) return 0; } +static void blk_trace_rcu_free(struct rcu_head *rcu) +{ + struct blk_trace *bt; + + bt = container_of(rcu, struct blk_trace, rcu); + if (bt) { + blk_trace_free_rcu(bt); + } +} + static void blk_trace_cleanup(struct request_queue *q, struct blk_trace *bt) { blk_trace_stop(bt); - synchronize_rcu(); - blk_trace_free(q, bt); + relay_close(bt->rchan); + /* + * If 'bt->dir' is not set, then both 'dropped' and 'msg' are created + * under 'q->debugfs_dir', thus lookup and remove them. + */ + if (!bt->dir) { + debugfs_lookup_and_remove("dropped", q->debugfs_dir); + debugfs_lookup_and_remove("msg", q->debugfs_dir); + } else { + debugfs_remove(bt->dir); + } put_probe_ref(); + call_rcu(&bt->rcu, blk_trace_rcu_free); } static int __blk_trace_remove(struct request_queue *q) diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h index 122c62e561fc..5f927328b7e6 100644 --- a/include/linux/blktrace_api.h +++ b/include/linux/blktrace_api.h @@ -26,6 +26,7 @@ struct blk_trace { struct dentry *dir; struct list_head running_list; atomic_t dropped; + struct rcu_head rcu; }; extern int blk_trace_ioctl(struct block_device *, unsigned, char __user *);