Tty_insert_flip_string flipping bits?

I have a custom linux kernel driver which creates a tty and sends meta-data with the standard incoming data of a serial line.
the flow is a little like this:

RPMSG->Kernel->Application

The RPMSG contains the data of a serial line and the meta-data.

The message sent by the remote processor is a packed struct and i have verified that on both ends the packing is correct and lines up.

i have the following data which is correct from the Remote Processor and sends it to the kernel which at this point is correct.
0x200A466EE0 but when i use the read function in my application i recieve 0x200D466E60

this means that bits 7 and 27 have been flipped.

my rpmsg->tty cb

static int rpmsg_tty_cb(struct rpmsg_device *rpdev, void *in, int len,
                        void *priv, u32 src) {
    int copied = 0;
    struct rpmsgtty_port *cport = dev_get_drvdata(&rpdev->dev);
    struct tty_struct *tty = dev_get_drvdata(&rpdev->dev);

    if (tty == NULL) {
        dev_dbg(&rpdev->dev, "waiting for readers, discard len %d\n",
                len);
        return -ENOTTY;
    }

    /* flush the recv-ed none-zero data to tty node */
    if (len == 0)
        return 0;
    spin_lock_bh(&cport->rx_lock);
    copied = tty_insert_flip_string(&cport->port, in, len);
    if (copied != len)
        dev_err_ratelimited(&rpdev->dev, "RX copy to tty layer failed\n");
    tty_flip_buffer_push(&cport->port);
    spin_unlock_bh(&cport->rx_lock);

    return 0;
}

and the application reading:

void *ttyThread(void *args) {
    pthread_t t_id = pthread_self();
    sleep(1);
    struct thread_args *thread_args = (struct thread_args *) args;
    CHECK_MALLOC_THREAD(thread_args);
    thread_args->parser = malloc(sizeof(Parser_t));
    CHECK_MALLOC_THREAD(thread_args->parser);

    thread_args->tty_fd = open(thread_args->tty, O_RDONLY | O_NOCTTY | O_SYNC);
    if (thread_args->tty_fd < 0) {
        fprintf(stderr, "Error %d opening %s: %s\n", errno, thread_args->tty, strerror(errno));
        free(thread_args);
        return (void *) errno;
    }
    set_interface_attribs(thread_args->tty_fd, thread_args->Baud, thread_args->Parity, thread_args->StopBits,
                          thread_args->DataBits);
    for (;;) {
        M4_Message_t msg;
        int n = read(thread_args->tty_fd, &msg, sizeof(M4_Message_t));
        if (n > 0) {
            fprintf(stdout, "Thread [%x] %x[%c] number %d\r\n",
                    t_id,
                    msg.Byte,
                    msg.Byte,
                    n);
        }
    }
    free(thread_args->parser);
    free(thread_args);

}

answered here:
https://stackoverflow.com/questions/62910926/tty-insert-flip-string-flipping-bits?noredirect=1#comment111259109_62910926

Perfect. Thanks for the feedback.

Best regards,
Jaski