if (cb_data == NULL)
return -ENOMEM;
+ /* save data */
+ if (size)
+ memcpy(cb_data->data, data, size);
+
p = swap_kprobe_running();
p->ss_addr[smp_processor_id()] = (kprobe_opcode_t *)&kjump_trampoline;
/* save regs */
memcpy(&cb_data->regs, regs, sizeof(*regs));
- memcpy(cb_data->data, data, size);
-
/* save cb_data to r10 */
regs->ARM_r10 = (long)cb_data;
struct cb_data *cb_data;
cb_data = kmalloc(sizeof(*cb_data) + size, GFP_ATOMIC);
+ if (cb_data == NULL)
+ return -ENOMEM;
/* save data */
+ if (size)
+ memcpy(cb_data->data, data, size);
+
+ /* save info for restore */
cb_data->ret_addr = ret_addr;
cb_data->cb = cb;
cb_data->r0 = regs->ARM_r0;
- memcpy(cb_data->data, data, size);
/* save cb_data to r0 */
regs->ARM_r0 = (long)cb_data;
return -ENOMEM;
/* save data */
+ if (size)
+ memcpy(cb_data->data, data, size);
+
+ /* save info for restore */
cb_data->ret_addr = ret_addr;
cb_data->cb = cb;
cb_data->bx = regs->bx;
- memcpy(cb_data->data, data, size);
/* save cb_data to bx */
regs->bx = (long)cb_data;