#define MBOX_HEXDUMP_MAX_LEN   (MBOX_HEXDUMP_LINE_LEN *                \
                                 (MBOX_MAX_MSG_LEN / MBOX_BYTES_PER_LINE))
 
+static bool mbox_data_ready;
 static struct dentry *root_debugfs_dir;
 
 struct mbox_test_device {
 
 static bool mbox_test_message_data_ready(struct mbox_test_device *tdev)
 {
-       unsigned char data;
+       bool data_ready;
        unsigned long flags;
 
        spin_lock_irqsave(&tdev->lock, flags);
-       data = tdev->rx_buffer[0];
+       data_ready = mbox_data_ready;
        spin_unlock_irqrestore(&tdev->lock, flags);
 
-       if (data != '\0')
-               return true;
-       return false;
+       return data_ready;
 }
 
 static ssize_t mbox_test_message_read(struct file *filp, char __user *userbuf,
        *(touser + l) = '\0';
 
        memset(tdev->rx_buffer, 0, MBOX_MAX_MSG_LEN);
+       mbox_data_ready = false;
 
        spin_unlock_irqrestore(&tdev->lock, flags);
 
                                     message, MBOX_MAX_MSG_LEN);
                memcpy(tdev->rx_buffer, message, MBOX_MAX_MSG_LEN);
        }
+       mbox_data_ready = true;
        spin_unlock_irqrestore(&tdev->lock, flags);
 
        wake_up_interruptible(&tdev->waitq);