linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
To: linux-ide@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH 10/50] it821x: convert to use ->host_priv
Date: Sun, 06 Jul 2008 19:20:20 +0200	[thread overview]
Message-ID: <48710239.1ade660a.3458.627e@mx.google.com> (raw)
In-Reply-To: 20080706172010.559358957@bzolnier@gmail.com

[-- Attachment #1: it821x-convert-to-use-host_priv.patch --]
[-- Type: text/plain, Size: 1882 bytes --]

While at it:

* Allocate both struct it821x_dev instances at once.

* Don't leak itdevs on ide_pci_init_one() failure.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
---
 drivers/ide/pci/it821x.c |   28 +++++++++++++---------------
 1 file changed, 13 insertions(+), 15 deletions(-)

Index: b/drivers/ide/pci/it821x.c
===================================================================
--- a/drivers/ide/pci/it821x.c
+++ b/drivers/ide/pci/it821x.c
@@ -528,8 +528,9 @@ static struct ide_dma_ops it821x_pass_th
 static void __devinit init_hwif_it821x(ide_hwif_t *hwif)
 {
 	struct pci_dev *dev = to_pci_dev(hwif->dev);
-	struct it821x_dev **itdevs = (struct it821x_dev **)pci_get_drvdata(dev);
-	struct it821x_dev *idev = itdevs[hwif->channel];
+	struct ide_host *host = pci_get_drvdata(dev);
+	struct it821x_dev *itdevs = host->host_priv;
+	struct it821x_dev *idev = itdevs + hwif->channel;
 	u8 conf;
 
 	ide_set_hwifdata(hwif, idev);
@@ -642,23 +643,20 @@ static const struct ide_port_info it821x
 
 static int __devinit it821x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	struct it821x_dev *itdevs[2] = { NULL, NULL} , *itdev;
-	unsigned int i;
+	struct it821x_dev *itdevs;
+	int rc;
 
-	for (i = 0; i < 2; i++) {
-		itdev = kzalloc(sizeof(*itdev), GFP_KERNEL);
-		if (itdev == NULL) {
-			kfree(itdevs[0]);
-			printk(KERN_ERR "it821x: out of memory\n");
-			return -ENOMEM;
-		}
-
-		itdevs[i] = itdev;
+	itdevs = kzalloc(2 * sizeof(*itdevs), GFP_KERNEL);
+	if (itdevs == NULL) {
+		printk(KERN_ERR "it821x: out of memory\n");
+		return -ENOMEM;
 	}
 
-	pci_set_drvdata(dev, itdevs);
+	rc = ide_pci_init_one(dev, &it821x_chipsets[id->driver_data], itdevs);
+	if (rc)
+		kfree(itdevs);
 
-	return ide_pci_init_one(dev, &it821x_chipsets[id->driver_data], NULL);
+	return rc;
 }
 
 static const struct pci_device_id it821x_pci_tbl[] = {

-- 


  parent reply	other threads:[~2008-07-06 17:34 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20080706172010.559358957@bzolnier@gmail.com>
2008-07-06 17:20 ` [PATCH 01/50] it8213: fix return value in it8213_init_one() Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 02/50] ide: always call ->init_chipset method in do_ide_setup_pci_device() Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 03/50] ide: respect dev->irq in do_ide_setup_pci_device() also if tried_config Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 04/50] ide: move ide_setup_pci_controller() call to ide_setup_pci_device() Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 05/50] ide: call ide_pci_setup_ports() before do_ide_setup_pci_device() Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 06/50] ide: add ->dev and ->host_priv fields to struct ide_host Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 07/50] ide: add ide_device_{get,put}() helpers Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 08/50] aec62xx: convert to use ->host_priv Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 09/50] hpt366: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` Bartlomiej Zolnierkiewicz [this message]
2008-07-06 17:20 ` [PATCH 11/50] sc1200: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 12/50] siimage: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 13/50] via82cxxx: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 14/50] tc86c001: remove ->init_chipset method Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 15/50] amd74xx: cleanup " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 16/50] cmd64x: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 17/50] via82cxxx: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 18/50] ide: add ide_pci_remove() helper Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 19/50] aec62xx: add ->remove method and module_exit() Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 20/50] alim15x3: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 21/50] amd74xx: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 22/50] atiixp: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 23/50] cmd64x: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 24/50] cs5530: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 25/50] cs5535: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 26/50] cy82c693: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 27/50] ide/pci/generic: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 28/50] hpt34x: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 29/50] hpt366: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 30/50] it8213: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 31/50] it821x: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 32/50] jmicron: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 33/50] ns87415: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 34/50] opti621: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 35/50] pdc202xx_new: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 36/50] pdc202xx_old: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 37/50] piix: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 38/50] rz1000: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 39/50] sc1200: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 40/50] serverworks: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 41/50] siimage: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 42/50] sis5513: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 43/50] sl82c105: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 44/50] slc90e66: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 45/50] tc86c001: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 46/50] triflex: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 47/50] trm290: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 48/50] via82cxxx: " Bartlomiej Zolnierkiewicz
2008-07-06 17:20 ` [PATCH 49/50] icside: add module_exit() Bartlomiej Zolnierkiewicz
2008-07-06 17:21 ` [PATCH 50/50] rapide: " Bartlomiej Zolnierkiewicz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48710239.1ade660a.3458.627e@mx.google.com \
    --to=bzolnier@gmail.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).