On 7/12/22 00:46, David Gibson wrote:
On Mon, Jul 11, 2022 at 04:37:43PM -0300, Murilo Opsfelder Araujo wrote:
Some systems have /proc/device-tree/cpus/../clock-frequency. However,
this is not the expected path for a CPU device tree directory.
Signed-off-by: Murilo Opsfelder Araujo <muri...@linux.ibm.com>
Signed-off-by: Fabiano Rosas <faro...@linux.ibm.com>
---
target/ppc/kvm.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index 6eed466f80..c8485a5cc0 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -1877,6 +1877,12 @@ static int kvmppc_find_cpu_dt(char *buf, int buf_len)
buf[0] = '\0';
while ((dirp = readdir(dp)) != NULL) {
FILE *f;
+
+ /* Don't accidentally read from the upper directory */
+ if (strcmp(dirp->d_name, "..") == 0) {
It might not be causing problems now, but it would be technically more
correct to also skip ".", wouldn't it?
Given that the use of this function is inside kvmppc_read_int_cpu_dt(), which
is used to read a property that belongs to a CPU node, I believe you're right.
It's better to avoid returning "PROC_DEVTREE_CPU" as well.
Murilo, can you please re-send it skipping both ".." and "." ? Better be
on the safe side.
Daniel
+ continue;
+ }
+
snprintf(buf, buf_len, "%s%s/clock-frequency", PROC_DEVTREE_CPU,
dirp->d_name);
f = fopen(buf, "r");