if (protocol->request_recv) {
                status = protocol->request_recv(operation->type, operation);
        } else {
-               dev_err(&operation->connection->dev,
+               dev_err(&operation->connection->bundle->dev,
                        "unexpected incoming request type 0x%02hhx\n",
                        operation->type);
 
 
        ret = gb_operation_response_send(operation, status);
        if (ret) {
-               dev_err(&operation->connection->dev,
+               dev_err(&operation->connection->bundle->dev,
                        "failed to send response %d for type 0x%02hhx: %d\n",
                        status, operation->type, ret);
                        return;
 
        /* Record the result */
        if (!gb_operation_result_set(operation, errno)) {
-               dev_err(&connection->dev, "request result already set\n");
+               dev_err(&connection->bundle->dev, "request result already set\n");
                return -EIO;    /* Shouldn't happen */
        }
 
         */
        if (message == operation->response) {
                if (status) {
-                       dev_err(&connection->dev,
+                       dev_err(&connection->bundle->dev,
                                "error sending response type 0x%02hhx: %d\n",
                                operation->type, status);
                }
        operation = gb_operation_create_incoming(connection, operation_id,
                                                type, data, size);
        if (!operation) {
-               dev_err(&connection->dev, "can't create incoming operation\n");
+               dev_err(&connection->bundle->dev,
+                       "can't create incoming operation\n");
                return;
        }
 
 
        operation = gb_operation_find_outgoing(connection, operation_id);
        if (!operation) {
-               dev_err(&connection->dev, "unexpected response 0x%04hx received\n",
-                               operation_id);
+               dev_err(&connection->bundle->dev,
+                       "unexpected response 0x%04hx received\n", operation_id);
                return;
        }
 
        message = operation->response;
        message_size = sizeof(*message->header) + message->payload_size;
        if (!errno && size != message_size) {
-               dev_err(&connection->dev,
+               dev_err(&connection->bundle->dev,
                        "malformed response of type 0x%02hhx received (%zu != %zu)\n",
                        message->header->type, size, message_size);
                errno = -EMSGSIZE;
                                void *data, size_t size)
 {
        struct gb_operation_msg_hdr header;
+       struct device *dev = &connection->bundle->dev;
        size_t msg_size;
        u16 operation_id;
 
        if (connection->state != GB_CONNECTION_STATE_ENABLED) {
-               dev_warn(&connection->dev, "dropping %zu received bytes\n",
-                       size);
+               dev_warn(dev, "dropping %zu received bytes\n", size);
                return;
        }
 
        if (size < sizeof(header)) {
-               dev_err(&connection->dev, "short message received\n");
+               dev_err(dev, "short message received\n");
                return;
        }
 
        memcpy(&header, data, sizeof(header));
        msg_size = le16_to_cpu(header.size);
        if (size < msg_size) {
-               dev_err(&connection->dev,
+               dev_err(dev,
                        "incomplete message 0x%04hx of type 0x%02hhx received (%zu < %zu)\n",
                        le16_to_cpu(header.operation_id), header.type, size,
                        msg_size);
 
        ret = gb_operation_request_send_sync_timeout(operation, timeout);
        if (ret) {
-               dev_err(&connection->dev,
+               dev_err(&connection->bundle->dev,
                        "synchronous operation of type 0x%02hhx failed: %d\n",
                        type, ret);
        } else {