File tree Expand file tree Collapse file tree 2 files changed +22
-1
lines changed
Expand file tree Collapse file tree 2 files changed +22
-1
lines changed Original file line number Diff line number Diff line change @@ -360,3 +360,23 @@ void handle_op_read_ptr_array(portal_region *mem_region)
360360 mem_region -> header .size = buf_offset ;
361361 mem_region -> header .op = HYPER_RESP_READ_OK ;
362362}
363+
364+ void handle_op_copy_buf_guest (portal_region * mem_region )
365+ {
366+ region_header * req = & mem_region -> header ;
367+ void * data = PORTAL_DATA (mem_region );
368+ void * buf ;
369+ int copy_size = min (req -> size , sizeof (mem_region -> raw ));
370+ igloo_pr_debug ("igloo: Handling COPY_BUF_GUEST for size %lu\n" , req -> size );
371+
372+ buf = kzalloc (req -> size , GFP_KERNEL );
373+ if (!buf ) {
374+ igloo_pr_debug ("igloo: kzalloc failed for size %lu\n" , req -> size );
375+ mem_region -> header .op = HYPER_RESP_READ_FAIL ;
376+ return ;
377+ }
378+ memcpy (buf , data , copy_size );
379+
380+ mem_region -> header .size = (unsigned long )buf ;
381+ mem_region -> header .op = HYPER_RESP_READ_NUM ;
382+ }
Original file line number Diff line number Diff line change 2222 X(ffi_exec, FFI_EXEC) \
2323 X(kallsyms_lookup, KALLSYMS_LOOKUP) \
2424 X(tramp_generate, TRAMP_GENERATE) \
25- X(hyperfs_add_hyperfile, HYPERFS_ADD_HYPERFILE)
25+ X(hyperfs_add_hyperfile, HYPERFS_ADD_HYPERFILE) \
26+ X(copy_buf_guest, COPY_BUF_GUEST)
You can’t perform that action at this time.
0 commit comments