From 714da82948d16a2d403563e0d4a4d1cb1084ac57 Mon Sep 17 00:00:00 2001 From: Randy Dunlap Date: Wed, 18 Feb 2004 09:29:38 -0500 Subject: [PATCH] [PATCH] tr/3c359: handle kmalloc failures during init From: Pablo Menichini and maximilian attems while looking at kj mails from 200212 and 200301 this patch slept through originally from: Pablo Menichini rediffed and compile tested patch applies on plain 2.6.0 maximilian attems handle kmalloc failures during init diff -puN drivers/net/tokenring/3c359.c~tr3c_kmalloc drivers/net/tokenring/3c359.c linux-261-bk4-kj1-rddunlap/drivers/net/tokenring/3c359.c | 13 +++++++++++++ 1 files changed, 13 insertions(+) --- drivers/net/tokenring/3c359.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/net/tokenring/3c359.c b/drivers/net/tokenring/3c359.c index 3692f3e24efed..3b7a9b9798dd6 100644 --- a/drivers/net/tokenring/3c359.c +++ b/drivers/net/tokenring/3c359.c @@ -641,7 +641,20 @@ static int xl_open(struct net_device *dev) */ /* These MUST be on 8 byte boundaries */ xl_priv->xl_tx_ring = kmalloc((sizeof(struct xl_tx_desc) * XL_TX_RING_SIZE) + 7, GFP_DMA | GFP_KERNEL) ; + if (xl_priv->xl_tx_ring == NULL) { + printk(KERN_WARNING "%s: Not enough memory to allocate rx buffers.\n", + dev->name); + free_irq(dev->irq,dev); + return -ENOMEM; + } xl_priv->xl_rx_ring = kmalloc((sizeof(struct xl_rx_desc) * XL_RX_RING_SIZE) +7, GFP_DMA | GFP_KERNEL) ; + if (xl_priv->xl_tx_ring == NULL) { + printk(KERN_WARNING "%s: Not enough memory to allocate rx buffers.\n", + dev->name); + free_irq(dev->irq,dev); + kfree(xl_priv->xl_tx_ring); + return -ENOMEM; + } memset(xl_priv->xl_tx_ring,0,sizeof(struct xl_tx_desc) * XL_TX_RING_SIZE) ; memset(xl_priv->xl_rx_ring,0,sizeof(struct xl_rx_desc) * XL_RX_RING_SIZE) ; -- 2.53.0