- 3w-9xxx-kmap_atomic-in-twa_scsiop_execute_scsi.patch removed from -mm tree

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

 



The patch titled

     3w-9xxx: kmap_atomic in twa_scsiop_execute_scsi

has been removed from the -mm tree.  Its filename is

     3w-9xxx-kmap_atomic-in-twa_scsiop_execute_scsi.patch

This patch was probably dropped from -mm because
it has now been merged into a subsystem tree or
into Linus's tree, or because it was folded into
its parent patch in the -mm tree.

------------------------------------------------------
Subject: 3w-9xxx: kmap_atomic in twa_scsiop_execute_scsi
From: Vasily Averin <vvs@xxxxx>


Avoid taking KM_IRQn with local interrupts enabled: it's deadlocky.

(akpm: this might not be a bug, but it's surely a confidence-boost)

(There's a debug patch in -mm which will detect this bug at runtime.  There
have been no reports..)

Signed-off-by: Vasily Averin <vvs@xxxxx>
Cc: adam radford <aradford@xxxxxxxxx>
Cc: Adam Radford <linuxraid@xxxxxxxx>
Cc: James Bottomley <James.Bottomley@xxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---

 drivers/scsi/3w-9xxx.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff -puN drivers/scsi/3w-9xxx.c~3w-9xxx-kmap_atomic-in-twa_scsiop_execute_scsi drivers/scsi/3w-9xxx.c
--- devel/drivers/scsi/3w-9xxx.c~3w-9xxx-kmap_atomic-in-twa_scsiop_execute_scsi	2006-06-04 02:15:20.000000000 -0700
+++ devel-akpm/drivers/scsi/3w-9xxx.c	2006-06-04 02:15:20.000000000 -0700
@@ -1864,9 +1864,13 @@ static int twa_scsiop_execute_scsi(TW_De
 			if ((tw_dev->srb[request_id]->use_sg == 1) && (tw_dev->srb[request_id]->request_bufflen < TW_MIN_SGL_LENGTH)) {
 				if (tw_dev->srb[request_id]->sc_data_direction == DMA_TO_DEVICE || tw_dev->srb[request_id]->sc_data_direction == DMA_BIDIRECTIONAL) {
 					struct scatterlist *sg = (struct scatterlist *)tw_dev->srb[request_id]->request_buffer;
-					char *buf = kmap_atomic(sg->page, KM_IRQ0) + sg->offset;
+					unsigned long flags = 0;
+					char *buf;
+					local_irq_save(flags);
+					buf = kmap_atomic(sg->page, KM_IRQ0) + sg->offset;
 					memcpy(tw_dev->generic_buffer_virt[request_id], buf, sg->length);
 					kunmap_atomic(buf - sg->offset, KM_IRQ0);
+					local_irq_restore(flags);
 				}
 				command_packet->sg_list[0].address = TW_CPU_TO_SGL(tw_dev->generic_buffer_phys[request_id]);
 				command_packet->sg_list[0].length = cpu_to_le32(TW_MIN_SGL_LENGTH);
_

Patches currently in -mm which might be from vvs@xxxxx are

git-acpi.patch
3w-9xxx-kmap_atomic-in-twa_scsiop_execute_scsi.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