if (xbuff != NULL) kfree(xbuff); if (rbuff != NULL) kfree(rbuff); 
kfree(xbuff); kfree(rbuff); 
static int x25_asy_change_mtu(struct net_device *dev, int newmtu){	struct x25_asy *sl = dev->priv;	unsigned char *xbuff, *rbuff;	int len = 2* newmtu;	xbuff = (unsigned char *) kmalloc (len + 4, GFP_ATOMIC);	rbuff = (unsigned char *) kmalloc (len + 4, GFP_ATOMIC);	if (xbuff == NULL || rbuff == NULL)  	{		printk("%s: unable to grow X.25 buffers, MTU change cancelled.\n",		       dev->name);		if (xbuff != NULL)  			kfree(xbuff);		if (rbuff != NULL)  			kfree(rbuff);		return -ENOMEM;	}	spin_lock_bh(&sl->lock);	xbuff    = xchg(&sl->xbuff, xbuff);	if (sl->xleft)  {		if (sl->xleft <= len)  {			memcpy(sl->xbuff, sl->xhead, sl->xleft);		} else  {			sl->xleft = 0;			sl->stats.tx_dropped++;		}	}	sl->xhead = sl->xbuff;	rbuff	 = xchg(&sl->rbuff, rbuff);	if (sl->rcount)  {		if (sl->rcount <= len) {			memcpy(sl->rbuff, rbuff, sl->rcount);		} else  {			sl->rcount = 0;			sl->stats.rx_over_errors++;			set_bit(SLF_ERROR, &sl->flags);		}	}	dev->mtu    = newmtu;	sl->buffsize = len;	spin_unlock_bh(&sl->lock);	if (xbuff != NULL) 		kfree(xbuff);	if (rbuff != NULL)		kfree(rbuff);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/6a5d362120a61a719095443194cc2d5e9a7027dd/x25_asy.c/buggy/drivers/net/wan/x25_asy.c