Files
linux-bredos/include/linux
Lukas Wunner 5c6ca9d936 X.509: Introduce scope-based x509_certificate allocation
Add a DEFINE_FREE() clause for x509_certificate structs and use it in
x509_cert_parse() and x509_key_preparse().  These are the only functions
where scope-based x509_certificate allocation currently makes sense.
A third user will be introduced with the forthcoming SPDM library
(Security Protocol and Data Model) for PCI device authentication.

Unlike most other DEFINE_FREE() clauses, this one checks for IS_ERR()
instead of NULL before calling x509_free_certificate() at end of scope.
That's because the "constructor" of x509_certificate structs,
x509_cert_parse(), returns a valid pointer or an ERR_PTR(), but never
NULL.

Comparing the Assembler output before/after has shown they are identical,
save for the fact that gcc-12 always generates two return paths when
__cleanup() is used, one for the success case and one for the error case.

In x509_cert_parse(), add a hint for the compiler that kzalloc() never
returns an ERR_PTR().  Otherwise the compiler adds a gratuitous IS_ERR()
check on return.  Introduce an assume() macro for this which can be
re-used elsewhere in the kernel to provide hints for the compiler.

Suggested-by: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
Link: https://lore.kernel.org/all/20231003153937.000034ca@Huawei.com/
Link: https://lwn.net/Articles/934679/
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2024-04-12 15:07:53 +08:00
..
2024-03-07 21:52:03 +00:00
2024-01-18 15:21:00 -08:00
2024-03-18 10:32:44 +01:00
2024-03-11 15:37:23 -07:00
2024-03-07 20:37:04 +00:00
2024-02-20 14:22:55 -05:00
2024-02-20 14:22:51 -05:00
2024-03-12 23:08:29 -07:00
2024-02-25 12:05:08 +01:00
2024-03-04 17:01:18 -08:00
2024-03-07 09:36:08 +01:00
2024-02-28 19:36:39 -08:00
2024-03-10 14:38:04 -07:00
2024-02-15 23:43:48 -05:00
2024-02-14 11:14:40 +01:00
2024-02-17 16:20:41 +01:00
2024-03-13 18:38:13 -04:00
2024-03-06 13:04:18 -08:00
2024-03-01 08:44:54 +00:00
2024-03-09 09:14:51 -05:00
2024-03-09 09:14:50 -05:00
2024-03-13 12:53:53 -07:00
2024-03-13 12:53:53 -07:00
2024-01-09 15:00:09 +01:00
2024-03-08 12:05:10 +01:00
2024-02-15 12:17:28 -05:00
2024-03-03 15:06:58 -08:00
2024-01-21 18:09:30 +00:00
2024-02-21 16:00:03 -08:00
2024-02-20 13:36:34 +01:00
2024-03-04 20:46:18 -08:00
2024-03-04 17:25:09 +01:00
2024-02-18 18:59:59 +01:00
2024-03-06 10:52:12 +01:00
2024-02-09 12:07:48 +00:00