Hi! > mem/lib: recall write_file & read_file functions > > mem/thp04: rebuild the cleanup() by those two functions to avoid safe macros > being abused. > > Signed-off-by: Li Wang <li...@redhat.com> > --- > testcases/kernel/mem/include/mem.h | 2 ++ > testcases/kernel/mem/lib/mem.c | 25 +++++++++++++++++++++++++ > testcases/kernel/mem/thp/thp04.c | 27 +++++++++++++++++---------- > 3 files changed, 44 insertions(+), 10 deletions(-) > > diff --git a/testcases/kernel/mem/include/mem.h > b/testcases/kernel/mem/include/mem.h > index 8fa2094..3cb3580 100644 > --- a/testcases/kernel/mem/include/mem.h > +++ b/testcases/kernel/mem/include/mem.h > @@ -96,6 +96,8 @@ int path_exist(const char *path, ...); > long read_meminfo(char *item); > void set_sys_tune(char *sys_file, long tune, int check); > long get_sys_tune(char *sys_file); > +void write_file(char *filename, char *buf); > +void read_file(char *filename, char *retbuf); > void cleanup(void); > void setup(void); > > diff --git a/testcases/kernel/mem/lib/mem.c b/testcases/kernel/mem/lib/mem.c > index d3fc19d..3bd9f65 100644 > --- a/testcases/kernel/mem/lib/mem.c > +++ b/testcases/kernel/mem/lib/mem.c > @@ -1065,6 +1065,31 @@ long get_sys_tune(char *sys_file) > return tune; > } > > +void write_file(char *filename, char *buf) > +{ > + int fd; > + > + fd = open(filename, O_WRONLY); > + if (fd == -1) > + tst_resm(TWARN | TERRNO, "open"); > + tst_resm(TINFO, "set %s value to %s", filename, buf); > + if (write(fd, buf, strlen(buf)) != strlen(buf)) > + tst_resm(TWARN | TERRNO, "write"); > + close(fd); > +} > + > +void read_file(char *filename, char *retbuf) > +{ > + int fd; > + > + fd = open(filename, O_RDONLY); > + if (fd == -1) > + tst_resm(TWARN | TERRNO, "open"); > + if (read(fd, retbuf, BUFSIZ) < 0) > + tst_resm(TWARN | TERRNO, "read"); > + close(fd); > +} > + > void update_shm_size(size_t * shm_size) > { > size_t shmmax; > diff --git a/testcases/kernel/mem/thp/thp04.c > b/testcases/kernel/mem/thp/thp04.c > index 0b6baeb..4e9aa87 100644 > --- a/testcases/kernel/mem/thp/thp04.c > +++ b/testcases/kernel/mem/thp/thp04.c > @@ -61,6 +61,7 @@ option_t thp_options[] = { > > static int pre_thp_scan_sleep_millisecs; > static int pre_thp_alloc_sleep_millisecs; > +static char buf[BUFSIZ], path[BUFSIZ]; > static char pre_thp_enabled[BUFSIZ]; > > int main(int argc, char *argv[]) > @@ -120,23 +121,29 @@ void setup(void) > > void cleanup(void) > { > - SAFE_FILE_PRINTF(NULL, PATH_KHPD "scan_sleep_millisecs", > - "%d", pre_thp_scan_sleep_millisecs); > + snprintf(buf, BUFSIZ, "%d", pre_thp_scan_sleep_millisecs); > + write_file(PATH_KHPD "scan_sleep_millisecs", buf); > > - SAFE_FILE_PRINTF(NULL, PATH_KHPD "alloc_sleep_millisecs", > - "%d", pre_thp_alloc_sleep_millisecs); > + snprintf(buf, BUFSIZ, "%d", pre_thp_alloc_sleep_millisecs); > + write_file(PATH_KHPD "alloc_sleep_millisecs", buf); > > /* > * The value of transparent_hugepage/enabled is speical, > * we need to recover the previous value one by one for > * the three mode: always, madvise, never. > */ > - if (strcmp(pre_thp_enabled, "[always] madvise never") == 0) > - SAFE_FILE_PRINTF(NULL, PATH_THP "enabled", "always"); > - else if (strcmp(pre_thp_enabled, "always [madvise] never") == 0) > - SAFE_FILE_PRINTF(NULL, PATH_THP "enabled", "madvise"); > - else > - SAFE_FILE_PRINTF(NULL, PATH_THP "enabled", "never"); > + if (strcmp(pre_thp_enabled, "[always] madvise never") == 0){ > + snprintf(path, BUFSIZ, "always"); > + write_file(PATH_THP "enabled", path); > + } > + else if (strcmp(pre_thp_enabled, "always [madvise] never") == 0){ > + snprintf(path, BUFSIZ, "madvise"); > + write_file(PATH_THP "enabled", path); > + } > + else{ > + snprintf(path, BUFSIZ, "never"); > + write_file(PATH_THP "enabled", path); > + } > > TEST_CLEANUP; > }
This is a bit better but suffers from the same issues as the previous one. -- Cyril Hrubis chru...@suse.cz ------------------------------------------------------------------------------ _______________________________________________ Ltp-list mailing list Ltp-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ltp-list