From: "Thomas Weißschuh" <linux@weissschuh.net>
To: Willy Tarreau <w@1wt.eu>
Cc: Shuah Khan <shuah@kernel.org>,
linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org
Subject: Re: [PATCH RFC 5/5] tools/nolibc: tests: add test for -fstack-protector
Date: Sat, 18 Mar 2023 16:49:12 +0000 [thread overview]
Message-ID: <4d2b4237-48dc-4d78-ab42-47f78cb76ab8@t-8ch.de> (raw)
In-Reply-To: <ZA6TmjtAJ5lvFCeF@1wt.eu>
On Mon, Mar 13, 2023 at 04:08:10AM +0100, Willy Tarreau wrote:
> On Sun, Mar 12, 2023 at 11:12:50PM +0000, Thomas Weißschuh wrote:
> > FYI there is also another patch to make nolibc-test buildable with
> > compilers that enable -fstack-protector by default.
> > Maybe this can be picked up until the proper stack-protector support is
> > hashed out.
> > Maybe even for 6.3:
> >
> > https://lore.kernel.org/lkml/20230221-nolibc-no-stack-protector-v1-1-4e6a42f969e2@weissschuh.net/
>
> Ah thanks, it seems I indeed missed it. It looks good, I'll take it.
Do you have a tree with this published?
So I can make sure the next revision of this patchset does not lead to
conflicts.
> > > > +int run_stackprotector(int min, int max)
> > > > +{
> > > > + int llen = 0;
> > > > +
> > > > + llen += printf("0 ");
> > > > +
> > > > +#if !defined(NOLIBC_STACKPROTECTOR)
> > > > + llen += printf("stack smashing detection not supported");
> > > > + pad_spc(llen, 64, "[SKIPPED]\n");
> > > > + return 0;
> > > > +#endif
> > >
> > > Shouldn't the whole function be enclosed instead ? I know it's more of
> > > a matter of taste, but avoiding to build and link it for archs that
> > > will not use it may be better.
> >
> > The goal was to print a [SKIPPED] message if it's not supported.
>
> Ah indeed makes sense.
>
> > The overhead of doing this should be neglectable.
>
> It was not the overhead (that's only a regtest program after all), I
> was more thinking about the difficulty to maintain this function over
> time for other archs if it starts to rely on optional support. But for
> now it's not a problem, it it would ever become one we could simply
> change that to have a function just print SKIPPED. So I'm fine with
> your option.
>
> > > > @@ -719,8 +784,11 @@ int prepare(void)
> > > > /* This is the definition of known test names, with their functions */
> > > > static const struct test test_names[] = {
> > > > /* add new tests here */
> > > > - { .name = "syscall", .func = run_syscall },
> > > > - { .name = "stdlib", .func = run_stdlib },
> > > > + { .name = "syscall", .func = run_syscall },
> > > > + { .name = "stdlib", .func = run_stdlib },
> > > > + { .name = "stackprotector", .func = run_stackprotector, },
> > > > + { .name = "_smash_stack", .func = run_smash_stack,
> > >
> > > I think it would be better to keep the number of categories low
> > > and probably you should add just one called "protection" or so,
> > > and implement your various tests in it as is done for other
> > > categories. The goal is to help developers quickly spot and select
> > > the few activities they're interested in at a given moment.
> >
> > I'm not sure how this would be done. The goal here is that
> > "stackprotector" is the user-visible category. It can be changed to
> > "protection".
> > "_smash_stack" however is just an entrypoint that is used by the forked
> > process to call the crashing code.
>
> Ah I didn't realize that, I now understand how that can be useful,
> indeed. Then maybe just rename your .skip_by_default field to .hidden
> so that it becomes more generic (i.e. if one day we permit enumeration
> we don't want such tests to be listed either), and assign the field on
> the same line so that it's easily visible with a grep.
Actually this works fine with a plain fork() and the exec() is not
needed. So the dedicated entrypoint is not needed anymore.
No idea what I tested before.
next prev parent reply other threads:[~2023-03-18 16:49 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-07 22:22 [PATCH RFC 0/5] tools/nolibc: add support for stack protector Thomas Weißschuh
2023-03-07 22:22 ` [PATCH RFC 1/5] tools/nolibc: add definitions for standard fds Thomas Weißschuh
2023-03-07 22:22 ` [PATCH RFC 2/5] tools/nolibc: add helpers for wait() signal exits Thomas Weißschuh
2023-03-07 22:22 ` [PATCH RFC 3/5] tools/nolibc: tests: constify test_names Thomas Weißschuh
2023-03-07 22:22 ` [PATCH RFC 4/5] tools/nolibc: add support for stack protector Thomas Weißschuh
2023-03-12 12:56 ` Willy Tarreau
2023-03-12 23:06 ` Thomas Weißschuh
2023-03-13 3:24 ` Willy Tarreau
2023-03-07 22:22 ` [PATCH RFC 5/5] tools/nolibc: tests: add test for -fstack-protector Thomas Weißschuh
2023-03-12 13:07 ` Willy Tarreau
2023-03-12 23:12 ` Thomas Weißschuh
2023-03-13 3:08 ` Willy Tarreau
2023-03-18 16:49 ` Thomas Weißschuh [this message]
2023-03-19 13:58 ` Willy Tarreau
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=4d2b4237-48dc-4d78-ab42-47f78cb76ab8@t-8ch.de \
--to=linux@weissschuh.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=shuah@kernel.org \
--cc=w@1wt.eu \
/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