From 2dbbac330621e83d00e904d1139b62e7b360f946 Mon Sep 17 00:00:00 2001 From: Jonathan Nieder Date: Sat, 31 Dec 2011 08:06:37 -0300 Subject: [PATCH] [media] dvb-bt8xx: handle errors from dvb_net_init Clean up and error out if dvb_net_init fails (for example when running out of memory). From an audit of dvb_net_init callers, now that dvb_net_init has learned to return a nonzero value from time to time. [mchehab.redhat.com: codingstyle fix: printk() should include KERN_ facility level] Signed-off-by: Jonathan Nieder Signed-off-by: Mauro Carvalho Chehab --- drivers/media/dvb/bt8xx/dvb-bt8xx.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/media/dvb/bt8xx/dvb-bt8xx.c b/drivers/media/dvb/bt8xx/dvb-bt8xx.c index 1952f6b..8a31349 100644 --- a/drivers/media/dvb/bt8xx/dvb-bt8xx.c +++ b/drivers/media/dvb/bt8xx/dvb-bt8xx.c @@ -782,7 +782,12 @@ static int __devinit dvb_bt8xx_load_card(struct dvb_bt8xx_card *card, u32 type) goto err_remove_mem_frontend; } - dvb_net_init(&card->dvb_adapter, &card->dvbnet, &card->demux.dmx); + result = dvb_net_init(&card->dvb_adapter, &card->dvbnet, &card->demux.dmx); + if (result < 0) { + printk(KERN_ERR, + "dvb_bt8xx: dvb_net_init failed (errno = %d)\n", result); + goto err_disconnect_frontend; + } tasklet_init(&card->bt->tasklet, dvb_bt8xx_task, (unsigned long) card); @@ -790,6 +795,8 @@ static int __devinit dvb_bt8xx_load_card(struct dvb_bt8xx_card *card, u32 type) return 0; +err_disconnect_frontend: + card->demux.dmx.disconnect_frontend(&card->demux.dmx); err_remove_mem_frontend: card->demux.dmx.remove_frontend(&card->demux.dmx, &card->fe_mem); err_remove_hw_frontend: -- 2.7.4