From a2de81dae751cd3ad953a40ff2c934c4bde3e124 Mon Sep 17 00:00:00 2001 From: Ben Collins Date: Mon, 11 Jun 2012 14:16:36 -0400 Subject: [PATCH] --- yaml --- r: 316799 b: refs/heads/master c: 361ee9c3f3839d6cbd306b5bd34292e0848ecfdc h: refs/heads/master i: 316797: e2d02ef0e4e216e583d3fb0cad6b62f28dbc392e 316795: 21669d220c74e97492d6b3c54743383570b9ebdb 316791: 589f4c02574e48d74918b8abab5c7e796be9cbb1 316783: 6aba60d7c4fee6554130b8f9737987f4f59db108 316767: 8aae97baf5176560f032079888a41ace3e141185 316735: 3c3867faec67bb12482a067e82c1a51b72c05a68 316671: a09113b7dd5d7640c0a504c5e0d5124da5015e06 v: v3 --- [refs] | 2 +- trunk/drivers/scsi/aacraid/linit.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 045b03683fed..3ba2ec5639c4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ff08784b41e1ab5da6776411b7a8381fe942f2cc +refs/heads/master: 361ee9c3f3839d6cbd306b5bd34292e0848ecfdc diff --git a/trunk/drivers/scsi/aacraid/linit.c b/trunk/drivers/scsi/aacraid/linit.c index fdfc4be9c7c6..2be612b0caa5 100644 --- a/trunk/drivers/scsi/aacraid/linit.c +++ b/trunk/drivers/scsi/aacraid/linit.c @@ -1089,8 +1089,17 @@ static struct scsi_host_template aac_driver_template = { static void __aac_shutdown(struct aac_dev * aac) { - if (aac->aif_thread) + if (aac->aif_thread) { + int i; + /* Clear out events first */ + for (i = 0; i < (aac->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB); i++) { + struct fib *fib = &aac->fibs[i]; + if (!(fib->hw_fib_va->header.XferState & cpu_to_le32(NoResponseExpected | Async)) && + (fib->hw_fib_va->header.XferState & cpu_to_le32(ResponseExpected))) + up(&fib->event_wait); + } kthread_stop(aac->thread); + } aac_send_shutdown(aac); aac_adapter_disable_int(aac); free_irq(aac->pdev->irq, aac); @@ -1191,6 +1200,7 @@ static int __devinit aac_probe_one(struct pci_dev *pdev, if (IS_ERR(aac->thread)) { printk(KERN_ERR "aacraid: Unable to create command thread.\n"); error = PTR_ERR(aac->thread); + aac->thread = NULL; goto out_deinit; }