diff options
Diffstat (limited to 'drivers/net/can/slcan.c')
| -rw-r--r-- | drivers/net/can/slcan.c | 9 | 
1 files changed, 6 insertions, 3 deletions
| diff --git a/drivers/net/can/slcan.c b/drivers/net/can/slcan.c index b423965a78d1..c600954998d5 100644 --- a/drivers/net/can/slcan.c +++ b/drivers/net/can/slcan.c @@ -425,16 +425,17 @@ static void slc_setup(struct net_device *dev)   * in parallel   */ -static void slcan_receive_buf(struct tty_struct *tty, +static unsigned int slcan_receive_buf(struct tty_struct *tty,  			      const unsigned char *cp, char *fp, int count)  {  	struct slcan *sl = (struct slcan *) tty->disc_data; +	int bytes = count;  	if (!sl || sl->magic != SLCAN_MAGIC || !netif_running(sl->dev)) -		return; +		return -ENODEV;  	/* Read the characters out of the buffer */ -	while (count--) { +	while (bytes--) {  		if (fp && *fp++) {  			if (!test_and_set_bit(SLF_ERROR, &sl->flags))  				sl->dev->stats.rx_errors++; @@ -443,6 +444,8 @@ static void slcan_receive_buf(struct tty_struct *tty,  		}  		slcan_unesc(sl, *cp++);  	} + +	return count;  }  /************************************ | 
