mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 19:13:47 +02:00
orangefs: add usercopy whitelist to orangefs_op_cache
orangefs_op_cache is created with kmem_cache_create(), which provides no usercopy whitelist. orangefs_devreq_read() copies the tag and upcall fields directly from slab objects to userspace via copy_to_user(). With CONFIG_HARDENED_USERCOPY enabled, this triggers usercopy_abort(). Switch to kmem_cache_create_usercopy() with a whitelist covering the tag and upcall fields, matching the pattern already used by orangefs_inode_cache in super.c. Signed-off-by: Ziyi Guo <n7l8m4@u.northwestern.edu> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
This commit is contained in:
parent
dbd6a82305
commit
f855f4ab12
|
|
@ -19,10 +19,14 @@ static struct kmem_cache *op_cache;
|
|||
|
||||
int op_cache_initialize(void)
|
||||
{
|
||||
op_cache = kmem_cache_create("orangefs_op_cache",
|
||||
op_cache = kmem_cache_create_usercopy("orangefs_op_cache",
|
||||
sizeof(struct orangefs_kernel_op_s),
|
||||
0,
|
||||
0,
|
||||
offsetof(struct orangefs_kernel_op_s, tag),
|
||||
offsetof(struct orangefs_kernel_op_s, upcall) +
|
||||
sizeof(struct orangefs_upcall_s) -
|
||||
offsetof(struct orangefs_kernel_op_s, tag),
|
||||
NULL);
|
||||
|
||||
if (!op_cache) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user