From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 293B2369D7A for ; Wed, 15 Jul 2026 14:23:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784125436; cv=none; b=LKyfk7zkpi+fssOEDX3vu9z44R6BvVnKnMkrnqy8JEKgOmG6FaRqY8fxtRmzJokZWa3vuXK1HZfVkcnin9fAiWWcTo4FtBGc27Jx9YW88BUnD9+V9zOqZrWJ+YDU6JKNRgDdhvu9Udhhwe3UZmGgpaLA9BD5Qob6zpzegYQ7J0A= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784125436; c=relaxed/simple; bh=8X6+CQq3Hs1h/DFamxBzRSZL9Lbvylt2J3qL223C0to=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jPwHx71wIXN0tA08NGg/j6DQajddua7v7HV0+ZSaGjYo5NZ8SMns/rf9/cqdYkB9wVcGR8A0ddK9UHPpKJMybU9muii9j3wVkbD4d+nw3gcqq6ObeYVdkmNZJy9N0JhTYo4ROoCUqBbbFE78ZqNY4EI6d4ZbKDQoTegB566+a0M= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Lk5fkXmo; arc=none smtp.client-ip=209.85.218.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Lk5fkXmo" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-c15e592da74so678066966b.1 for ; Wed, 15 Jul 2026 07:23:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784125431; x=1784730231; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=XBjSAX2B0WW1W8im1PxsWC01gxxXxQM2EqUc+55Cths=; b=Lk5fkXmoW5LTi8DuEXIOIMDhBM+UcNyJmxCi1OlIITLBkw6uFaLNi+UGvKtMwMg3cM +C/HeQuJT1dgkrCZ9+fNuSR5hufGOkmfiMffse7mTPSLNVBRFRO93bP7YP0ty+iiyjMp VK04ONa/+Yn8dCW1AOl2TgR4NaCP3ArDOASC178zRmDkapy0ChTZoFJEKGyW0IU3i3SD jeEAvQugzlutY+lo/rwJ/XCPZp8TL62QggIXq/6zMIVByB6OlMQQSEjm6kyQtJEZgnk/ dtrfVmXHzGh2hEmaFs+pqFl98YFmDZIa8EVeJxXT/rHqx2+Xk3qiQtOKvRJV1by5g67x WGKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784125431; x=1784730231; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=XBjSAX2B0WW1W8im1PxsWC01gxxXxQM2EqUc+55Cths=; b=m6ITfmAjCKzuBMxCmvKV/eaDXnl/3ZWY83EqqOnE3ONHMRRNYK5XKpRbnjoiuUsK9P +cOBn6xt8PP27ouG6kkuWEtlo8jpHQoDceGt8A4floqgUdF2WZF2mJEhwtFPK85hzJaG vnOVzYFSWCEVfTUxtMXF5puGmdVS8Wj8jVEgnoZrU0FnjyuCeBs8afOiMo1oh8jG0Wks 18Eqf3z/Q6cv3Saepp/MxETxaGQjz/hMulE7cvavB6Rop4cG+P8e/CVEnikOX3JXd6/z v2Q75BiTopxxEx7+aEIPd+agckEd//PFMLlVNSK1Po289EYmsO44I4/D8K+Lbsf9jILC 8ujw== X-Forwarded-Encrypted: i=1; AHgh+RqZYkqOv3ikpjvdt5T1VXCKR0Z6vqeOhJ/i/cFt+/xl0LQ3+ZFRnFJNkWfqVvvuvu829eA6kcS90Y2wKKc=@vger.kernel.org X-Gm-Message-State: AOJu0Yy1/Rwq9yG/SmohRqzPICfAFrerVxYf70dXwkJjCyiF1mOE8oXz zSRHeE5n9CBf+TllkkKKvwqd811f7n+OWNU0S7nB9lAHa3IiE0sMuvxo X-Gm-Gg: AfdE7ck5g67j1A4QUm96COvlASRKhYNhpOn3U3sh+1F0VNnh64D8ws7kbErp08PEFo1 EkdifnsTcYP/hbC1XMjVUmKDq7VGfLtsv6PQE0soVarOBOdmJhGKb+xAN7uUGfmWy+xfyxtqTAk krAzMlw++s5AbaLbPOL6ERlQ/cxI/kEXAXggLQQizaRvA62uAaL8AUy/QgmaSV8Be7x0kb4Sco4 zasl0DsLMAj3Sr8UkaLECF7Mla68Bh1uQ+vVmFTG3Unff5o9vpUtAUQ3Izzu8k5SaeSEZqdgyUe ZYd7IrEe43fwRveGNpACRAkErw2rhVmR7KyX1QyV0OE12t+z9cS3vcDobCKuk8lKRD9EHuLtph4 D/0Ekm66YEiJ4ESu+CJAYpLkATJp5UganTXAXY9hYNxP4a/ipedQrmYnSCDX6QfsB1x+gW97C1k p2+UmK470TiMeCvHYdbjtWZkD8D/HyhMx1Eb4XgAxtyRB8zO4UfFhlYorSLK9YktFmUYskINCpu yX4 X-Received: by 2002:a17:907:3e9f:b0:c12:7b74:7812 with SMTP id a640c23a62f3a-c1679533edcmr210683766b.59.1784125431131; Wed, 15 Jul 2026 07:23:51 -0700 (PDT) Received: from misharu.home (2a02-a463-a071-0-8f3f-3afb-28f6-19c0.fixed6.kpn.net. [2a02:a463:a071:0:8f3f:3afb:28f6:19c0]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c168744bd40sm38743766b.43.2026.07.15.07.23.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2026 07:23:50 -0700 (PDT) From: Hari Mishal To: Amit Shah , Arnd Bergmann , Greg Kroah-Hartman , Gerd Hoffmann , "Michael S . Tsirkin" , Jason Wang , David Hildenbrand , Henrik Rydberg Cc: Xuan Zhuo , =?UTF-8?q?Eugenio=20P=C3=A9rez?= , virtualization@lists.linux.dev, linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, Hari Mishal Subject: [PATCH 3/4] virtio_console: avoid NULL portdev dereference in in_intr() Date: Wed, 15 Jul 2026 16:22:42 +0200 Message-ID: <20260715142337.22811-4-harimishal1@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260715142337.22811-1-harimishal1@gmail.com> References: <20260715142337.22811-1-harimishal1@gmail.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 A port's virtqueue is not torn down immediately if the port itself is hot-unplugged (unplug_port() only nulls port->portdev; the vq callback stays registered until the whole device is removed). If in_intr() fires for a port in that window it dereferences port->portdev->vdev via is_rproc_serial(), crashing on the NULL portdev. Bail out early when portdev has already been cleared. Assisted-by: gkh_clanker:t1000 Signed-off-by: Hari Mishal --- drivers/char/virtio_console.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c index 198b97314168..faef362dae85 100644 --- a/drivers/char/virtio_console.c +++ b/drivers/char/virtio_console.c @@ -1720,6 +1720,11 @@ static void in_intr(struct virtqueue *vq) } spin_lock_irqsave(&port->inbuf_lock, flags); + if (!port->portdev) { + /* Port is being unplugged, ignore further data. */ + spin_unlock_irqrestore(&port->inbuf_lock, flags); + return; + } port->inbuf = get_inbuf(port); /* -- 2.43.0