in svc.c [1078:1112]
static void gb_svc_process_deferred_request(struct work_struct *work)
{
struct gb_svc_deferred_request *dr;
struct gb_operation *operation;
struct gb_svc *svc;
u8 type;
dr = container_of(work, struct gb_svc_deferred_request, work);
operation = dr->operation;
svc = gb_connection_get_data(operation->connection);
type = operation->request->header->type;
switch (type) {
case GB_SVC_TYPE_SVC_HELLO:
gb_svc_process_hello_deferred(operation);
break;
case GB_SVC_TYPE_MODULE_INSERTED:
gb_svc_process_module_inserted(operation);
break;
case GB_SVC_TYPE_MODULE_REMOVED:
gb_svc_process_module_removed(operation);
break;
case GB_SVC_TYPE_INTF_MAILBOX_EVENT:
gb_svc_process_intf_mailbox_event(operation);
break;
case GB_SVC_TYPE_INTF_OOPS:
gb_svc_process_intf_oops(operation);
break;
default:
dev_err(&svc->dev, "bad deferred request type: 0x%02x\n", type);
}
gb_operation_put(operation);
kfree(dr);
}