mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 13:06:59 +02:00
coresight: ultrasoc-smb: Config SMB buffer before register sink
[ Upstream commit830a7f54db] The SMB dirver register the enable/disable sysfs interface in function smb_register_sink(), however the buffer depends on the following configuration to work well. So it'll be possible for user to access an unreset one. Move the config buffer operation to before register_sink(). Ignore the return value, if smb_config_inport() fails. That will cause the hardwares disable trace path to fail, should not affect SMB driver remove. So we make smb_remove() return success, Fixes:06f5c2926a("drivers/coresight: Add UltraSoc System Memory Buffer driver") Signed-off-by: Junhao He <hejunhao3@huawei.com> Reviewed-by: James Clark <james.clark@arm.com> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> Link: https://lore.kernel.org/r/20231114133346.30489-3-hejunhao3@huawei.com Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
ace850bd86
commit
ab5091e1cc
|
|
@ -583,37 +583,32 @@ static int smb_probe(struct platform_device *pdev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
ret = smb_config_inport(dev, true);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
platform_set_drvdata(pdev, drvdata);
|
||||
spin_lock_init(&drvdata->spinlock);
|
||||
drvdata->pid = -1;
|
||||
|
||||
ret = smb_register_sink(pdev, drvdata);
|
||||
if (ret) {
|
||||
smb_config_inport(&pdev->dev, false);
|
||||
dev_err(dev, "Failed to register SMB sink\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = smb_config_inport(dev, true);
|
||||
if (ret) {
|
||||
smb_unregister_sink(drvdata);
|
||||
return ret;
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, drvdata);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int smb_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct smb_drv_data *drvdata = platform_get_drvdata(pdev);
|
||||
int ret;
|
||||
|
||||
ret = smb_config_inport(&pdev->dev, false);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
smb_unregister_sink(drvdata);
|
||||
|
||||
smb_config_inport(&pdev->dev, false);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user