From nobody Wed Dec 17 18:00:10 2025 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) (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 00C9EC133 for ; Wed, 27 Aug 2025 06:49:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.188 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756277394; cv=none; b=KiTU4cUzlncr0sWKHOJKEfMCQLRaMvxtmfL0FotwxRqUOsBG3hU78tW1qnuJhtvc+ZvIqU2VV7u8p4o693JFG7Z6zbZuPtcNHEYWfsJb9xOykxFAk3gr28aWEzqwcb5TW9UxxtTJs3/a0a1cdNOVGJ34/ksNf6rUk9X32KeudBQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756277394; c=relaxed/simple; bh=cN9WodH6UzItS7IuiKoI+vOQ/ew3Fp9JtyW4sEt5cmY=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=iX8fupc5nbYjavUiMY+x3FrOhaAw4CADaFwbxdhIfmHSqE6baTgKTLlZwSG/T4c+YD+BfCSOj48/3iFxkGOVV8F4EuumdSNPvWeh8xf4Q/rR/mE2eJ9w5/FrVmzVPRI8b2opulD5L8E8mztAAac7Mxj6J/CUqPFyFqZstjtv4cQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=huawei.com; arc=none smtp.client-ip=45.249.212.188 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huawei.com Received: from mail.maildlp.com (unknown [172.19.163.48]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4cBZr1520mztTZ4; Wed, 27 Aug 2025 14:48:49 +0800 (CST) Received: from dggpemf500016.china.huawei.com (unknown [7.185.36.197]) by mail.maildlp.com (Postfix) with ESMTPS id 5DB1A180087; Wed, 27 Aug 2025 14:49:47 +0800 (CST) Received: from huawei.com (10.175.104.170) by dggpemf500016.china.huawei.com (7.185.36.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Wed, 27 Aug 2025 14:49:46 +0800 From: Wang Liang To: , , , CC: , , , Subject: [PATCH] pps: fix warning in pps_register_cdev when register device fail Date: Wed, 27 Aug 2025 14:50:10 +0800 Message-ID: <20250827065010.3208525-1-wangliang74@huawei.com> X-Mailer: git-send-email 2.33.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: kwepems100002.china.huawei.com (7.221.188.206) To dggpemf500016.china.huawei.com (7.185.36.197) Content-Type: text/plain; charset="utf-8" Similar to previous commit 2a934fdb01db ("media: v4l2-dev: fix error handling in __video_register_device()"), the release hook should be set before device_register(). Otherwise, when device_register() return error and put_device() try to callback the release function, the below warning may happen. ------------[ cut here ]------------ WARNING: CPU: 1 PID: 4760 at drivers/base/core.c:2567 device_release+0x1b= d/0x240 drivers/base/core.c:2567 Modules linked in: CPU: 1 UID: 0 PID: 4760 Comm: syz.4.914 Not tainted 6.17.0-rc3+ #1 NONE RIP: 0010:device_release+0x1bd/0x240 drivers/base/core.c:2567 Call Trace: kobject_cleanup+0x136/0x410 lib/kobject.c:689 kobject_release lib/kobject.c:720 [inline] kref_put include/linux/kref.h:65 [inline] kobject_put+0xe9/0x130 lib/kobject.c:737 put_device+0x24/0x30 drivers/base/core.c:3797 pps_register_cdev+0x2da/0x370 drivers/pps/pps.c:402 pps_register_source+0x2f6/0x480 drivers/pps/kapi.c:108 pps_tty_open+0x190/0x310 drivers/pps/clients/pps-ldisc.c:57 tty_ldisc_open+0xa7/0x120 drivers/tty/tty_ldisc.c:432 tty_set_ldisc+0x333/0x780 drivers/tty/tty_ldisc.c:563 tiocsetd drivers/tty/tty_io.c:2429 [inline] tty_ioctl+0x5d1/0x1700 drivers/tty/tty_io.c:2728 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:598 [inline] __se_sys_ioctl fs/ioctl.c:584 [inline] __x64_sys_ioctl+0x194/0x210 fs/ioctl.c:584 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0x5f/0x2a0 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x76/0x7e Before commit c79a39dc8d06 ("pps: Fix a use-after-free"), pps_register_cdev() call device_create() to create pps->dev, which will init dev->release to device_create_release(). Now the comment is outdated, just remove it. Fixes: c79a39dc8d06 ("pps: Fix a use-after-free") Signed-off-by: Wang Liang Reviewed-by: Calvin Owens --- drivers/pps/pps.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/pps/pps.c b/drivers/pps/pps.c index 9463232af8d2..0d2d57250575 100644 --- a/drivers/pps/pps.c +++ b/drivers/pps/pps.c @@ -383,13 +383,11 @@ int pps_register_cdev(struct pps_device *pps) pps->dev.devt =3D MKDEV(pps_major, pps->id); dev_set_drvdata(&pps->dev, pps); dev_set_name(&pps->dev, "pps%d", pps->id); + pps->dev.release =3D pps_device_destruct; err =3D device_register(&pps->dev); if (err) goto free_idr; =20 - /* Override the release function with our own */ - pps->dev.release =3D pps_device_destruct; - pr_debug("source %s got cdev (%d:%d)\n", pps->info.name, pps_major, pps->id); =20 --=20 2.33.0