From 5ae44b7369a60198f792a072d876ad8ccb121550 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Thu, 25 Sep 2003 02:12:32 -0500 Subject: [PATCH] [PATCH] small lasi700 update - move the struct parisc_driver down like in most drivers, avoids two forward-declarations - give lasi700_scsi_tbl and lasi700_driver_callback sensible names - properly return -ENOMEM instead of 1 on kmalloc failure - check scsi_add_host return value --- drivers/scsi/lasi700.c | 26 ++++++++++++++------------ drivers/scsi/lasi700.h | 3 --- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/drivers/scsi/lasi700.c b/drivers/scsi/lasi700.c index 3fabd0618de00..fdb78fab15c30 100644 --- a/drivers/scsi/lasi700.c +++ b/drivers/scsi/lasi700.c @@ -59,7 +59,7 @@ MODULE_AUTHOR("James Bottomley"); MODULE_DESCRIPTION("lasi700 SCSI Driver"); MODULE_LICENSE("GPL"); -static struct parisc_device_id lasi700_scsi_tbl[] = { +static struct parisc_device_id lasi700_ids[] = { LASI700_ID_TABLE, LASI710_ID_TABLE, { 0 } @@ -72,15 +72,8 @@ static Scsi_Host_Template lasi700_template = { }; MODULE_DEVICE_TABLE(parisc, lasi700_scsi_tbl); -static struct parisc_driver lasi700_driver = { - .name = "Lasi SCSI", - .id_table = lasi700_scsi_tbl, - .probe = lasi700_driver_callback, - .remove = __devexit_p(lasi700_driver_remove), -}; - static int __init -lasi700_driver_callback(struct parisc_device *dev) +lasi700_probe(struct parisc_device *dev) { unsigned long base = dev->hpa + LASI_SCSI_CORE_OFFSET; struct NCR_700_Host_Parameters *hostdata; @@ -90,7 +83,7 @@ lasi700_driver_callback(struct parisc_device *dev) if (!hostdata) { printk(KERN_ERR "%s: Failed to allocate host data\n", dev->dev.bus_id); - return 1; + return -ENOMEM; } memset(hostdata, 0, sizeof(struct NCR_700_Host_Parameters)); @@ -123,15 +116,17 @@ lasi700_driver_callback(struct parisc_device *dev) goto out_put_host; } + if (scsi_add_host(host, &dev->dev)) + goto out_free_irq; dev_set_drvdata(&dev->dev, host); - scsi_add_host(host, &dev->dev); /* XXX handle failure */ scsi_scan_host(host); return 0; + out_free_irq: + free_irq(host->irq, host); out_put_host: scsi_host_put(host); - out_kfree: kfree(hostdata); return -ENODEV; @@ -152,6 +147,13 @@ lasi700_driver_remove(struct parisc_device *dev) return 0; } +static struct parisc_driver lasi700_driver = { + .name = "Lasi SCSI", + .id_table = lasi700_ids, + .probe = lasi700_probe, + .remove = __devexit_p(lasi700_driver_remove), +}; + static int __init lasi700_init(void) { diff --git a/drivers/scsi/lasi700.h b/drivers/scsi/lasi700.h index 1e92b9a8c610a..244a648824ee3 100644 --- a/drivers/scsi/lasi700.h +++ b/drivers/scsi/lasi700.h @@ -25,9 +25,6 @@ #ifndef _LASI700_H #define _LASI700_H -static int lasi700_driver_callback(struct parisc_device *dev); -static int lasi700_driver_remove(struct parisc_device *dev); - #define LASI_710_SVERSION 0x082 #define LASI_700_SVERSION 0x071 -- 2.53.0