From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (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 0ECDC33AD9A for ; Sat, 18 Jul 2026 13:03:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784379784; cv=none; b=cwLPQPs5GLuvEd92FUoozAbEBxo6ftnTN5DsIANTMvdbyFNTkhlNsEP3Bzx0ue6QObI5DaaG3X/JHRfei0PoSVh2TeBgeI0FMnWfdnjitNDKRXi/NchGE2xjpSD/FaPEtau7wCUjtDIp3sjlm6yK0HKO5jVtF2GIRnTAa5Wymdg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784379784; c=relaxed/simple; bh=+Grdugcauc4mZVTbOs5VT+LBzVeVXGJ51Rt+36hFDMM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jYdbmzBnDwQQSZ/UpbVhUmIbLwCRVFDai/fbAyCVgK/1ICzVutYwjUtYYy9g/9Z5IA1TwRPTLy2853QoXgBX8yUi2ESntfZ156AliKpAmXd3KNONP3pD3TBXB84iIRa3cEAqtrSia1NMaB17f7mVnHv4+urnkKV1qni2HM9MbNg= 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=QUhkzExP; arc=none smtp.client-ip=209.85.216.41 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="QUhkzExP" Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-38e347638adso3694436a91.0 for ; Sat, 18 Jul 2026 06:03:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784379782; x=1784984582; 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=UGP+4K0uZcwD2O//SMtKKili1zVc41sNCrJ+p97Mo6w=; b=QUhkzExPQAkboYcdGo/qzGdaYT3v6QFOakvBNceSHlHVu9v2k2hcFbDgNZBWvgnKdc sGoYit0sf0QaYvGRB7kWevJOsEWX9AET6Oec4QiHNttl1mKSpExNnw84eqlWeKHL9w4W 27WWYLy1QB+wXH7rueRZLgF6VCjjuy0DE5bb4j6PfjDGgTmlGqSzn3sPVs3mKARTX45Y TVjKOiN+X7Li80IKXV7ZThq7ms42fbRkwqFj1btnj4Hz1PfFeCttHjqthVpHkFztR/T5 LdV3tAD85NN0kBBuBCtR8Nelnl4CtDGs6a+WmEt0NA7VQqwaLwpKIWhIDTcYZts6Bgjx 4KvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784379782; x=1784984582; 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=UGP+4K0uZcwD2O//SMtKKili1zVc41sNCrJ+p97Mo6w=; b=k9hCnvBtjGRZgHwgugRVl+CST3z1vg2fAwMDzRbbzvtDQ3OdJCC+ev+dVhT7/CiHfx txMXYxZWAbdtFQrsp6GlRUmCpOQTvCqfv1U6QhmCUZngpqPC3LhPwBCwe6q59GNd4ig7 Y4D7oqPViSTc4f2e2uxGcbHFWaWbGUiFzlQR44V3ijE4Gurj9V1dR9ZtQBXnjwKcE1lp 4p1ymq1N1jCfYWAYFzcc5NU4ZlMOOkj4qGH5+geJjttZ4CBHMQpycOsaQ80dFuY7ZiyN Q3w7IAVBG+uURV0WILWQWjYNrRr2nYYABMtI/pCfSQCVbh7B3Gs8RAmNrkxuEfckabQp 9W3w== X-Forwarded-Encrypted: i=1; AHgh+RqfV8NkzGzKQX45mZS/atkoLgsHkrUKAlGcKEf3eG0pAshdCF6k4gbn9r6nponUQQuBriwZampFG3nUjI0=@vger.kernel.org X-Gm-Message-State: AOJu0Yzz5bi2qPWwy+BTjNMklkPC1/tGPGouDGT+kHkprRIeF8OW3zTp YNxUW6XwV9Pl1VInccsIf4h4vjnJzsXCzMpcx/huxHmplsoM66X4ntGR X-Gm-Gg: AfdE7cmwUxMzWMJAFw4ozhZIc9iZcDWw6Jkbue0Va1MAif8HJYlboCUDOzO7m3aodnz YTITWL9iLgeyUQjjjkYQ6NW5nSPo/ZaGBfFQ3Dxry5UlG5Vatowfpg8vEdOYB7k3psgAYwO/A0U zp47X84UXQ7zMIN6AfUFqBx1nuB3gYGkmFwALtrDMbRlKqayzLa6RCiIbeYX9Yy9HzdPASoBgT6 ab42m4BhmAFUAkEU3te2X+hDAI4S2G4m2hY5G1lEB8cL7TStEwNy1GwycItpUvI2NZS/S8NQNYr +z2tahY6dtkc/j22ksedRs+YtXuyGXwIHEzA5Tz3Q/X02vGrZpfYIM5Oj3Qs/zyA3+LP6Su9gp5 TMMD9gH7f49/SZPReYLIo2LOJET7o6lBdMTuvFrEGmoBlWZ5ZyI7sX6ueCd9T X-Received: by 2002:a17:90b:1d10:b0:38e:659b:f366 with SMTP id 98e67ed59e1d1-38e659bf4d8mr1058381a91.0.1784379781912; Sat, 18 Jul 2026 06:03:01 -0700 (PDT) Received: from lgs.. ([2001:250:5800:1000::f280]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38e4aff383dsm2766845a91.8.2026.07.18.06.02.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Jul 2026 06:03:01 -0700 (PDT) From: Guangshuo Li To: Nas Chung , Jackson Lee , Mauro Carvalho Chehab , Nicolas Dufresne , Hans Verkuil , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Guangshuo Li Subject: [PATCH v2 1/2] media: chips-media: wave5: Check decoder qbuf runtime resume Date: Sat, 18 Jul 2026 21:00:36 +0800 Message-ID: <20260718130037.3306626-2-lgs201920130244@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260718130037.3306626-1-lgs201920130244@gmail.com> References: <20260718130037.3306626-1-lgs201920130244@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 wave5_vpu_dec_buf_queue_dst() resumes the VPU before it may clear a decoder display flag. This is needed because clearing the display flag accesses VPU registers. However, the return value from pm_runtime_resume_and_get() is ignored. If the resume fails, pm_runtime_resume_and_get() returns without holding a runtime PM usage reference. The unconditional pm_runtime_put_autosuspend() at the end of the function then drops an unmatched reference. The failed resume path can also continue into wave5_vpu_dec_clr_disp_flag() while the device is still suspended. Check the return value. If the resume fails, complete the queued buffer with an error and return without touching the hardware or dropping an unmatched runtime PM reference. Fixes: cbb9c0d50e47 ("media: chips-media: wave5: Fix SError of kernel panic when closed") Signed-off-by: Guangshuo Li --- drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c index bb2ba9204a83..03d108b808ba 100644 --- a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c +++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c @@ -1290,8 +1290,14 @@ static void wave5_vpu_dec_buf_queue_dst(struct vb2_buffer *vb) struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb); struct vpu_instance *inst = vb2_get_drv_priv(vb->vb2_queue); struct v4l2_m2m_ctx *m2m_ctx = inst->v4l2_fh.m2m_ctx; + int ret; + + ret = pm_runtime_resume_and_get(inst->dev->dev); + if (ret < 0) { + vb2_buffer_done(vb, VB2_BUF_STATE_ERROR); + return; + } - pm_runtime_resume_and_get(inst->dev->dev); vbuf->sequence = inst->queued_dst_buf_num++; if (inst->state == VPU_INST_STATE_PIC_RUN) { -- 2.43.0