X-Git-Url: http://git.onelab.eu/?p=linux-2.6.git;a=blobdiff_plain;f=drivers%2Fnet%2Fslip.c;fp=drivers%2Fnet%2Fslip.c;h=a0806d262fc6530c1e72c2c75b14a999cc74e529;hp=b2e18d28850d6b45e27916553408ff5b23c580a9;hb=97bf2856c6014879bd04983a3e9dfcdac1e7fe85;hpb=76828883507a47dae78837ab5dec5a5b4513c667 diff --git a/drivers/net/slip.c b/drivers/net/slip.c index b2e18d288..a0806d262 100644 --- a/drivers/net/slip.c +++ b/drivers/net/slip.c @@ -55,7 +55,6 @@ */ #define SL_CHECK_TRANSMIT -#include #include #include @@ -114,7 +113,7 @@ static int sl_ioctl(struct net_device *dev,struct ifreq *rq,int cmd); * on actively running device. *********************************/ -/* +/* Allocate channel buffers. */ @@ -208,7 +207,7 @@ sl_free_bufs(struct slip *sl) #endif } -/* +/* Reallocate slip channel buffers. */ @@ -230,10 +229,10 @@ static int sl_realloc_bufs(struct slip *sl, int mtu) if (len < 576 * 2) len = 576 * 2; - xbuff = (unsigned char *) kmalloc (len + 4, GFP_ATOMIC); - rbuff = (unsigned char *) kmalloc (len + 4, GFP_ATOMIC); + xbuff = kmalloc(len + 4, GFP_ATOMIC); + rbuff = kmalloc(len + 4, GFP_ATOMIC); #ifdef SL_INCLUDE_CSLIP - cbuff = (unsigned char *) kmalloc (len + 4, GFP_ATOMIC); + cbuff = kmalloc(len + 4, GFP_ATOMIC); #endif @@ -355,7 +354,7 @@ sl_bump(struct slip *sl) #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); @@ -603,7 +602,7 @@ static int sl_init(struct net_device *dev) struct slip *sl = netdev_priv(dev); /* - * Finish setting up the DEVICE info. + * Finish setting up the DEVICE info. */ dev->mtu = sl->mtu; @@ -659,7 +658,7 @@ static void sl_setup(struct net_device *dev) * 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; @@ -721,7 +720,7 @@ sl_alloc(dev_t line) 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++) { @@ -789,7 +788,7 @@ sl_alloc(dev_t line) slip_devs[i] = NULL; } } - + if (!dev) { char name[IFNAMSIZ]; sprintf(name, "sl%d", i); @@ -816,7 +815,7 @@ sl_alloc(dev_t line) sl->outfill_timer.function=sl_outfill; #endif slip_devs[i] = dev; - + return sl; } @@ -837,7 +836,7 @@ static int slip_open(struct tty_struct *tty) 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. @@ -863,7 +862,7 @@ static int slip_open(struct tty_struct *tty) 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) @@ -909,7 +908,7 @@ err_exit: /* 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! @@ -921,7 +920,7 @@ err_exit: 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 */ @@ -1292,7 +1291,7 @@ static int sl_ioctl(struct net_device *dev,struct ifreq *rq,int cmd) 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) { @@ -1351,7 +1350,7 @@ static int __init slip_init(void) } /* 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) { @@ -1369,7 +1368,7 @@ static void __exit slip_exit(void) 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. @@ -1406,7 +1405,7 @@ static void __exit slip_exit(void) dev->name); /* Intentionally leak the control block. */ dev->destructor = NULL; - } + } unregister_netdev(dev); }