Commit Graph

7 Commits

Author SHA1 Message Date
Linus Torvalds
bf4afc53b7 Convert 'alloc_obj' family to use the new default GFP_KERNEL argument
This was done entirely with mindless brute force, using

    git grep -l '\<k[vmz]*alloc_objs*(.*, GFP_KERNEL)' |
        xargs sed -i 's/\(alloc_objs*(.*\), GFP_KERNEL)/\1)/'

to convert the new alloc_obj() users that had a simple GFP_KERNEL
argument to just drop that argument.

Note that due to the extreme simplicity of the scripting, any slightly
more complex cases spread over multiple lines would not be triggered:
they definitely exist, but this covers the vast bulk of the cases, and
the resulting diff is also then easier to check automatically.

For the same reason the 'flex' versions will be done as a separate
conversion.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2026-02-21 17:09:51 -08:00
Kees Cook
69050f8d6d treewide: Replace kmalloc with kmalloc_obj for non-scalar types
This is the result of running the Coccinelle script from
scripts/coccinelle/api/kmalloc_objs.cocci. The script is designed to
avoid scalar types (which need careful case-by-case checking), and
instead replace kmalloc-family calls that allocate struct or union
object instances:

Single allocations:	kmalloc(sizeof(TYPE), ...)
are replaced with:	kmalloc_obj(TYPE, ...)

Array allocations:	kmalloc_array(COUNT, sizeof(TYPE), ...)
are replaced with:	kmalloc_objs(TYPE, COUNT, ...)

Flex array allocations:	kmalloc(struct_size(PTR, FAM, COUNT), ...)
are replaced with:	kmalloc_flex(*PTR, FAM, COUNT, ...)

(where TYPE may also be *VAR)

The resulting allocations no longer return "void *", instead returning
"TYPE *".

Signed-off-by: Kees Cook <kees@kernel.org>
2026-02-21 01:02:28 -08:00
Arnd Bergmann
30c577a852 optee: add timeout parameter for notification wait
-----BEGIN PGP SIGNATURE-----
 
 iQJOBAABCgA4FiEEFV+gSSXZJY9ZyuB5LinzTIcAHJcFAmZ9M1IaHGplbnMud2lr
 bGFuZGVyQGxpbmFyby5vcmcACgkQLinzTIcAHJdnng/+JR9RDaFSfa02pnHPzSnX
 KQcIRL0YUv2go5RQHXC9lzN+t/oDo/pC4PGmxU3RQX/PQYFwGDWeer30VSdA8Emm
 zDNl+K2YTocGXvKB1dXWOwtNPtDYgKNkpsIk+RZQzsj/6mAsanCHP9cv0kAMPrVt
 Cv9tj7U8PcgD8OujqW0b7rq5CmgGJpGcOtk/I8E97pcBXbpPLLIGHlMFYeQZgelC
 4vd9RzOPGCEtKK79ZAh5rc7z7RymPDA1Ada2MYG/J54iiRe43xgRaCxiq2SuvNHq
 5yKL+ZDBo38ejAQwOV6xUsXo7XaOu6+seyVA/GGqBoB+RAPCjMGqzZmQDEJwYFQW
 2X8ViYXO3MMOPT9kmtt/1oPq50xP3EbvwnaOJws9fbSG+n6cc3ZmCB65ByaO8LbZ
 5/hu6zKZ+b5L0m3QSQjkanoVFwRm6oefeQB/kHHNqgzGEh9ijogWf1boWui2wKpF
 pO7ohQlxQzpkAvUF0HmWM4JmTSsmyYYMqbLRIJXJRTX/KdrHZFcS7NuRnOuXE3qf
 uyiXo4rzUZhtecgyCiTJ7Pb20NuvaWR49RADASk+D5OP6pfbhw0wVGP9Kc/icU9h
 AdUYUbGokrFxSCGYx/+wnBEuR5Nf1f35/9VWhs+UXkfuy38B6qxnv7/ePDD3/pcu
 VReDFHMF6GlWTXX1nRiLIWk=
 =mkge
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmZ9etUACgkQYKtH/8kJ
 UifBJRAAqh9Od+EkNpFSukrWorFUlt794wS/n6YxR2vWB+RJsQsbH1KIh+F5/GJl
 5RD97ZCfz095njxgTQD/344oldvAf1EBEkpyyebVn71pTAn2QpglrisI4t0lba4F
 nzlOtud7AEDReaPR1z5VUB/S2eF+33/N4/U8I7/JOiEjNmEK6UGPm9o/1T6UVxNv
 hIRpdNv3SBy/0KDv1SXlhLlXxIN5akNomPQncOGL2e7tLQgGIjGstvyADZ6fkSey
 hLvovuyRD06fLyqE+IhWmjwr0pgZ1kq32Cbeq2n2yns42hsy7wwelODcQibv5PYs
 +Vq+gbgCThxyRAL/8bsg0fR7sUSUm6UJ07MLFsP0J4U21wjqlr2VEKHNuurpAWPy
 /TAk8LqC7ZtxwfaT1c4yor0euGjCw8xBn4JjADLdixPCHPqOwBUvKCWxVP1HaTOc
 7u+ijpRRIZxNHsErbUP08TjXOEF3wi00sQygxZed0Sm8faQRfGRySiUQ3Lt6LJlv
 /wxXW9/ARW55K3AOoIsd47EG9MT+y3FwAc9R5NKIpHsshvCstgWnJgTCOuQaPyEo
 YyXYsiZlh94b308EwyIRnVmtbiby7htKbmD6DeC8CaBabMmvaaHTCH9wRyyi+w5J
 rLKqYqMTyCRnF/xILdq9fUmdG9I4FIQEBrQXrhIlpdwCg9a0dNs=
 =bm1W
 -----END PGP SIGNATURE-----

Merge tag 'optee-notif-wait-timeout-for-v6.11' of https://git.linaro.org/people/jens.wiklander/linux-tee into soc/drivers

optee: add timeout parameter for notification wait

* tag 'optee-notif-wait-timeout-for-v6.11' of https://git.linaro.org/people/jens.wiklander/linux-tee:
  optee: add timeout value to optee_notif_wait() to support timeout

Link: https://lore.kernel.org/r/20240627095325.GA2585076@rayden
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2024-06-27 16:44:37 +02:00
Gavin Liu
14ca6401d8 optee: add timeout value to optee_notif_wait() to support timeout
Add timeout value to support self waking when timeout to avoid waiting
indefinitely.

Signed-off-by: Gavin Liu <gavin.liu@mediatek.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
2024-05-30 10:19:28 +02:00
Sumit Garg
0439fcff30 tee: Refactor TEE subsystem header files
Since commit 25559c22ce ("tee: add kernel internal client interface"),
it has been a common include/linux/tee_drv.h header file which is shared
to hold TEE subsystem internal bits along with the APIs exposed to the
TEE client drivers. However, this practice is prone to TEE subsystem
internal APIs abuse and especially so with the new TEE implementation
drivers being added to reuse existing functionality.

In order to address this split TEE subsystem internal bits as a separate
header file: include/linux/tee_core.h which should be the one used by
TEE implementation drivers. With that include/linux/tee_drv.h lists only
APIs exposed by TEE subsystem to the TEE client drivers.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Balint Dobszay <balint.dobszay@arm.com>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
2024-04-03 09:19:31 +02:00
Christophe JAILLET
9decff5f40 optee: Use bitmap_free() to free bitmap
kfree() and bitmap_free() are the same. But using the latter is more
consistent when freeing memory allocated with bitmap_zalloc().

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
2022-01-24 12:53:34 +01:00
Jens Wiklander
787c80cc7b optee: separate notification functions
Renames struct optee_wait_queue to struct optee_notif and all related
functions to optee_notif_*().

The implementation is changed to allow sending a notification from an
atomic state, that is from the top half of an interrupt handler.

Waiting for keys is currently only used when secure world is waiting for
a mutex or condition variable. The old implementation could handle any
32-bit key while this new implementation is restricted to only 8 bits or
the maximum value 255. A upper value is needed since a bitmap is
allocated to allow an interrupt handler to only set a bit in case the
waiter hasn't had the time yet to allocate and register a completion.

The keys are currently only representing secure world threads which
number usually are never even close to 255 so it should be safe for now.
In future ABI updates the maximum value of the key will be communicated
while the driver is initializing.

Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
2021-11-17 14:08:56 +01:00