Skip to content

Commit deeeaf6

Browse files
Leo-YanSuzuki K Poulose
authored andcommitted
coresight: replicator: Fix panic for clearing claim tag
On platforms with a static replicator, a kernel panic occurs during boot: [ 4.999406] replicator_probe+0x1f8/0x360 [ 5.003455] replicator_platform_probe+0x64/0xd8 [ 5.008115] platform_probe+0x70/0xf0 [ 5.011812] really_probe+0xc4/0x2a8 [ 5.015417] __driver_probe_device+0x80/0x140 [ 5.019813] driver_probe_device+0xe4/0x170 [ 5.024032] __driver_attach+0x9c/0x1b0 [ 5.027900] bus_for_each_dev+0x7c/0xe8 [ 5.031769] driver_attach+0x2c/0x40 [ 5.035373] bus_add_driver+0xec/0x218 [ 5.039154] driver_register+0x68/0x138 [ 5.043023] __platform_driver_register+0x2c/0x40 [ 5.047771] coresight_init_driver+0x4c/0xe0 [ 5.052079] replicator_init+0x30/0x48 [ 5.055865] do_one_initcall+0x4c/0x280 [ 5.059736] kernel_init_freeable+0x1ec/0x3c8 [ 5.064134] kernel_init+0x28/0x1f0 [ 5.067655] ret_from_fork+0x10/0x20 A static replicator doesn't have registers, so accessing the claim register results in a NULL pointer deference. Fixes the issue by accessing the claim registers only after the I/O resource has been successfully mapped. Fixes: 7cd6368 ("coresight: Clear self hosted claim tag on probe") Signed-off-by: Leo Yan <[email protected]> Reviewed-by: James Clark <[email protected]> Signed-off-by: Suzuki K Poulose <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent b104a94 commit deeeaf6

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/hwtracing/coresight/coresight-replicator.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ static int replicator_probe(struct device *dev, struct resource *res)
262262
drvdata->base = base;
263263
desc.groups = replicator_groups;
264264
desc.access = CSDEV_ACCESS_IOMEM(base);
265+
coresight_clear_self_claim_tag(&desc.access);
265266
}
266267

267268
if (fwnode_property_present(dev_fwnode(dev),
@@ -284,7 +285,6 @@ static int replicator_probe(struct device *dev, struct resource *res)
284285
desc.pdata = dev->platform_data;
285286
desc.dev = dev;
286287

287-
coresight_clear_self_claim_tag(&desc.access);
288288
drvdata->csdev = coresight_register(&desc);
289289
if (IS_ERR(drvdata->csdev)) {
290290
ret = PTR_ERR(drvdata->csdev);

0 commit comments

Comments
 (0)