Commit 3eb76c1ccde496c3c0bfda23d1c803e40b762ce6
Committed by
Bartlomiej Zolnierkiewicz
1 parent
041b62374c
ide-floppy: do not map dataless cmds to an sg
since it fails the virt_to_page() translation check with DEBUG_VIRTUAL enabled. Signed-off-by: Borislav Petkov <petkovbb@gmail.com> [bart: backport to Linus' tree] Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Showing 2 changed files with 16 additions and 2 deletions Side-by-side Diff
drivers/ide/ide-atapi.c
... | ... | @@ -140,6 +140,12 @@ |
140 | 140 | rq->cmd_flags |= REQ_PREEMPT; |
141 | 141 | rq->buffer = (char *)pc; |
142 | 142 | rq->rq_disk = disk; |
143 | + | |
144 | + if (pc->req_xfer) { | |
145 | + rq->data = pc->buf; | |
146 | + rq->data_len = pc->req_xfer; | |
147 | + } | |
148 | + | |
143 | 149 | memcpy(rq->cmd, pc->c, 12); |
144 | 150 | if (drive->media == ide_tape) |
145 | 151 | rq->cmd[13] = REQ_IDETAPE_PC1; |
... | ... | @@ -159,6 +165,12 @@ |
159 | 165 | rq = blk_get_request(drive->queue, READ, __GFP_WAIT); |
160 | 166 | rq->cmd_type = REQ_TYPE_SPECIAL; |
161 | 167 | rq->buffer = (char *)pc; |
168 | + | |
169 | + if (pc->req_xfer) { | |
170 | + rq->data = pc->buf; | |
171 | + rq->data_len = pc->req_xfer; | |
172 | + } | |
173 | + | |
162 | 174 | memcpy(rq->cmd, pc->c, 12); |
163 | 175 | if (drive->media == ide_tape) |
164 | 176 | rq->cmd[13] = REQ_IDETAPE_PC1; |
drivers/ide/ide-floppy.c
... | ... | @@ -327,8 +327,10 @@ |
327 | 327 | return ide_stopped; |
328 | 328 | } |
329 | 329 | |
330 | - ide_init_sg_cmd(drive, rq); | |
331 | - ide_map_sg(drive, rq); | |
330 | + if (blk_fs_request(rq) || pc->req_xfer) { | |
331 | + ide_init_sg_cmd(drive, rq); | |
332 | + ide_map_sg(drive, rq); | |
333 | + } | |
332 | 334 | |
333 | 335 | pc->sg = hwif->sg_table; |
334 | 336 | pc->sg_cnt = hwif->sg_nents; |