diff --git a/drivers/net/slip.c b/drivers/net/slip.c
index 1588cb7..39c2152 100644
--- a/drivers/net/slip.c
+++ b/drivers/net/slip.c
@@ -113,7 +113,7 @@
 *	on actively running device.
 *********************************/
 
-/* 
+/*
    Allocate channel buffers.
  */
 
@@ -207,7 +207,7 @@
 #endif
 }
 
-/* 
+/*
    Reallocate slip channel buffers.
  */
 
@@ -354,7 +354,7 @@
 #endif  /* SL_INCLUDE_CSLIP */
 
 	sl->rx_bytes+=count;
-	
+
 	skb = dev_alloc_skb(count);
 	if (skb == NULL)  {
 		printk(KERN_WARNING "%s: memory squeeze, dropping packet.\n", sl->dev->name);
@@ -602,7 +602,7 @@
 	struct slip *sl = netdev_priv(dev);
 
 	/*
-	 *	Finish setting up the DEVICE info. 
+	 *	Finish setting up the DEVICE info.
 	 */
 
 	dev->mtu		= sl->mtu;
@@ -658,7 +658,7 @@
  * be re-entered while running but other ldisc functions may be called
  * in parallel
  */
- 
+
 static void slip_receive_buf(struct tty_struct *tty, const unsigned char *cp, char *fp, int count)
 {
 	struct slip *sl = (struct slip *) tty->disc_data;
@@ -720,7 +720,7 @@
 	struct net_device *dev = NULL;
 	struct slip       *sl;
 
-	if (slip_devs == NULL) 
+	if (slip_devs == NULL)
 		return NULL;	/* Master array missing ! */
 
 	for (i = 0; i < slip_maxdev; i++) {
@@ -788,7 +788,7 @@
 			slip_devs[i] = NULL;
 		}
 	}
-	
+
 	if (!dev) {
 		char name[IFNAMSIZ];
 		sprintf(name, "sl%d", i);
@@ -815,7 +815,7 @@
 	sl->outfill_timer.function=sl_outfill;
 #endif
 	slip_devs[i] = dev;
-				   
+
 	return sl;
 }
 
@@ -836,7 +836,7 @@
 
 	if(!capable(CAP_NET_ADMIN))
 		return -EPERM;
-		
+
 	/* RTnetlink lock is misused here to serialize concurrent
 	   opens of slip channels. There are better ways, but it is
 	   the simplest one.
@@ -862,7 +862,7 @@
 	tty->disc_data = sl;
 	sl->line = tty_devnum(tty);
 	sl->pid = current->pid;
-	
+
 	if (!test_bit(SLF_INUSE, &sl->flags)) {
 		/* Perform the low-level SLIP initialization. */
 		if ((err = sl_alloc_bufs(sl, SL_MTU)) != 0)
@@ -908,7 +908,7 @@
 /*
 
   FIXME: 1,2 are fixed 3 was never true anyway.
-  
+
    Let me to blame a bit.
    1. TTY module calls this funstion on soft interrupt.
    2. TTY module calls this function WITH MASKED INTERRUPTS!
@@ -920,7 +920,7 @@
 
    By-product (not desired): sl? does not feel hangups and remains open.
    It is supposed, that user level program (dip, diald, slattach...)
-   will catch SIGHUP and make the rest of work. 
+   will catch SIGHUP and make the rest of work.
 
    I see no way to make more with current tty code. --ANK
  */
@@ -1291,7 +1291,7 @@
 		break;
 
         case SIOCSLEASE:
-		/* Resolve race condition, when ioctl'ing hanged up 
+		/* Resolve race condition, when ioctl'ing hanged up
 		   and opened by another process device.
 		 */
 		if (sl->tty != current->signal->tty && sl->pid != current->pid) {
@@ -1350,7 +1350,7 @@
 	}
 
 	/* Clear the pointer array, we allocate devices when we need them */
-	memset(slip_devs, 0, sizeof(struct net_device *)*slip_maxdev); 
+	memset(slip_devs, 0, sizeof(struct net_device *)*slip_maxdev);
 
 	/* Fill in our line protocol discipline, and register it */
 	if ((status = tty_register_ldisc(N_SLIP, &sl_ldisc)) != 0)  {
@@ -1368,7 +1368,7 @@
 	unsigned long timeout = jiffies + HZ;
 	int busy = 0;
 
-	if (slip_devs == NULL) 
+	if (slip_devs == NULL)
 		return;
 
 	/* First of all: check for active disciplines and hangup them.
@@ -1405,7 +1405,7 @@
 			       dev->name);
 			/* Intentionally leak the control block. */
 			dev->destructor = NULL;
-		} 
+		}
 
 		unregister_netdev(dev);
 	}
