+ hptiop-highpoint-rocketraid-3xxx-controller-driver-list-locking-updates-updates-2.patch added to -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled

     hptiop-highpoint-rocketraid-3xxx-controller-driver-list-locking-updates-updates-2

has been added to the -mm tree.  Its filename is

     hptiop-highpoint-rocketraid-3xxx-controller-driver-list-locking-updates-updates-2.patch

See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find
out what to do about this


From: Andrew Morton <akpm@xxxxxxxx>

- kfree(NULL) is legal

- Don't "succeed" if register_chrdev() failed - otherwise we'll later
  unregister a not-registered chrdev.

- Don't return from hptiop_do_ioctl() with the spinlock held.

- uninline __hpt_do_ioctl() (marginal)

Cc: HighPoint Linux Team <linux@xxxxxxxxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---

 drivers/scsi/hptiop.c |   27 +++++++++++++--------------
 1 files changed, 13 insertions(+), 14 deletions(-)

diff -puN drivers/scsi/hptiop.c~hptiop-highpoint-rocketraid-3xxx-controller-driver-list-locking-updates-updates-2 drivers/scsi/hptiop.c
--- 25/drivers/scsi/hptiop.c~hptiop-highpoint-rocketraid-3xxx-controller-driver-list-locking-updates-updates-2	Fri May 12 09:59:41 2006
+++ 25-akpm/drivers/scsi/hptiop.c	Fri May 12 09:59:41 2006
@@ -708,9 +708,9 @@ static void hptiop_ioctl_done(struct hpt
 
 static void hptiop_do_ioctl(struct hpt_ioctl_k *arg)
 {
-	struct hptiop_hba * hba = arg->hba;
+	struct hptiop_hba *hba = arg->hba;
 	u32 val;
-	struct hpt_iop_request_ioctl_command __iomem * req;
+	struct hpt_iop_request_ioctl_command __iomem *req;
 	int ioctl_retry = 0;
 
 	dprintk("scsi%d: hptiop_do_ioctl\n", hba->host->host_no);
@@ -735,9 +735,10 @@ retry:
 
 	val = readl(&hba->iop->inbound_queue);
 	if (val == IOPMU_QUEUE_EMPTY) {
+		spin_unlock_irq(hba->host->host_lock);
 		dprintk("scsi%d: no free req for ioctl\n", hba->host->host_no);
 		arg->result = -1;
-		return ;
+		return;
 	}
 
 	req = (struct hpt_iop_request_ioctl_command __iomem *)
@@ -790,9 +791,8 @@ retry:
 			arg->ioctl_code, arg->result);
 }
 
-static inline int __hpt_do_ioctl(struct hptiop_hba *hba,
-			u32 code, void *inbuf, u32 insize,
-			void *outbuf, u32 outsize)
+static int __hpt_do_ioctl(struct hptiop_hba *hba, u32 code, void *inbuf,
+			u32 insize, void *outbuf, u32 outsize)
 {
 	struct hpt_ioctl_k arg;
 	arg.hba = hba;
@@ -944,8 +944,7 @@ static void hptiop_dump_devinfo(struct h
 			else
 				hptiop_copy_info(pinfo, "CH%d %s\n",
 					devinfo.u.device.path_id + 1,
-					driveid->model
-				);
+					driveid->model);
 		else {
 			capacity = devinfo.capacity*512;
 			do_div(capacity, 1000000);
@@ -1022,7 +1021,7 @@ static ssize_t hptiop_cdev_read(struct f
 
 	info.buffer     = buf;
 	info.buflength  = count;
-	info.bufoffset  = ppos? *ppos : 0;
+	info.bufoffset  = ppos ? *ppos : 0;
 	info.filpos     = 0;
 	info.buffillen  = 0;
 
@@ -1136,10 +1135,8 @@ static int hptiop_cdev_ioctl(struct inod
 	}
 
 err_exit:
-	if (ioctl_k.inbuf)
-		kfree(ioctl_k.inbuf);
-	if (ioctl_k.outbuf)
-		kfree(ioctl_k.outbuf);
+	kfree(ioctl_k.inbuf);
+	kfree(ioctl_k.outbuf);
 
 	return err;
 }
@@ -1497,8 +1494,10 @@ static int __init hptiop_module_init(voi
 		return error;
 
 	hptiop_cdev_major = register_chrdev(0, "hptiop", &hptiop_cdev_fops);
-	if (hptiop_cdev_major < 0)
+	if (hptiop_cdev_major < 0) {
 		printk(KERN_WARNING "unable to register hptiop device.\n");
+		return hptiop_cdev_major;
+	}
 
 	return 0;
 }
_

Patches currently in -mm which might be from akpm@xxxxxxxx are

origin.patch
autofs4-nfy_none-wait-race-fix-tidy.patch
setup_per_zone_pages_min-overflow-fix.patch
git-acpi.patch
acpi_early_init-fix.patch
acpi-update-asus_acpi-driver-registration-fix.patch
acpi-memory-hotplug-cannot-manage-_crs-with-plural-resoureces.patch
catch-notification-of-memory-add-event-of-acpi-via-container-driver-register-start-func-for-memory-device.patch
catch-notification-of-memory-add-event-of-acpi-via-container-driveravoid-redundant-call-add_memory.patch
remove-for_each_cpu.patch
sony_apci-resume.patch
powernow-k8-crash-workaround.patch
s3c24xx-hardware-spi-driver-tidy.patch
git-dvb.patch
scx200_acb-use-pci-i-o-resource-when-appropriate-fix.patch
git-gfs2.patch
git-infiniband.patch
via-pmu-add-input-device-tidy.patch
git-klibc.patch
git-hdrcleanup-fixup.patch
git-hdrinstall-fixup.patch
git-libata-all.patch
git-mtd.patch
git-mtd-build-fix.patch
git-mtd-isnt-arm-only.patch
git-netdev-all.patch
smc911x-Kconfig-fix.patch
pci-error-recovery-e1000-network-device-driver.patch
nfs-share-nfs-superblocks-per-protocol-per-server-per-fsid-fix.patch
nfs-use-local-caching-fix.patch
git-powerpc.patch
git-rbtree.patch
git-sas.patch
gregkh-pci-pci-64-bit-resources-drivers-others-changes-amba-fix.patch
kconfigurable-resources-core-changes-fix.patch
kconfigurable-resources-arch-dependent-changes-arch-a-i-fix.patch
typesh-sector_t-and-blkcnt_t-arent-for-userspace.patch
qla2xxx-lock-ordering-fix-warning-fix.patch
areca-raid-linux-scsi-driver-update6-for-2617-rc1-mm3-externs-go-in-headers.patch
git-watchdog.patch
xfs-sparc32-build-fix.patch
gregkh-devfs-devfs-remove-genhd-devfs_name-warning-fix.patch
pg_uncached-is-ia64-only.patch
pgdat-allocation-for-new-node-add-specify-node-id-powerpc-fix.patch
pgdat-allocation-for-new-node-add-specify-node-id-tidy.patch
pgdat-allocation-for-new-node-add-specify-node-id-fix-3.patch
pgdat-allocation-for-new-node-add-get-node-id-by-acpi-tidy.patch
pgdat-allocation-for-new-node-add-generic-alloc-node_data-tidy.patch
pgdat-allocation-for-new-node-add-refresh-node_data-fix.patch
pgdat-allocation-for-new-node-add-export-kswapd-start-func-tidy.patch
catch-valid-mem-range-at-onlining-memory-tidy.patch
catch-valid-mem-range-at-onlining-memory-fix.patch
mm-introduce-remap_vmalloc_range-fix.patch
tracking-dirty-pages-in-shared-mappings-v4-fix2.patch
tracking-dirty-pages-in-shared-mappings-v4-fix3.patch
throttle-writers-of-shared-mappings-tidy.patch
acx1xx-wireless-driver.patch
dont-use-flush_tlb_all-in-suspend-time-tidy.patch
prune_one_dentry-tweaks.patch
mmput-might-sleep.patch
jbd-avoid-kfree-null.patch
ext3_clear_inode-avoid-kfree-null.patch
leds-amstrad-delta-led-support-tidy.patch
percpu-counter-data-type-changes-to-suppport-fix.patch
connector-exports.patch
config_net=n-build-fix.patch
jbd-split-checkpoint-lists-tidy.patch
mark-address_space_operations-const-fix.patch
mark-address_space_operations-const-fix-2.patch
allow-for-per-cpu-data-being-in-tdata-and-tbss-sections-fix.patch
allow-for-per-cpu-data-being-in-tdata-and-tbss-sections-tidy.patch
deprecate-smbfs-in-favour-of-cifs.patch
hptiop-highpoint-rocketraid-3xxx-controller-driver-list-locking.patch
hptiop-highpoint-rocketraid-3xxx-controller-driver-list-locking-updates.patch
hptiop-highpoint-rocketraid-3xxx-controller-driver-list-locking-updates-updates-2.patch
hangcheck-remove-monotomic_clock-on-x86.patch
pi-futex-futex-code-cleanups-fix.patch
reiser4.patch
savagefb-add-state-save-and_restore-hooks-tidy.patch
kgdb-core-lite-add-reboot-command.patch
kgdb-8250-fix.patch
nr_blockdev_pages-in_interrupt-warning.patch
device-suspend-debug.patch
revert-tty-buffering-comment-out-debug-code.patch
slab-leaks3-default-y.patch
x86-kmap_atomic-debugging.patch
profile-likely-unlikely-macros-tidy.patch
profile-likely-unlikely-macros-fix.patch
profile-likely-unlikely-macros-fix-2.patch

-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux