diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2008-10-10 16:39:22 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-10-10 16:39:22 -0400 |
commit | efa402d59e99b7940501ead18a11b3d6604ad720 (patch) | |
tree | 29319b67549214df79b5c9596c9e82f2c4b6439c | |
parent | 1a7809e3499921a016d203b9ee51a77d3cc1dc98 (diff) |
ide-cd: use the new object_is_in_stack() helper
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: Borislav Petkov <petkovbb@gmail.com>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: Tejun Heo <htejun@gmail.com>
Cc: Jens Axboe <jens.axboe@oracle.com>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
-rw-r--r-- | drivers/ide/ide-cd.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c index 239557f8920e..accb53b85ba7 100644 --- a/drivers/ide/ide-cd.c +++ b/drivers/ide/ide-cd.c | |||
@@ -1164,13 +1164,12 @@ static void cdrom_do_block_pc(ide_drive_t *drive, struct request *rq) | |||
1164 | if (rq->bio || ((rq->cmd_type == REQ_TYPE_ATA_PC) && rq->data_len)) { | 1164 | if (rq->bio || ((rq->cmd_type == REQ_TYPE_ATA_PC) && rq->data_len)) { |
1165 | struct request_queue *q = drive->queue; | 1165 | struct request_queue *q = drive->queue; |
1166 | unsigned int alignment; | 1166 | unsigned int alignment; |
1167 | unsigned long addr; | 1167 | char *buf; |
1168 | unsigned long stack_mask = ~(THREAD_SIZE - 1); | ||
1169 | 1168 | ||
1170 | if (rq->bio) | 1169 | if (rq->bio) |
1171 | addr = (unsigned long)bio_data(rq->bio); | 1170 | buf = bio_data(rq->bio); |
1172 | else | 1171 | else |
1173 | addr = (unsigned long)rq->data; | 1172 | buf = rq->data; |
1174 | 1173 | ||
1175 | info->dma = drive->using_dma; | 1174 | info->dma = drive->using_dma; |
1176 | 1175 | ||
@@ -1181,11 +1180,8 @@ static void cdrom_do_block_pc(ide_drive_t *drive, struct request *rq) | |||
1181 | * separate masks. | 1180 | * separate masks. |
1182 | */ | 1181 | */ |
1183 | alignment = queue_dma_alignment(q) | q->dma_pad_mask; | 1182 | alignment = queue_dma_alignment(q) | q->dma_pad_mask; |
1184 | if (addr & alignment || rq->data_len & alignment) | 1183 | if ((unsigned long)buf & alignment || rq->data_len & alignment |
1185 | info->dma = 0; | 1184 | || object_is_on_stack(buf)) |
1186 | |||
1187 | if (!((addr & stack_mask) ^ | ||
1188 | ((unsigned long)current->stack & stack_mask))) | ||
1189 | info->dma = 0; | 1185 | info->dma = 0; |
1190 | } | 1186 | } |
1191 | } | 1187 | } |