From d25d70b1ff6548b336d537c4c602249e1d7fe8e5 Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Fri, 27 Aug 2004 04:02:41 -0400 Subject: [PATCH] [PATCH] ipr.c build fix Greg's tree changes the kref API. James's tree adds usage of the old API. Signed-off-by: Andrew Morton Signed-off-by: James Bottomley --- drivers/scsi/ipr.c | 64 +++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c index 1c2e7ec108fb0..551ae12dc5944 100644 --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c @@ -1769,6 +1769,33 @@ static void ipr_get_ioa_dump(struct ipr_ioa_cfg *ioa_cfg, struct ipr_dump *dump) #define ipr_get_ioa_dump(ioa_cfg, dump) do { } while(0) #endif +/** + * ipr_release_dump - Free adapter dump memory + * @kref: kref struct + * + * Return value: + * nothing + **/ +static void ipr_release_dump(struct kref *kref) +{ + struct ipr_dump *dump = container_of(kref,struct ipr_dump,kref); + struct ipr_ioa_cfg *ioa_cfg = dump->ioa_cfg; + unsigned long lock_flags = 0; + int i; + + ENTER; + spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags); + ioa_cfg->dump = NULL; + ioa_cfg->sdt_state = INACTIVE; + spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); + + for (i = 0; i < dump->ioa_dump.next_page_index; i++) + free_page((unsigned long) dump->ioa_dump.ioa_data[i]); + + kfree(dump); + LEAVE; +} + /** * ipr_worker_thread - Worker thread * @data: ioa config struct @@ -1801,7 +1828,7 @@ static void ipr_worker_thread(void *data) } spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); ipr_get_ioa_dump(ioa_cfg, dump); - kref_put(&dump->kref); + kref_put(&dump->kref, ipr_release_dump); spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags); if (ioa_cfg->sdt_state == DUMP_OBTAINED) @@ -2404,7 +2431,7 @@ static ssize_t ipr_read_dump(struct kobject *kobj, char *buf, spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); if (off > dump->driver_dump.hdr.len) { - kref_put(&dump->kref); + kref_put(&dump->kref, ipr_release_dump); return 0; } @@ -2454,37 +2481,10 @@ static ssize_t ipr_read_dump(struct kobject *kobj, char *buf, count -= len; } - kref_put(&dump->kref); + kref_put(&dump->kref, ipr_release_dump); return rc; } -/** - * ipr_release_dump - Free adapter dump memory - * @kref: kref struct - * - * Return value: - * nothing - **/ -static void ipr_release_dump(struct kref *kref) -{ - struct ipr_dump *dump = container_of(kref,struct ipr_dump,kref); - struct ipr_ioa_cfg *ioa_cfg = dump->ioa_cfg; - unsigned long lock_flags = 0; - int i; - - ENTER; - spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags); - ioa_cfg->dump = NULL; - ioa_cfg->sdt_state = INACTIVE; - spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); - - for (i = 0; i < dump->ioa_dump.next_page_index; i++) - free_page((unsigned long) dump->ioa_dump.ioa_data[i]); - - kfree(dump); - LEAVE; -} - /** * ipr_alloc_dump - Prepare for adapter dump * @ioa_cfg: ioa config struct @@ -2506,7 +2506,7 @@ static int ipr_alloc_dump(struct ipr_ioa_cfg *ioa_cfg) } memset(dump, 0, sizeof(struct ipr_dump)); - kref_init(&dump->kref, ipr_release_dump); + kref_init(&dump->kref); dump->ioa_cfg = ioa_cfg; spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags); @@ -2553,7 +2553,7 @@ static int ipr_free_dump(struct ipr_ioa_cfg *ioa_cfg) ioa_cfg->dump = NULL; spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); - kref_put(&dump->kref); + kref_put(&dump->kref, ipr_release_dump); LEAVE; return 0; -- 2.53.0