Commit 5014e904 authored by Suzuki K Poulose's avatar Suzuki K Poulose Committed by Greg Kroah-Hartman

coresight: Handle build path error

Enabling a component via sysfs (echo 1 > enable_source), would
trigger building a path from the enabled sources to the sink.
If there is an error in the process (e.g, sink not enabled or
the device (CPU corresponding to ETM) is not online), we never report
failure, except for leaving a message in the dmesg.

Do proper error checking for the build path and return the error.

Before:
 $ echo 0 > /sys/devices/system/cpu/cpu2/online
 $ echo 1 > /sys/devices/cs_etm/cpu2/enable_source
 $ echo $?
 0

After:
 $ echo 0 > /sys/devices/system/cpu/cpu2/online
 $ echo 1 > /sys/devices/cs_etm/cpu2/enable_source
 -bash: echo: write error: No such device or address
Signed-off-by: default avatarSuzuki K Poulose <suzuki.poulose@arm.com>
Acked-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f3b8172f
...@@ -425,6 +425,7 @@ static int _coresight_build_path(struct coresight_device *csdev, ...@@ -425,6 +425,7 @@ static int _coresight_build_path(struct coresight_device *csdev,
struct list_head *coresight_build_path(struct coresight_device *csdev) struct list_head *coresight_build_path(struct coresight_device *csdev)
{ {
struct list_head *path; struct list_head *path;
int rc;
path = kzalloc(sizeof(struct list_head), GFP_KERNEL); path = kzalloc(sizeof(struct list_head), GFP_KERNEL);
if (!path) if (!path)
...@@ -432,9 +433,10 @@ struct list_head *coresight_build_path(struct coresight_device *csdev) ...@@ -432,9 +433,10 @@ struct list_head *coresight_build_path(struct coresight_device *csdev)
INIT_LIST_HEAD(path); INIT_LIST_HEAD(path);
if (_coresight_build_path(csdev, path)) { rc = _coresight_build_path(csdev, path);
if (rc) {
kfree(path); kfree(path);
path = NULL; return ERR_PTR(rc);
} }
return path; return path;
...@@ -507,8 +509,9 @@ int coresight_enable(struct coresight_device *csdev) ...@@ -507,8 +509,9 @@ int coresight_enable(struct coresight_device *csdev)
goto out; goto out;
path = coresight_build_path(csdev); path = coresight_build_path(csdev);
if (!path) { if (IS_ERR(path)) {
pr_err("building path(s) failed\n"); pr_err("building path(s) failed\n");
ret = PTR_ERR(path);
goto out; goto out;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment