#include "../include/can.h"
#include "../include/can_sysdep.h"
#include "../include/main.h"
+#include "../include/write.h"
ssize_t can_write(struct file *file, const char *buffer, size_t length, loff_t *offset)
{
struct canque_ends_t *qends;
struct canque_edge_t *qedge;
struct canque_slot_t *slot;
- int ret = 0;
+ int ret;
unsigned bytes_to_copy;
if(!canuser || (canuser->magic != CAN_USER_MAGIC)){
/* Prepare first message */
- copy_from_user(&msg_buff, buffer, sizeof(struct canmsg_t));
+ ret = copy_from_user(&msg_buff, buffer, sizeof(struct canmsg_t));
+ if(ret) return -EFAULT;
/* Automatic selection of extended format if ID>2047 */
if (msg_buff.id & ~0x7ffl & MSG_ID_MASK ) msg_buff.flags |= MSG_EXT;
while (bytes_to_copy >= sizeof(struct canmsg_t)) {
bytes_to_copy -= sizeof(struct canmsg_t);
/* Prepare first message */
- copy_from_user(&msg_buff, buffer, sizeof(struct canmsg_t));
+ ret = copy_from_user(&msg_buff, buffer, sizeof(struct canmsg_t));
+ if(ret) return -EFAULT;
/* Automatic selection of extended format if ID>2047 */
if (msg_buff.id & ~0x7ffl & MSG_ID_MASK ) msg_buff.flags |= MSG_EXT;