target/ppc/kvm.c | 6 ++++++ 1 file changed, 6 insertions(+)
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 <muriloo@linux.ibm.com>
Signed-off-by: Fabiano Rosas <farosas@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) {
+ continue;
+ }
+
snprintf(buf, buf_len, "%s%s/clock-frequency", PROC_DEVTREE_CPU,
dirp->d_name);
f = fopen(buf, "r");
--
2.36.1
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 <muriloo@linux.ibm.com> > Signed-off-by: Fabiano Rosas <farosas@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? > + continue; > + } > + > snprintf(buf, buf_len, "%s%s/clock-frequency", PROC_DEVTREE_CPU, > dirp->d_name); > f = fopen(buf, "r"); -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
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 <muriloo@linux.ibm.com> >> Signed-off-by: Fabiano Rosas <farosas@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"); >
Hi, Daniel, David. On 7/12/22 10:03, Daniel Henrique Barboza wrote: > > > 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 <muriloo@linux.ibm.com> >>> Signed-off-by: Fabiano Rosas <farosas@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 I've sent v2: https://lore.kernel.org/qemu-devel/20220712210810.35514-1-muriloo@linux.ibm.com/ Thank you for reviewing. -- Murilo
On 7/11/22 16:37, 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 <muriloo@linux.ibm.com> > Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com> > --- Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.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) { > + continue; > + } > + > snprintf(buf, buf_len, "%s%s/clock-frequency", PROC_DEVTREE_CPU, > dirp->d_name); > f = fopen(buf, "r");
© 2016 - 2024 Red Hat, Inc.