Messages in this thread Patch in this message | | | From | "Jakub W. Jozwicki" <> | Subject | [PATCH 2.6.25.10 2/2] libata: fix locking for kmap_atomic | Date | Sun, 13 Jul 2008 01:29:58 +0200 |
| |
Change locking surrounding kmap_atomic from local_irqsave to local_irqsave_nort. This fixes issues with PREEMPT_RT.
Signed-off-by: Jakub Jozwicki <jozwicki@aster.pl>
--- linux-2.6.25.10/drivers/ata/libata-scsi.c 2008-07-03 05:46:47.000000000 +0200 +++ linux-2.6.25.10-rt7/drivers/ata/libata-scsi.c 2008-07-13 00:47:51.128016829 +0200 @@ -1705,14 +1705,14 @@ struct scsi_cmnd *cmd = args->cmd; unsigned long flags; - local_irq_save(flags); + local_irq_save_nort(flags); buflen = ata_scsi_rbuf_get(cmd, &rbuf); memset(rbuf, 0, buflen); rc = actor(args, rbuf, buflen); ata_scsi_rbuf_put(cmd, rbuf); - local_irq_restore(flags); + local_irq_restore_nort(flags); if (rc == 0) cmd->result = SAM_STAT_GOOD; @@ -2489,7 +2489,7 @@ unsigned int buflen; unsigned long flags; - local_irq_save(flags); + local_irq_save_nort(flags); buflen = ata_scsi_rbuf_get(cmd, &buf); @@ -2508,7 +2508,7 @@ ata_scsi_rbuf_put(cmd, buf); - local_irq_restore(flags); + local_irq_restore_nort(flags); } cmd->result = SAM_STAT_GOOD;
| |