linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Li Wang <liwang@redhat.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org,
	 linux-mm@kvack.org, David Hildenbrand <david@kernel.org>,
	Mark Brown <broonie@kernel.org>,  Shuah Khan <shuah@kernel.org>,
	Waiman Long <longman@redhat.com>
Subject: Re: [PATCH 1/3] selftests/mm/write_to_hugetlbfs: parse -s with strtoull and use size_t
Date: Sun, 21 Dec 2025 10:35:13 +0800	[thread overview]
Message-ID: <CAEemH2fsZAWnzCzv5vSyf-GRxExFaeUR_vYex9KxAtnBw-_b_Q@mail.gmail.com> (raw)
In-Reply-To: <20251220105811.3516167661cd696f464cc3b0@linux-foundation.org>

[-- Attachment #1: Type: text/plain, Size: 3503 bytes --]

Andrew Morton <akpm@linux-foundation.org> wrote:

>  #./charge_reserved_hugetlb.sh -cgroup-v2
> >  # -----------------------------------------
> >  ...
> >  # nr hugepages = 10
> >  # writing cgroup limit: 5368709120
> >  # writing reseravation limit: 5368709120
>
> Can we fix that typo while we're in there?  "reservation".
>

Good catch, let's fix it in patch 2/3.


> >       while ((c = getopt(argc, argv, "s:p:m:owlrn")) != -1) {
> >               switch (c) {
> >               case 's':
> > -                     size = atoi(optarg);
> > +                     errno = 0;
> > +                     char *end = NULL;
> > +                     unsigned long long tmp = strtoull(optarg, &end,
> 10);
>
> Coding-style nits: we do accept c99-style definitions nowadays but I do
> think our eyes prefer the less surprising "definitions come before
> code" style.  So the above could be
>
>                         char *end = NULL;
>                         unsigned long long tmp = strtoull(optarg, &end,
> 10);
>
>                         errno = 0;
>
> Also, `errno' belongs to libc.  It seems wrong to be altering it from
> within our client code.
>

Indeed, since I saw 'errono' modified in many places in this test,
so to avoid other effects, I set it to zero. However, we can abandon
this method and use sscanf() instead, thanks!


>
> > +                     if (errno || end == optarg || *end != '\0') {
> > +                             errno = EINVAL;
> > +                             perror("Invalid -s size");
> > +                             exit_usage();
> > +                     }
> > +                     if (tmp == 0) {
> > +                             errno = EINVAL;
> > +                             perror("size not found");
> > +                             exit_usage();
> > +                     }
> > +                     size = (size_t)tmp;
> >                       break;
>
> I'm not really clear on what problems we're trying to solve here, but
> this all seems like a lot of fuss.  Can we just do
>
>         if (sscanf(optarg, "%zu", &size) != 1)
>

Yes, I admit I was overthinking the int overflow handling.
This is nice, so the V2 should be simply like:

--- a/tools/testing/selftests/mm/write_to_hugetlbfs.c
+++ b/tools/testing/selftests/mm/write_to_hugetlbfs.c
@@ -68,7 +68,7 @@ int main(int argc, char **argv)
        int key = 0;
        int *ptr = NULL;
        int c = 0;
-       int size = 0;
+       size_t size = 0;
        char path[256] = "";
        enum method method = MAX_METHOD;
        int want_sleep = 0, private = 0;
@@ -86,7 +86,10 @@ int main(int argc, char **argv)
        while ((c = getopt(argc, argv, "s:p:m:owlrn")) != -1) {
                switch (c) {
                case 's':
-                       size = atoi(optarg);
+                       if (sscanf(optarg, "%zu", &size) != 1) {
+                               perror("Invalid -s.");
+                               exit_usage();
+                       }
                        break;
                case 'p':
                        strncpy(path, optarg, sizeof(path) - 1);
@@ -131,7 +134,7 @@ int main(int argc, char **argv)
        }

        if (size != 0) {
-               printf("Writing this size: %d\n", size);
+               printf("Writing this size: %zu\n", size);
        } else {
                errno = EINVAL;
                perror("size not found");


And, if no more comments on the rest of patchset, I will send v2 later
today.


-- 
Regards,
Li Wang

[-- Attachment #2: Type: text/html, Size: 5928 bytes --]

  reply	other threads:[~2025-12-21  2:35 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-20 11:16 [PATCH 0/3] selftests/mm: hugetlb cgroup charging: robustness fixes Li Wang
2025-12-20 11:16 ` [PATCH 1/3] selftests/mm/write_to_hugetlbfs: parse -s with strtoull and use size_t Li Wang
2025-12-20 18:58   ` Andrew Morton
2025-12-21  2:35     ` Li Wang [this message]
2025-12-20 11:16 ` [PATCH 2/3] selftests/mm/charge_reserved_hugetlb.sh: add waits with timeout helper Li Wang
2025-12-20 11:16 ` [PATCH 3/3] selftests/mm/charge_reserved_hugetlb: fix hugetlbfs mount size for large hugepages Li Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAEemH2fsZAWnzCzv5vSyf-GRxExFaeUR_vYex9KxAtnBw-_b_Q@mail.gmail.com \
    --to=liwang@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=broonie@kernel.org \
    --cc=david@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=longman@redhat.com \
    --cc=shuah@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox