Re: [PATCH v4 1/5] selftests/mm: make file helpers return errors

From: Mike Rapoport

Date: Wed Jun 03 2026 - 06:07:15 EST


On Wed, 27 May 2026 19:54:28 +0530, Sarthak Sharma <sarthak.sharma@xxxxxxx> wrote:

Hi Sarthak,

>
> diff --git a/tools/testing/selftests/mm/hugepage_settings.c b/tools/testing/selftests/mm/hugepage_settings.c
> index 2eab2110ac6a..c2f97fe97e58 100644
> --- a/tools/testing/selftests/mm/hugepage_settings.c
> +++ b/tools/testing/selftests/mm/hugepage_settings.c
> @@ -61,7 +62,9 @@ int thp_read_string(const char *name, const char * const strings[])
> exit(EXIT_FAILURE);
> }
>
> - if (!read_file(path, buf, sizeof(buf))) {
> + ret = read_file(path, buf, sizeof(buf));
> + if (ret < 0) {
> + errno = -ret;
> perror(path);

Hmm, looks like those slipped ksft conversion :/

For kselftest compatibility this should be

printf("# %s: %s (%d)\n", path, strerror(errno), errno);

> @@ -103,12 +106,18 @@ void thp_write_string(const char *name, const char *val)
> printf("%s: Pathname is too long\n", __func__);
> exit(EXIT_FAILURE);
> }
> - write_file(path, val, strlen(val) + 1);
> + ret = write_file(path, val, strlen(val) + 1);
> + if (ret < 0) {
> + errno = -ret;
> + perror(path);
> + exit(EXIT_FAILURE);

These seem to repeat themself, how about we move prints to read/write
helpers?

Then it wouldn't matter for the callers what the exact error was, and no
need for errno games.

>
> diff --git a/tools/testing/selftests/mm/vm_util.c b/tools/testing/selftests/mm/vm_util.c
> index 311fc5b4513e..290e5c29123e 100644
> --- a/tools/testing/selftests/mm/vm_util.c
> +++ b/tools/testing/selftests/mm/vm_util.c
> @@ -703,62 +703,72 @@ int read_file(const char *path, char *buf, size_t buflen)
> int fd;
> ssize_t numread;
>
> + if (buflen < 2)
> + return -EINVAL;

heh, this feels overly protective :)

--
Sincerely yours,
Mike.