/* todo: should this be allocated from a pool to avoid kmalloc */
        msg_context = kmalloc(sizeof(*msg_context), GFP_KERNEL);
-       memset(msg_context, 0, sizeof(*msg_context));
 
+       if (!msg_context)
+               return NULL;
+
+       memset(msg_context, 0, sizeof(*msg_context));
        msg_context->instance = instance;
        msg_context->handle =
                mmal_context_map_create_handle(&instance->context_map,
        }
 
        instance = kmalloc(sizeof(*instance), GFP_KERNEL);
-       memset(instance, 0, sizeof(*instance));
 
+       if (!instance)
+               return -ENOMEM;
+
+       memset(instance, 0, sizeof(*instance));
        mutex_init(&instance->vchiq_mutex);
        mutex_init(&instance->bulk_mutex);