From b5929aa12e0d47dd1c5ea95b434df8ed19b2c425 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Thu, 24 Sep 2009 22:39:59 +0000 Subject: [PATCH] * handles correctly failures during setup git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33277 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/drivers/audio/ac97/auich/auich.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/add-ons/kernel/drivers/audio/ac97/auich/auich.c b/src/add-ons/kernel/drivers/audio/ac97/auich/auich.c index eaa4d27d52..4dd8b96e49 100644 --- a/src/add-ons/kernel/drivers/audio/ac97/auich/auich.c +++ b/src/add-ons/kernel/drivers/audio/ac97/auich/auich.c @@ -707,15 +707,23 @@ auich_setup(auich_dev * card) } if (current_settings.use_thread) { - int_thread_id = spawn_kernel_thread(auich_int_thread, "auich interrupt poller", B_REAL_TIME_PRIORITY, card); + int_thread_id = spawn_kernel_thread(auich_int_thread, + "auich interrupt poller", B_REAL_TIME_PRIORITY, card); resume_thread(int_thread_id); } else { PRINT(("installing interrupt : %lx\n", card->config.irq)); - install_io_interrupt_handler(card->config.irq, auich_int, card, 0); + err = install_io_interrupt_handler(card->config.irq, auich_int, + card, 0); + if (err != B_OK) { + PRINT(("failed to install interrupt\n")); + ac97_detach(card->config.ac97); + unmap_io_memory(&card->config); + return err; + } } - if ((err = auich_init(card))) - return (err); + if ((err = auich_init(card)) != B_OK) + return err; PRINT(("init_driver done\n"));