[PATCH] coresight: tpdm: initialize spinlock before exposing sysfs
yingchao <[email protected]>
| Newsgroups | org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <8693039B65AA093F+20260825020647.2469-1-dengyingchao@kylinsec.com.cn> |
From: Yingchao Deng <[email protected]> tpdm_probe() initializes drvdata->spinlock after coresight_register(), but the sysfs attributes registered by coresight_register() use the spinlock. This exposes a window where a concurrent sysfs write can lock an uninitialized spinlock. Initialize the spinlock before coresight_register(). Fixes: b3c71626a933 ("Coresight: Add coresight TPDM source driver") Signed-off-by: Yingchao Deng <[email protected]> --- drivers/hwtracing/coresight/coresight-tpdm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight-tpdm.c b/drivers/hwtracing/coresight/coresight-tpdm.c index 8464edbba2d4..50d1351772b9 100644 --- a/drivers/hwtracing/coresight/coresight-tpdm.c +++ b/drivers/hwtracing/coresight/coresight-tpdm.c @@ -1457,12 +1457,12 @@ static int tpdm_probe(struct device *dev, struct resource *res) desc.groups = tpdm_attr_grps; else desc.groups = static_tpdm_attr_grps; + spin_lock_init(&drvdata->spinlock); + drvdata->csdev = coresight_register(&desc); if (IS_ERR(drvdata->csdev)) return PTR_ERR(drvdata->csdev); - spin_lock_init(&drvdata->spinlock); - return 0; } -- 2.33.0